From 51a3ad41d57c0c0339f9e167cc7146f77423af7a Mon Sep 17 00:00:00 2001 From: Eqis-Edu <117950663+Eqis-Edu@users.noreply.github.com> Date: Thu, 24 Oct 2024 06:10:09 -0300 Subject: [PATCH] feat: Pentacle Rework (#1215) - thanks @Eqis-Edu! * Repair Ritual type * Change spirits spawn egg color * No more ritual dummy as output (except resurrect) * Update tag SLIMEBALLS -> SLIME_BALLS * Wild drowned don't need silk touch and doubled sniffer egg drop * Ritual Satchel dummy text * Ritual Dummy Types * Fix Summon Ritual give spawn egg * More consistence in ritual type * Update apotheosis integration * Creative tab reorder, real gold -> yellow chalk * Merged natural sapling block and item, book fix * Registry new materials (texture, translation and tags) * Possess Skeleton faster and Wild Evoker cheaper * Add most recipes of chalk materials * Smelting/Blasting Netherite Dust * Repair recipes * Pentacles Remap * Dropout "invoke" return "possess" * Miner to output before break * Ritual Satchel T2 recipe in correct pentacle * Magic lamp cost don't reduce with crusher * Pentacles Remap * (previous) Pentacles CATEGORY Remap. [now removed unused imports] * config miners to output * Golden Bowl signal cloner * Text to all entries in pentacle category * Broken Sea Heart to Marid Essence * Texture color chalks adjusts * Remove extra fire particle from large candles * Icons and images fix * Chalks advancements * Advancement Conditions in pentacles entries * Entries to category locked until has respective chalk * Changed the "More Chalks" entry * Unbound Marid * Warming Solving * Marid Invulnerabilities * small book changes * Possessed Witch for experience bottle * Goat of Mercy * Possessed Zombified Piglin * Possessed Bee * Eldritch debug * Dont show placeholder dummy * Starting solve compatibility * Real checking * Updated * Small adjustments * Translatable Chalks Advancements * Familiars Advancement Tab Background to Otherplanks * Starting another conflict solving * Starting another conflict solving p2 * Update generated data ritaul recipes * Return "gold" in yellow chalk id * Possess Enderman entry description fix * Fixed some texts that said pentagram instead pentacle * Wild slime hitbox * Fix double "purpose" text * Fix and conditions some book entries * Possession entries conditions * Add deepslate, basalt and blackstone to basic miner * Add crying obsidian and gilded blackstone to ore miner * Changes in some basic miner weight * Familiar category progressive unlock (read based) * Creative tab chalks after books * Infusing category progressive unlock (read based) * Summoning category progressive unlock (read based), and turn random animal to possession * Possessed warden cost reduced * Miners in enchanting table * Ancient Miner (first late-game item) * Craft budding amethyst and reinforced deepslate * Some tags to "c" instead "occultism" * fix: book links to moved possession rituals Some possession rituals have been moved into their correct categories, but there were some dangling backlinks. --------- Co-authored-by: Kli Kli --- .../assets/occultism/lang/en_us.json | 750 ++++++--- ...lk_gold_impure.json => amethyst_dust.json} | 2 +- .../models/item/chalk_yellow_impure.json | 6 + .../models/item/cruelty_essence.json | 6 + .../models/item/crushed_blackstone.json | 6 + .../models/item/crushed_blue_ice.json | 6 + .../models/item/crushed_calcite.json | 6 + .../item/{pentacle.json => crushed_ice.json} | 2 +- .../models/item/crushed_packed_ice.json | 6 + .../occultism/models/item/cursed_honey.json | 6 + .../occultism/models/item/demonic_meat.json | 6 + .../occultism/models/item/dragonyst_dust.json | 6 + .../occultism/models/item/echo_dust.json | 6 + .../occultism/models/item/emerald_dust.json | 6 + .../occultism/models/item/gray_paste.json | 6 + .../occultism/models/item/lapis_dust.json | 6 + .../occultism/models/item/marid_essence.json | 6 + .../models/item/miner_ancient_eldritch.json | 6 + .../models/item/mining_dim_core.json | 6 + .../occultism/models/item/nature_paste.json | 6 + .../occultism/models/item/netherite_dust.json | 6 + .../models/item/netherite_scrap_dust.json | 6 + .../occultism/models/item/pentacle_craft.json | 6 + .../occultism/models/item/pentacle_misc.json | 6 + .../models/item/pentacle_possess.json | 6 + .../models/item/pentacle_summon.json | 6 + .../occultism/models/item/repair_icon.json | 6 + .../models/item/research_fragment_dust.json | 6 + .../occultism/models/item/resurrect_icon.json | 6 + .../ritual_dummy/craft_budding_amethyst.json | 3 + .../craft_dimensional_matrix.json | 2 +- .../craft_dimensional_mineshaft.json | 2 +- .../ritual_dummy/craft_dragonyst_dust.json | 3 + .../ritual_dummy/craft_familiar_ring.json | 2 +- .../item/ritual_dummy/craft_gray_paste.json | 3 + .../ritual_dummy/craft_infused_lenses.json | 2 +- .../ritual_dummy/craft_infused_pickaxe.json | 2 +- .../ritual_dummy/craft_miner_afrit_deeps.json | 2 +- .../craft_miner_ancient_eldritch.json | 3 + .../ritual_dummy/craft_miner_djinni_ores.json | 2 +- .../craft_miner_foliot_unspecialized.json | 2 +- .../craft_miner_marid_master.json | 2 +- .../item/ritual_dummy/craft_nature_paste.json | 3 + .../craft_reinforced_deepslate.json | 3 + .../craft_research_fragment_dust.json | 3 + .../ritual_dummy/craft_ritual_satchel_t1.json | 2 +- .../ritual_dummy/craft_ritual_satchel_t2.json | 2 +- .../item/ritual_dummy/craft_satchel.json | 2 +- .../item/ritual_dummy/craft_soul_gem.json | 2 +- .../ritual_dummy/craft_stabilizer_tier1.json | 2 +- .../ritual_dummy/craft_stabilizer_tier2.json | 2 +- .../ritual_dummy/craft_stabilizer_tier3.json | 2 +- .../ritual_dummy/craft_stabilizer_tier4.json | 2 +- .../ritual_dummy/craft_stable_wormhole.json | 2 +- .../craft_storage_controller_base.json | 2 +- .../ritual_dummy/craft_storage_remote.json | 2 +- .../item/ritual_dummy/craft_wild_trim.json | 2 +- .../ritual_dummy/craft_witherite_dust.json | 3 + .../item/ritual_dummy/custom_ritual.json | 3 - .../ritual_dummy/custom_ritual_craft.json | 3 + .../item/ritual_dummy/custom_ritual_misc.json | 3 + .../ritual_dummy/custom_ritual_possess.json | 3 + .../ritual_dummy/custom_ritual_summon.json | 3 + .../item/ritual_dummy/familiar_bat.json | 2 +- .../item/ritual_dummy/familiar_beaver.json | 2 +- .../item/ritual_dummy/familiar_beholder.json | 2 +- .../ritual_dummy/familiar_blacksmith.json | 2 +- .../item/ritual_dummy/familiar_chimera.json | 2 +- .../item/ritual_dummy/familiar_cthulhu.json | 2 +- .../item/ritual_dummy/familiar_deer.json | 2 +- .../item/ritual_dummy/familiar_devil.json | 2 +- .../item/ritual_dummy/familiar_dragon.json | 2 +- .../item/ritual_dummy/familiar_fairy.json | 2 +- .../item/ritual_dummy/familiar_greedy.json | 2 +- .../item/ritual_dummy/familiar_guardian.json | 2 +- .../item/ritual_dummy/familiar_headless.json | 2 +- .../item/ritual_dummy/familiar_mummy.json | 2 +- .../familiar_otherworld_bird.json | 2 +- .../item/ritual_dummy/familiar_parrot.json | 2 +- .../models/item/ritual_dummy/possess_bee.json | 3 + .../item/ritual_dummy/possess_breeze.json | 3 - .../ritual_dummy/possess_elder_guardian.json | 2 +- .../item/ritual_dummy/possess_enderman.json | 2 +- .../item/ritual_dummy/possess_endermite.json | 2 +- .../item/ritual_dummy/possess_ghast.json | 2 +- .../item/ritual_dummy/possess_goat.json | 3 + .../item/ritual_dummy/possess_hoglin.json | 2 +- .../item/ritual_dummy/possess_phantom.json | 2 +- .../ritual_dummy/possess_random_animal.json | 3 + .../item/ritual_dummy/possess_shulker.json | 2 +- .../item/ritual_dummy/possess_skeleton.json | 2 +- .../ritual_dummy/possess_strong_breeze.json | 3 - .../possess_unbound_otherworld_bird.json | 3 + .../ritual_dummy/possess_unbound_parrot.json | 3 + .../item/ritual_dummy/possess_warden.json | 2 +- .../ritual_dummy/possess_weak_breeze.json | 3 - .../ritual_dummy/possess_weak_shulker.json | 2 +- .../item/ritual_dummy/possess_witch.json | 3 + .../ritual_dummy/possess_zombie_piglin.json | 3 + .../item/ritual_dummy/repair_armors.json | 3 + .../item/ritual_dummy/repair_chalks.json | 3 + .../item/ritual_dummy/repair_miners.json | 3 + .../item/ritual_dummy/repair_tools.json | 3 + .../item/ritual_dummy/resurrect_allay.json | 3 + .../item/ritual_dummy/resurrect_familiar.json | 2 +- .../ritual_dummy/summon_afrit_crusher.json | 2 +- .../summon_afrit_rain_weather.json | 2 +- .../summon_afrit_thunder_weather.json | 2 +- .../item/ritual_dummy/summon_allay.json | 3 - .../ritual_dummy/summon_demonic_husband.json | 2 +- .../ritual_dummy/summon_demonic_wife.json | 2 +- .../summon_djinni_clear_weather.json | 2 +- .../ritual_dummy/summon_djinni_crusher.json | 2 +- .../ritual_dummy/summon_djinni_day_time.json | 2 +- .../summon_djinni_manage_machine.json | 2 +- .../summon_djinni_night_time.json | 2 +- .../ritual_dummy/summon_foliot_cleaner.json | 2 +- .../ritual_dummy/summon_foliot_crusher.json | 2 +- .../summon_foliot_lumberjack.json | 2 +- .../summon_foliot_otherstone_trader.json | 2 +- .../summon_foliot_sapling_trader.json | 2 +- .../summon_foliot_transport_items.json | 2 +- .../ritual_dummy/summon_horde_illager.json | 3 - .../ritual_dummy/summon_marid_crusher.json | 2 +- .../ritual_dummy/summon_random_animal.json | 3 - .../ritual_dummy/summon_unbound_afrit.json | 3 + .../ritual_dummy/summon_unbound_marid.json | 3 + .../item/ritual_dummy/summon_wild_afrit.json | 3 - .../ritual_dummy/summon_wild_creeper.json | 3 - .../ritual_dummy/summon_wild_drowned.json | 3 - .../item/ritual_dummy/summon_wild_hunt.json | 3 - .../item/ritual_dummy/summon_wild_husk.json | 3 - .../summon_wild_otherworld_bird.json | 3 - .../item/ritual_dummy/summon_wild_parrot.json | 3 - .../ritual_dummy/summon_wild_silverfish.json | 3 - .../models/item/ritual_dummy/wild_breeze.json | 3 + .../item/ritual_dummy/wild_creeper.json | 3 + .../item/ritual_dummy/wild_drowned.json | 3 + .../item/ritual_dummy/wild_horde_illager.json | 3 + .../models/item/ritual_dummy/wild_hunt.json | 3 + .../models/item/ritual_dummy/wild_husk.json | 3 + .../item/ritual_dummy/wild_silverfish.json | 3 + .../item/ritual_dummy/wild_strong_breeze.json | 3 + .../item/ritual_dummy/wild_weak_breeze.json | 3 + .../{afrit_wild.json => afrit_unbound.json} | 0 ...ssessed_breeze.json => marid_unbound.json} | 0 ...ssessed_evoker.json => possessed_bee.json} | 0 ...strong_breeze.json => possessed_goat.json} | 0 ..._weak_breeze.json => possessed_witch.json} | 0 .../spawn_egg/possessed_zombie_piglin.json | 3 + .../models/item/spawn_egg/wild_breeze.json | 3 + .../models/item/spawn_egg/wild_evoker.json | 3 + .../item/spawn_egg/wild_strong_breeze.json | 3 + .../item/spawn_egg/wild_weak_breeze.json | 3 + .../occultism/models/item/witherite_dust.json | 6 + .../data/c/tags/entity_type/allay.json | 5 + .../tags/entity_type/camels.json} | 0 .../data/c/tags/entity_type/cats.json | 6 + .../{chicken.json => chickens.json} | 0 .../tags/entity_type/dolphins.json} | 0 .../data/c/tags/entity_type/goats.json | 3 +- .../tags/entity_type/ocelots.json} | 0 .../entity_type/{squid.json => squids.json} | 0 .../data/c/tags/entity_type/tadpoles.json | 5 + .../tags/entity_type/vex.json | 0 .../data/c/tags/entity_type/wardens.json | 6 + .../tags/entity_type/wolfs.json | 0 .../resources/data/c/tags/item/dusts.json | 18 +- .../data/c/tags/item/dusts/amethyst.json | 5 + .../data/c/tags/item/dusts/blackstone.json | 5 + .../data/c/tags/item/dusts/blue_ice.json | 5 + .../data/c/tags/item/dusts/calcite.json | 5 + .../data/c/tags/item/dusts/dragonyst.json | 5 + .../data/c/tags/item/dusts/echo.json | 5 + .../data/c/tags/item/dusts/emerald.json | 5 + .../resources/data/c/tags/item/dusts/ice.json | 5 + .../data/c/tags/item/dusts/lapis.json | 5 + .../data/c/tags/item/dusts/netherite.json | 5 + .../c/tags/item/dusts/netherite_scrap.json | 5 + .../data/c/tags/item/dusts/otherstone.json | 5 + .../c/tags/item/dusts/otherworld_wood.json | 5 + .../data/c/tags/item/dusts/packed_ice.json | 5 + .../data/c/tags/item/dusts/research.json | 5 + .../data/c/tags/item/dusts/witherite.json | 5 + .../resources/data/c/tags/item/tools.json | 8 + .../data/minecraft/tags/block/saplings.json | 3 +- .../data/minecraft/tags/item/saplings.json | 3 +- .../advancement/occultism/familiar/root.json | 4 +- .../crushing/crushing/amethyst_dust.json | 48 + .../crushing/amethyst_dust_from_gem.json | 48 + .../crushing/crushing/blackstone_dust.json | 32 + .../crushing/crushing/blue_ice_dust.json | 32 + .../crushing/crushing/calcite_dust.json | 32 + .../recipes/crushing/crushing/echo_dust.json | 32 + .../recipes/crushing/crushing/ice_dust.json | 32 + .../crushing/netherite_scrap_dust.json | 32 + .../crushing/crushing/packed_ice_dust.json | 32 + .../miner/miner/basic_resources/basalt.json | 32 + .../miner/basic_resources/blackstone.json | 32 + .../miner/basic_resources/deepslate.json | 32 + .../miner/miner/eldritch/amethyst.json | 48 + .../miner/miner/eldritch/ancient_debris.json | 32 + .../miner/miner/eldritch/arcane_crystal.json | 48 + .../recipes/miner/miner/eldritch/coal.json | 48 + .../recipes/miner/miner/eldritch/dark.json | 48 + .../recipes/miner/miner/eldritch/diamond.json | 48 + .../recipes/miner/miner/eldritch/emerald.json | 48 + .../miner/miner/eldritch/fluorite.json | 48 + .../miner/miner/eldritch/glowstone_dust.json | 48 + .../miner/eldritch/inferium_essence.json | 48 + .../recipes/miner/miner/eldritch/lapis.json | 48 + .../miner/miner/eldritch/lignite_coal.json | 48 + .../miner/miner/eldritch/mining_dim_core.json | 32 + .../miner/miner/eldritch/monazite.json | 48 + .../recipes/miner/miner/eldritch/peridot.json | 48 + .../miner/eldritch/prosperity_shard.json | 48 + .../recipes/miner/miner/eldritch/quartz.json | 48 + .../miner/miner/eldritch/raw_aethersent.json | 48 + .../miner/eldritch/raw_allthemodium.json | 48 + .../miner/miner/eldritch/raw_aluminium.json | 48 + .../miner/miner/eldritch/raw_antimony.json | 48 + .../miner/eldritch/raw_azure_silver.json | 48 + .../miner/miner/eldritch/raw_cloggrum.json | 48 + .../miner/miner/eldritch/raw_copper.json | 48 + .../miner/eldritch/raw_crimson_iron.json | 48 + .../miner/miner/eldritch/raw_froststeel.json | 48 + .../miner/miner/eldritch/raw_gold.json | 48 + .../miner/miner/eldritch/raw_iesnium.json | 48 + .../miner/miner/eldritch/raw_iridium.json | 48 + .../miner/miner/eldritch/raw_iron.json | 48 + .../miner/miner/eldritch/raw_lead.json | 48 + .../miner/miner/eldritch/raw_nickel.json | 48 + .../miner/miner/eldritch/raw_osmium.json | 48 + .../miner/miner/eldritch/raw_platinum.json | 48 + .../miner/miner/eldritch/raw_silver.json | 48 + .../recipes/miner/miner/eldritch/raw_tin.json | 48 + .../miner/miner/eldritch/raw_titanium.json | 48 + .../miner/miner/eldritch/raw_tungsten.json | 48 + .../miner/miner/eldritch/raw_unobtainium.json | 48 + .../miner/miner/eldritch/raw_uranium.json | 48 + .../miner/miner/eldritch/raw_vibranium.json | 48 + .../miner/miner/eldritch/raw_yellorium.json | 48 + .../miner/miner/eldritch/raw_zinc.json | 48 + .../miner/miner/eldritch/redstone.json | 48 + .../recipes/miner/miner/eldritch/ruby.json | 48 + .../recipes/miner/miner/eldritch/rune.json | 48 + .../miner/miner/eldritch/sal_ammoniac.json | 48 + .../recipes/miner/miner/eldritch/salt.json | 48 + .../miner/miner/eldritch/sapphire.json | 48 + .../miner/miner/eldritch/soulium_dust.json | 48 + .../miner/miner/eldritch/stellarite.json | 48 + .../recipes/miner/miner/eldritch/sulfur.json | 48 + .../miner/miner/eldritch/uraninite.json | 48 + .../miner/miner/master/mining_dim_core.json | 32 + .../miner/miner/ores/crying_obsidian.json | 32 + .../miner/miner/ores/gilded_blackstone.json | 32 + .../blasting/netherite_ingot_from_dust.json | 32 + .../misc/crafting/chalk_black_impure.json | 4 +- .../misc/crafting/chalk_blue_impure.json | 4 +- .../misc/crafting/chalk_brown_impure.json | 4 +- .../misc/crafting/chalk_cyan_impure.json | 4 +- .../misc/crafting/chalk_gray_impure.json | 4 +- .../misc/crafting/chalk_green_impure.json | 4 +- .../crafting/chalk_light_blue_impure.json | 4 +- .../crafting/chalk_light_gray_impure.json | 4 +- .../misc/crafting/chalk_lime_impure.json | 4 +- .../misc/crafting/chalk_magenta_impure.json | 4 +- .../misc/crafting/chalk_orange_impure.json | 4 +- .../misc/crafting/chalk_pink_impure.json | 4 +- .../misc/crafting/chalk_purple_impure.json | 4 +- .../misc/crafting/chalk_red_impure.json | 4 +- ...d_impure.json => chalk_yellow_impure.json} | 8 +- .../recipes/misc/crafting/netherite_dust.json | 32 + .../smelting/netherite_ingot_from_dust.json | 32 + .../ritual/ritual/craft_budding_amethyst.json | 32 + .../ritual/ritual/craft_dragonyst_dust.json | 32 + ...rworld_bird.json => craft_gray_paste.json} | 4 +- .../ritual/craft_miner_ancient_eldritch.json | 32 + ...ld_parrot.json => craft_nature_paste.json} | 4 +- .../ritual/craft_reinforced_deepslate.json | 32 + .../ritual/craft_research_fragment_dust.json | 32 + .../ritual/ritual/craft_wild_trim.json | 6 +- ...illager.json => craft_witherite_dust.json} | 4 +- .../recipes/ritual/ritual/possess_bee.json | 32 + .../recipes/ritual/ritual/possess_goat.json | 32 + .../ritual/ritual/possess_random_animal.json | 32 + .../possess_unbound_otherworld_bird.json | 32 + .../ritual/ritual/possess_unbound_parrot.json | 32 + .../{summon_allay.json => possess_witch.json} | 4 +- ...breeze.json => possess_zombie_piglin.json} | 4 +- ...possess_breeze.json => repair_armors.json} | 4 +- .../recipes/ritual/ritual/repair_chalks.json | 32 + ...mmon_wild_hunt.json => repair_miners.json} | 4 +- ...ummon_wild_husk.json => repair_tools.json} | 4 +- ...andom_animal.json => resurrect_allay.json} | 4 +- ..._breeze.json => summon_unbound_afrit.json} | 4 +- .../ritual/ritual/summon_unbound_marid.json | 32 + .../ritual/ritual/summon_wild_creeper.json | 32 - .../ritual/ritual/summon_wild_drowned.json | 32 - .../ritual/ritual/summon_wild_silverfish.json | 32 - ...ummon_wild_afrit.json => wild_breeze.json} | 4 +- .../recipes/ritual/ritual/wild_creeper.json | 32 + .../recipes/ritual/ritual/wild_drowned.json | 32 + .../ritual/ritual/wild_horde_illager.json | 32 + .../recipes/ritual/ritual/wild_hunt.json | 32 + .../recipes/ritual/ritual/wild_husk.json | 32 + .../ritual/ritual/wild_silverfish.json | 32 + .../ritual/ritual/wild_strong_breeze.json | 32 + .../ritual/ritual/wild_weak_breeze.json | 32 + .../spirit_fire/spirit_fire/chalk_gold.json | 32 - .../spirit_fire/spirit_fire/chalk_yellow.json | 32 + .../spirit_trade/otherworld_sapling.json | 2 +- .../blocks/otherworld_leaves_natural.json | 2 +- .../blocks/otherworld_sapling_natural.json | 2 +- .../loot_table/entities/marid_unbound.json | 36 + .../loot_table/entities/mercy_goat.json | 27 + .../loot_table/entities/possessed_bee.json | 36 + .../loot_table/entities/possessed_witch.json | 42 + .../entities/possessed_zombie_piglin.json | 36 + .../entities/wild_horde_drowned.json | 5 +- .../categories/crafting_rituals.json | 6 +- .../categories/familiar_rituals.json | 8 +- .../categories/pentacles.json | 6 +- .../categories/possession_rituals.json | 4 +- .../categories/rituals.json | 2 +- .../categories/storage.json | 4 +- .../categories/summoning_rituals.json | 4 +- .../apprentice_ritual_satchel.json | 5 +- .../artisanal_ritual_satchel.json | 5 +- .../crafting_rituals/craft_afrit_miner.json | 3 +- .../crafting_rituals/craft_ancient_miner.json | 52 + .../craft_budding_amethyst.json | 52 + .../craft_dimensional_matrix.json | 5 +- .../craft_dimensional_mineshaft.json | 3 - .../crafting_rituals/craft_djinni_miner.json | 3 - .../crafting_rituals/craft_familiar_ring.json | 5 +- .../crafting_rituals/craft_foliot_miner.json | 3 - .../craft_infused_pickaxe.json | 3 +- .../crafting_rituals/craft_marid_miner.json | 3 +- .../craft_otherworld_goggles.json | 5 +- .../craft_reinforced_deepslate.json | 52 + .../crafting_rituals/craft_satchel.json | 5 +- .../crafting_rituals/craft_soul_gem.json | 5 +- .../craft_stabilizer_tier1.json | 5 +- .../craft_stabilizer_tier2.json | 5 +- .../craft_stabilizer_tier3.json | 5 +- .../craft_stabilizer_tier4.json | 5 +- .../craft_stable_wormhole.json | 5 +- .../craft_storage_controller_base.json | 5 +- .../craft_storage_remote.json | 9 +- .../craft_storage_system.json | 5 +- .../crafting_rituals/craft_wild_trim.json | 5 +- .../entries/crafting_rituals/overview.json | 3 +- .../entries/crafting_rituals/repair.json | 85 + .../crafting_rituals/return_to_rituals.json | 3 +- .../familiar_rituals/demonic_partner.json | 7 +- .../familiar_rituals/familiar_bat.json | 9 +- .../familiar_rituals/familiar_beaver.json | 7 +- .../familiar_rituals/familiar_beholder.json | 5 +- .../familiar_rituals/familiar_blacksmith.json | 9 +- .../familiar_rituals/familiar_chimera.json | 9 +- .../familiar_rituals/familiar_cthulhu.json | 9 +- .../familiar_rituals/familiar_deer.json | 9 +- .../familiar_rituals/familiar_devil.json | 9 +- .../familiar_rituals/familiar_dragon.json | 9 +- .../familiar_rituals/familiar_fairy.json | 7 +- .../familiar_rituals/familiar_greedy.json | 5 +- .../familiar_rituals/familiar_guardian.json | 9 +- .../familiar_rituals/familiar_headless.json | 9 +- .../familiar_rituals/familiar_mummy.json | 7 +- .../familiar_otherworld_bird.json | 9 +- .../familiar_rituals/familiar_parrot.json | 9 +- .../familiar_shub_niggurath.json | 11 +- .../entries/familiar_rituals/overview.json | 5 +- ...summon_allay.json => resurrect_allay.json} | 17 +- .../familiar_rituals/resurrection.json | 4 + .../familiar_rituals/return_to_rituals.json | 3 +- .../entries/getting_started/chalks.json | 214 +-- .../getting_started/crafting_rituals.json | 4 + .../getting_started/familiar_rituals.json | 6 +- .../entries/getting_started/first_ritual.json | 27 +- .../getting_started/otherworld_goggles.json | 4 + .../getting_started/possession_rituals.json | 4 + .../getting_started/ritual_satchels.json | 4 + .../entries/getting_started/storage.json | 4 + .../getting_started/summoning_rituals.json | 4 + .../entries/pentacles/black_chalk.json | 85 + .../entries/pentacles/blue_chalk.json | 74 + .../entries/pentacles/brown_chalk.json | 70 + .../entries/pentacles/chalk_uses.json | 153 -- .../pentacles/contact_eldritch_spirit.json | 87 + .../pentacles/contact_wild_spirit.json | 87 + .../entries/pentacles/craft_afrit.json | 13 +- .../entries/pentacles/craft_djinni.json | 22 +- .../entries/pentacles/craft_foliot.json | 15 +- .../entries/pentacles/craft_marid.json | 13 +- .../entries/pentacles/cyan_chalk.json | 70 + .../entries/pentacles/didactics.json | 47 + .../entries/pentacles/gray_chalk.json | 85 + .../entries/pentacles/green_chalk.json | 81 + .../entries/pentacles/light_blue_chalk.json | 74 + .../entries/pentacles/light_gray_chalk.json | 74 + .../entries/pentacles/lime_chalk.json | 85 + .../entries/pentacles/magenta_chalk.json | 81 + .../entries/pentacles/orange_chalk.json | 74 + .../entries/pentacles/paraphernalia.json | 31 +- .../entries/pentacles/pentacle_overview.json | 63 + .../entries/pentacles/pentacles_overview.json | 122 -- .../entries/pentacles/pink_chalk.json | 70 + .../entries/pentacles/possess_afrit.json | 15 +- .../entries/pentacles/possess_djinni.json | 20 +- .../entries/pentacles/possess_foliot.json | 15 +- .../entries/pentacles/possess_marid.json | 62 + .../pentacles/possess_unbound_afrit.json | 71 + .../entries/pentacles/purple_chalk.json | 74 + .../entries/pentacles/red_chalk.json | 86 + .../entries/pentacles/resurrect_spirit.json | 62 + .../entries/pentacles/summon_afrit.json | 15 +- .../entries/pentacles/summon_djinni.json | 22 +- .../entries/pentacles/summon_foliot.json | 15 +- .../entries/pentacles/summon_marid.json | 15 +- ..._spirit.json => summon_unbound_afrit.json} | 36 +- ...d_afrit.json => summon_unbound_marid.json} | 27 +- .../entries/pentacles/white_chalk.json | 74 + .../entries/pentacles/yellow_chalk.json | 80 + .../possession_rituals/horde_creeper.json | 5 +- .../possession_rituals/horde_drowned.json | 5 +- .../possession_rituals/horde_husk.json | 5 +- .../possession_rituals/horde_illager.json | 10 +- .../possession_rituals/horde_silverfish.json | 5 +- .../entries/possession_rituals/overview.json | 3 +- .../possession_rituals/possess_bee.json | 65 + .../possession_rituals/possess_breeze.json | 8 +- .../possess_elder_guardian.json | 3 +- .../possession_rituals/possess_enderman.json | 5 +- .../possession_rituals/possess_endermite.json | 3 +- .../possession_rituals/possess_ghast.json | 7 +- .../afrit_essence.json => possess_goat.json} | 37 +- .../possession_rituals/possess_hoglin.json | 5 +- .../possession_rituals/possess_phantom.json | 7 +- .../possess_random_animal.json} | 23 +- .../possession_rituals/possess_shulker.json | 7 +- .../possession_rituals/possess_skeleton.json | 3 +- .../possess_strong_breeze.json | 8 +- .../possess_unbound_otherworld_bird.json} | 19 +- .../possess_unbound_parrot.json} | 21 +- .../possession_rituals/possess_warden.json | 5 +- .../possess_weak_breeze.json | 8 +- .../possess_weak_shulker.json | 5 +- .../possession_rituals/possess_witch.json | 65 + .../possess_zombie_piglin.json | 65 + .../possession_rituals/return_to_rituals.json | 3 +- .../{summoning_rituals => }/wither_skull.json | 17 +- .../entries/rituals/crafting_rituals.json | 3 +- .../entries/rituals/familiar_rituals.json | 5 +- .../entries/rituals/possession_rituals.json | 3 +- .../entries/rituals/summoning_rituals.json | 3 +- .../craft_stabilizer_tier3.json | 4 + .../craft_stabilizer_tier4.json | 4 + .../craft_storage_remote.json | 6 +- .../summon_manage_machine.json | 2 +- .../summoning_rituals/afrit_essence.json | 5 +- .../{wither_skull.json => marid_essence.json} | 19 +- .../entries/summoning_rituals/overview.json | 5 +- .../summoning_rituals/return_to_rituals.json | 5 +- .../summoning_rituals/summon_cleaner.json | 7 +- .../summoning_rituals/summon_crusher_t1.json | 5 +- .../summoning_rituals/summon_crusher_t2.json | 5 +- .../summoning_rituals/summon_crusher_t3.json | 5 +- .../summoning_rituals/summon_crusher_t4.json | 5 +- .../summoning_rituals/summon_lumberjack.json | 5 +- .../summon_manage_machine.json | 9 +- .../summon_otherstone_trader.json | 7 +- .../summon_otherworld_sapling_trader.json | 5 +- .../summon_transport_items.json | 5 +- .../entries/summoning_rituals/time_magic.json | 7 +- .../summoning_rituals/trade_spirits.json | 5 +- .../summoning_rituals/weather_magic.json | 5 +- .../multiblocks/contact_eldritch_spirit.json | 109 ++ .../multiblocks/contact_wild_spirit.json | 61 + .../modonomicon/multiblocks/craft_afrit.json | 90 +- .../modonomicon/multiblocks/craft_djinni.json | 64 +- .../modonomicon/multiblocks/craft_foliot.json | 48 +- .../modonomicon/multiblocks/craft_marid.json | 108 +- .../modonomicon/multiblocks/debug.json | 58 +- .../multiblocks/possess_afrit.json | 86 +- .../multiblocks/possess_djinni.json | 66 +- .../multiblocks/possess_foliot.json | 30 +- .../multiblocks/possess_marid.json | 109 ++ .../multiblocks/possess_unbound_afrit.json | 89 ++ ...ater_spirit.json => resurrect_spirit.json} | 26 +- .../modonomicon/multiblocks/summon_afrit.json | 86 +- .../multiblocks/summon_djinni.json | 64 +- .../multiblocks/summon_foliot.json | 16 +- .../modonomicon/multiblocks/summon_marid.json | 106 +- .../multiblocks/summon_unbound_afrit.json | 85 + .../multiblocks/summon_unbound_marid.json | 93 ++ .../multiblocks/summon_wild_afrit.json | 65 - .../blasting/netherite_ingot_from_dust.json | 13 + .../recipe/crafting/chalk_black_impure.json | 6 +- .../recipe/crafting/chalk_blue_impure.json | 6 +- .../recipe/crafting/chalk_brown_impure.json | 6 +- .../recipe/crafting/chalk_cyan_impure.json | 4 +- .../recipe/crafting/chalk_gray_impure.json | 8 +- .../recipe/crafting/chalk_green_impure.json | 8 +- .../crafting/chalk_light_blue_impure.json | 6 +- .../crafting/chalk_light_gray_impure.json | 2 +- .../recipe/crafting/chalk_lime_impure.json | 6 +- .../recipe/crafting/chalk_magenta_impure.json | 6 +- .../recipe/crafting/chalk_orange_impure.json | 4 +- .../recipe/crafting/chalk_pink_impure.json | 6 +- .../recipe/crafting/chalk_red_impure.json | 2 +- .../recipe/crafting/chalk_white_impure.json | 4 +- ...d_impure.json => chalk_yellow_impure.json} | 2 +- .../recipe/crafting/magic_lamp_empty.json | 2 +- .../recipe/crafting/netherite_dust.json | 34 + .../recipe/crushing/amethyst_dust.json | 27 + .../crushing/amethyst_dust_from_gem.json | 27 + .../recipe/crushing/blackstone_dust.json | 12 + .../recipe/crushing/blue_ice_dust.json | 13 + .../recipe/crushing/calcite_dust.json | 12 + .../occultism/recipe/crushing/echo_dust.json | 13 + .../occultism/recipe/crushing/ice_dust.json | 13 + .../recipe/crushing/netherite_scrap_dust.json | 11 + .../recipe/crushing/packed_ice_dust.json | 13 + .../miner/basic_resources/andesite.json | 2 +- .../recipe/miner/basic_resources/basalt.json | 14 + .../miner/basic_resources/blackstone.json | 14 + .../miner/basic_resources/deepslate.json | 14 + .../recipe/miner/basic_resources/diorite.json | 2 +- .../recipe/miner/basic_resources/granite.json | 2 +- .../basic_resources/mossy_cobblestone.json | 2 +- .../basic_resources/mossy_stone_bricks.json | 2 +- .../recipe/miner/eldritch/amethyst.json | 28 + .../recipe/miner/eldritch/ancient_debris.json | 12 + .../recipe/miner/eldritch/arcane_crystal.json | 28 + .../occultism/recipe/miner/eldritch/coal.json | 28 + .../occultism/recipe/miner/eldritch/dark.json | 28 + .../recipe/miner/eldritch/diamond.json | 28 + .../recipe/miner/eldritch/emerald.json | 28 + .../recipe/miner/eldritch/fluorite.json | 28 + .../recipe/miner/eldritch/glowstone_dust.json | 28 + .../miner/eldritch/inferium_essence.json | 28 + .../recipe/miner/eldritch/lapis.json | 28 + .../recipe/miner/eldritch/lignite_coal.json | 28 + .../miner/eldritch/mining_dim_core.json | 14 + .../recipe/miner/eldritch/monazite.json | 28 + .../recipe/miner/eldritch/peridot.json | 28 + .../miner/eldritch/prosperity_shard.json | 28 + .../recipe/miner/eldritch/quartz.json | 28 + .../recipe/miner/eldritch/raw_aethersent.json | 28 + .../miner/eldritch/raw_allthemodium.json | 28 + .../recipe/miner/eldritch/raw_aluminium.json | 28 + .../recipe/miner/eldritch/raw_antimony.json | 28 + .../miner/eldritch/raw_azure_silver.json | 28 + .../recipe/miner/eldritch/raw_cloggrum.json | 28 + .../recipe/miner/eldritch/raw_copper.json | 28 + .../miner/eldritch/raw_crimson_iron.json | 28 + .../recipe/miner/eldritch/raw_froststeel.json | 28 + .../recipe/miner/eldritch/raw_gold.json | 28 + .../recipe/miner/eldritch/raw_iesnium.json | 28 + .../recipe/miner/eldritch/raw_iridium.json | 28 + .../recipe/miner/eldritch/raw_iron.json | 28 + .../recipe/miner/eldritch/raw_lead.json | 28 + .../recipe/miner/eldritch/raw_nickel.json | 28 + .../recipe/miner/eldritch/raw_osmium.json | 28 + .../recipe/miner/eldritch/raw_platinum.json | 28 + .../recipe/miner/eldritch/raw_silver.json | 28 + .../recipe/miner/eldritch/raw_tin.json | 28 + .../recipe/miner/eldritch/raw_titanium.json | 28 + .../recipe/miner/eldritch/raw_tungsten.json | 28 + .../miner/eldritch/raw_unobtainium.json | 28 + .../recipe/miner/eldritch/raw_uranium.json | 28 + .../recipe/miner/eldritch/raw_vibranium.json | 28 + .../recipe/miner/eldritch/raw_yellorium.json | 28 + .../recipe/miner/eldritch/raw_zinc.json | 28 + .../recipe/miner/eldritch/redstone.json | 28 + .../occultism/recipe/miner/eldritch/ruby.json | 28 + .../occultism/recipe/miner/eldritch/rune.json | 28 + .../recipe/miner/eldritch/sal_ammoniac.json | 28 + .../occultism/recipe/miner/eldritch/salt.json | 28 + .../recipe/miner/eldritch/sapphire.json | 28 + .../recipe/miner/eldritch/soulium_dust.json | 28 + .../recipe/miner/eldritch/stellarite.json | 28 + .../recipe/miner/eldritch/sulfur.json | 28 + .../recipe/miner/eldritch/uraninite.json | 28 + .../recipe/miner/master/mining_dim_core.json | 14 + .../recipe/miner/ores/crying_obsidian.json | 14 + .../recipe/miner/ores/gilded_blackstone.json | 14 + .../recipe/ritual/craft_budding_amethyst.json | 59 + .../recipe/ritual/craft_dragonyst_dust.json | 49 + .../recipe/ritual/craft_gray_paste.json | 28 + .../ritual/craft_miner_ancient_eldritch.json | 43 + .../recipe/ritual/craft_nature_paste.json | 45 + .../ritual/craft_reinforced_deepslate.json | 59 + .../ritual/craft_research_fragment_dust.json | 28 + .../ritual/craft_ritual_satchel_t2.json | 2 +- .../recipe/ritual/craft_wild_trim.json | 4 +- .../recipe/ritual/craft_witherite_dust.json | 37 + .../recipe/ritual/familiar_cthulhu.json | 2 +- .../recipe/ritual/familiar_mummy.json | 4 +- .../recipe/ritual/familiar_parrot.json | 2 +- .../occultism/recipe/ritual/possess_bee.json | 42 + .../recipe/ritual/possess_elder_guardian.json | 2 +- .../occultism/recipe/ritual/possess_goat.json | 66 + ...animal.json => possess_random_animal.json} | 8 +- .../recipe/ritual/possess_skeleton.json | 3 +- ...n => possess_unbound_otherworld_bird.json} | 6 +- ...arrot.json => possess_unbound_parrot.json} | 10 +- .../recipe/ritual/possess_warden.json | 6 - .../recipe/ritual/possess_witch.json | 41 + .../recipe/ritual/possess_zombie_piglin.json | 42 + .../recipe/ritual/repair_armors.json | 37 + .../recipe/ritual/repair_chalks.json | 34 + .../recipe/ritual/repair_miners.json | 34 + .../occultism/recipe/ritual/repair_tools.json | 34 + ...summon_allay.json => resurrect_allay.json} | 10 +- .../recipe/ritual/resurrect_familiar.json | 10 +- .../recipe/ritual/summon_afrit_crusher.json | 8 +- .../ritual/summon_afrit_rain_weather.json | 8 +- .../ritual/summon_afrit_thunder_weather.json | 8 +- .../recipe/ritual/summon_demonic_husband.json | 4 +- .../recipe/ritual/summon_demonic_wife.json | 4 +- .../ritual/summon_djinni_clear_weather.json | 8 +- .../recipe/ritual/summon_djinni_crusher.json | 8 +- .../recipe/ritual/summon_djinni_day_time.json | 8 +- .../ritual/summon_djinni_night_time.json | 8 +- .../recipe/ritual/summon_foliot_crusher.json | 8 +- .../summon_foliot_otherstone_trader.json | 8 +- .../ritual/summon_foliot_sapling_trader.json | 8 +- .../recipe/ritual/summon_marid_crusher.json | 8 +- ...d_afrit.json => summon_unbound_afrit.json} | 10 +- .../recipe/ritual/summon_unbound_marid.json | 41 + .../{possess_breeze.json => wild_breeze.json} | 10 +- ...on_wild_creeper.json => wild_creeper.json} | 8 +- ...on_wild_drowned.json => wild_drowned.json} | 20 +- ...e_illager.json => wild_horde_illager.json} | 16 +- .../{summon_wild_hunt.json => wild_hunt.json} | 8 +- .../{summon_wild_husk.json => wild_husk.json} | 10 +- ...d_silverfish.json => wild_silverfish.json} | 8 +- ...ng_breeze.json => wild_strong_breeze.json} | 8 +- ...weak_breeze.json => wild_weak_breeze.json} | 8 +- .../smelting/netherite_ingot_from_dust.json | 13 + .../{chalk_gold.json => chalk_yellow.json} | 2 +- .../spirit_trade/otherworld_sapling.json | 2 +- .../tags/block/foundation_glyphs_any.json | 8 + .../tags/block/foundation_glyphs_dark.json | 6 + .../block/foundation_glyphs_no_white.json | 7 + .../block/saplings/otherworld_natural.json | 5 + .../healed_by_demons_dream_fruit.json | 11 + .../occultism/tags/item/armored_items.json | 8 + .../data/occultism/tags/item/miners.json | 3 +- .../occultism/tags/item/miners/eldritch.json | 5 + .../item/saplings/otherworld_natural.json | 5 + .../com/klikli_dev/occultism/Occultism.java | 5 + .../model/entity/MaridUnboundModel.java | 47 + .../render/entity/MaridUnboundRenderer.java | 39 + .../entity/PossessedZombiePiglinRenderer.java | 40 + .../block/GoldenSacrificialBowlBlock.java | 8 +- .../common/block/LargeCandleBlock.java | 2 - .../DimensionalMineshaftBlockEntity.java | 9 +- .../GoldenSacrificialBowlBlockEntity.java | 3 +- .../entity/possessed/GoatOfMercyEntity.java | 49 + .../entity/possessed/PossessedBeeEntity.java | 104 ++ .../possessed/PossessedWitchEntity.java | 56 + .../PossessedZombiePiglinEntity.java | 90 ++ .../common/entity/spirit/DjinniEntity.java | 2 +- .../common/entity/spirit/MaridEntity.java | 14 + .../entity/spirit/MaridUnboundEntity.java | 145 ++ .../common/item/spirit/MinerSpiritItem.java | 7 + .../occultism/common/ritual/RepairRitual.java | 55 + .../occultism/common/ritual/SummonRitual.java | 21 +- .../config/OccultismClientConfig.java | 39 +- .../config/OccultismServerConfig.java | 10 + .../config/OccultismStartupConfig.java | 4 + .../crafting/recipe/SpiritTradeRecipe.java | 2 +- .../datagen/ItemModelsGenerator.java | 52 +- .../OccultismAdvancementSubProvider.java | 4 +- .../datagen/OccultismBookProvider.java | 1410 ++++++----------- .../occultism/datagen/PentacleProvider.java | 589 ++++--- .../datagen/book/BindingRitualsCategory.java | 177 ++- .../datagen/book/FamiliarRitualsCategory.java | 116 +- .../datagen/book/GettingStartedCategory.java | 180 +-- .../datagen/book/PentaclesCategory.java | 225 +++ .../book/pentacles/BlackChalkEntry.java | 86 + .../book/pentacles/BlueChalkEntry.java | 82 + .../book/pentacles/BrownChalkEntry.java | 81 + .../pentacles/ContactEldritchSpiritEntry.java | 75 + .../pentacles/ContactWildSpiritEntry.java | 88 + .../book/pentacles/CraftAfritEntry.java | 81 + .../book/pentacles/CraftDjinniEntry.java | 87 + .../book/pentacles/CraftFoliotEntry.java | 84 + .../book/pentacles/CraftMaridEntry.java | 80 + .../book/pentacles/CyanChalkEntry.java | 87 + .../book/pentacles/DidacticsEntry.java | 73 + .../book/pentacles/GrayChalkEntry.java | 86 + .../book/pentacles/GreenChalkEntry.java | 84 + .../book/pentacles/LightBlueChalkEntry.java | 83 + .../book/pentacles/LightGrayChalkEntry.java | 82 + .../book/pentacles/LimeChalkEntry.java | 86 + .../book/pentacles/MagentaChalkEntry.java | 86 + .../book/pentacles/OrangeChalkEntry.java | 83 + .../book/pentacles/ParaphernaliaEntry.java | 112 ++ .../pentacles/PentaclesOverviewEntry.java | 98 ++ .../book/pentacles/PinkChalkEntry.java | 82 + .../book/pentacles/PossessAfritEntry.java | 81 + .../book/pentacles/PossessDjinniEntry.java | 102 ++ .../book/pentacles/PossessFoliotEntry.java | 88 + .../book/pentacles/PossessMaridEntry.java | 77 + .../pentacles/PossessUnboundAfritEntry.java | 79 + .../book/pentacles/PurpleChalkEntry.java | 88 + .../datagen/book/pentacles/RedChalkEntry.java | 93 ++ .../book/pentacles/ResurrectSpiritEntry.java | 82 + .../book/pentacles/SummonAfritEntry.java | 82 + .../book/pentacles/SummonDjinniEntry.java | 87 + .../book/pentacles/SummonFoliotEntry.java | 86 + .../book/pentacles/SummonMaridEntry.java | 78 + .../pentacles/SummonUnboundAfritEntry.java | 82 + .../pentacles/SummonUnboundMaridEntry.java | 81 + .../book/pentacles/WhiteChalkEntry.java | 82 + .../book/pentacles/YellowChalkEntry.java | 81 + .../occultism/datagen/lang/ENUSProvider.java | 1201 ++++++-------- .../datagen/loot/OccultismEntityLoot.java | 60 +- .../datagen/recipe/MinerRecipes.java | 175 +- .../recipe/OccultismRecipeProvider.java | 181 ++- .../datagen/recipe/RitualRecipes.java | 519 ++++-- .../builders/CrushingRecipeBuilder.java | 8 + .../recipe/builders/MinerRecipeBuilder.java | 8 + .../tags/OccultismBlockTagProvider.java | 18 +- .../tags/OccultismEntityTypeTagProvider.java | 17 +- .../tags/OccultismItemTagProvider.java | 61 +- .../handlers/ClientSetupEventHandler.java | 11 +- .../occultism/handlers/ColorEventHandler.java | 4 +- .../occultism/registry/OccultismBlocks.java | 22 +- .../registry/OccultismCreativeModeTabs.java | 24 +- .../occultism/registry/OccultismEntities.java | 39 +- .../occultism/registry/OccultismFoods.java | 6 + .../occultism/registry/OccultismItems.java | 885 ++++++----- .../occultism/registry/OccultismRituals.java | 3 + .../occultism/registry/OccultismTags.java | 42 +- .../animations/entity/marid.animation.json | 706 +++++++++ .../occultism/geo/entity/marid.geo.json | 189 +++ .../textures/entity/old_zombie_piglin.png | Bin 0 -> 4404 bytes .../textures/gui/book/bowl_placement.png | Bin 41403 -> 38511 bytes .../occultism/textures/gui/book/familiar.png | Bin 0 -> 5306 bytes .../occultism/textures/gui/book/pentacle.png | Bin 0 -> 1395 bytes .../textures/gui/book/redstone_clone.png | Bin 0 -> 127207 bytes .../occultism/textures/gui/book/rod_far.png | Bin 21610 -> 31751 bytes .../occultism/textures/gui/book/rod_mid.png | Bin 21720 -> 32107 bytes .../occultism/textures/gui/book/rod_near.png | Bin 26263 -> 37613 bytes .../gui/book/spiritfire_instructions.png | Bin 38443 -> 254517 bytes .../occultism/textures/item/amethyst_dust.png | Bin 0 -> 4497 bytes .../textures/item/book_of_calling_cleaner.png | Bin 256 -> 1062 bytes .../occultism/textures/item/chalk_cyan.png | Bin 711 -> 4381 bytes .../occultism/textures/item/chalk_magenta.png | Bin 665 -> 4390 bytes .../occultism/textures/item/chalk_purple.png | Bin 180 -> 748 bytes .../occultism/textures/item/chalk_red.png | Bin 180 -> 728 bytes .../occultism/textures/item/chalk_yellow.png | Bin 0 -> 180 bytes ...old_impure.png => chalk_yellow_impure.png} | Bin .../textures/item/cruelty_essence.png | Bin 0 -> 5648 bytes .../textures/item/crushed_blackstone.png | Bin 0 -> 740 bytes .../textures/item/crushed_blue_ice.png | Bin 0 -> 4493 bytes .../textures/item/crushed_calcite.png | Bin 0 -> 847 bytes .../occultism/textures/item/crushed_ice.png | Bin 0 -> 4413 bytes .../textures/item/crushed_packed_ice.png | Bin 0 -> 4496 bytes .../occultism/textures/item/cursed_honey.png | Bin 0 -> 5263 bytes .../occultism/textures/item/demonic_meat.png | Bin 0 -> 792 bytes .../textures/item/dragonyst_dust.png | Bin 0 -> 4561 bytes .../occultism/textures/item/echo_dust.png | Bin 0 -> 4479 bytes .../occultism/textures/item/emerald_dust.png | Bin 0 -> 4541 bytes .../occultism/textures/item/gray_paste.png | Bin 0 -> 852 bytes .../occultism/textures/item/lapis_dust.png | Bin 0 -> 4457 bytes .../occultism/textures/item/marid_essence.png | Bin 0 -> 5491 bytes .../textures/item/mining_dim_core.png | Bin 0 -> 1983 bytes .../textures/item/mining_dim_core.png.mcmeta | 39 + .../occultism/textures/item/nature_paste.png | Bin 0 -> 4838 bytes .../textures/item/netherite_dust.png | Bin 0 -> 790 bytes .../textures/item/netherite_scrap_dust.png | Bin 0 -> 4402 bytes .../occultism/textures/item/repair_icon.png | Bin 0 -> 710 bytes .../textures/item/repair_icon.png.mcmeta | 23 + .../textures/item/research_fragment_dust.png | Bin 0 -> 4603 bytes .../textures/item/resurrect_icon.png | Bin 0 -> 731 bytes .../textures/item/resurrect_icon.png.mcmeta | 23 + .../textures/item/ritual_dummy_craft.png | Bin 0 -> 4878 bytes .../textures/item/ritual_dummy_misc.png | Bin 0 -> 5635 bytes .../textures/item/ritual_dummy_possess.png | Bin 0 -> 5111 bytes ...tual_dummy.png => ritual_dummy_summon.png} | Bin .../textures/item/witherite_dust.png | Bin 0 -> 4512 bytes .../{white_candle.json => large_candles.json} | 4 +- .../spirit_attuned_crystal.json | 4 +- .../occultism/advancement/chalks/black.json | 26 + .../occultism/advancement/chalks/blue.json | 26 + .../occultism/advancement/chalks/brown.json | 26 + .../occultism/advancement/chalks/cyan.json | 26 + .../occultism/advancement/chalks/gray.json | 26 + .../occultism/advancement/chalks/green.json | 26 + .../advancement/chalks/light_blue.json | 26 + .../advancement/chalks/light_gray.json | 26 + .../occultism/advancement/chalks/lime.json | 26 + .../occultism/advancement/chalks/magenta.json | 26 + .../occultism/advancement/chalks/orange.json | 26 + .../occultism/advancement/chalks/pink.json | 26 + .../occultism/advancement/chalks/purple.json | 26 + .../occultism/advancement/chalks/red.json | 26 + .../occultism/advancement/chalks/root.json | 26 + .../occultism/advancement/chalks/white.json | 26 + .../occultism/advancement/chalks/yellow.json | 26 + 807 files changed, 20199 insertions(+), 4723 deletions(-) rename src/generated/resources/assets/occultism/models/item/{chalk_gold_impure.json => amethyst_dust.json} (56%) create mode 100644 src/generated/resources/assets/occultism/models/item/chalk_yellow_impure.json create mode 100644 src/generated/resources/assets/occultism/models/item/cruelty_essence.json create mode 100644 src/generated/resources/assets/occultism/models/item/crushed_blackstone.json create mode 100644 src/generated/resources/assets/occultism/models/item/crushed_blue_ice.json create mode 100644 src/generated/resources/assets/occultism/models/item/crushed_calcite.json rename src/generated/resources/assets/occultism/models/item/{pentacle.json => crushed_ice.json} (58%) create mode 100644 src/generated/resources/assets/occultism/models/item/crushed_packed_ice.json create mode 100644 src/generated/resources/assets/occultism/models/item/cursed_honey.json create mode 100644 src/generated/resources/assets/occultism/models/item/demonic_meat.json create mode 100644 src/generated/resources/assets/occultism/models/item/dragonyst_dust.json create mode 100644 src/generated/resources/assets/occultism/models/item/echo_dust.json create mode 100644 src/generated/resources/assets/occultism/models/item/emerald_dust.json create mode 100644 src/generated/resources/assets/occultism/models/item/gray_paste.json create mode 100644 src/generated/resources/assets/occultism/models/item/lapis_dust.json create mode 100644 src/generated/resources/assets/occultism/models/item/marid_essence.json create mode 100644 src/generated/resources/assets/occultism/models/item/miner_ancient_eldritch.json create mode 100644 src/generated/resources/assets/occultism/models/item/mining_dim_core.json create mode 100644 src/generated/resources/assets/occultism/models/item/nature_paste.json create mode 100644 src/generated/resources/assets/occultism/models/item/netherite_dust.json create mode 100644 src/generated/resources/assets/occultism/models/item/netherite_scrap_dust.json create mode 100644 src/generated/resources/assets/occultism/models/item/pentacle_craft.json create mode 100644 src/generated/resources/assets/occultism/models/item/pentacle_misc.json create mode 100644 src/generated/resources/assets/occultism/models/item/pentacle_possess.json create mode 100644 src/generated/resources/assets/occultism/models/item/pentacle_summon.json create mode 100644 src/generated/resources/assets/occultism/models/item/repair_icon.json create mode 100644 src/generated/resources/assets/occultism/models/item/research_fragment_dust.json create mode 100644 src/generated/resources/assets/occultism/models/item/resurrect_icon.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_budding_amethyst.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_dragonyst_dust.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_gray_paste.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_miner_ancient_eldritch.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_nature_paste.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_reinforced_deepslate.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_research_fragment_dust.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_witherite_dust.json delete mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/custom_ritual.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/custom_ritual_craft.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/custom_ritual_misc.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/custom_ritual_possess.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/custom_ritual_summon.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_bee.json delete mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_breeze.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_goat.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_random_animal.json delete mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_strong_breeze.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_unbound_otherworld_bird.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_unbound_parrot.json delete mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_weak_breeze.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_witch.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_zombie_piglin.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/repair_armors.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/repair_chalks.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/repair_miners.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/repair_tools.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/resurrect_allay.json delete mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_allay.json delete mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_horde_illager.json delete mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_random_animal.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_unbound_afrit.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_unbound_marid.json delete mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_afrit.json delete mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_creeper.json delete mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_drowned.json delete mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_hunt.json delete mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_husk.json delete mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_otherworld_bird.json delete mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_parrot.json delete mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_silverfish.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_breeze.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_creeper.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_drowned.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_horde_illager.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_hunt.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_husk.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_silverfish.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_strong_breeze.json create mode 100644 src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_weak_breeze.json rename src/generated/resources/assets/occultism/models/item/spawn_egg/{afrit_wild.json => afrit_unbound.json} (100%) rename src/generated/resources/assets/occultism/models/item/spawn_egg/{possessed_breeze.json => marid_unbound.json} (100%) rename src/generated/resources/assets/occultism/models/item/spawn_egg/{possessed_evoker.json => possessed_bee.json} (100%) rename src/generated/resources/assets/occultism/models/item/spawn_egg/{possessed_strong_breeze.json => possessed_goat.json} (100%) rename src/generated/resources/assets/occultism/models/item/spawn_egg/{possessed_weak_breeze.json => possessed_witch.json} (100%) create mode 100644 src/generated/resources/assets/occultism/models/item/spawn_egg/possessed_zombie_piglin.json create mode 100644 src/generated/resources/assets/occultism/models/item/spawn_egg/wild_breeze.json create mode 100644 src/generated/resources/assets/occultism/models/item/spawn_egg/wild_evoker.json create mode 100644 src/generated/resources/assets/occultism/models/item/spawn_egg/wild_strong_breeze.json create mode 100644 src/generated/resources/assets/occultism/models/item/spawn_egg/wild_weak_breeze.json create mode 100644 src/generated/resources/assets/occultism/models/item/witherite_dust.json create mode 100644 src/generated/resources/data/c/tags/entity_type/allay.json rename src/generated/resources/data/{occultism/tags/entity_type/camel.json => c/tags/entity_type/camels.json} (100%) create mode 100644 src/generated/resources/data/c/tags/entity_type/cats.json rename src/generated/resources/data/c/tags/entity_type/{chicken.json => chickens.json} (100%) rename src/generated/resources/data/{occultism/tags/entity_type/dolphin.json => c/tags/entity_type/dolphins.json} (100%) rename src/generated/resources/data/{occultism/tags/entity_type/ocelot.json => c/tags/entity_type/ocelots.json} (100%) rename src/generated/resources/data/c/tags/entity_type/{squid.json => squids.json} (100%) create mode 100644 src/generated/resources/data/c/tags/entity_type/tadpoles.json rename src/generated/resources/data/{occultism => c}/tags/entity_type/vex.json (100%) create mode 100644 src/generated/resources/data/c/tags/entity_type/wardens.json rename src/generated/resources/data/{occultism => c}/tags/entity_type/wolfs.json (100%) create mode 100644 src/generated/resources/data/c/tags/item/dusts/amethyst.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/blackstone.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/blue_ice.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/calcite.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/dragonyst.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/echo.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/emerald.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/ice.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/lapis.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/netherite.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/netherite_scrap.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/otherstone.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/otherworld_wood.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/packed_ice.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/research.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/witherite.json create mode 100644 src/generated/resources/data/c/tags/item/tools.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/amethyst_dust.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/amethyst_dust_from_gem.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/blackstone_dust.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/blue_ice_dust.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/calcite_dust.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/echo_dust.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/ice_dust.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/netherite_scrap_dust.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/packed_ice_dust.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/basic_resources/basalt.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/basic_resources/blackstone.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/basic_resources/deepslate.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/amethyst.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/ancient_debris.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/arcane_crystal.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/coal.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/dark.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/diamond.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/emerald.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/fluorite.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/glowstone_dust.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/inferium_essence.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/lapis.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/lignite_coal.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/mining_dim_core.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/monazite.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/peridot.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/prosperity_shard.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/quartz.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_aethersent.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_allthemodium.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_aluminium.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_antimony.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_azure_silver.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_cloggrum.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_copper.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_crimson_iron.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_froststeel.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_gold.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_iesnium.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_iridium.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_iron.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_lead.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_nickel.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_osmium.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_platinum.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_silver.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_tin.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_titanium.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_tungsten.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_unobtainium.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_uranium.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_vibranium.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_yellorium.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_zinc.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/redstone.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/ruby.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/rune.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/sal_ammoniac.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/salt.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/sapphire.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/soulium_dust.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/stellarite.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/sulfur.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/uraninite.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/master/mining_dim_core.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/ores/crying_obsidian.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/miner/miner/ores/gilded_blackstone.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/misc/blasting/netherite_ingot_from_dust.json rename src/generated/resources/data/occultism/advancement/recipes/misc/crafting/{chalk_gold_impure.json => chalk_yellow_impure.json} (73%) create mode 100644 src/generated/resources/data/occultism/advancement/recipes/misc/crafting/netherite_dust.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/misc/smelting/netherite_ingot_from_dust.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_budding_amethyst.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_dragonyst_dust.json rename src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/{summon_wild_otherworld_bird.json => craft_gray_paste.json} (81%) create mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_miner_ancient_eldritch.json rename src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/{summon_wild_parrot.json => craft_nature_paste.json} (83%) create mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_reinforced_deepslate.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_research_fragment_dust.json rename src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/{summon_horde_illager.json => craft_witherite_dust.json} (83%) create mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_bee.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_goat.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_random_animal.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_unbound_otherworld_bird.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_unbound_parrot.json rename src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/{summon_allay.json => possess_witch.json} (85%) rename src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/{possess_strong_breeze.json => possess_zombie_piglin.json} (83%) rename src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/{possess_breeze.json => repair_armors.json} (84%) create mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/repair_chalks.json rename src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/{summon_wild_hunt.json => repair_miners.json} (84%) rename src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/{summon_wild_husk.json => repair_tools.json} (84%) rename src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/{summon_random_animal.json => resurrect_allay.json} (83%) rename src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/{possess_weak_breeze.json => summon_unbound_afrit.json} (83%) create mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_unbound_marid.json delete mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_creeper.json delete mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_drowned.json delete mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_silverfish.json rename src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/{summon_wild_afrit.json => wild_breeze.json} (84%) create mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_creeper.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_drowned.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_horde_illager.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_hunt.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_husk.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_silverfish.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_strong_breeze.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_weak_breeze.json delete mode 100644 src/generated/resources/data/occultism/advancement/recipes/spirit_fire/spirit_fire/chalk_gold.json create mode 100644 src/generated/resources/data/occultism/advancement/recipes/spirit_fire/spirit_fire/chalk_yellow.json create mode 100644 src/generated/resources/data/occultism/loot_table/entities/marid_unbound.json create mode 100644 src/generated/resources/data/occultism/loot_table/entities/mercy_goat.json create mode 100644 src/generated/resources/data/occultism/loot_table/entities/possessed_bee.json create mode 100644 src/generated/resources/data/occultism/loot_table/entities/possessed_witch.json create mode 100644 src/generated/resources/data/occultism/loot_table/entities/possessed_zombie_piglin.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_ancient_miner.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_budding_amethyst.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_reinforced_deepslate.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/repair.json rename src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/{summon_allay.json => resurrect_allay.json} (83%) create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/black_chalk.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/blue_chalk.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/brown_chalk.json delete mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/chalk_uses.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/contact_eldritch_spirit.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/contact_wild_spirit.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/cyan_chalk.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/didactics.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/gray_chalk.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/green_chalk.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/light_blue_chalk.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/light_gray_chalk.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/lime_chalk.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/magenta_chalk.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/orange_chalk.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/pentacle_overview.json delete mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/pentacles_overview.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/pink_chalk.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/possess_marid.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/possess_unbound_afrit.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/purple_chalk.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/red_chalk.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/resurrect_spirit.json rename src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/{summon_wild_greater_spirit.json => summon_unbound_afrit.json} (64%) rename src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/{summon_wild_afrit.json => summon_unbound_marid.json} (71%) create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/white_chalk.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/yellow_chalk.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_bee.json rename src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/{summoning_rituals/afrit_essence.json => possess_goat.json} (51%) rename src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/{summoning_rituals/summon_random_animal.json => possession_rituals/possess_random_animal.json} (59%) rename src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/{summoning_rituals/summon_wild_otherworld_bird.json => possession_rituals/possess_unbound_otherworld_bird.json} (65%) rename src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/{summoning_rituals/summon_wild_parrot.json => possession_rituals/possess_unbound_parrot.json} (66%) create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_witch.json create mode 100644 src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_zombie_piglin.json rename src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/{summoning_rituals => }/wither_skull.json (62%) rename src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/{wither_skull.json => marid_essence.json} (73%) create mode 100644 src/generated/resources/data/occultism/modonomicon/multiblocks/contact_eldritch_spirit.json create mode 100644 src/generated/resources/data/occultism/modonomicon/multiblocks/contact_wild_spirit.json create mode 100644 src/generated/resources/data/occultism/modonomicon/multiblocks/possess_marid.json create mode 100644 src/generated/resources/data/occultism/modonomicon/multiblocks/possess_unbound_afrit.json rename src/generated/resources/data/occultism/modonomicon/multiblocks/{summon_wild_greater_spirit.json => resurrect_spirit.json} (66%) create mode 100644 src/generated/resources/data/occultism/modonomicon/multiblocks/summon_unbound_afrit.json create mode 100644 src/generated/resources/data/occultism/modonomicon/multiblocks/summon_unbound_marid.json delete mode 100644 src/generated/resources/data/occultism/modonomicon/multiblocks/summon_wild_afrit.json create mode 100644 src/generated/resources/data/occultism/recipe/blasting/netherite_ingot_from_dust.json rename src/generated/resources/data/occultism/recipe/crafting/{chalk_gold_impure.json => chalk_yellow_impure.json} (88%) create mode 100644 src/generated/resources/data/occultism/recipe/crafting/netherite_dust.json create mode 100644 src/generated/resources/data/occultism/recipe/crushing/amethyst_dust.json create mode 100644 src/generated/resources/data/occultism/recipe/crushing/amethyst_dust_from_gem.json create mode 100644 src/generated/resources/data/occultism/recipe/crushing/blackstone_dust.json create mode 100644 src/generated/resources/data/occultism/recipe/crushing/blue_ice_dust.json create mode 100644 src/generated/resources/data/occultism/recipe/crushing/calcite_dust.json create mode 100644 src/generated/resources/data/occultism/recipe/crushing/echo_dust.json create mode 100644 src/generated/resources/data/occultism/recipe/crushing/ice_dust.json create mode 100644 src/generated/resources/data/occultism/recipe/crushing/netherite_scrap_dust.json create mode 100644 src/generated/resources/data/occultism/recipe/crushing/packed_ice_dust.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/basic_resources/basalt.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/basic_resources/blackstone.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/basic_resources/deepslate.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/amethyst.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/ancient_debris.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/arcane_crystal.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/coal.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/dark.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/diamond.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/emerald.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/fluorite.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/glowstone_dust.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/inferium_essence.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/lapis.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/lignite_coal.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/mining_dim_core.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/monazite.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/peridot.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/prosperity_shard.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/quartz.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_aethersent.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_allthemodium.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_aluminium.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_antimony.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_azure_silver.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_cloggrum.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_copper.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_crimson_iron.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_froststeel.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_gold.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_iesnium.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_iridium.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_iron.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_lead.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_nickel.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_osmium.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_platinum.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_silver.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_tin.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_titanium.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_tungsten.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_unobtainium.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_uranium.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_vibranium.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_yellorium.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/raw_zinc.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/redstone.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/ruby.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/rune.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/sal_ammoniac.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/salt.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/sapphire.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/soulium_dust.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/stellarite.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/sulfur.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/eldritch/uraninite.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/master/mining_dim_core.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/ores/crying_obsidian.json create mode 100644 src/generated/resources/data/occultism/recipe/miner/ores/gilded_blackstone.json create mode 100644 src/generated/resources/data/occultism/recipe/ritual/craft_budding_amethyst.json create mode 100644 src/generated/resources/data/occultism/recipe/ritual/craft_dragonyst_dust.json create mode 100644 src/generated/resources/data/occultism/recipe/ritual/craft_gray_paste.json create mode 100644 src/generated/resources/data/occultism/recipe/ritual/craft_miner_ancient_eldritch.json create mode 100644 src/generated/resources/data/occultism/recipe/ritual/craft_nature_paste.json create mode 100644 src/generated/resources/data/occultism/recipe/ritual/craft_reinforced_deepslate.json create mode 100644 src/generated/resources/data/occultism/recipe/ritual/craft_research_fragment_dust.json create mode 100644 src/generated/resources/data/occultism/recipe/ritual/craft_witherite_dust.json create mode 100644 src/generated/resources/data/occultism/recipe/ritual/possess_bee.json create mode 100644 src/generated/resources/data/occultism/recipe/ritual/possess_goat.json rename src/generated/resources/data/occultism/recipe/ritual/{summon_random_animal.json => possess_random_animal.json} (78%) rename src/generated/resources/data/occultism/recipe/ritual/{summon_wild_otherworld_bird.json => possess_unbound_otherworld_bird.json} (79%) rename src/generated/resources/data/occultism/recipe/ritual/{summon_wild_parrot.json => possess_unbound_parrot.json} (74%) create mode 100644 src/generated/resources/data/occultism/recipe/ritual/possess_witch.json create mode 100644 src/generated/resources/data/occultism/recipe/ritual/possess_zombie_piglin.json create mode 100644 src/generated/resources/data/occultism/recipe/ritual/repair_armors.json create mode 100644 src/generated/resources/data/occultism/recipe/ritual/repair_chalks.json create mode 100644 src/generated/resources/data/occultism/recipe/ritual/repair_miners.json create mode 100644 src/generated/resources/data/occultism/recipe/ritual/repair_tools.json rename src/generated/resources/data/occultism/recipe/ritual/{summon_allay.json => resurrect_allay.json} (74%) rename src/generated/resources/data/occultism/recipe/ritual/{summon_wild_afrit.json => summon_unbound_afrit.json} (73%) create mode 100644 src/generated/resources/data/occultism/recipe/ritual/summon_unbound_marid.json rename src/generated/resources/data/occultism/recipe/ritual/{possess_breeze.json => wild_breeze.json} (77%) rename src/generated/resources/data/occultism/recipe/ritual/{summon_wild_creeper.json => wild_creeper.json} (83%) rename src/generated/resources/data/occultism/recipe/ritual/{summon_wild_drowned.json => wild_drowned.json} (59%) rename src/generated/resources/data/occultism/recipe/ritual/{summon_horde_illager.json => wild_horde_illager.json} (68%) rename src/generated/resources/data/occultism/recipe/ritual/{summon_wild_hunt.json => wild_hunt.json} (79%) rename src/generated/resources/data/occultism/recipe/ritual/{summon_wild_husk.json => wild_husk.json} (82%) rename src/generated/resources/data/occultism/recipe/ritual/{summon_wild_silverfish.json => wild_silverfish.json} (78%) rename src/generated/resources/data/occultism/recipe/ritual/{possess_strong_breeze.json => wild_strong_breeze.json} (83%) rename src/generated/resources/data/occultism/recipe/ritual/{possess_weak_breeze.json => wild_weak_breeze.json} (80%) create mode 100644 src/generated/resources/data/occultism/recipe/smelting/netherite_ingot_from_dust.json rename src/generated/resources/data/occultism/recipe/spirit_fire/{chalk_gold.json => chalk_yellow.json} (74%) create mode 100644 src/generated/resources/data/occultism/tags/block/foundation_glyphs_any.json create mode 100644 src/generated/resources/data/occultism/tags/block/foundation_glyphs_dark.json create mode 100644 src/generated/resources/data/occultism/tags/block/foundation_glyphs_no_white.json create mode 100644 src/generated/resources/data/occultism/tags/block/saplings/otherworld_natural.json create mode 100644 src/generated/resources/data/occultism/tags/item/armored_items.json create mode 100644 src/generated/resources/data/occultism/tags/item/miners/eldritch.json create mode 100644 src/generated/resources/data/occultism/tags/item/saplings/otherworld_natural.json create mode 100644 src/main/java/com/klikli_dev/occultism/client/model/entity/MaridUnboundModel.java create mode 100644 src/main/java/com/klikli_dev/occultism/client/render/entity/MaridUnboundRenderer.java create mode 100644 src/main/java/com/klikli_dev/occultism/client/render/entity/PossessedZombiePiglinRenderer.java create mode 100644 src/main/java/com/klikli_dev/occultism/common/entity/possessed/GoatOfMercyEntity.java create mode 100644 src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedBeeEntity.java create mode 100644 src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedWitchEntity.java create mode 100644 src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedZombiePiglinEntity.java create mode 100644 src/main/java/com/klikli_dev/occultism/common/entity/spirit/MaridUnboundEntity.java create mode 100644 src/main/java/com/klikli_dev/occultism/common/ritual/RepairRitual.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/PentaclesCategory.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/BlackChalkEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/BlueChalkEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/BrownChalkEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/ContactEldritchSpiritEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/ContactWildSpiritEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/CraftAfritEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/CraftDjinniEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/CraftFoliotEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/CraftMaridEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/CyanChalkEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/DidacticsEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/GrayChalkEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/GreenChalkEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/LightBlueChalkEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/LightGrayChalkEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/LimeChalkEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/MagentaChalkEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/OrangeChalkEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/ParaphernaliaEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PentaclesOverviewEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PinkChalkEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PossessAfritEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PossessDjinniEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PossessFoliotEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PossessMaridEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PossessUnboundAfritEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PurpleChalkEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/RedChalkEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/ResurrectSpiritEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonAfritEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonDjinniEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonFoliotEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonMaridEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonUnboundAfritEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonUnboundMaridEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/WhiteChalkEntry.java create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/YellowChalkEntry.java create mode 100644 src/main/resources/assets/occultism/animations/entity/marid.animation.json create mode 100644 src/main/resources/assets/occultism/geo/entity/marid.geo.json create mode 100644 src/main/resources/assets/occultism/textures/entity/old_zombie_piglin.png create mode 100644 src/main/resources/assets/occultism/textures/gui/book/familiar.png create mode 100644 src/main/resources/assets/occultism/textures/gui/book/pentacle.png create mode 100644 src/main/resources/assets/occultism/textures/gui/book/redstone_clone.png create mode 100644 src/main/resources/assets/occultism/textures/item/amethyst_dust.png create mode 100644 src/main/resources/assets/occultism/textures/item/chalk_yellow.png rename src/main/resources/assets/occultism/textures/item/{chalk_gold_impure.png => chalk_yellow_impure.png} (100%) create mode 100644 src/main/resources/assets/occultism/textures/item/cruelty_essence.png create mode 100644 src/main/resources/assets/occultism/textures/item/crushed_blackstone.png create mode 100644 src/main/resources/assets/occultism/textures/item/crushed_blue_ice.png create mode 100644 src/main/resources/assets/occultism/textures/item/crushed_calcite.png create mode 100644 src/main/resources/assets/occultism/textures/item/crushed_ice.png create mode 100644 src/main/resources/assets/occultism/textures/item/crushed_packed_ice.png create mode 100644 src/main/resources/assets/occultism/textures/item/cursed_honey.png create mode 100644 src/main/resources/assets/occultism/textures/item/demonic_meat.png create mode 100644 src/main/resources/assets/occultism/textures/item/dragonyst_dust.png create mode 100644 src/main/resources/assets/occultism/textures/item/echo_dust.png create mode 100644 src/main/resources/assets/occultism/textures/item/emerald_dust.png create mode 100644 src/main/resources/assets/occultism/textures/item/gray_paste.png create mode 100644 src/main/resources/assets/occultism/textures/item/lapis_dust.png create mode 100644 src/main/resources/assets/occultism/textures/item/marid_essence.png create mode 100644 src/main/resources/assets/occultism/textures/item/mining_dim_core.png create mode 100644 src/main/resources/assets/occultism/textures/item/mining_dim_core.png.mcmeta create mode 100644 src/main/resources/assets/occultism/textures/item/nature_paste.png create mode 100644 src/main/resources/assets/occultism/textures/item/netherite_dust.png create mode 100644 src/main/resources/assets/occultism/textures/item/netherite_scrap_dust.png create mode 100644 src/main/resources/assets/occultism/textures/item/repair_icon.png create mode 100644 src/main/resources/assets/occultism/textures/item/repair_icon.png.mcmeta create mode 100644 src/main/resources/assets/occultism/textures/item/research_fragment_dust.png create mode 100644 src/main/resources/assets/occultism/textures/item/resurrect_icon.png create mode 100644 src/main/resources/assets/occultism/textures/item/resurrect_icon.png.mcmeta create mode 100644 src/main/resources/assets/occultism/textures/item/ritual_dummy_craft.png create mode 100644 src/main/resources/assets/occultism/textures/item/ritual_dummy_misc.png create mode 100644 src/main/resources/assets/occultism/textures/item/ritual_dummy_possess.png rename src/main/resources/assets/occultism/textures/item/{ritual_dummy.png => ritual_dummy_summon.png} (100%) create mode 100644 src/main/resources/assets/occultism/textures/item/witherite_dust.png rename src/main/resources/data/apotheosis/enchanting_stats/{white_candle.json => large_candles.json} (67%) create mode 100644 src/main/resources/data/occultism/advancement/chalks/black.json create mode 100644 src/main/resources/data/occultism/advancement/chalks/blue.json create mode 100644 src/main/resources/data/occultism/advancement/chalks/brown.json create mode 100644 src/main/resources/data/occultism/advancement/chalks/cyan.json create mode 100644 src/main/resources/data/occultism/advancement/chalks/gray.json create mode 100644 src/main/resources/data/occultism/advancement/chalks/green.json create mode 100644 src/main/resources/data/occultism/advancement/chalks/light_blue.json create mode 100644 src/main/resources/data/occultism/advancement/chalks/light_gray.json create mode 100644 src/main/resources/data/occultism/advancement/chalks/lime.json create mode 100644 src/main/resources/data/occultism/advancement/chalks/magenta.json create mode 100644 src/main/resources/data/occultism/advancement/chalks/orange.json create mode 100644 src/main/resources/data/occultism/advancement/chalks/pink.json create mode 100644 src/main/resources/data/occultism/advancement/chalks/purple.json create mode 100644 src/main/resources/data/occultism/advancement/chalks/red.json create mode 100644 src/main/resources/data/occultism/advancement/chalks/root.json create mode 100644 src/main/resources/data/occultism/advancement/chalks/white.json create mode 100644 src/main/resources/data/occultism/advancement/chalks/yellow.json diff --git a/src/generated/resources/assets/occultism/lang/en_us.json b/src/generated/resources/assets/occultism/lang/en_us.json index 2b4405c7a..6985b1606 100644 --- a/src/generated/resources/assets/occultism/lang/en_us.json +++ b/src/generated/resources/assets/occultism/lang/en_us.json @@ -1,4 +1,38 @@ { + "advancements.occultism.chalks.black.description": "Fourth Foundation", + "advancements.occultism.chalks.black.title": "Black Chalk", + "advancements.occultism.chalks.blue.description": "Fourth Tier", + "advancements.occultism.chalks.blue.title": "Blue Chalk", + "advancements.occultism.chalks.brown.description": "Bait for what?", + "advancements.occultism.chalks.brown.title": "Brown Chalk", + "advancements.occultism.chalks.cyan.description": "Ancient Knowledge", + "advancements.occultism.chalks.cyan.title": "Cyan Chalk", + "advancements.occultism.chalks.gray.description": "Third Foundation", + "advancements.occultism.chalks.gray.title": "Gray Chalk", + "advancements.occultism.chalks.green.description": "Wild Attraction", + "advancements.occultism.chalks.green.title": "Green Chalk", + "advancements.occultism.chalks.light_blue.description": "Wild Stabilizer", + "advancements.occultism.chalks.light_blue.title": "Light Blue Chalk", + "advancements.occultism.chalks.light_gray.description": "Second Foundation", + "advancements.occultism.chalks.light_gray.title": "Light Gray Chalk", + "advancements.occultism.chalks.lime.description": "Second Tier", + "advancements.occultism.chalks.lime.title": "Lime Chalk", + "advancements.occultism.chalks.magenta.description": "Dragon Power", + "advancements.occultism.chalks.magenta.title": "Magenta Chalk", + "advancements.occultism.chalks.orange.description": "Third Tier?", + "advancements.occultism.chalks.orange.title": "Orange Chalk", + "advancements.occultism.chalks.pink.description": "Wild Power", + "advancements.occultism.chalks.pink.title": "Pink Chalk", + "advancements.occultism.chalks.purple.description": "Infusion", + "advancements.occultism.chalks.purple.title": "Purple Chalk", + "advancements.occultism.chalks.red.description": "Third Tier!", + "advancements.occultism.chalks.red.title": "Red Chalk", + "advancements.occultism.chalks.root.description": "Colorful", + "advancements.occultism.chalks.root.title": "Occultism: Chalks", + "advancements.occultism.chalks.white.description": "First Foundation", + "advancements.occultism.chalks.white.title": "White Chalk", + "advancements.occultism.chalks.yellow.description": "Possession", + "advancements.occultism.chalks.yellow.title": "Yellow Chalk", "advancements.occultism.familiar.bat.description": "Lure a normal bat near your bat familiar", "advancements.occultism.familiar.bat.title": "Cannibalism", "advancements.occultism.familiar.beaver_woodchop.description": "Let your Beaver familiar chop down a tree", @@ -175,6 +209,10 @@ "book.occultism.dictionary_of_spirits.crafting_rituals.artisanal_ritual_satchel.usage_drawing.title": "Usage (Drawing)", "book.occultism.dictionary_of_spirits.crafting_rituals.craft_afrit_miner.name": "Afrit Miner", "book.occultism.dictionary_of_spirits.crafting_rituals.craft_afrit_miner.spotlight.text": "The [#](ad03fc)Afrit[#]() miner harvests ores, like djinni miners, and additionally mines deepslate ores. This miner is faster and more efficient than the djinnis, thus damaging the magic lamp even more slowly.\n", + "book.occultism.dictionary_of_spirits.crafting_rituals.craft_ancient_miner.name": "Ancient Miner", + "book.occultism.dictionary_of_spirits.crafting_rituals.craft_ancient_miner.spotlight.text": "By compressing MMM you get an extremely powerful miner, but something starts watching you. [](item://occultism:mining_dim_core) are a extremely rarely mined by a Marid.\n", + "book.occultism.dictionary_of_spirits.crafting_rituals.craft_budding_amethyst.name": "Forge Budding Amethyst", + "book.occultism.dictionary_of_spirits.crafting_rituals.craft_budding_amethyst.spotlight.text": "Unlike other rituals, creating a [](item://minecraft:budding_amethyst) is a service provided by Wild Spirits and not bound any spirit to the final object. You sacrifice the items and the Wild Spirits uses his power to forge that item for you.\n", "book.occultism.dictionary_of_spirits.crafting_rituals.craft_dimensional_matrix.name": "Dimensional Matrix", "book.occultism.dictionary_of_spirits.crafting_rituals.craft_dimensional_matrix.spotlight.text": "The dimensional matrix is the entry point to a small dimension used for storing items. A [#](ad03fc)Djinni[#]() bound to the matrix keeps the dimension stable, often supported by additional spirits in storage stabilizers, to increase the dimension size.\n", "book.occultism.dictionary_of_spirits.crafting_rituals.craft_dimensional_mineshaft.description.text": "The dimensional mineshaft will discard any items it cannot store, so it is important to regularly empty the mineshaft, either manually, with hoppers or using a transporter spirit. Spirits in lamps can be **inserted** from the top, all other sides can be used to **extract** items.\n", @@ -203,6 +241,8 @@ "book.occultism.dictionary_of_spirits.crafting_rituals.craft_otherworld_goggles.lenses_more.title": "Crafting Lenses", "book.occultism.dictionary_of_spirits.crafting_rituals.craft_otherworld_goggles.lenses_spotlight.text": "Otherworld Goggles make use of a [#](ad03fc)Foliot[#]() bound into the lenses. The Foliot shares it's ability to view higher planes with the wearer, thus allowing them to see Otherworld materials.\n", "book.occultism.dictionary_of_spirits.crafting_rituals.craft_otherworld_goggles.name": "Craft Otherworld Goggles", + "book.occultism.dictionary_of_spirits.crafting_rituals.craft_reinforced_deepslate.name": "Forge Reinforced Deepslate", + "book.occultism.dictionary_of_spirits.crafting_rituals.craft_reinforced_deepslate.spotlight.text": "Unlike other rituals, creating a [](item://minecraft:reinforced deepslate) is a service provided by Ancient Spirits and not bound any spirit to the final object. You sacrifice the items and the Ancient Spirits uses his power to forge that item for you.\n", "book.occultism.dictionary_of_spirits.crafting_rituals.craft_satchel.name": "Surprisingly Substantial Satchel", "book.occultism.dictionary_of_spirits.crafting_rituals.craft_satchel.spotlight.text": "A [#](ad03fc)Foliot[#]() is bound to the satchel, tasked with **slightly** warping reality. This allows to store more items in the satchel than it's size would indicate, making it a practical traveller's companion.\n", "book.occultism.dictionary_of_spirits.crafting_rituals.craft_soul_gem.name": "Soul Gem", @@ -226,11 +266,14 @@ "book.occultism.dictionary_of_spirits.crafting_rituals.craft_storage_system.name": "Magic Storage", "book.occultism.dictionary_of_spirits.crafting_rituals.craft_storage_system.spotlight.text": "The following entries show only the rituals related to the Magic Storage system. For full step-by-step instructions on building the storage system, see the [Magic Storage](category://storage) category.\n", "book.occultism.dictionary_of_spirits.crafting_rituals.craft_wild_trim.name": "Forge Wild Trim", - "book.occultism.dictionary_of_spirits.crafting_rituals.craft_wild_trim.spotlight.text": "Unlike other rituals, creating a [](item://minecraft:wild_armor_trim_smithing_template) is a service provided by a Marid that is not bound to the final object. You sacrifice the items and the Marid uses his power to forge that item for you.\n", + "book.occultism.dictionary_of_spirits.crafting_rituals.craft_wild_trim.spotlight.text": "Unlike other rituals, creating a [](item://minecraft:wild_armor_trim_smithing_template) is a service provided by Wild Spirits and not bound any spirit to the final object. You sacrifice the items and the Wild Spirits uses his power to forge that item for you.\n", "book.occultism.dictionary_of_spirits.crafting_rituals.name": "Binding Rituals", "book.occultism.dictionary_of_spirits.crafting_rituals.overview.intro.text": "Binding rituals infuse spirits into items, where their powers are used for one specific purpose. The created items can act like simple empowering enchantments, or fulfill complex tasks to aid the summoner.\n", "book.occultism.dictionary_of_spirits.crafting_rituals.overview.intro.title": "Binding Rituals", "book.occultism.dictionary_of_spirits.crafting_rituals.overview.name": "Binding Rituals", + "book.occultism.dictionary_of_spirits.crafting_rituals.repair.name": "Repair Rituals", + "book.occultism.dictionary_of_spirits.crafting_rituals.repair.spotlight.text": "With simple materials, a Djinni can repair any chalk for you. By evolving in the occult path, an Afrit can repair miners, tools and armors. Any item repaired in this way retains its properties.\n", + "book.occultism.dictionary_of_spirits.crafting_rituals.repair.spotlight.title": "Repairing", "book.occultism.dictionary_of_spirits.crafting_rituals.return_to_rituals.name": "Return to Rituals Category", "book.occultism.dictionary_of_spirits.familiar_rituals.demonic_partner.about.text": "The Demonic Partner - a Husband or Wife - can fight for you and split your household chores.\n\\\n\\\nRight-Click with any cookable food and they will use their magic to cook it.\n\\\n\\\nRight-Click with a potion to get the effect for a significantly longer time.\n", "book.occultism.dictionary_of_spirits.familiar_rituals.demonic_partner.about.title": "Demonic Partner", @@ -309,7 +352,7 @@ "book.occultism.dictionary_of_spirits.familiar_rituals.familiar_mummy.name": "Mummy Familiar", "book.occultism.dictionary_of_spirits.familiar_rituals.familiar_otherworld_bird.description.text": "[#](ad03fc)Drikwings$[#]() are a subclass of [#](ad03fc)Djinni[#]() that are known to be amicable towards humans. They usually take the shape of a dark blue and purple parrot. Drikwings will provide their owner with limited flight abilities when nearby.\n\\\n\\\n**Upgrade Behaviour**\\\nCannot be upgraded by the blacksmith familiar.\n", "book.occultism.dictionary_of_spirits.familiar_rituals.familiar_otherworld_bird.description.title": "Description", - "book.occultism.dictionary_of_spirits.familiar_rituals.familiar_otherworld_bird.description2.text": "To obtain the parrot or parrot familiar for the sacrifice, consider summoning them using either the [Wild Parrot Ritual](entry://summoning_rituals/summon_wild_parrot) or [Parrot Familiar Ritual](entry://familiar_rituals/familiar_parrot)\n\\\n\\\n**Hint:** If you use mods that protect pets from death, use the wild parrot ritual!\n", + "book.occultism.dictionary_of_spirits.familiar_rituals.familiar_otherworld_bird.description2.text": "To obtain the parrot or parrot familiar for the sacrifice, consider summoning them using either the [Wild Parrot Ritual](entry://possession_rituals/possess_unbound_parrot) or [Parrot Familiar Ritual](entry://familiar_rituals/familiar_parrot)\n\\\n\\\n**Hint:** If you use mods that protect pets from death, use the wild parrot ritual!\n", "book.occultism.dictionary_of_spirits.familiar_rituals.familiar_otherworld_bird.entity.text": "**Provides**: [#](ad03fc)Multi-Jump[#](), [#](ad03fc)Jump Boost[#](), [#](ad03fc)Slow Falling[#]()\n", "book.occultism.dictionary_of_spirits.familiar_rituals.familiar_otherworld_bird.name": "Drikwing Familiar", "book.occultism.dictionary_of_spirits.familiar_rituals.familiar_parrot.description.text": "In this ritual a [#](ad03fc)Foliot[#]() is summoned **as a familiar**, the slaughter of a [#](ad03fc)Chicken[#]() and the offering of dyes are intended to entice the [#](ad03fc)Foliot[#]() to take the shape of a parrot.\\\nAs [#](ad03fc)Foliot[#]() are not among the smartest spirits, they sometimes misunderstand the instructions ...\n", @@ -331,6 +374,10 @@ "book.occultism.dictionary_of_spirits.familiar_rituals.overview.ring.title": "Equipping Familiars", "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.resurrect_allay.description.text": "Purify a Vex to an Allay on a resurrection process that reveals its true name.\n", + "book.occultism.dictionary_of_spirits.familiar_rituals.resurrect_allay.description.title": "Description", + "book.occultism.dictionary_of_spirits.familiar_rituals.resurrect_allay.entity.text": "**Provides**: Allay\n", + "book.occultism.dictionary_of_spirits.familiar_rituals.resurrect_allay.name": "Purify Vex to Allay", "book.occultism.dictionary_of_spirits.familiar_rituals.resurrection.description": "How to bring back a familiar from the dead.", "book.occultism.dictionary_of_spirits.familiar_rituals.resurrection.description.text": "The resurrection is a relatively simple process. The soul shard is strengthened with [](item://occultism:otherworld_essence) until it is strong enough to allow the familiar to return to the mortal realm and create a new body for itself.\n\\\n\\\nThe essence is obtained by growing (lots of) Demons Dream plants.\n", "book.occultism.dictionary_of_spirits.familiar_rituals.resurrection.description.title": "Resurrection", @@ -339,10 +386,6 @@ "book.occultism.dictionary_of_spirits.familiar_rituals.resurrection.soul_shard.text": "If a familiar dies it does not merely return to the Otherworld. Due to the close connection to the summoner a splinter of the familiar's soul remains in the mortal realm.\n\\\n\\\nThis splinter - shard - can be used to re-summon the familiar more easily.\n", "book.occultism.dictionary_of_spirits.familiar_rituals.resurrection.soul_shard.title": "Soul Shards", "book.occultism.dictionary_of_spirits.familiar_rituals.return_to_rituals.name": "Return to Rituals Category", - "book.occultism.dictionary_of_spirits.familiar_rituals.summon_allay.description.text": "Purify a Vex to an Allay on a resurrection process that reveals its true name.\n", - "book.occultism.dictionary_of_spirits.familiar_rituals.summon_allay.description.title": "Description", - "book.occultism.dictionary_of_spirits.familiar_rituals.summon_allay.entity.text": "**Provides**: Allay\n", - "book.occultism.dictionary_of_spirits.familiar_rituals.summon_allay.name": "Purify Vex to Allay", "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", @@ -381,13 +424,11 @@ "book.occultism.dictionary_of_spirits.getting_started.candle.lit_candle.text": "Just like the candles from Minecraft, [](item://occultism:large_candle) and colored versions can be lit, turning in a great light source.\n\\\nIn addiction, you can use a [](item://minecraft:torch), [](item://minecraft:soul_torch), [](item://minecraft:redstone_torch) or [](item://occultism:spirit_torch) to change the type of fire.\n\\\nAlso can be waterlogged.\n", "book.occultism.dictionary_of_spirits.getting_started.candle.name": "Candles", "book.occultism.dictionary_of_spirits.getting_started.candle.tallow.text": "Key ingredient for large candles. Kill large animals like pigs, cows or sheep with a [](item://occultism:butcher_knife)\nto harvest [](item://occultism:tallow).\n", - "book.occultism.dictionary_of_spirits.getting_started.chalks.afrit_essence.text": "To obtain the essence of an [#](ad03fc)Afrit[#]() for [](item://occultism:chalk_red) you need to [summon and kill an Unbound Afrit](entry://summoning_rituals/afrit_essence).\n", - "book.occultism.dictionary_of_spirits.getting_started.chalks.decoColors.text": "Other colored chalks (for now) only have decorative purposes, you can check the recipes in next pages. All needs to be purified in spirit fire.\n", - "book.occultism.dictionary_of_spirits.getting_started.chalks.decoColors.title": "Decorative Chalks", "book.occultism.dictionary_of_spirits.getting_started.chalks.description": "Better chalks for better rituals!", - "book.occultism.dictionary_of_spirits.getting_started.chalks.impure_purple_chalk_recipe.text": "You do not need to visit the [#](ad03fc)The End[#]() to obtain Endstone. You can summon a [Possessed Endermite](entry://possession_rituals/possess_endermite) which has a high chance to drop it.\n", "book.occultism.dictionary_of_spirits.getting_started.chalks.intro.text": "For more advanced rituals the basic [White Chalk](entry://occultism:dictionary_of_spirits/getting_started/ritual_prep_chalk) is not sufficient. Instead chalks made from more arcane materials are required.\n", "book.occultism.dictionary_of_spirits.getting_started.chalks.intro.title": "More Chalks", + "book.occultism.dictionary_of_spirits.getting_started.chalks.more.text": "Follow the progression in [Pentacle page](category://pentacles) to get the 16 chalks and do all pentacles,\n", + "book.occultism.dictionary_of_spirits.getting_started.chalks.more.title": "Pentacle Category", "book.occultism.dictionary_of_spirits.getting_started.chalks.name": "More Chalks", "book.occultism.dictionary_of_spirits.getting_started.crafting_rituals.description": "Infuse spirits into items to create powerful tools", "book.occultism.dictionary_of_spirits.getting_started.crafting_rituals.intro.text": "Infusion rituals are all about crafting powerful items, by binding (\"infusing\") spirits into objects.The spirits will provide special functionality to the items.\n", @@ -437,6 +478,9 @@ "book.occultism.dictionary_of_spirits.getting_started.first_ritual.bowl_placement.text": "Possible locations for the sacrificial bowls.\n", "book.occultism.dictionary_of_spirits.getting_started.first_ritual.bowl_text.text": "Next, place *at least* 4 [Sacrificial Bowls](item://occultism:sacrificial_bowl) close to the pentacle.\n\\\n\\\nThey must be placed **anywhere** within 8 blocks of the central [](item://occultism:golden_sacrificial_bowl). **The exact location does not matter.**\n", "book.occultism.dictionary_of_spirits.getting_started.first_ritual.bowl_text.title": "Sacrificial Bowls", + "book.occultism.dictionary_of_spirits.getting_started.first_ritual.clone_placement.text": "One suggestion is to use any block that interacts with redstone and an observer.\n", + "book.occultism.dictionary_of_spirits.getting_started.first_ritual.clone_redstone.text": "You can place another [](item://occultism:golden_sacrificial_bowl) in the third block below the\n original [](item://occultism:golden_sacrificial_bowl). Every time this new bowl receives an\n block update, it clones the actual signal strength of the original bowl.\n", + "book.occultism.dictionary_of_spirits.getting_started.first_ritual.clone_redstone.title": "All sides blocked?", "book.occultism.dictionary_of_spirits.getting_started.first_ritual.description": "We're actually getting started now!", "book.occultism.dictionary_of_spirits.getting_started.first_ritual.intro.text": "These pages will walk the gentle reader through the process of the [first ritual](entry://summoning_rituals/summon_crusher_t1) step by step.\n\\\nWe **start** by placing the [](item://occultism:golden_sacrificial_bowl) and drawing the appropriate pentacle, [Aviar's Circle](entry://pentacles/summon_foliot) as seen on the left around it.\n", "book.occultism.dictionary_of_spirits.getting_started.first_ritual.intro.title": "The Ritual (tm)", @@ -444,7 +488,7 @@ "book.occultism.dictionary_of_spirits.getting_started.first_ritual.name": "First Ritual", "book.occultism.dictionary_of_spirits.getting_started.first_ritual.pentacle_link_hint.text": "Ritual recipe pages, such as the previous pageshow not only the ingredients, but also the pentacle that you need to draw with chalk in order to use the ritual.\n\\\n\\\n**To show the pentacle, click the blue link** at the center top of the ritual page. You can then even preview it in-world.\n", "book.occultism.dictionary_of_spirits.getting_started.first_ritual.pentacle_link_hint.title": "A Note about Ritual Recipes", - "book.occultism.dictionary_of_spirits.getting_started.first_ritual.redstone.text": "Depending on the ritual state the golden bowl will emit a different redstone level:\n- **0** if no ritual is active\n- **1** if the ritual is active, but waiting for a sacrifice\n- **2** if the ritual is active, but waiting for an item to be used\n- **4** if the ritual is active and running\n", + "book.occultism.dictionary_of_spirits.getting_started.first_ritual.redstone.text": "Depending on the ritual state the golden bowl will emit a different redstone level:\n- **0** if no ritual is active\n- **1** if the ritual is active, but waiting for a sacrifice\n- **2** if the ritual is active, but waiting for an item to be used\n- **8** if the ritual is active and running\n", "book.occultism.dictionary_of_spirits.getting_started.first_ritual.redstone.title": "Redstone", "book.occultism.dictionary_of_spirits.getting_started.first_ritual.ritual_text.text": "Now it is time to place the ingredients you see on the next page in the (regular, not golden) sacrificial bowls. The ingredients will be consumed from the bowls as the ritual progresses.\n", "book.occultism.dictionary_of_spirits.getting_started.first_ritual.ritual_text.title": "Placing Ingredients", @@ -560,111 +604,225 @@ "book.occultism.dictionary_of_spirits.getting_started.third_eye.name": "The Third Eye", "book.occultism.dictionary_of_spirits.getting_started.third_eye.otherworld_goggles.text": "[These goggles](entry://occultism:dictionary_of_spirits/crafting_rituals/craft_otherworld_goggles) allow to see even more hidden Otherworld blocks,\nhowever they do not allow harvesting those materials.\nLow-tier materials can be harvested by consuming [Demon's Dream](entry://occultism:dictionary_of_spirits/getting_started/demons_dream),\nbut more valuable materials require special tools.\n", "book.occultism.dictionary_of_spirits.name": "Dictionary of Spirits", - "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.golden_chalk.text": "Yellow chalk is used for binding runes, which allow to infuse a spirit into an item, or make it possess a living being.\n", - "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.golden_chalk_uses.text": "- [Eziveus' Spectral Compulsion](entry://occultism:dictionary_of_spirits/pentacles/craft_foliot)\n- [Hedyrin's Lure](entry://occultism:dictionary_of_spirits/pentacles/possess_foliot)\n- [Strigeor's Higher Binding](entry://occultism:dictionary_of_spirits/pentacles/craft_djinni)\n- [Ihagan's Enthrallment](entry://occultism:dictionary_of_spirits/pentacles/possess_djinni)\n- [Sevira's Permanent Confinement](entry://occultism:dictionary_of_spirits/pentacles/craft_afrit)\n- [Uphyxes Inverted Tower](entry://occultism:dictionary_of_spirits/pentacles/craft_marid)\n", - "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.golden_chalk_uses.title": "Yellow Chalk Uses", - "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.intro.text": "Chalk is used to draw pentacle runes and define the pentacle shape. Different types of chalk are used for different purposes, as outlined on the next pages.\n\\\n\\\nThe different runes are purely decorative.\n", - "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.intro.title": "Chalk Types", - "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.intro2.text": "**Repeatedly** use chalk on a block to switch to a different rune.\n\\\n\\\nUsing a [](item://occultism:brush) is the easiest way to **remove** chalk runes that have been incorrectly placed.\n", - "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.name": "Chalk Types", - "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.purple_chalk.text": "Purple chalk is generally used to call on higher beings such as [#](ad03fc)Djinn[#]() or [#](ad03fc)Afrit[#](), but also slows essence decay of summoned spirits.\n", - "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.purple_chalk_uses.text": "- [Ophyx' Calling](entry://occultism:dictionary_of_spirits/pentacles/summon_djinni)\n- [Strigeor's Higher Binding](entry://occultism:dictionary_of_spirits/pentacles/craft_djinni)\n- [Ihagan's Enthrallment](entry://occultism:dictionary_of_spirits/pentacles/possess_djinni)\n- [Abras' Conjure](entry://occultism:dictionary_of_spirits/pentacles/summon_afrit)\n- [Sevira's Permanent Confinement](entry://occultism:dictionary_of_spirits/pentacles/craft_afrit)\n- [Abras' Open Conjure](entry://occultism:dictionary_of_spirits/pentacles/summon_wild_afrit)\n- [Osorin' Unbound Calling](entry://occultism:dictionary_of_spirits/pentacles/summon_wild_greater_spirit)\n", - "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.purple_chalk_uses.title": "Purple Chalk Uses", - "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.red_chalk.text": "Red chalk is used to call on the most powerful and dangerous beings, such as [#](ad03fc)Marid[#]().\n\\\n\\\n[Afrit Essence](entry://occultism:dictionary_of_spirits/summoning_rituals/afrit_essence) is required to craft red chalk.\n", - "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.red_chalk_uses.text": "- [Abras' Conjure](entry://occultism:dictionary_of_spirits/pentacles/summon_afrit)\n- [Uphyxes Inverted Tower](entry://occultism:dictionary_of_spirits/pentacles/craft_marid)\n", - "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.red_chalk_uses.title": "Red Chalk Uses", - "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.white_chalk.text": "White chalk is the most basic type of ritual chalk and is found in most pentacles. It has no special power beyond defining the shape of the pentacle.\n", - "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.white_chalk_uses.text": "- [Aviar's Circle](entry://occultism:dictionary_of_spirits/pentacles/summon_foliot)\n- [Eziveus' Spectral Compulsion](entry://occultism:dictionary_of_spirits/pentacles/craft_foliot)\n- [Hedyrin's Lure](entry://occultism:dictionary_of_spirits/pentacles/possess_foliot)\n- [Ophyx' Calling](entry://occultism:dictionary_of_spirits/pentacles/summon_djinni)\n- [Strigeor's Higher Binding](entry://occultism:dictionary_of_spirits/pentacles/craft_djinni)\n- [Ihagan's Enthrallment](entry://occultism:dictionary_of_spirits/pentacles/possess_djinni)\n- [Abras' Conjure](entry://occultism:dictionary_of_spirits/pentacles/summon_afrit)\n- [Sevira's Permanent Confinement](entry://occultism:dictionary_of_spirits/pentacles/craft_afrit)\n- [Abras' Open Conjure](entry://occultism:dictionary_of_spirits/pentacles/summon_wild_afrit)\n", - "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.white_chalk_uses.title": "White Chalk Uses", - "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.white_chalk_uses2.text": "- [Uphyxes Inverted Tower](entry://occultism:dictionary_of_spirits/pentacles/craft_marid)\n- [Osorin' Unbound Calling](entry://occultism:dictionary_of_spirits/pentacles/summon_wild_greater_spirit)\n", - "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.white_chalk_uses2.title": "White Chalk Uses", - "book.occultism.dictionary_of_spirits.pentacles.craft_afrit.intro.text": "**Purpose:** Bind Afrit\n\\\n\\\nFirst discovered by Grandmistress Sevira of Emberwoods, **Sevira's Permanent Confinement** is used for binding [#](ad03fc)Afrit[#]() into objects. Due to the power of the spirits involved, this should be performed only by advanced summoners.\n", - "book.occultism.dictionary_of_spirits.pentacles.craft_afrit.intro.title": "Sevira's Permanent Confinement", + "book.occultism.dictionary_of_spirits.pentacles.black_chalk.description": "Black Chalk", + "book.occultism.dictionary_of_spirits.pentacles.black_chalk.lore.text": "The black chalk has a composition as rigid as it is supernatural. Mixing the essence of\n Wither with netherite turns this chalk into an extremely valuable tool.\n", + "book.occultism.dictionary_of_spirits.pentacles.black_chalk.lore.title": "Powerful", + "book.occultism.dictionary_of_spirits.pentacles.black_chalk.name": "Perfect Foundation Chalk", + "book.occultism.dictionary_of_spirits.pentacles.black_chalk.spotlight.text": "Perfect for the foundation of any pentacle, the power of the black chalk is sufficient\n to replace any other \"colorless\" chalk.\n", + "book.occultism.dictionary_of_spirits.pentacles.blue_chalk.description": "Blue Chalk", + "book.occultism.dictionary_of_spirits.pentacles.blue_chalk.lore.text": "Just as the red chalk is made from the essence of Afrit, the blue chalk is made\n from the essence of Marid, allowing for control over these powerful spirits.\n", + "book.occultism.dictionary_of_spirits.pentacles.blue_chalk.lore.title": "Marid Lure", + "book.occultism.dictionary_of_spirits.pentacles.blue_chalk.name": "The Chalk of The Seven Seas", + "book.occultism.dictionary_of_spirits.pentacles.blue_chalk.spotlight.text": "The purpose of the blue chalk is to overcome the willpower of a Marid; its sometimes\n excessive use serves as a guarantee that any Marid will be controlled.\n Should the control fail, it would generate extreme fury in the invoked Marid.\n", + "book.occultism.dictionary_of_spirits.pentacles.brown_chalk.description": "Brown Chalk", + "book.occultism.dictionary_of_spirits.pentacles.brown_chalk.lore.text": "The brown chalk is made with the essence of cruelty, and obtaining it certainly lives up\n to its name. Do the ends justify the means? Does morality truly exist? What is your morality?\n", + "book.occultism.dictionary_of_spirits.pentacles.brown_chalk.lore.title": "Very Evil", + "book.occultism.dictionary_of_spirits.pentacles.brown_chalk.name": "The Cruelty Chalk", + "book.occultism.dictionary_of_spirits.pentacles.brown_chalk.spotlight.text": "This chalk is known to be part of an \"Alignment Test.\" Anyone who possesses it is\n automatically classified as \"Evil.\" What kind of spirits will these glyphs attract?\n", + "book.occultism.dictionary_of_spirits.pentacles.contact_eldritch_spirit.description": "Contact Eldritch", + "book.occultism.dictionary_of_spirits.pentacles.contact_eldritch_spirit.intro.text": "**Purpose:** Contact [#](AA00AA)Eldritch[#]()\\\n\\\nThis is a very strange pentacle that you dont understand for now.\n", + "book.occultism.dictionary_of_spirits.pentacles.contact_eldritch_spirit.intro.title": "Ronazas Contact", + "book.occultism.dictionary_of_spirits.pentacles.contact_eldritch_spirit.name": "Ronaza's Contact", + "book.occultism.dictionary_of_spirits.pentacles.contact_eldritch_spirit.uses.text": "- [Eldritch Ancient Miner](entry://crafting_rituals/craft_ancient_miner)\n", + "book.occultism.dictionary_of_spirits.pentacles.contact_eldritch_spirit.uses.title": "Uses", + "book.occultism.dictionary_of_spirits.pentacles.contact_wild_spirit.description": "Contact Wild Spirits", + "book.occultism.dictionary_of_spirits.pentacles.contact_wild_spirit.intro.text": "**Purpose:** Contact [#](AA00AA)Wild Spirits[#]()\\\n\\\n**Osorins Unbound Calling** has a unique form, mixing different aspects obtained in each chalk\n and none of the common stabilizing paraphernalia. Therefore, the pentacle offers no protection\n to the occultist, but acts as an irresistible contact with the [#](AA00AA)Wild Spirits[#]().\n", + "book.occultism.dictionary_of_spirits.pentacles.contact_wild_spirit.intro.title": "Osorins Unbound Calling", + "book.occultism.dictionary_of_spirits.pentacles.contact_wild_spirit.name": "Osorin's Unbound Calling", + "book.occultism.dictionary_of_spirits.pentacles.contact_wild_spirit.uses.text": "- [Wither Skeleton Skull](entry://possession_rituals/wither_skull)\n- [Horde Husk](entry://possession_rituals/horde_husk)\n- [Horde Drowned](entry://possession_rituals/horde_drowned)\n- [Horde Creeper](entry://possession_rituals/horde_creeper)\n- [Horde Silverfish](entry://possession_rituals/horde_silverfish)\n- [Trial Key](entry://possession_rituals/possess_weak_breeze)\n- [Ominous Trial Key](entry://possession_rituals/possess_breeze)\n- [Heavy Core](entry://possession_rituals/possess_strong_breeze)\n- [Small Illager Invasion](entry://possession_rituals/horde_illager)\n- [Wild Armor Trim Smithing Template](entry://crafting_rituals/craft_wild_trim)\n", + "book.occultism.dictionary_of_spirits.pentacles.contact_wild_spirit.uses.title": "Uses", + "book.occultism.dictionary_of_spirits.pentacles.craft_afrit.description": "Afrit Infusing", + "book.occultism.dictionary_of_spirits.pentacles.craft_afrit.intro.text": "**Purpose:** Bind [#](AA00AA)Afrit[#]()\\\n\\\nFirst discovered by Grandmistress Sevira of Emberwoods, **Seviras Permanent Confinement** is used for\n binding [#](AA00AA)Afrit[#]() into objects. Due to the power of the spirits involved, this should be performed only by advanced summoners.\n\n", + "book.occultism.dictionary_of_spirits.pentacles.craft_afrit.intro.title": "Seviras Permanent Confinement", "book.occultism.dictionary_of_spirits.pentacles.craft_afrit.name": "Sevira's Permanent Confinement", - "book.occultism.dictionary_of_spirits.pentacles.craft_afrit.uses.text": "- [Storage Stabilizer Tier 3](entry://crafting_rituals/craft_stabilizer_tier3)\n- [Afrit Deep Ore Miner](entry://crafting_rituals/craft_afrit_miner)\n", + "book.occultism.dictionary_of_spirits.pentacles.craft_afrit.uses.text": "- [Storage Stabilizer Tier 3](entry://crafting_rituals/craft_stabilizer_tier3)\n- [Afrit Deep Ore Miner](entry://crafting_rituals/craft_afrit_miner)\n- [Artisanal Ritual Satchel](entry://crafting_rituals/artisanal_ritual_satchel)\n", "book.occultism.dictionary_of_spirits.pentacles.craft_afrit.uses.title": "Uses", - "book.occultism.dictionary_of_spirits.pentacles.craft_djinni.intro.text": "**Purpose:** Bind Djinni\n\\\n\\\n**Strigeor's Higher Binding** is a pentacle for binding [#](ad03fc)Djinn[#]() into objects, should not be attempted by the novice summoner. Supported by spirit attuned crystals and stabilized by candles it is highly suitable for permanent infusions of objects with spirits.\n", - "book.occultism.dictionary_of_spirits.pentacles.craft_djinni.intro.title": "Strigeor's Higher Binding", + "book.occultism.dictionary_of_spirits.pentacles.craft_djinni.description": "Djinni Infusing", + "book.occultism.dictionary_of_spirits.pentacles.craft_djinni.intro.text": "**Purpose:** Bind [#](AA00AA)Djinni[#]()\\\n\\\n**Strigeors Higher Binding** is a pentacle for binding [#](AA00AA)Djinni[#]() into objects, should not be attempted by the\n novice summoner. Supported by skeleton skulls and stabilized by candles it is highly suitable for\n permanent infusions of objects with spirits.\n", + "book.occultism.dictionary_of_spirits.pentacles.craft_djinni.intro.title": "Strigeors Higher Binding", "book.occultism.dictionary_of_spirits.pentacles.craft_djinni.name": "Strigeor's Higher Binding", - "book.occultism.dictionary_of_spirits.pentacles.craft_djinni.uses.text": "- [Infused Pickaxe](entry://crafting_rituals/craft_infused_pickaxe)\n- [Soul Gem](entry://crafting_rituals/craft_soul_gem)\n- [Familiar Ring](entry://crafting_rituals/craft_familiar_ring)\n- [Dimensional Matrix](entry://crafting_rituals/craft_dimensional_matrix)\n- [Storage Accessor](entry://crafting_rituals/craft_storage_remote)\n- [Storage Stabilizer Tier 2](entry://crafting_rituals/craft_stabilizer_tier2)\n- [Dimensional Mineshaft](entry://crafting_rituals/craft_dimensional_mineshaft)\n- [Djinni Ore Miner](entry://crafting_rituals/craft_djinni_miner)\n", + "book.occultism.dictionary_of_spirits.pentacles.craft_djinni.uses.text": "- [Infused Pickaxe](entry://crafting_rituals/craft_infused_pickaxe)\n- [Soul Gem](entry://crafting_rituals/craft_soul_gem)\n- [Familiar Ring](entry://crafting_rituals/craft_familiar_ring)\n- [Dimensional Matrix](entry://crafting_rituals/craft_dimensional_matrix)\n- [Storage Accessor](entry://crafting_rituals/craft_storage_remote)\n- [Storage Stabilizer Tier 2](entry://crafting_rituals/craft_stabilizer_tier2)\n- [Dimensional Mineshaft](entry://crafting_rituals/craft_dimensional_mineshaft)\n- [Djinni Ore Miner](entry://crafting_rituals/craft_djinni_miner)\n- [Apprentice Ritual Satchel](entry://crafting_rituals/apprentice_ritual_satchel)\n", "book.occultism.dictionary_of_spirits.pentacles.craft_djinni.uses.title": "Uses", - "book.occultism.dictionary_of_spirits.pentacles.craft_foliot.intro.text": "**Purpose:** Bind Foliot\n\\\n\\\nAs a simple binding pentacle, **Eziveus' Spectral Compulsion** is a common starting point for object infusion with lower spirits. The enchantment is made permanent by stabilizing candles and spirit attuned crystals.\n", - "book.occultism.dictionary_of_spirits.pentacles.craft_foliot.intro.title": "Eziveus' Spectral Compulsion", + "book.occultism.dictionary_of_spirits.pentacles.craft_foliot.description": "Foliot Infusing", + "book.occultism.dictionary_of_spirits.pentacles.craft_foliot.intro.text": "**Purpose:** Bind [#](AA00AA)Foliot[#]()\\\n\\\nAs a simple binding pentacle, **Eziveus Spectral Compulsion** is a common starting point for object\n infusion with lower spirits. The enchantment is made permanent by stabilizing candles.\n", + "book.occultism.dictionary_of_spirits.pentacles.craft_foliot.intro.title": "Eziveus Spectral Compulsion", "book.occultism.dictionary_of_spirits.pentacles.craft_foliot.name": "Eziveus' Spectral Compulsion", "book.occultism.dictionary_of_spirits.pentacles.craft_foliot.uses.text": "- [Infused Lenses](entry://crafting_rituals/craft_otherworld_goggles)\n- [Surprisingsly Substantial Satchel](entry://crafting_rituals/craft_satchel)\n- [Storage Actuator Base](entry://crafting_rituals/craft_storage_controller_base)\n- [Stable Wormhole](entry://crafting_rituals/craft_stable_wormhole)\n- [Storage Stabilizer Tier 1](entry://crafting_rituals/craft_stabilizer_tier1)\n- [Foliot Miner](entry://crafting_rituals/craft_foliot_miner)\n", "book.occultism.dictionary_of_spirits.pentacles.craft_foliot.uses.title": "Uses", - "book.occultism.dictionary_of_spirits.pentacles.craft_marid.intro.text": "**Purpose:** Bind Marid\n\\\n\\\n**Uphyxes Inverted Tower** is one of the few pentacles capable of binding [#](ad03fc)Marid[#]() into objects. Any rituals involving [#](ad03fc)Marid[#]() should be performed only by the most experienced summoners.\n", + "book.occultism.dictionary_of_spirits.pentacles.craft_marid.description": "Marid Infusing", + "book.occultism.dictionary_of_spirits.pentacles.craft_marid.intro.text": "**Purpose:** Bind [#](AA00AA)Marid[#]()\\\n\\\n**Uphyxes Inverted Tower** is one of the few pentacles capable of binding [#](AA00AA)Marid[#]() into objects.\n Any rituals involving [#](AA00AA)Marid[#]() should be performed only by the most experienced summoners.\n", "book.occultism.dictionary_of_spirits.pentacles.craft_marid.intro.title": "Uphyxes Inverted Tower", "book.occultism.dictionary_of_spirits.pentacles.craft_marid.name": "Uphyxes Inverted Tower", - "book.occultism.dictionary_of_spirits.pentacles.craft_marid.uses.text": "- [Storage Stabilizer Tier 4](entry://crafting_rituals/craft_stabilizer_tier4)\n- [Marid Master Miner](entry://crafting_rituals/craft_marid_miner)\n- [Wild Armor Trim Smithing Template](entry://crafting_rituals/craft_wild_trim)\n", + "book.occultism.dictionary_of_spirits.pentacles.craft_marid.uses.text": "- [Storage Stabilizer Tier 4](entry://crafting_rituals/craft_stabilizer_tier4)\n- [Marid Master Miner](entry://crafting_rituals/craft_marid_miner)\n", "book.occultism.dictionary_of_spirits.pentacles.craft_marid.uses.title": "Uses", + "book.occultism.dictionary_of_spirits.pentacles.cyan_chalk.description": "Cyan Chalk", + "book.occultism.dictionary_of_spirits.pentacles.cyan_chalk.lore.text": "Almost lost to time, the cyan chalk brings ancient knowledge, often even forbidden.\n But who cares? After all, knowledge is knowledge, and the more, the better, right?\n", + "book.occultism.dictionary_of_spirits.pentacles.cyan_chalk.lore.title": "In the Past", + "book.occultism.dictionary_of_spirits.pentacles.cyan_chalk.name": "The Chalk From Ancients", + "book.occultism.dictionary_of_spirits.pentacles.cyan_chalk.recipe_impure.text": "Pulverize the [#](FF55FF)Echo Shard[#]() keeping their properties is a job that only the best crusher can do.\n", + "book.occultism.dictionary_of_spirits.pentacles.cyan_chalk.spotlight.text": "Despite the complexity of its manufacture, this chalk is dated as one of the oldest,\n perhaps even the oldest chalk ever recorded. And even after all this time,\n its uses are little known, but you can see just how stable it is.\n", + "book.occultism.dictionary_of_spirits.pentacles.didactics.description": "Basic learning", + "book.occultism.dictionary_of_spirits.pentacles.didactics.intro.text": " This category is a roadmap that guides you step by step, follow the unlocked entries.\\\n \\\n**Tip:** By default, to set up all pentacles, you need four 19x19 areas.\n", + "book.occultism.dictionary_of_spirits.pentacles.didactics.intro.title": "About", + "book.occultism.dictionary_of_spirits.pentacles.didactics.name": "Reading this category", + "book.occultism.dictionary_of_spirits.pentacles.didactics.table.text": "This category is organized as a table.\\\n Each line refers to a type of ritual.\\\n And each column represents a tier.\\\n By following the line you can just upgrade the pentacle you drew before,\n working like the previous and the new one.\n", + "book.occultism.dictionary_of_spirits.pentacles.didactics.table.title": "Types and Tier", + "book.occultism.dictionary_of_spirits.pentacles.gray_chalk.description": "Gray Chalk", + "book.occultism.dictionary_of_spirits.pentacles.gray_chalk.lore.text": "The gray chalk is made with one of the magical pastes, making it an intermediate-level\n foundation chalk. Its magical properties can react in curious ways with the world around it.\n", + "book.occultism.dictionary_of_spirits.pentacles.gray_chalk.lore.title": "Getting Power", + "book.occultism.dictionary_of_spirits.pentacles.gray_chalk.name": "Improved Foundation Chalk", + "book.occultism.dictionary_of_spirits.pentacles.gray_chalk.spotlight.text": "As an enhanced foundation chalk, it further strengthens the core of the pentacle and\n (almost always) can replace white glyphs or light gray glyphs.\n", + "book.occultism.dictionary_of_spirits.pentacles.green_chalk.description": "Green Chalk", + "book.occultism.dictionary_of_spirits.pentacles.green_chalk.lore.text": "The green chalk uses herbal concentrate to bring the energies of flora into the pentacles.\n", + "book.occultism.dictionary_of_spirits.pentacles.green_chalk.lore.title": "Wildness", + "book.occultism.dictionary_of_spirits.pentacles.green_chalk.name": "The Nature Chalk, specifically The Flora Chalk", + "book.occultism.dictionary_of_spirits.pentacles.green_chalk.spotlight.text": "This connection with nature makes the green chalk ideal for attracting wild spirits.\n", + "book.occultism.dictionary_of_spirits.pentacles.light_blue_chalk.description": "Light Blue Chalk", + "book.occultism.dictionary_of_spirits.pentacles.light_blue_chalk.lore.text": "The light blue chalk is made with such icy materials that its glyphs\n are inert and impart a natural stability to the pentacles.\n", + "book.occultism.dictionary_of_spirits.pentacles.light_blue_chalk.lore.title": "Never Melt", + "book.occultism.dictionary_of_spirits.pentacles.light_blue_chalk.name": "The Glaced Chalk", + "book.occultism.dictionary_of_spirits.pentacles.light_blue_chalk.recipe_impure.text": "Crushing ice without melting it is a job a Foliot can't do, so you need a better crusher.\n", + "book.occultism.dictionary_of_spirits.pentacles.light_blue_chalk.spotlight.text": "Although it is basically made of ice, the magic present prevents it from melting.\n", + "book.occultism.dictionary_of_spirits.pentacles.light_gray_chalk.description": "Light Gray Chalk", + "book.occultism.dictionary_of_spirits.pentacles.light_gray_chalk.lore.text": "The light gray chalk uses mineral compounds to enhance the foundation of a pentacle.\n The foundation is an important property, often considered the stabilization of the \"core.\"\n", + "book.occultism.dictionary_of_spirits.pentacles.light_gray_chalk.lore.title": "Most Common Foundation", + "book.occultism.dictionary_of_spirits.pentacles.light_gray_chalk.name": "Decent Foundation Chalk", + "book.occultism.dictionary_of_spirits.pentacles.light_gray_chalk.spotlight.text": "Due to its relatively low cost and inherent magical properties, it is the most common\n foundation option among practitioners of occultism, capable of replacing white chalk\n in almost all pentacles.\n", + "book.occultism.dictionary_of_spirits.pentacles.lime_chalk.description": "Lime Chalk", + "book.occultism.dictionary_of_spirits.pentacles.lime_chalk.lore.text": "The lime chalk attracts spirits beyond Folio.\n Anyone wishing to elevate the level of their rituals will need this chalk.\n", + "book.occultism.dictionary_of_spirits.pentacles.lime_chalk.lore.title": "Getting Experience", + "book.occultism.dictionary_of_spirits.pentacles.lime_chalk.name": "First Tier Increase Chalk", + "book.occultism.dictionary_of_spirits.pentacles.lime_chalk.spotlight.text": "Made with valuable gems infused with experiences, lime glyphs become especially\n interesting to demonstrate that yours skills have surpassed the basic level.\n", + "book.occultism.dictionary_of_spirits.pentacles.magenta_chalk.description": "Magenta Chalk", + "book.occultism.dictionary_of_spirits.pentacles.magenta_chalk.lore.text": "All the power of a dragon in a single chalk: this is the marvel of the purple chalk.\n The relationship between spirits and dragons is unclear, but there may definitely be connections.\n", + "book.occultism.dictionary_of_spirits.pentacles.magenta_chalk.lore.title": "Ender Energy", + "book.occultism.dictionary_of_spirits.pentacles.magenta_chalk.name": "The Dragon Chalk", + "book.occultism.dictionary_of_spirits.pentacles.magenta_chalk.spotlight.text": "Ah, the energy of the end. But what end? Does an end truly exist?\n What concludes at the end? Will the end ever come to an end?\n", "book.occultism.dictionary_of_spirits.pentacles.name": "Pentacles", - "book.occultism.dictionary_of_spirits.pentacles.paraphernalia.candle.text": "Candles increase the stability of the pentacle, thus allowing a slowed essence decay of the summoned spirit, leading to a longer lifetime of the spirit, or possessed object or being.\n", - "book.occultism.dictionary_of_spirits.pentacles.paraphernalia.crystal.text": "Crystals increase the binding power of the pentacle, allowing a permanent binding of the spirit into an item or living being.\n", + "book.occultism.dictionary_of_spirits.pentacles.orange_chalk.description": "Orange Chalk", + "book.occultism.dictionary_of_spirits.pentacles.orange_chalk.lore.text": "The orange chalk is a perfect bait for spirits of the Afrit class, who,\n although impressed by the lime chalk, can resist its call.\n", + "book.occultism.dictionary_of_spirits.pentacles.orange_chalk.lore.title": "Afrit Attractive", + "book.occultism.dictionary_of_spirits.pentacles.orange_chalk.name": "The Little Hot Chalk", + "book.occultism.dictionary_of_spirits.pentacles.orange_chalk.spotlight.text": "Being a sweet and slightly warm chalk, it does not guarantee control over the invoked Afrit.\n Commanding an Afrit requires power directly related to its class of spirits and\n extreme stability in the pentacle.\n", + "book.occultism.dictionary_of_spirits.pentacles.paraphernalia.candle.text": "Candles increase the stability of the pentacle, thus allowing a slowed essence decay of the summoned\n spirit, leading to a longer lifetime of the spirit, or possessed object or being.\n", + "book.occultism.dictionary_of_spirits.pentacles.paraphernalia.crystal.text": "Crystals increase the stability of the pentacle, at levels that candles would not reach, allowing a performing more unstable rituals.\\\n\\\nCheck the recipes in next page.\n", + "book.occultism.dictionary_of_spirits.pentacles.paraphernalia.description": "Stability and Power", "book.occultism.dictionary_of_spirits.pentacles.paraphernalia.intro.text": "In addition to runes various occult paraphernalia are used to improve the intended effect of the pentacle.\n", - "book.occultism.dictionary_of_spirits.pentacles.paraphernalia.intro.title": "Occult Paraphernalia", + "book.occultism.dictionary_of_spirits.pentacles.paraphernalia.intro.title": "Paraphernalia", "book.occultism.dictionary_of_spirits.pentacles.paraphernalia.name": "Occult Paraphernalia", - "book.occultism.dictionary_of_spirits.pentacles.paraphernalia.skeleton_skull.text": "Skulls increase the calling power of the pentacle, allowing to summon more dangerous spirits.\n", - "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.bowl_text.text": "[Sacrificial Bowls](item://occultism:sacrificial_bowl) must be placed **anywhere** within 8 blocks horizontally of the central [](item://occultism:golden_sacrificial_bowl). The exact location does not matter.\n\\\n\\\nNow it is time to place the ingredients you see on the next page in the (regular, not golden) sacrificial bowls.\n", - "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.infusion_pentacles.text": "Infusion pentacles allow the binding of spirits into objects. While the spirits suffer from essence decay in some cases, this can often be averted with the right pentacle setup, and by embedding crystals and precious metals into the object to support the spirit.\n", - "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.infusion_pentacles.title": "Infusion Pentacles", - "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.intro1.text": "The name [#](ad03fc)Pentacle[#]() in this context refers to ritual drawings of any shape, not just five-pointed stars. \\\n\\\nPentacles are used to summon and bind spirits from [#](ad03fc)The Other Place[#]().\n", - "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.intro1.title": "On Pentacles", - "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.intro2.text": "They act both as a device to call on the entity, an amplifier for the summoner's commanding power\nand as a protecting circle preventing attacks from within against the summoner.\n", - "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.intro3.text": "Each pentacle consists of a central golden sacrificial bowl, surrounding runes of various colors and occult paraphernalia that improve the intended effect in various ways.\n", - "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.intro4.text": "The combination of chosen runes and supporting items as well as their exact spatial positioning determines the use and effectiveness of the pentacle.\n\\\n\\\nIngredients are placed in [#](ad03fc)Sacrifical Bowls[#]() near the pentacle.\n", - "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.name": "On Pentacles", - "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.possession_pentacles.text": "These pentacles force spirits to possess a living being, which, depending on the ritual context, gives the summoner control over various aspects of that being, ranging from it's strength to it what it drops when killed, and in some cases even allows total control.\n", - "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.possession_pentacles.title": "Possession Pentacles", - "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.summoning_pentacles.text": "The purpose of this type of pentacle is to summon spirits in their chosen form into the world. Spirits summoned thus suffer from strong essence decay, and only very powerful spirits can remain for extended periods of time.\n", - "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.summoning_pentacles.title": "Summoning Pentacles", - "book.occultism.dictionary_of_spirits.pentacles.possess_afrit.intro.text": "**Purpose:** Afrit Possession\n\\\n\\\n**Abras' Commanding Conjure** is a modified version of [#](ad03fc)Abras' Conjure[#]() that allows possessing entities, and thus summoning familiars.\n", - "book.occultism.dictionary_of_spirits.pentacles.possess_afrit.intro.title": "Abras' Commanding Conjure", + "book.occultism.dictionary_of_spirits.pentacles.paraphernalia.skull.text": "Skulls increase the calling power of the pentacle, allowing to summon more dangerous spirits.\\\n\\\nOccultists can find an easy way to obtain these skulls using basic possession rituals.\n", + "book.occultism.dictionary_of_spirits.pentacles.paraphernalia.wither_skull.text": "Whiter Skulls are stronger than regular Skull, and increase a lot the calling power of the pentacle,\n allowing to summon more powerful class of spirits.\\\n\\\nOccultists can find an easy way to obtain these skulls using wild rituals.\n", + "book.occultism.dictionary_of_spirits.pentacles.pentacle_overview.description": "Lets Draw", + "book.occultism.dictionary_of_spirits.pentacles.pentacle_overview.intro1.text": "The name [#](AA00AA)Pentacle[#]() in this context refers to ritual drawings of any shape, not just five-pointed stars. \\\n\\\nPentacles are used to summon and bind spirits from [#](AA00AA)The Other Place[#]().\n", + "book.occultism.dictionary_of_spirits.pentacles.pentacle_overview.intro1.title": "Overview", + "book.occultism.dictionary_of_spirits.pentacles.pentacle_overview.intro2.text": "Each pentacle consists of a central golden sacrificial bowl, surrounding runes of various colors\n and occult paraphernalia that improve the intended effect in various ways.\\\n\\\nThey act both as a device to call on the entity, an amplifier for the summoner's commanding power\n and as a protecting circle preventing attacks from within against the summoner.\n", + "book.occultism.dictionary_of_spirits.pentacles.pentacle_overview.intro2.title": "", + "book.occultism.dictionary_of_spirits.pentacles.pentacle_overview.intro3.text": "The combination of chosen runes and supporting items as well as their exact spatial positioning\n determines the use and effectiveness of the pentacle.\n", + "book.occultism.dictionary_of_spirits.pentacles.pentacle_overview.intro3.title": "", + "book.occultism.dictionary_of_spirits.pentacles.pentacle_overview.intro4.text": "Ingredients are placed in [Sacrificial Bowls](item://occultism:sacrificial_bowl)\n near the pentacle. Specifically, must be placed **anywhere** within\n 8 blocks horizontally of the central [](item://occultism:golden_sacrificial_bowl).\n The exact location does not matter.\n", + "book.occultism.dictionary_of_spirits.pentacles.pentacle_overview.intro4.title": "", + "book.occultism.dictionary_of_spirits.pentacles.pentacle_overview.name": "On Pentacles", + "book.occultism.dictionary_of_spirits.pentacles.pink_chalk.description": "Pink Chalk", + "book.occultism.dictionary_of_spirits.pentacles.pink_chalk.lore.text": "Made from the flesh of a pig possessed by an Afrit, this chalk possesses\n both animalistic properties and part of an Afrit's power.\n", + "book.occultism.dictionary_of_spirits.pentacles.pink_chalk.lore.title": "It's Alive", + "book.occultism.dictionary_of_spirits.pentacles.pink_chalk.name": "The Meat Chalk?", + "book.occultism.dictionary_of_spirits.pentacles.pink_chalk.spotlight.text": "Some occultists have reported that the demonic flesh keeps the chalk alive,\n resulting in strange movements. However, this has never been officially\n documented or proven, remaining merely rumors that may or may not be true.\n", + "book.occultism.dictionary_of_spirits.pentacles.possess_afrit.description": "Possessing Afrit", + "book.occultism.dictionary_of_spirits.pentacles.possess_afrit.intro.text": "**Purpose:** [#](AA00AA)Afrit[#]() Possession\\\n\\\n**Abras Commanding Conjure** is a modified version in the possession geometry of [#](FF55FF)Abras Conjure[#]() that allows\n possessing entities, and thus summoning familiars.\n", + "book.occultism.dictionary_of_spirits.pentacles.possess_afrit.intro.title": "Abras Commanding Conjure", "book.occultism.dictionary_of_spirits.pentacles.possess_afrit.name": "Abras' Commanding Conjure", "book.occultism.dictionary_of_spirits.pentacles.possess_afrit.uses.text": "- [Guardian Familiar](entry://familiar_rituals/familiar_guardian)\n- [Possessed Shulker](entry://possession_rituals/possess_shulker)\n- [Possessed Elder Guardian](entry://possession_rituals/possess_elder_guardian)\n- [Possessed Hoglin](entry://possession_rituals/possess_hoglin)\n", "book.occultism.dictionary_of_spirits.pentacles.possess_afrit.uses.title": "Uses", - "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.intro.text": "**Purpose:** Djinni Possession\n\\\n\\\n**Ihagan's Enthrallment** forces [#](ad03fc)Djinn[#]() to possess a nearby creature. This pentacle does not lead to permanent imprisonment, the spirit and possessed creature will perish within a short period of time.\n", - "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.intro.title": "Ihagan's Enthrallment", + "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.description": "Possessing Djinni", + "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.intro.text": "**Purpose:** [#](AA00AA)Djinni[#]() Possession\\\n\\\n**Ihagans Enthrallment** forces [#](AA00AA)Djinni[#]() to possess a nearby creature. This pentacle is very versatile\n for imprisonment, the spirit and creature possessed are diverse and have moderate power.\n", + "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.intro.title": "Ihagans Enthrallment", "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.name": "Ihagan's Enthrallment", - "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.uses.text": "- [Possessed Enderman](entry://possession_rituals/possess_enderman)\n- [Possessed Ghast](entry://possession_rituals/possess_ghast)\n- [Possessed Weak Shulker](entry://possession_rituals/possess_weak_shulker)\n- [Possessed Warden](entry://possession_rituals/possess_warden)\n- [Drikwing Familiar](entry://familiar_rituals/familiar_otherworld_bird)\n- [Bat Familiar](entry://familiar_rituals/familiar_bat)\n- [Cthulhu Familiar](entry://familiar_rituals/familiar_cthulhu)\n- [Devil Familiar](entry://familiar_rituals/familiar_devil)\n- [Dragon Familiar](entry://familiar_rituals/familiar_dragon)\n- [Headless Ratman Familiar](entry://familiar_rituals/familiar_headless)\n- [Chimera Familiar](entry://familiar_rituals/familiar_chimera)\n", + "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.uses.text": "- [Possessed Enderman](entry://possession_rituals/possess_enderman)\n- [Possessed Ghast](entry://possession_rituals/possess_ghast)\n- [Possessed Weak Shulker](entry://possession_rituals/possess_weak_shulker)\n- [Possessed Warden](entry://possession_rituals/possess_warden)\n- [Possessed Bee](entry://possession_rituals/possess_bee)\n- [Unbound Drikwing](entry://possession_rituals/possess_unbound_otherworld_bird)\n- [Drikwing Familiar](entry://familiar_rituals/familiar_otherworld_bird)\n- [Bat Familiar](entry://familiar_rituals/familiar_bat)\n- [Cthulhu Familiar](entry://familiar_rituals/familiar_cthulhu)\n- [Devil Familiar](entry://familiar_rituals/familiar_devil)\n- [Dragon Familiar](entry://familiar_rituals/familiar_dragon)\n", "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.uses.title": "Uses", - "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.uses2.text": "- [Beholder Familiar](entry://familiar_rituals/familiar_beholder)\n- [Fairy Familiar](entry://familiar_rituals/familiar_fairy)\n", + "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.uses2.text": "- [Headless Ratman Familiar](entry://familiar_rituals/familiar_headless)\n- [Beholder Familiar](entry://familiar_rituals/familiar_beholder)\n- [Fairy Familiar](entry://familiar_rituals/familiar_fairy)\n- [Chimera Familiar](entry://familiar_rituals/familiar_chimera)\n- [Mummy Familiar](entry://familiar_rituals/familiar_mummy)\n", "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.uses2.title": "Uses", - "book.occultism.dictionary_of_spirits.pentacles.possess_foliot.intro.text": "**Purpose:** Foliot Possession\n\\\n\\\n**Hedyrin's Lure** attracts [#](ad03fc)Foliot[#]() and forces them to possess a nearby creature. This pentacle does not lead to permanent imprisonment, the spirit and possessed creature will perish within a short period of time.\n", - "book.occultism.dictionary_of_spirits.pentacles.possess_foliot.intro.title": "Hedyrin's Lure", + "book.occultism.dictionary_of_spirits.pentacles.possess_foliot.description": "Possessing Foliot", + "book.occultism.dictionary_of_spirits.pentacles.possess_foliot.intro.text": "**Purpose:** [#](AA00AA)Foliot[#]() Possession\\\n\\\n**Hedyrins Lure** attracts [#](AA00AA)Foliot[#]() and forces them to possess a nearby creature. This pentacle can\n perform basic possessions, bringing back only low-power spirits and possessed creatures.\n", + "book.occultism.dictionary_of_spirits.pentacles.possess_foliot.intro.title": "Hedyrins Lure", "book.occultism.dictionary_of_spirits.pentacles.possess_foliot.name": "Hedyrin's Lure", - "book.occultism.dictionary_of_spirits.pentacles.possess_foliot.uses.text": "- [Possessed Endermite](entry://possession_rituals/possess_endermite)\n- [Possessed Skeleton](entry://possession_rituals/possess_skeleton)\n- [Possessed Phantom](entry://possession_rituals/possess_phantom)\n- [Parrot Familiar](entry://familiar_rituals/familiar_parrot)\n- [Greedy Familiar](entry://familiar_rituals/familiar_greedy)\n- [Deer Familiar](entry://familiar_rituals/familiar_deer)\n- [Blacksmith Familiar](entry://familiar_rituals/familiar_blacksmith)\n- [Beaver Familiar](entry://familiar_rituals/familiar_beaver)\n", + "book.occultism.dictionary_of_spirits.pentacles.possess_foliot.uses.text": "- [Possessed Endermite](entry://possession_rituals/possess_endermite)\n- [Possessed Skeleton](entry://possession_rituals/possess_skeleton)\n- [Possessed Witch](entry://possession_rituals/possess_witch)\n- [Possessed Phantom](entry://possession_rituals/possess_phantom)\n- [Unbound Parrot](entry://possession_rituals/possess_unbound_parrot)\n- [Random Animal](entry://possession_rituals/possess_random_animal)\n- [Parrot Familiar](entry://familiar_rituals/familiar_parrot)\n- [Greedy Familiar](entry://familiar_rituals/familiar_greedy)\n- [Deer Familiar](entry://familiar_rituals/familiar_deer)\n- [Blacksmith Familiar](entry://familiar_rituals/familiar_blacksmith)\n- [Beaver Familiar](entry://familiar_rituals/familiar_beaver)\n", "book.occultism.dictionary_of_spirits.pentacles.possess_foliot.uses.title": "Uses", - "book.occultism.dictionary_of_spirits.pentacles.summon_afrit.intro.text": "**Purpose:** Summon an [#](ad03fc)Afrit[#]()\n\\\n\\\n**Abras' Conjure** is one of the few pentacles capable of (mostly) safely summoning an [#](ad03fc)Afrit[#](). While the requirement of a wither skeleton skull makes it comparatively expensive, the additional calling potential is required to reach these high-power spirits.\n", - "book.occultism.dictionary_of_spirits.pentacles.summon_afrit.intro.title": "Abras' Conjure", + "book.occultism.dictionary_of_spirits.pentacles.possess_marid.description": "Possessing Marid", + "book.occultism.dictionary_of_spirits.pentacles.possess_marid.intro.text": "**Purpose:** [#](AA00AA)Marid[#]() Possession\\\n\\\n**Xeovrenth Adjure** is a powerful pentacle, allowing to possessing [#](AA00AA)Marid[#]() in extremely dangerous rituals.\n", + "book.occultism.dictionary_of_spirits.pentacles.possess_marid.intro.title": "Xeovrenth Adjure", + "book.occultism.dictionary_of_spirits.pentacles.possess_marid.name": "Xeovrenth Adjure", + "book.occultism.dictionary_of_spirits.pentacles.possess_marid.uses.text": "- [Cruelty Essence](entry://possession_rituals/possess_goat)\n", + "book.occultism.dictionary_of_spirits.pentacles.possess_marid.uses.title": "Uses", + "book.occultism.dictionary_of_spirits.pentacles.possess_unbound_afrit.description": "Possessing Unbound Afrit", + "book.occultism.dictionary_of_spirits.pentacles.possess_unbound_afrit.intro.text": "**Purpose:** [#](AA00AA)Unbound Afrit[#]() Possession\\\n\\\n**Abras Open Commanding Conjure** is a simplified version of [#](AA00AA)Abras Commanding Conjure[#](), allowing to possess [#](AA00AA)Afrit[#]() without red chalk.\n Due to the very reduced power of the pentacle, it has limitations in its use.\n", + "book.occultism.dictionary_of_spirits.pentacles.possess_unbound_afrit.intro.title": "Abras Open Commanding Conjure", + "book.occultism.dictionary_of_spirits.pentacles.possess_unbound_afrit.name": "Abras' Open Commanding Conjure", + "book.occultism.dictionary_of_spirits.pentacles.possess_unbound_afrit.uses.text": "- [Possessed Pig](entry://possession_rituals/possess_zombie_piglin)\n", + "book.occultism.dictionary_of_spirits.pentacles.possess_unbound_afrit.uses.title": "Uses", + "book.occultism.dictionary_of_spirits.pentacles.purple_chalk.description": "Purple Chalk", + "book.occultism.dictionary_of_spirits.pentacles.purple_chalk.lore.text": "The purple chalk is extremely important for those wishing to perform infusions,\n serving as the main glyph in this type of ritual.\n", + "book.occultism.dictionary_of_spirits.pentacles.purple_chalk.lore.title": "Infusing", + "book.occultism.dictionary_of_spirits.pentacles.purple_chalk.name": "The Chalk to Infusion", + "book.occultism.dictionary_of_spirits.pentacles.purple_chalk.recipe_impure.text": "You do not need to visit the [#](FF55FF)The End[#]() to obtain Endstone. You can summon a\n [Possessed Endermite](entry://possession_rituals/possess_endermite) which has a high chance to drop it.\n", + "book.occultism.dictionary_of_spirits.pentacles.purple_chalk.spotlight.text": "Infusions are an extremely different type of ritual, as while summoning and possession\n bring living creatures into the world, infusion creates objects bound to spirits.\n", + "book.occultism.dictionary_of_spirits.pentacles.red_chalk.description": "Red Chalk", + "book.occultism.dictionary_of_spirits.pentacles.red_chalk.essence.text": "To obtain the essence of an [#](AA00AA)Afrit[#]() for [](item://occultism:chalk_red) you need to\n [summon and kill an Unbound Afrit](entry://summoning_rituals/afrit_essence).\n", + "book.occultism.dictionary_of_spirits.pentacles.red_chalk.lore.text": "The red chalk is made from the very essence of Afrit, making its glyphs directly\n connected to these spirits. Additionally, it elevates the pentacles\n capacity to the most demonic levels.\n", + "book.occultism.dictionary_of_spirits.pentacles.red_chalk.lore.title": "Under Control", + "book.occultism.dictionary_of_spirits.pentacles.red_chalk.name": "The Afrit Control Chalk", + "book.occultism.dictionary_of_spirits.pentacles.red_chalk.spotlight.text": "These properties allow for an incredible achievement that has been sought\n for ages before being attained: the summoning of an Afrit bound to the occultist.\n", + "book.occultism.dictionary_of_spirits.pentacles.resurrect_spirit.description": "Spirit Resurrection", + "book.occultism.dictionary_of_spirits.pentacles.resurrect_spirit.intro.text": "**Purpose:** Resurrect a [#](AA00AA)Familiar[#]()\\\n\\\n**Susjes Simple Circle** is a simple pentacle that returns the physical form of a spirit that has\n been slaughtered, not needing much to do so.\\\n \\\n**Note:** This is the only pentacle where the [#](FF55FF)White Chalk[#]() cannot be replaced with another better [#](FF55FF)Foundation Chalk[#]().\n", + "book.occultism.dictionary_of_spirits.pentacles.resurrect_spirit.intro.title": "Susjes Simple Circle", + "book.occultism.dictionary_of_spirits.pentacles.resurrect_spirit.name": "Susje's Simple Circle", + "book.occultism.dictionary_of_spirits.pentacles.resurrect_spirit.uses.text": "- [Resurrect Familiar](entry://familiar_rituals/resurrection)\n- [Purify Vex to Allay](entry://familiar_rituals/resurrect_allay)\n", + "book.occultism.dictionary_of_spirits.pentacles.resurrect_spirit.uses.title": "Uses", + "book.occultism.dictionary_of_spirits.pentacles.summon_afrit.description": "Afrit Summoning", + "book.occultism.dictionary_of_spirits.pentacles.summon_afrit.intro.text": "**Purpose:** Summon a [#](AA00AA)Afrit[#]()\\\n\\\n**Abras Conjure** is one of the few pentacles capable of (mostly) safely summoning an [#](AA00AA)Afrit[#]().\n While the requirement of several [#](FF55FF)Spirit Attuned Gems[#]() makes it comparatively expensive,\n the additional calling potential is required to reach these high-power spirits.\n", + "book.occultism.dictionary_of_spirits.pentacles.summon_afrit.intro.title": "Abras Conjure", "book.occultism.dictionary_of_spirits.pentacles.summon_afrit.name": "Abras' Conjure", - "book.occultism.dictionary_of_spirits.pentacles.summon_afrit.uses.text": "- [Thunderstorm](entry://summoning_rituals/weather_magic@thunder)\n- [Rainy Weather](entry://summoning_rituals/weather_magic@rain)\n- [Afrit Crusher](entry://summoning_rituals/summon_crusher_t3)\n", + "book.occultism.dictionary_of_spirits.pentacles.summon_afrit.uses.text": "- [Afrit Crusher](entry://summoning_rituals/summon_crusher_t3)\n- [Thunderstorm](entry://summoning_rituals/weather_magic@thunder)\n- [Rainy Weather](entry://summoning_rituals/weather_magic@rain)\n", "book.occultism.dictionary_of_spirits.pentacles.summon_afrit.uses.title": "Uses", - "book.occultism.dictionary_of_spirits.pentacles.summon_djinni.intro.text": "**Purpose:** Summon a [#](ad03fc)Djinni[#]()\n\\\n\\\nDeveloped by [#](ad03fc)Ophyx[#]() during the Third Era, the [#](ad03fc)Calling[#]() is the go-to pentacle for [#](ad03fc)Djinni[#]() summonings ever since. Skeleton skulls ([Obtain here](entry://possession_rituals/possess_skeleton)) and [#](ad03fc)Purple Chalk[#]() provide the calling power required to force Djinni into appearance and candles stabilize the ritual.\n", - "book.occultism.dictionary_of_spirits.pentacles.summon_djinni.intro.title": "Ophyx' Calling", + "book.occultism.dictionary_of_spirits.pentacles.summon_djinni.description": "Djinni Summoning", + "book.occultism.dictionary_of_spirits.pentacles.summon_djinni.intro.text": "**Purpose:** Summon a [#](AA00AA)Djinni[#]()\\\n\\\nDeveloped by [#](FF55FF)Ophyx[#]() during the Third Era, the [#](FF55FF)Calling[#]() is the go-to pentacle for [#](AA00AA)Djinni[#]() summonings ever since.\n Skeleton skulls ([Obtain here](entry://possession_rituals/possess_skeleton))\n and [#](AA00AA)Lime Chalk[#]() provide the calling power required to force Djinni into appearance and candles stabilize the ritual.\n\n", + "book.occultism.dictionary_of_spirits.pentacles.summon_djinni.intro.title": "Ophyx Calling", "book.occultism.dictionary_of_spirits.pentacles.summon_djinni.name": "Ophyx' Calling", - "book.occultism.dictionary_of_spirits.pentacles.summon_djinni.uses.text": "- [Djinni Machine Operator](entry://summoning_rituals/summon_manage_machine)\n- [Djinni Crusher](entry://summoning_rituals/summon_crusher_t2)\n- [Clear Weather](entry://summoning_rituals/weather_magic@clear)\n- [Time Magic](entry://summoning_rituals/time_magic)\n", + "book.occultism.dictionary_of_spirits.pentacles.summon_djinni.uses.text": "- [Djinni Crusher](entry://summoning_rituals/summon_crusher_t2)\n- [Djinni Machine Operator](entry://summoning_rituals/summon_manage_machine)\n- [Clear Weather](entry://summoning_rituals/weather_magic@clear)\n- [Time Magic](entry://summoning_rituals/time_magic)\n- [Demonic Partner](entry://familiar_rituals/demonic_partner)\n", "book.occultism.dictionary_of_spirits.pentacles.summon_djinni.uses.title": "Uses", - "book.occultism.dictionary_of_spirits.pentacles.summon_foliot.intro.text": "**Purpose:** Summon a [#](ad03fc)Foliot[#]()\n\\\n\\\nConsidered by most to be the simplest pentacle, [#](ad03fc)Aviar's Circle[#]() is easy to set up, but provides only a minimum of binding power and protection for the summoner.\n\\\n\\\nOnly the weakest [#](ad03fc)Foliot[#]() can be summoned in rituals using this pentacle.\n", - "book.occultism.dictionary_of_spirits.pentacles.summon_foliot.intro.title": "Aviar's Circle", + "book.occultism.dictionary_of_spirits.pentacles.summon_foliot.description": "Foliot Summoning", + "book.occultism.dictionary_of_spirits.pentacles.summon_foliot.intro.text": "**Purpose:** Summon a [#](AA00AA)Foliot[#]()\\\n\\\nConsidered by most to be the simplest pentacle, [#](FF55FF)Aviars Circle[#]() is easy to set up,\n but provides only a minimum of binding power and protection for the summoner.\\\n\\\nOnly the weakest [#](AA00AA)Foliot[#]() can be summoned in rituals using this pentacle.\n", + "book.occultism.dictionary_of_spirits.pentacles.summon_foliot.intro.title": "Aviars Circle", "book.occultism.dictionary_of_spirits.pentacles.summon_foliot.name": "Aviar's Circle", - "book.occultism.dictionary_of_spirits.pentacles.summon_foliot.uses.text": "- [Foliot Crusher](entry://summoning_rituals/summon_crusher_t1)\n- [Foliot Lumberjack](entry://summoning_rituals/summon_lumberjack)\n- [Foliot Transporter](entry://summoning_rituals/summon_transport_items)\n- [Foliot Janitor](entry://summoning_rituals/summon_cleaner)\n- [Otherstone Trader](entry://summoning_rituals/summon_otherstone_trader)\n- [Otherworld Sapling Trader](entry://summoning_rituals/summon_otherworld_sapling_trader)\n- [Resurrect Familiar](entry://familiar_rituals/resurrection)\n- [Purify Vex to Allay](entry://familiar_rituals/summon_allay)\n", + "book.occultism.dictionary_of_spirits.pentacles.summon_foliot.uses.text": "- [Foliot Crusher](entry://summoning_rituals/summon_crusher_t1)\n- [Foliot Lumberjack](entry://summoning_rituals/summon_lumberjack)\n- [Foliot Transporter](entry://summoning_rituals/summon_transport_items)\n- [Foliot Janitor](entry://summoning_rituals/summon_cleaner)\n- [Otherstone Trader](entry://summoning_rituals/summon_otherstone_trader)\n- [Otherworld Sapling Trader](entry://summoning_rituals/summon_otherworld_sapling_trader)\n", "book.occultism.dictionary_of_spirits.pentacles.summon_foliot.uses.title": "Uses", - "book.occultism.dictionary_of_spirits.pentacles.summon_marid.intro.text": "**Purpose:** Summon a [#](ad03fc)Marid[#]()\n\\\n\\\n**Fatma's Incentivized Attraction** is a powerful pentacle, allowing to summon [#](ad03fc)Marid[#]() and bind them to the summoner's will.\n", - "book.occultism.dictionary_of_spirits.pentacles.summon_marid.intro.title": "Fatma's Incentivized Attraction", + "book.occultism.dictionary_of_spirits.pentacles.summon_marid.description": "Marid Summoning", + "book.occultism.dictionary_of_spirits.pentacles.summon_marid.intro.text": "**Purpose:** Summon a [#](AA00AA)Marid[#]()\\\n\\\n**Fatmas Incentivized Attraction** is a powerful pentacle, allowing to summon [#](AA00AA)Marid[#]()\n and bind them to the summoners will.\n", + "book.occultism.dictionary_of_spirits.pentacles.summon_marid.intro.title": "Fatmas Incentivized Attraction", "book.occultism.dictionary_of_spirits.pentacles.summon_marid.name": "Fatma's Incentivized Attraction", "book.occultism.dictionary_of_spirits.pentacles.summon_marid.uses.text": "- [Marid Crusher](entry://summoning_rituals/summon_crusher_t4)\n", "book.occultism.dictionary_of_spirits.pentacles.summon_marid.uses.title": "Uses", - "book.occultism.dictionary_of_spirits.pentacles.summon_wild_afrit.intro.text": "**Purpose:** Summon an unbound [#](ad03fc)Afrit[#]()\n\\\n\\\n**Abras' Open Conjure** is a simplified version of [#](ad03fc)Abras' Conjure[#](), allowing to summon [#](ad03fc)Afrit[#]() without red chalk. Due to the much reduced power of the pentacle, it cannot be used to control [#](ad03fc)Afrit[#](), and it thus can only be used to fight and kill [#](ad03fc)Afrit[#]().\n", - "book.occultism.dictionary_of_spirits.pentacles.summon_wild_afrit.intro.title": "Abras' Open Conjure", - "book.occultism.dictionary_of_spirits.pentacles.summon_wild_afrit.name": "Abras' Open Conjure", - "book.occultism.dictionary_of_spirits.pentacles.summon_wild_afrit.uses.text": "- [Afrit Essence](entry://summoning_rituals/afrit_essence)\n", - "book.occultism.dictionary_of_spirits.pentacles.summon_wild_afrit.uses.title": "Uses", - "book.occultism.dictionary_of_spirits.pentacles.summon_wild_greater_spirit.intro.text": "**Purpose:** Summon an unbound [#](ad03fc)Greater Spirit[#]()\n\\\n\\\n**Osorin's Unbound Calling** is based on [#](ad03fc)Abras' Open Conjure[#](), but features none of the stabilizing paraphernalia. The pentacle offers no protection whatsoever to the summoner, but acts as an irresistible call to [#](ad03fc)Greater Spirits[#]().\n", - "book.occultism.dictionary_of_spirits.pentacles.summon_wild_greater_spirit.intro.title": "Osorin's Unbound Calling", - "book.occultism.dictionary_of_spirits.pentacles.summon_wild_greater_spirit.name": "Osorin's Unbound Calling", - "book.occultism.dictionary_of_spirits.pentacles.summon_wild_greater_spirit.uses.text": "- [Wither Skeleton Skull](entry://summoning_rituals/wither_skull)\n- [Horde Husk](entry://possession_rituals/horde_husk)\n- [Horde Drowned](entry://possession_rituals/horde_drowned)\n- [Horde Creeper](entry://possession_rituals/horde_creeper)\n- [Horde Silverfish](entry://possession_rituals/horde_silverfish)\n- [Trial Key](entry://possession_rituals/possess_weak_breeze)\n- [Ominous Trial Key](entry://possession_rituals/possess_breeze)\n- [Heavy Core](entry://possession_rituals/possess_strong_breeze)\n- [Small Illager Invasion](entry://possession_rituals/horde_illager)\n", - "book.occultism.dictionary_of_spirits.pentacles.summon_wild_greater_spirit.uses.title": "Uses", + "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_afrit.description": "Unbound Afrit Summoning", + "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_afrit.intro.text": "**Purpose:** Summon an [#](AA00AA)Unbound Afrit[#]()\\\n\\\n**Abras Open Conjure** is a simplified version of [#](FF55FF)Abras Open Conjure[#](), allowing to summon [#](AA00AA)Afrit[#]() without red chalk.\n Due to the much reduced power of the pentacle, it cannot be used to control [#](AA00AA)Afrit[#](),\n and it thus can only be used to fight and kill [#](AA00AA)Afrit[#]().\n", + "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_afrit.intro.title": "Abras Open Conjure", + "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_afrit.name": "Abras' Open Conjure", + "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_afrit.uses.text": "- [Afrit Essence](entry://summoning_rituals/afrit_essence)\n", + "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_afrit.uses.title": "Uses", + "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_marid.description": "Unbound Marid Summoning", + "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_marid.intro.text": "**Purpose:** Summon an [#](AA00AA)Unbound Marid[#]()\\\n\\\n**Abras Fortified Conjure** is a improved version of [#](FF55FF)Abras Conjure[#](), allowing to summon [#](AA00AA)Marid[#](),\n however without any control of the occultist. [#](AA00AA)Marid[#]() summoned by this will become\n aggressive due to the instability of the ritual\n", + "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_marid.intro.title": "Abras Fortified Conjure", + "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_marid.name": "Abras' Fortified Conjure", + "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_marid.uses.text": "- [Marid Essence](entry://summoning_rituals/marid_essence)\n", + "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_marid.uses.title": "Uses", + "book.occultism.dictionary_of_spirits.pentacles.white_chalk.description": "White Chalk", + "book.occultism.dictionary_of_spirits.pentacles.white_chalk.lore.text": "This is the first chalk in the journey of any occultist. Due to its simplicity, it serves as a\n weak foundation. Pentacles drawn only with this chalk attract only the weakest spirits,\n known as Folit.\n", + "book.occultism.dictionary_of_spirits.pentacles.white_chalk.lore.title": "First Foundation", + "book.occultism.dictionary_of_spirits.pentacles.white_chalk.name": "The Most Basic Chalk", + "book.occultism.dictionary_of_spirits.pentacles.white_chalk.spotlight.text": "In almost any pentacle where you see a white glyph, it can be replaced with another\n \"colorless\" chalk (light gray, gray, or black).\n", + "book.occultism.dictionary_of_spirits.pentacles.yellow_chalk.description": "Yellow Chalk", + "book.occultism.dictionary_of_spirits.pentacles.yellow_chalk.lore.text": "The yellow chalk, also known as golden chalk, brings a sparkle to the eyes of those who\n engage in possessions, serving as the main glyph in this type of ritual.\n", + "book.occultism.dictionary_of_spirits.pentacles.yellow_chalk.lore.title": "Possessing", + "book.occultism.dictionary_of_spirits.pentacles.yellow_chalk.name": "The Chalk to Possession", + "book.occultism.dictionary_of_spirits.pentacles.yellow_chalk.spotlight.text": "Possessions are a variation of summoning, caused by a transformation in geometry and\n the addition of yellow glyphs, allowing spirits to manifest in bodies (material prisons)\n different from their usual ones.\n", "book.occultism.dictionary_of_spirits.possession_rituals.horde_creeper.description.text": "Creeper summoned in this ritual are CHARGED and will drop 1-3 of these discs: [](item://minecraft:music_disc_13), [](item://minecraft:music_disc_cat), [](item://minecraft:music_disc_blocks), [](item://minecraft:music_disc_chirp), [](item://minecraft:music_disc_far), [](item://minecraft:music_disc_mall), [](item://minecraft:music_disc_mellohi), [](item://minecraft:music_disc_stal), [](item://minecraft:music_disc_strad), [](item://minecraft:music_disc_ward), [](item://minecraft:music_disc_11), [](item://minecraft:music_disc_wait).\n", "book.occultism.dictionary_of_spirits.possession_rituals.horde_creeper.entity.text": "**Drops**: Discs that the normal creeper drops when killed by Skeleton (See next page);\n", "book.occultism.dictionary_of_spirits.possession_rituals.horde_creeper.name": "Wild Horde Creeper", @@ -684,11 +842,14 @@ "book.occultism.dictionary_of_spirits.possession_rituals.overview.intro.text": "Possession rituals bind spirits into living beings, giving the summoner a degree of control over the possessed being.\n\\\n\\\nAs such these rituals are used to obtain rare items without having to venture into dangerous places.\n", "book.occultism.dictionary_of_spirits.possession_rituals.overview.intro.title": "Possession Rituals", "book.occultism.dictionary_of_spirits.possession_rituals.overview.name": "Possession Rituals", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_bee.description.text": "In this ritual an [#](ad03fc)djinni[#]() will possess an [#](ad03fc)Bee[#](), Be careful,\n a bee invoked by this way does not lose its stinger, always poison the target,\n attacks faster and can summon other bees when it takes damage.\n This is the only known method to obtain [](item://occultism:cursed_honey), eating will grants\n a short regeneration buff.\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_bee.entity.text": " **Drops**: [](item://occultism:cursed_honey);\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_bee.name": "Possessed Bee", "book.occultism.dictionary_of_spirits.possession_rituals.possess_breeze.description.text": "The Possessed Breeze has intrinsic Ominous Essence causing a drop of [](item://minecraft:ominous_trial_key). The [](item://minecraft:breeze_rod) form this enemy can survive after the battle and the extra loot is: [](item://minecraft:bolt_armor_trim_smithing_template), [](item://minecraft:guster_banner_pattern) and [](item://minecraft:music_disc_precipice).\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_breeze.entity.text": " **Drops**: 1x [](item://minecraft:ominous_trial_key) and can drop other things (See next page);\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_breeze.name": "In the chamber", "book.occultism.dictionary_of_spirits.possession_rituals.possess_elder_guardian.description.text": "In this ritual a [#](ad03fc)Elder Guardian[#]() is spawned using the life energy of a [#](ad03fc)Fish[#]() and immediately possessed by the summoned [#](ad03fc)Afrit[#](). The [#](ad03fc)Possessed Elder Guardian[#]() will always drop at least one [](item://minecraft:nautilus_shell), having a chance to drop [](item://minecraft:heart_of_the_sea) and a lot of things that normal Elder Guardian drops.\n", - "book.occultism.dictionary_of_spirits.possession_rituals.possess_elder_guardian.entity.text": "**Drops**: 2-4x [](item://minecraft:nautilus_shell)\nand as 40% to drop a [](item://minecraft:heart_of_the_sea)\nAlso commom Elder Guardian loot;\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_elder_guardian.entity.text": "**Drops**: 2-4x [](item://minecraft:nautilus_shell)\nand as 40% to drop a [](item://minecraft:heart_of_the_sea)\nAlso common Elder Guardian loot;\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_elder_guardian.name": "Possessed Elder Guardian", "book.occultism.dictionary_of_spirits.possession_rituals.possess_enderman.description.text": "In this ritual an [#](ad03fc)Enderman[#]() is spawned using the life energy of a [#](ad03fc)Pig[#]() and immediately possessed by the summoned [#](ad03fc)Djinni[#](). The [#](ad03fc)Possessed Enderman[#]() will always drop at least one [](item://minecraft:ender_pearl) when killed.\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_enderman.entity.text": "**Drops**: 1-3x [](item://minecraft:ender_pearl)\n", @@ -699,12 +860,19 @@ "book.occultism.dictionary_of_spirits.possession_rituals.possess_ghast.description.text": "In this ritual a [#](ad03fc)Ghast[#]() is spawned using the life energy of a [#](ad03fc)Cow[#]() and immediately possessed by the summoned [#](ad03fc)Djinni[#](). The [#](ad03fc)Possessed Ghast[#]() will always drop at least one [](item://minecraft:ghast_tear) when killed.\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_ghast.entity.text": "**Drops**: 1-3x [](item://minecraft:ghast_tear)\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_ghast.name": "Possessed Ghast", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_goat.description.text": "In this ritual, a [#](ad03fc)Goat of Mercy[#]() is summoned to be sacrificed. This is the only way to obtain the [](item://occultism:cruelty_essence).\n Be sure of your actions, because they will forever mark your history.\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_goat.entity.text": " **Drops**: [](item://occultism:cruelty_essence);\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_goat.name": "Goat of Mery", "book.occultism.dictionary_of_spirits.possession_rituals.possess_hoglin.description.text": "In this ritual a [#](ad03fc)Hoglin[#]() is spawned using the life energy of a [#](ad03fc)Pig[#]() and immediately possessed by the summoned [#](ad03fc)Afrit[#](). The [#](ad03fc)Possessed Hoglin[#]() can drop a [](item://minecraft:netherite_upgrade_smithing_template), [](item://minecraft:snout_armor_trim_smithing_template), [](item://minecraft:music_disc_pigstep), [](item://minecraft:piglin_banner_pattern), [](item://minecraft:nether_brick) or return back [](item://minecraft:netherite_scrap). You need to kill this mob before the transformation to a Zoglin if you don't want to perform the ritual in the nether.\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_hoglin.entity.text": " **Drops**: Can drop: [](item://minecraft:netherite_upgrade_smithing_template),\n return back [](item://minecraft:netherite_scrap) or other things (See next page);\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_hoglin.name": "Possessed Hoglin", "book.occultism.dictionary_of_spirits.possession_rituals.possess_phantom.description.text": "In this ritual a [#](ad03fc)Phantom[#]() is spawned using the life energy of a [#](ad03fc)Flying Passive Mob[#]() and immediately possessed by the summoned [#](ad03fc)Foliot[#](). The [#](ad03fc)Possessed Phantom[#]() will always drop at least one [](item://minecraft:phantom_membrane) when killed. Using this ritual is easy to trap the phantom and you can has comfy sleep.\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_phantom.entity.text": "**Drops**: 1-4x [](item://minecraft:phantom_membrane)\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_phantom.name": "Possessed Phantom", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_random_animal.description.text": "In this ritual a [#](ad03fc)Foliot[#]() is summoned **as an untamed spirit** to take the shape of a random animal.\n\\\n\\\nThe animal can be interacted with as it's natural counterpart, including taming, breeding and loot.\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_random_animal.entity.text": "**Provides**: A random animal\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_random_animal.entity.title": "Summon Random Animal", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_random_animal.name": "Possessed Random Animal", "book.occultism.dictionary_of_spirits.possession_rituals.possess_shulker.description.text": "In this ritual a [#](ad03fc)Shulker[#]() is spawned using the life energy of a [#](ad03fc)Cube Mob[#]() and immediately possessed by the summoned [#](ad03fc)Afrit[#](). The [#](ad03fc)Possessed Shulker[#]() will always drop at least one [](item://minecraft:shulker_shell) when killed. You can use vanilla shulker multiplication to get normal shulkers but their have less chance to drop shells.\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_shulker.entity.text": "**Drops**: 1-2x [](item://minecraft:shulker_shell);\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_shulker.name": "Possessed Shulker", @@ -714,6 +882,13 @@ "book.occultism.dictionary_of_spirits.possession_rituals.possess_strong_breeze.description.text": "The Possessed Strong Breeze is 'Flow-Forged', granting a powerful version of the regular Breeze. This is the final target to obtain a [](item://minecraft:heavy_core) and as a bonus, you can get: [](item://minecraft:flow_armor_trim_smithing_template), [](item://minecraft:flow_banner_pattern), [](item://minecraft:flow_pottery_sherd) and [](item://minecraft:music_disc_creator).\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_strong_breeze.entity.text": " **Drops**: 1x [](item://minecraft:heavy_core) and can drop other things (See next page);\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_strong_breeze.name": "Glorious Vault", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_unbound_otherworld_bird.description.text": "See [Drikwing Familiar](entry://familiar_rituals/familiar_otherworld_bird) for more information.\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_unbound_otherworld_bird.entity.text": "**Provides**: A tameable Drikwing\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_unbound_otherworld_bird.name": "Unbound Drikwing", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_unbound_parrot.description.text": "In this ritual a [#](ad03fc)Foliot[#]() is summoned **as an untamed spirit**.\n\\\n\\\nThe slaughter of a [#](ad03fc)Chicken[#]() and the offering of dyes are intended to entice the Foliot to take the shape of a parrot. As [#](ad03fc)Foliot[#]() are not among the smartest spirits, they sometimes misunderstand the instructions ...\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_unbound_parrot.description2.text": "*This means, if a [#](ad03fc)Chicken[#]() is spawned, that's not a bug, just bad luck!*\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_unbound_parrot.entity.text": "**Provides**: A tameable Parrot\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_unbound_parrot.name": "Unbound Parrot", "book.occultism.dictionary_of_spirits.possession_rituals.possess_warden.description.text": "In this ritual a [#](ad03fc)Warden[#]() is spawned using the life energy of a [#](ad03fc)Axolotl[#]() and immediately possessed by the summoned [#](ad03fc)Djinni[#](). The [#](ad03fc)Possessed Warden[#]() will always drop at least six [](item://minecraft:echo_shard) when killed and as a chance to drop [](item://minecraft:disc_fragment_5), [](item://minecraft:music_disc_otherside), [](item://minecraft:silence_armor_trim_smithing_template), [](item://minecraft:ward_armor_trim_smithing_template). If you try to escape, this possessed Warden will go to the floor like a normal warden.\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_warden.entity.text": "**Drops**: 6-9x [](item://minecraft:echo_shard)\nand items related to ancient city;\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_warden.name": "Possessed Warden", @@ -723,7 +898,16 @@ "book.occultism.dictionary_of_spirits.possession_rituals.possess_weak_shulker.description.text": "In this ritual a [#](ad03fc)Shulker[#]() is spawned using the life energy of a [#](ad03fc)Cube Mob[#]() and immediately possessed by the summoned [#](ad03fc)Djinni[#](). The [#](ad03fc)Possessed Weak Shulker[#]() will always drop at least one [](item://minecraft:chorus_fruit) when killed and as a chance to drop [](item://minecraft:shulker_shell). You can use vanilla shulker multiplication to get normal shulkers with more chance to drop their shells.\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_weak_shulker.entity.text": "**Drops**: 1-3x [](item://minecraft:chorus_fruit)\nand as 10% to drop a [](item://minecraft:shulker_shell);\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_weak_shulker.name": "Possessed Weak Shulker", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_witch.description.text": "In this ritual a [#](ad03fc)Witch[#]() is spawned using the rage energy from the [#](ad03fc)Cat[#]() death. The [#](ad03fc)Possessed Witch[#]() can drop a [](item://minecraft:experience_bottle), [](item://minecraft:honey_bottle), [](item://minecraft:ominous_bottle) or a useless uncraftable potion.\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_witch.entity.text": " **Drops**: Can drop: [](item://minecraft:experience_bottle) or other bottles (See next page);\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_witch.name": "Possessed Witch", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_zombie_piglin.description.text": "In this ritual an [#](ad03fc)afrit[#]() will possess an [#](ad03fc)Old Zombified Piglin[#](),\n unifying the energies of the [#](ad03fc)nether[#](), the power of the [#](ad03fc)afrit[#](),\n the material [#](ad03fc)pork[#]() and the concept of the color [#](ad03fc)pink[#]().\n This is the only known method to obtain [](item://occultism:demonic_meat), its properties\n prevent cooking but grant fire resistance to whoever consumes it.\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_zombie_piglin.entity.text": " **Drops**: [](item://occultism:demonic_meat);\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_zombie_piglin.name": "Possessed Zombified Piglin", "book.occultism.dictionary_of_spirits.possession_rituals.return_to_rituals.name": "Return to Rituals Category", + "book.occultism.dictionary_of_spirits.possession_rituals.wither_skull.intro.text": "Besides venturing into nether dungeons, there is one more way to get these skulls. The legendary [#](ad03fc)Wild Hunt[#]() consists of [#](ad03fc)Greater Spirits[#]() taking the form of wither skeletons. While summoning the Wild Hunt is incredibly dangerous, it is the fastest way to get wither skeleton skulls.\n", + "book.occultism.dictionary_of_spirits.possession_rituals.wither_skull.intro.title": "Wither Skeleton Skull", + "book.occultism.dictionary_of_spirits.possession_rituals.wither_skull.name": "Wither Skeleton Skull", "book.occultism.dictionary_of_spirits.rituals.crafting_rituals.name": "Binding Rituals", "book.occultism.dictionary_of_spirits.rituals.familiar_rituals.name": "Familiar Rituals", "book.occultism.dictionary_of_spirits.rituals.item_use.intro.text": "Some rituals require the use of certain items to be performed. Use the item described on the ritual's page within **16 blocks** of the [](item://occultism:golden_sacrificial_bowl) to proceed with the ritual.\n\\\n\\\n**Important:** Before using the item, start the ritual. Grey particles indicate that the ritual is ready for the item use.\n", @@ -792,7 +976,7 @@ "book.occultism.dictionary_of_spirits.spirits.wild_hunt.intro.text": "A group of legendary Greater Spirits, usually appearing in the form of wither skeletons, with their skeleton minions. The Greater Spirits are bound to their minions in such fashion that they are virtually invulnerable until their minions have been sent back to [#](ad03fc)The Other Place[#]().\n", "book.occultism.dictionary_of_spirits.spirits.wild_hunt.intro.title": "The Wild Hunt", "book.occultism.dictionary_of_spirits.spirits.wild_hunt.name": "The Wild Hunt", - "book.occultism.dictionary_of_spirits.spirits.wild_hunt.wither_skull.text": "While it is incredibly dangerous to call on the Wild Hunt, some summoners have been known to do so for quick access to the rare wither skeleton skulls they are known to leave behind. Summoning the wild hunt is described in detail on the page on obtaining [Wither Skeleton Skulls](entry://summoning_rituals/wither_skull).\n", + "book.occultism.dictionary_of_spirits.spirits.wild_hunt.wither_skull.text": "While it is incredibly dangerous to call on the Wild Hunt, some summoners have been known to do so for quick access to the rare wither skeleton skulls they are known to leave behind. Summoning the wild hunt is described in detail on the page on obtaining [Wither Skeleton Skulls](entry://possession_rituals/wither_skull).\n", "book.occultism.dictionary_of_spirits.spirits.wild_hunt.wither_skull.title": "Wither Skeleton Skulls", "book.occultism.dictionary_of_spirits.storage.name": "Magic Storage", "book.occultism.dictionary_of_spirits.storage.overview.intro.text": "Every summoner knows the problem: There are just too many occult paraphernalia lying around. The solution is simple, yet elegant: Magic Storage!\n\\\n\\\nUsing Spirits able to access storage dimensions it is possible to create almost unlimited storage space.\n", @@ -842,6 +1026,9 @@ "book.occultism.dictionary_of_spirits.summoning_rituals.afrit_essence.intro.text": "[](item://occultism:afrit_essence) is required to safely call on the more powerful spirits, commonly used in the form of red chalk. To obtain the essence, an [#](ad03fc)Afrit[#]() needs to be summoned unbound into this plane, and killed. Be warned that this is no simple endeavour, and unbound spirit presents great danger to all nearby.\n", "book.occultism.dictionary_of_spirits.summoning_rituals.afrit_essence.intro.title": "Afrit Essence", "book.occultism.dictionary_of_spirits.summoning_rituals.afrit_essence.name": "Afrit Essence", + "book.occultism.dictionary_of_spirits.summoning_rituals.marid_essence.intro.text": "[](item://occultism:marid_essence) is required to safely control the most powerful spirits, commonly used in the form of blue chalk. To obtain the essence, an [#](ad03fc)Marid[#]() needs to be summoned unbound into this plane, and killed. Be warned that this is no simple endeavour, and unbound spirit presents great danger to all nearby.\n", + "book.occultism.dictionary_of_spirits.summoning_rituals.marid_essence.intro.title": "Marid Essence", + "book.occultism.dictionary_of_spirits.summoning_rituals.marid_essence.name": "Marid Essence", "book.occultism.dictionary_of_spirits.summoning_rituals.name": "Summoning Rituals", "book.occultism.dictionary_of_spirits.summoning_rituals.overview.intro.text": "Summon rituals force spirits to enter this world in their chosen shape, leading to little restrictions on their power, but expose them to essence decay. Summoned spirits range from trade spirits that trade and convert items, to slave-like helpers for manual labour.\n", "book.occultism.dictionary_of_spirits.summoning_rituals.overview.intro.title": "Summoning Rituals", @@ -893,10 +1080,6 @@ "book.occultism.dictionary_of_spirits.summoning_rituals.summon_otherworld_sapling_trader.intro.title": "Otherworld Sapling Trader", "book.occultism.dictionary_of_spirits.summoning_rituals.summon_otherworld_sapling_trader.name": "Summon Otherworld Sapling Trader", "book.occultism.dictionary_of_spirits.summoning_rituals.summon_otherworld_sapling_trader.trade.text": "To trade, drop an your offered item next to the trader, he will pick it up and drop the exchanged item.\n", - "book.occultism.dictionary_of_spirits.summoning_rituals.summon_random_animal.description.text": "In this ritual a [#](ad03fc)Foliot[#]() is summoned **as an untamed spirit** to take the shape of a random animal.\n\\\n\\\nThe animal can be interacted with as it's natural counterpart, including taming, breeding and loot.\n", - "book.occultism.dictionary_of_spirits.summoning_rituals.summon_random_animal.entity.text": "**Provides**: A random animal\n", - "book.occultism.dictionary_of_spirits.summoning_rituals.summon_random_animal.entity.title": "Summon Random Animal", - "book.occultism.dictionary_of_spirits.summoning_rituals.summon_random_animal.name": "Summon Random Animal", "book.occultism.dictionary_of_spirits.summoning_rituals.summon_transport_items.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", "book.occultism.dictionary_of_spirits.summoning_rituals.summon_transport_items.intro.text": "The transporter is useful in that you don't need a train of hoppers transporting stuff, and can use any inventory to take from and deposit.\n\\\n\\\nTo make it take from an inventory simply sneak and interact with it's book of calling on the inventory you want.\n", "book.occultism.dictionary_of_spirits.summoning_rituals.summon_transport_items.intro.title": "Foliot Transporter", @@ -906,13 +1089,6 @@ "book.occultism.dictionary_of_spirits.summoning_rituals.summon_transport_items.name": "Summon Foliot Transporter", "book.occultism.dictionary_of_spirits.summoning_rituals.summon_transport_items.spirit_inventories.text": "The Transporter can also interact with the inventories of other spirits. This is especially useful to automatically supply a [Crusher spirit](entry://summoning_rituals/summon_crusher_t1) with items to crush.\n", "book.occultism.dictionary_of_spirits.summoning_rituals.summon_transport_items.spirit_inventories.title": "Spirit Inventories", - "book.occultism.dictionary_of_spirits.summoning_rituals.summon_wild_otherworld_bird.description.text": "See [Drikwing Familiar](entry://familiar_rituals/familiar_otherworld_bird) for more information.\n", - "book.occultism.dictionary_of_spirits.summoning_rituals.summon_wild_otherworld_bird.entity.text": "**Provides**: A tameable Drikwing\n", - "book.occultism.dictionary_of_spirits.summoning_rituals.summon_wild_otherworld_bird.name": "Summon Wild Drikwing", - "book.occultism.dictionary_of_spirits.summoning_rituals.summon_wild_parrot.description.text": "In this ritual a [#](ad03fc)Foliot[#]() is summoned **as an untamed spirit**.\n\\\n\\\nThe slaughter of a [#](ad03fc)Chicken[#]() and the offering of dyes are intended to entice the Foliot to take the shape of a parrot. As [#](ad03fc)Foliot[#]() are not among the smartest spirits, they sometimes misunderstand the instructions ...\n", - "book.occultism.dictionary_of_spirits.summoning_rituals.summon_wild_parrot.description2.text": "*This means, if a [#](ad03fc)Chicken[#]() is spawned, that's not a bug, just bad luck!*\n", - "book.occultism.dictionary_of_spirits.summoning_rituals.summon_wild_parrot.entity.text": "**Provides**: A tameable Parrot\n", - "book.occultism.dictionary_of_spirits.summoning_rituals.summon_wild_parrot.name": "Summon Wild Parrot", "book.occultism.dictionary_of_spirits.summoning_rituals.time_magic.intro.text": "Time magic is limited in scope, it cannot send the magician back or forth in time, but rather allows to change time time of day. This is especially useful for rituals or other tasks requiring day- or nighttime specifically.\n\\\n\\\nTime spirits will only modify the time once and then vanish.\n", "book.occultism.dictionary_of_spirits.summoning_rituals.time_magic.intro.title": "Time Magic", "book.occultism.dictionary_of_spirits.summoning_rituals.time_magic.name": "Time Magic", @@ -923,9 +1099,6 @@ "book.occultism.dictionary_of_spirits.summoning_rituals.weather_magic.intro.text": "Weather magic is especially useful for farmers and others depending on specific weather. Summons spirits to modify the weather. Different types of weather modification require different spirits.\n\\\n\\\nWeather spirits will only modify the weather once and then vanish.\n", "book.occultism.dictionary_of_spirits.summoning_rituals.weather_magic.intro.title": "Weather Magic", "book.occultism.dictionary_of_spirits.summoning_rituals.weather_magic.name": "Weather Magic", - "book.occultism.dictionary_of_spirits.summoning_rituals.wither_skull.intro.text": "Besides venturing into nether dungeons, there is one more way to get these skulls. The legendary [#](ad03fc)Wild Hunt[#]() consists of [#](ad03fc)Greater Spirits[#]() taking the form of wither skeletons. While summoning the Wild Hunt is incredibly dangerous, it is the fastest way to get wither skeleton skulls.\n", - "book.occultism.dictionary_of_spirits.summoning_rituals.wither_skull.intro.title": "Wither Skeleton Skull", - "book.occultism.dictionary_of_spirits.summoning_rituals.wither_skull.name": "Wither Skeleton Skull", "book.occultism.dictionary_of_spirits.tooltip": "An introduction to the spirit world.", "condition.occultism.ritual.and.description": "All of the following conditions need to be met: %s", "condition.occultism.ritual.and.not_fulfilled": "One or more of the required conditions were not met (all must be met): %s", @@ -998,22 +1171,27 @@ "entity.occultism.guardian_familiar": "Guardian Familiar", "entity.occultism.headless_familiar": "Headless Familiar", "entity.occultism.marid": "Marid", + "entity.occultism.marid_unbound": "Unbound Marid", + "entity.occultism.mercy_goat": "Goat of Mercy", "entity.occultism.mummy_familiar": "Mummy Familiar", "entity.occultism.otherworld_bird": "Drikwing", - "entity.occultism.possessed_breeze": "Possessed Breeze", + "entity.occultism.possessed_bee": "Possessed Bee", + "entity.occultism.possessed_breeze": "Wild Breeze", "entity.occultism.possessed_elder_guardian": "Possessed Elder Guardian", "entity.occultism.possessed_enderman": "Possessed Enderman", "entity.occultism.possessed_endermite": "Possessed Endermite", - "entity.occultism.possessed_evoker": "Possessed Evoker", + "entity.occultism.possessed_evoker": "Wild Evoker", "entity.occultism.possessed_ghast": "Possessed Ghast", "entity.occultism.possessed_hoglin": "Possessed Hoglin", "entity.occultism.possessed_phantom": "Possessed Phantom", "entity.occultism.possessed_shulker": "Possessed Shulker", "entity.occultism.possessed_skeleton": "Possessed Skeleton", - "entity.occultism.possessed_strong_breeze": "Possessed Strong Breeze", + "entity.occultism.possessed_strong_breeze": "Wild Strong Breeze", "entity.occultism.possessed_warden": "Possessed Warden", - "entity.occultism.possessed_weak_breeze": "Possessed Weak Breeze", + "entity.occultism.possessed_weak_breeze": "Wild Weak Breeze", "entity.occultism.possessed_weak_shulker": "Possessed Weak Shulker", + "entity.occultism.possessed_witch": "Possessed Witch", + "entity.occultism.possessed_zombie_piglin": "Possessed Zombified Piglin", "entity.occultism.shub_niggurath_familiar": "Shub Niggurath Familiar", "entity.occultism.shub_niggurath_spawn": "Shub Niggurath Spawn", "entity.occultism.thrown_sword": "Thrown Sword", @@ -1081,6 +1259,7 @@ "hud.occultism.pentacle_found": "Current Pentacle: %s", "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.amethyst_dust": "Amethyst Dust", "item.occultism.awakened_feather": "Awakened Feather", "item.occultism.beaver_nugget": "Beaver Nugget", "item.occultism.book_of_binding_afrit": "Book of Binding: Afrit", @@ -1140,7 +1319,6 @@ "item.occultism.chalk_cyan": "Cyan Chalk", "item.occultism.chalk_cyan_impure": "Impure Cyan Chalk", "item.occultism.chalk_gold": "Yellow Chalk", - "item.occultism.chalk_gold_impure": "Impure Yellow Chalk", "item.occultism.chalk_gray": "Gray Chalk", "item.occultism.chalk_gray_impure": "Impure Gray Chalk", "item.occultism.chalk_green": "Green Chalk", @@ -1163,8 +1341,16 @@ "item.occultism.chalk_red_impure": "Impure Red Chalk", "item.occultism.chalk_white": "White Chalk", "item.occultism.chalk_white_impure": "Impure White Chalk", + "item.occultism.chalk_yellow_impure": "Impure Yellow Chalk", "item.occultism.copper_dust": "Copper Dust", + "item.occultism.cruelty_essence": "Cruelty Essence", + "item.occultism.crushed_blackstone": "Crushed Blackstone", + "item.occultism.crushed_blue_ice": "Crushed Blue Ice", + "item.occultism.crushed_calcite": "Crushed Calcite", "item.occultism.crushed_end_stone": "Crushed End Stone", + "item.occultism.crushed_ice": "Crushed Ice", + "item.occultism.crushed_packed_ice": "Crushed Packed Ice", + "item.occultism.cursed_honey": "Cursed Honey", "item.occultism.datura": "Demon's Dream Fruit", "item.occultism.datura.auto_tooltip": "Consumption may allow to see beyond the veil ... it may also cause general un-wellness.", "item.occultism.datura_seeds": "Demon's Dream Seeds", @@ -1176,6 +1362,7 @@ "item.occultism.debug_foliot_trader": "Summon Debug Foliot Trader", "item.occultism.debug_foliot_transport_items": "Summon Debug Foliot Transporter", "item.occultism.debug_wand": "Debug Wand", + "item.occultism.demonic_meat": "Demonic Meat", "item.occultism.demons_dream_essence": "Demon's Dream Essence", "item.occultism.demons_dream_essence.auto_tooltip": "Consumption allows to see beyond the veil ... and a whole lot of other effects.", "item.occultism.dimensional_matrix": "Dimensional Crystal Matrix", @@ -1186,11 +1373,15 @@ "item.occultism.divination_rod.message.no_linked_block": "The divination rod is not attuned to any material.", "item.occultism.divination_rod.tooltip.linked_block": "Attuned to %s.", "item.occultism.divination_rod.tooltip.no_linked_block": "Not attuned to any material.", + "item.occultism.dragonyst_dust": "Dragonyst Dust", + "item.occultism.echo_dust": "Echo Dust", + "item.occultism.emerald_dust": "Emerald Dust", "item.occultism.familiar_ring": "Familiar Ring", "item.occultism.familiar_ring.tooltip": "Occupied by the familiar %s\n%s", "item.occultism.familiar_ring.tooltip.empty": "Does not contain any familiar.", "item.occultism.familiar_ring.tooltip.familiar_type": "[Type: %s]", "item.occultism.gold_dust": "Gold Dust", + "item.occultism.gray_paste": "Gray Paste", "item.occultism.iesnium_dust": "Iesnium Dust", "item.occultism.iesnium_ingot": "Iesnium Ingot", "item.occultism.iesnium_nugget": "Iesnium Nugget", @@ -1205,11 +1396,15 @@ "item.occultism.jei_dummy.require_item_use.tooltip": "This ritual requires to use a specific item to start. Please refer to the Dictionary of Spirits for detailed instructions.", "item.occultism.jei_dummy.require_sacrifice": "Requires Sacrifice!", "item.occultism.jei_dummy.require_sacrifice.tooltip": "This ritual requires a sacrifice to start. Please refer to the Dictionary of Spirits for detailed instructions.", + "item.occultism.lapis_dust": "Lapis Dust", "item.occultism.lens_frame": "Lens Frame", "item.occultism.lenses": "Glass Lenses", "item.occultism.magic_lamp_empty": "Empty Magic Lamp", + "item.occultism.marid_essence": "Marid Essence", "item.occultism.miner_afrit_deeps": "Deep Ore Miner Afrit", "item.occultism.miner_afrit_deeps.tooltip": "%s will mine random ores and deepslate ores in the mining dimension.", + "item.occultism.miner_ancient_eldritch": "Eldritch Ancient Miner", + "item.occultism.miner_ancient_eldritch.tooltip": "Something will mine random raw ores blocks, gems blocks and rare ores in the mining dimension.", "item.occultism.miner_debug_unspecialized": "Debug Miner", "item.occultism.miner_debug_unspecialized.tooltip": "Debug Miner will mine random blocks in the mining dimension.", "item.occultism.miner_djinni_ores": "Ore Miner Djinni", @@ -1218,6 +1413,10 @@ "item.occultism.miner_foliot_unspecialized.tooltip": "%s will mine random blocks in the mining dimension.", "item.occultism.miner_marid_master": "Master Miner Marid", "item.occultism.miner_marid_master.tooltip": "%s will mine random ores, deepslate ores and rare ores in the mining dimension.", + "item.occultism.mining_dim_core": "Mining Dimension Core Piece", + "item.occultism.nature_paste": "Nature Paste", + "item.occultism.netherite_dust": "Netherite Dust", + "item.occultism.netherite_scrap_dust": "Netherite Scrap Dust", "item.occultism.obsidian_dust": "Obsidian Dust", "item.occultism.otherstone_frame": "Otherstone Frame", "item.occultism.otherstone_tablet": "Otherstone Tablet", @@ -1227,28 +1426,48 @@ "item.occultism.otherworld_goggles": "Otherworld Goggles", "item.occultism.otherworld_sapling": "Otherworld Sapling", "item.occultism.otherworld_sapling_natural": "Unstable Otherworld Sapling", - "item.occultism.pentacle": "Pentacle", + "item.occultism.pentacle_craft": "Pentacle Craft", + "item.occultism.pentacle_misc": "Pentacle Misc", + "item.occultism.pentacle_possess": "Pentacle Possess", + "item.occultism.pentacle_summon": "Pentacle Summon", "item.occultism.purified_ink": "Purified Ink", "item.occultism.raw_iesnium": "Raw Iesnium", "item.occultism.raw_silver": "Raw Silver", + "item.occultism.repair_icon": "Repair Icon", + "item.occultism.research_fragment_dust": "Research Fragment Dust", + "item.occultism.resurrect_icon": "Resurrect Icon", + "item.occultism.ritual_dummy.craft_budding_amethyst": "Ritual: Forge Budding Amethyst", + "item.occultism.ritual_dummy.craft_budding_amethyst.tooltip": "Wild Spirits will forge a Budding Amethyst.", "item.occultism.ritual_dummy.craft_dimensional_matrix": "Ritual: Craft Dimensional Matrix", "item.occultism.ritual_dummy.craft_dimensional_matrix.tooltip": "The dimensional matrix is the entry point to a small dimension used for storing items.", "item.occultism.ritual_dummy.craft_dimensional_mineshaft": "Ritual: Craft Dimensional Mineshaft", "item.occultism.ritual_dummy.craft_dimensional_mineshaft.tooltip": "Allows miner spirits to enter the mining dimension and bring back resources.", + "item.occultism.ritual_dummy.craft_dragonyst_dust": "Ritual: Craft Dragonyst Dust", + "item.occultism.ritual_dummy.craft_dragonyst_dust.tooltip": "A marid will infuse ender dragon essence in the amethyst dust.", "item.occultism.ritual_dummy.craft_familiar_ring": "Ritual: Craft Familiar Ring", "item.occultism.ritual_dummy.craft_familiar_ring.tooltip": "The familiar ring allows to store familiars. The ring will apply the familiar effect to the wearer.", + "item.occultism.ritual_dummy.craft_gray_paste": "Ritual: Craft Gray Paste", + "item.occultism.ritual_dummy.craft_gray_paste.tooltip": "A djinni will craft the gray paste mixing ingredients.", "item.occultism.ritual_dummy.craft_infused_lenses": "Ritual: Craft Infused Lenses", "item.occultism.ritual_dummy.craft_infused_lenses.tooltip": "These lenses are used to craft spectacles that give thee ability to see beyond the physical world.", "item.occultism.ritual_dummy.craft_infused_pickaxe": "Ritual: Craft Infused Pickaxe", "item.occultism.ritual_dummy.craft_infused_pickaxe.tooltip": "Infuse a Pickaxe.", "item.occultism.ritual_dummy.craft_miner_afrit_deeps": "Ritual: Summon Afrit Deep Ore Miner", "item.occultism.ritual_dummy.craft_miner_afrit_deeps.tooltip": "Summon Afrit Deep Ore Miner into a magic lamp.", + "item.occultism.ritual_dummy.craft_miner_ancient_eldritch": "Ritual: Summon Eldritch Ancient Miner", + "item.occultism.ritual_dummy.craft_miner_ancient_eldritch.tooltip": "Summon Eldritch Ancient Miner into a magic lamp.", "item.occultism.ritual_dummy.craft_miner_djinni_ores": "Ritual: Summon Djinni Ore Miner", "item.occultism.ritual_dummy.craft_miner_djinni_ores.tooltip": "Summon Djinni Ore Miner into a magic lamp.", "item.occultism.ritual_dummy.craft_miner_foliot_unspecialized": "Ritual: Summon Foliot Miner", "item.occultism.ritual_dummy.craft_miner_foliot_unspecialized.tooltip": "Summon Foliot Miner into a magic lamp.", "item.occultism.ritual_dummy.craft_miner_marid_master": "Ritual: Summon Marid Master Miner", "item.occultism.ritual_dummy.craft_miner_marid_master.tooltip": "Summon Marid Master Miner into a magic lamp.", + "item.occultism.ritual_dummy.craft_nature_paste": "Ritual: Craft Nature Paste", + "item.occultism.ritual_dummy.craft_nature_paste.tooltip": "A foliot will craft the nature paste mixing ingredients.", + "item.occultism.ritual_dummy.craft_reinforced_deepslate": "Ritual: Forge Reinforced Deepslate", + "item.occultism.ritual_dummy.craft_reinforced_deepslate.tooltip": "Ancient Spirits will forge a Reinforced Deepslate.", + "item.occultism.ritual_dummy.craft_research_fragment_dust": "Ritual: Craft Research Fragment Dust", + "item.occultism.ritual_dummy.craft_research_fragment_dust.tooltip": "A foliot will infuse experience in the emerald dust.", "item.occultism.ritual_dummy.craft_ritual_satchel_t1": "Ritual: Craft Apprentice Ritual Satchel", "item.occultism.ritual_dummy.craft_ritual_satchel_t1.tooltip": "Binds a Djinni into a satchel to build pentacles step-by-step for the summoner.", "item.occultism.ritual_dummy.craft_ritual_satchel_t2": "Ritual: Craft Artisanal Ritual Satchel", @@ -1272,9 +1491,17 @@ "item.occultism.ritual_dummy.craft_storage_remote": "Ritual: Craft Storage Accessor", "item.occultism.ritual_dummy.craft_storage_remote.tooltip": "The Storage Accessor can be linked to a Storage Actuator to remotely access items.", "item.occultism.ritual_dummy.craft_wild_trim": "Ritual: Forge Wild Armor Trim Smithing Template", - "item.occultism.ritual_dummy.craft_wild_trim.tooltip": "Marid will forge a Wild Armor Trim Smithing Template.", - "item.occultism.ritual_dummy.custom_ritual": "Custom Ritual Dummy", - "item.occultism.ritual_dummy.custom_ritual.tooltip": "Used for modpacks as a fallback for custom rituals that do not have their own ritual item.", + "item.occultism.ritual_dummy.craft_wild_trim.tooltip": "Wild Spirits will forge a Wild Armor Trim Smithing Template.", + "item.occultism.ritual_dummy.craft_witherite_dust": "Ritual: Craft Witherite Dust", + "item.occultism.ritual_dummy.craft_witherite_dust.tooltip": "A afrit will infuse wither essence in the netherite dust.", + "item.occultism.ritual_dummy.custom_ritual_craft": "Custom Ritual Dummy", + "item.occultism.ritual_dummy.custom_ritual_craft.tooltip": "Used for modpacks as a fallback for custom rituals that do not have their own ritual item.", + "item.occultism.ritual_dummy.custom_ritual_misc": "Custom Ritual Dummy", + "item.occultism.ritual_dummy.custom_ritual_misc.tooltip": "Used for modpacks as a fallback for custom rituals that do not have their own ritual item.", + "item.occultism.ritual_dummy.custom_ritual_possess": "Custom Ritual Dummy", + "item.occultism.ritual_dummy.custom_ritual_possess.tooltip": "Used for modpacks as a fallback for custom rituals that do not have their own ritual item.", + "item.occultism.ritual_dummy.custom_ritual_summon": "Custom Ritual Dummy", + "item.occultism.ritual_dummy.custom_ritual_summon.tooltip": "Used for modpacks as a fallback for custom rituals that do not have their own ritual item.", "item.occultism.ritual_dummy.familiar_bat": "Ritual: Summon Bat Familiar", "item.occultism.ritual_dummy.familiar_bat.tooltip": "Bat familiars provide night vision to their master.", "item.occultism.ritual_dummy.familiar_beaver": "Ritual: Summon Beaver Familiar", @@ -1307,8 +1534,8 @@ "item.occultism.ritual_dummy.familiar_otherworld_bird.tooltip": "Drikwings will provide their owner with limited flight abilities when nearby.", "item.occultism.ritual_dummy.familiar_parrot": "Ritual: Summon Parrot Familiar", "item.occultism.ritual_dummy.familiar_parrot.tooltip": "Parrot familiars behave exactly like tamed parrots.", - "item.occultism.ritual_dummy.possess_breeze": "Ritual: Summon Possessed Breeze", - "item.occultism.ritual_dummy.possess_breeze.tooltip": "The possessed Breeze will drop a Ominous Trial Key and trial chamber related items.", + "item.occultism.ritual_dummy.possess_bee": "Ritual: Summon Possessed Bee", + "item.occultism.ritual_dummy.possess_bee.tooltip": "The possessed Bee will drop cursed honey.", "item.occultism.ritual_dummy.possess_elder_guardian": "Ritual: Summon Possessed Elder Guardian", "item.occultism.ritual_dummy.possess_elder_guardian.tooltip": "The possessed elder guardian will drop at least one nautilus shell when killed, also can drop heart of the sea and the commom drops.", "item.occultism.ritual_dummy.possess_enderman": "Ritual: Summon Possessed Enderman", @@ -1317,22 +1544,40 @@ "item.occultism.ritual_dummy.possess_endermite.tooltip": "The possessed Endermite drops End Stone.", "item.occultism.ritual_dummy.possess_ghast": "Ritual: Summon Possessed Ghast", "item.occultism.ritual_dummy.possess_ghast.tooltip": "The possessed Ghast will always drop at least one ghast tear when killed.", + "item.occultism.ritual_dummy.possess_goat": "Ritual: Summon Goat of Mercy", + "item.occultism.ritual_dummy.possess_goat.tooltip": "The Goat of Mercy will drop the Cruelty Essence.", "item.occultism.ritual_dummy.possess_hoglin": "Ritual: Summon Possessed Hoglin", "item.occultism.ritual_dummy.possess_hoglin.tooltip": "The possessed Hoglin has a chance to drop smithing template of netherite upgrade when killed.", "item.occultism.ritual_dummy.possess_phantom": "Ritual: Summon Possessed Phantom", "item.occultism.ritual_dummy.possess_phantom.tooltip": "The possessed Phantom will always drop at least one phantom membrane when killed and is easy to trap.", + "item.occultism.ritual_dummy.possess_random_animal": "Ritual: Summon Random Animal", + "item.occultism.ritual_dummy.possess_random_animal.tooltip": "Summons a random passive animal.", "item.occultism.ritual_dummy.possess_shulker": "Ritual: Summon Possessed Shulker", "item.occultism.ritual_dummy.possess_shulker.tooltip": "The possessed Shulker will always drop at least one shulker shell when killed.", "item.occultism.ritual_dummy.possess_skeleton": "Ritual: Summon Possessed Skeleton", "item.occultism.ritual_dummy.possess_skeleton.tooltip": " The possessed Skeleton is immune to daylight and always drop at least one Skeleton Skull when killed.", - "item.occultism.ritual_dummy.possess_strong_breeze": "Ritual: Summon Possessed Strong Breeze", - "item.occultism.ritual_dummy.possess_strong_breeze.tooltip": "The possessed Strong Breeze will drop a Heavy Core and trial chamber related items.", + "item.occultism.ritual_dummy.possess_unbound_otherworld_bird": "Ritual: Possess Unbound Drikwing", + "item.occultism.ritual_dummy.possess_unbound_otherworld_bird.tooltip": "Possess a Drikwing Familiar that can be tamed by anyone, not just the summoner.", + "item.occultism.ritual_dummy.possess_unbound_parrot": "Ritual: Possess Unbound Parrot", + "item.occultism.ritual_dummy.possess_unbound_parrot.tooltip": "Possess a Parrot that can be tamed by anyone, not just the summoner.", "item.occultism.ritual_dummy.possess_warden": "Ritual: Summon Possessed Warden", "item.occultism.ritual_dummy.possess_warden.tooltip": "The possessed Warden will always drop at least six echo shard and can drop anothers ancient stuff (smithing templates and discs) when killed.", - "item.occultism.ritual_dummy.possess_weak_breeze": "Ritual: Summon Possessed Weak Breeze", - "item.occultism.ritual_dummy.possess_weak_breeze.tooltip": "The possessed Weak Breeze will drop a Trial Key and trial chamber related items.", "item.occultism.ritual_dummy.possess_weak_shulker": "Ritual: Summon Possessed Weak Shulker", "item.occultism.ritual_dummy.possess_weak_shulker.tooltip": "The possessed Weak Shulker will drop at least one chorus fruit when killed and can drop shulker shell.", + "item.occultism.ritual_dummy.possess_witch": "Ritual: Summon Possessed Witch", + "item.occultism.ritual_dummy.possess_witch.tooltip": "The possessed Witch will drop a special filled bottle.", + "item.occultism.ritual_dummy.possess_zombie_piglin": "Ritual: Summon Possessed Zombie Piglin", + "item.occultism.ritual_dummy.possess_zombie_piglin.tooltip": "The possessed Zombie Piglin will drop demonic meat.", + "item.occultism.ritual_dummy.repair_armors": "Ritual: Repair Armor", + "item.occultism.ritual_dummy.repair_armors.tooltip": "A afrit will repair your armor.", + "item.occultism.ritual_dummy.repair_chalks": "Ritual: Repair Chalk", + "item.occultism.ritual_dummy.repair_chalks.tooltip": "A djinni will repair your chalk.", + "item.occultism.ritual_dummy.repair_miners": "Ritual: Repair Miner", + "item.occultism.ritual_dummy.repair_miners.tooltip": "A afrit will extend your miner contract.", + "item.occultism.ritual_dummy.repair_tools": "Ritual: Repair Tool", + "item.occultism.ritual_dummy.repair_tools.tooltip": "A afrit will repair your tool.", + "item.occultism.ritual_dummy.resurrect_allay": "Ritual: Purify Vex to Allay", + "item.occultism.ritual_dummy.resurrect_allay.tooltip": "Purify a Vex to a Allay on a resurrection process.", "item.occultism.ritual_dummy.resurrect_familiar": "Ritual: Resurrect Familiar", "item.occultism.ritual_dummy.resurrect_familiar.tooltip": "Resurrects a Familiar from a Soul Shard.", "item.occultism.ritual_dummy.summon_afrit_crusher": "Ritual: Summon Afrit Crusher", @@ -1341,8 +1586,6 @@ "item.occultism.ritual_dummy.summon_afrit_rain_weather.tooltip": "Summons an bound Afrit that creates rain.", "item.occultism.ritual_dummy.summon_afrit_thunder_weather": "Ritual: Thunderstorm", "item.occultism.ritual_dummy.summon_afrit_thunder_weather.tooltip": "Summons an bound Afrit that creates a thunderstorm.", - "item.occultism.ritual_dummy.summon_allay": "Ritual: Purify Vex to Allay", - "item.occultism.ritual_dummy.summon_allay.tooltip": "Purify a Vex to a Allay on a resurrection process.", "item.occultism.ritual_dummy.summon_demonic_husband": "Ritual: Summon Demonic Husband", "item.occultism.ritual_dummy.summon_demonic_husband.tooltip": "Summons a Demonic Husband to support you: He will fight for you, help with cooking, and extend potion durations.", "item.occultism.ritual_dummy.summon_demonic_wife": "Ritual: Summon Demonic Wife", @@ -1369,28 +1612,30 @@ "item.occultism.ritual_dummy.summon_foliot_sapling_trader.tooltip": "he otherworld sapling trader trades natural otherworld saplings for stable ones, that can be harvested without the third eye.", "item.occultism.ritual_dummy.summon_foliot_transport_items": "Ritual: Summon Foliot Transporter", "item.occultism.ritual_dummy.summon_foliot_transport_items.tooltip": "The transporter will move all items it can access from one inventory to another, including machines.", - "item.occultism.ritual_dummy.summon_horde_illager": "Ritual: Summon Possessed Evoker", - "item.occultism.ritual_dummy.summon_horde_illager.tooltip": "Summon a possessed Evoker and his henchmen.", "item.occultism.ritual_dummy.summon_marid_crusher": "Ritual: Summon Marid Crusher", "item.occultism.ritual_dummy.summon_marid_crusher.tooltip": "The crusher is a spirit summoned to crush ores into dusts, effectively (more than) doubling the metal output. This crusher decays (much) slower than lower tier crushers.\n§7§oNote: Some recipes may require higher or lower tier crushers.", - "item.occultism.ritual_dummy.summon_random_animal": "Ritual: Summon Random Animal", - "item.occultism.ritual_dummy.summon_random_animal.tooltip": "Summons a random passive animal.", - "item.occultism.ritual_dummy.summon_wild_afrit": "Ritual: Summon Unbound Afrit", - "item.occultism.ritual_dummy.summon_wild_afrit.tooltip": "Summons an unbound Afrit that can be killed to obtain Afrit Essence", - "item.occultism.ritual_dummy.summon_wild_creeper": "Ritual: Summon The Wild Horde Creeper", - "item.occultism.ritual_dummy.summon_wild_creeper.tooltip": "The Wild Horde Creeper consists of a few charged Creepers that drop many disks.", - "item.occultism.ritual_dummy.summon_wild_drowned": "Ritual: Summon The Wild Horde Drowned", - "item.occultism.ritual_dummy.summon_wild_drowned.tooltip": "The Wild Horde Drowned consists of a few Drowneds that drop items related to ocean trails.", - "item.occultism.ritual_dummy.summon_wild_hunt": "Ritual: Summon The Wild Hunt", - "item.occultism.ritual_dummy.summon_wild_hunt.tooltip": "The Wild Hunt consists of Wither Skeletons that as a big chance to drop Wither Skeleton Skulls, and their minions.", - "item.occultism.ritual_dummy.summon_wild_husk": "Ritual: Summon The Wild Horde Husk", - "item.occultism.ritual_dummy.summon_wild_husk.tooltip": "The Wild Horde Husk consists of a few Husks that drop items related to desert trails.", - "item.occultism.ritual_dummy.summon_wild_otherworld_bird": "Ritual: Summon Wild Drikwing", - "item.occultism.ritual_dummy.summon_wild_otherworld_bird.tooltip": "Summons a Drikwing Familiar that can be tamed by anyone, not just the summoner.", - "item.occultism.ritual_dummy.summon_wild_parrot": "Ritual: Summon Wild Parrot", - "item.occultism.ritual_dummy.summon_wild_parrot.tooltip": "Summons a Parrot that can be tamed by anyone, not just the summoner.", - "item.occultism.ritual_dummy.summon_wild_silverfish": "Ritual: Summon The Wild Horde Silverfish", - "item.occultism.ritual_dummy.summon_wild_silverfish.tooltip": "The Wild Horde Silverfish consists of a few Silverfishs that drop items related to ruins trails.", + "item.occultism.ritual_dummy.summon_unbound_afrit": "Ritual: Summon Unbound Afrit", + "item.occultism.ritual_dummy.summon_unbound_afrit.tooltip": "Summons an unbound Afrit that can be killed to obtain Afrit Essence", + "item.occultism.ritual_dummy.summon_unbound_marid": "Ritual: Summon Unbound Marid", + "item.occultism.ritual_dummy.summon_unbound_marid.tooltip": "Summons an unbound Marid that can be killed to obtain Marid Essence", + "item.occultism.ritual_dummy.wild_breeze": "Ritual: Summon Possessed Breeze", + "item.occultism.ritual_dummy.wild_breeze.tooltip": "The possessed Breeze will drop a Ominous Trial Key and trial chamber related items.", + "item.occultism.ritual_dummy.wild_creeper": "Ritual: Summon The Wild Horde Creeper", + "item.occultism.ritual_dummy.wild_creeper.tooltip": "The Wild Horde Creeper consists of a few charged Creepers that drop many disks.", + "item.occultism.ritual_dummy.wild_drowned": "Ritual: Summon The Wild Horde Drowned", + "item.occultism.ritual_dummy.wild_drowned.tooltip": "The Wild Horde Drowned consists of a few Drowneds that drop items related to ocean trails.", + "item.occultism.ritual_dummy.wild_horde_illager": "Ritual: Summon Possessed Evoker", + "item.occultism.ritual_dummy.wild_horde_illager.tooltip": "Summon a possessed Evoker and his henchmen.", + "item.occultism.ritual_dummy.wild_hunt": "Ritual: Summon The Wild Hunt", + "item.occultism.ritual_dummy.wild_hunt.tooltip": "The Wild Hunt consists of Wither Skeletons that as a big chance to drop Wither Skeleton Skulls, and their minions.", + "item.occultism.ritual_dummy.wild_husk": "Ritual: Summon The Wild Horde Husk", + "item.occultism.ritual_dummy.wild_husk.tooltip": "The Wild Horde Husk consists of a few Husks that drop items related to desert trails.", + "item.occultism.ritual_dummy.wild_silverfish": "Ritual: Summon The Wild Horde Silverfish", + "item.occultism.ritual_dummy.wild_silverfish.tooltip": "The Wild Horde Silverfish consists of a few Silverfishs that drop items related to ruins trails.", + "item.occultism.ritual_dummy.wild_strong_breeze": "Ritual: Summon Possessed Strong Breeze", + "item.occultism.ritual_dummy.wild_strong_breeze.tooltip": "The possessed Strong Breeze will drop a Heavy Core and trial chamber related items.", + "item.occultism.ritual_dummy.wild_weak_breeze": "Ritual: Summon Possessed Weak Breeze", + "item.occultism.ritual_dummy.wild_weak_breeze.tooltip": "The possessed Weak Breeze will drop a Trial Key and trial chamber related items.", "item.occultism.ritual_satchel.no_preview_block_targeted": "You need to aim the ritual satchel at a preview block.", "item.occultism.ritual_satchel.no_preview_in_world": " You need to preview a pentacle using the Dictionary of Spirits.", "item.occultism.ritual_satchel.no_valid_item_in_satchel": "There is no valid item in the satchel for this previewed block.", @@ -1414,7 +1659,7 @@ "item.occultism.soul_shard.tooltip_empty": "Dropped by a Familiar after their untimely death. Can be used to resurrect it.", "item.occultism.soul_shard.tooltip_filled": "Contains the soul of a %s.\nCan be used to resurrect it.", "item.occultism.spawn_egg.afrit": "Afrit Spawn Egg", - "item.occultism.spawn_egg.afrit_wild": "Unbound Afrit Spawn Egg", + "item.occultism.spawn_egg.afrit_unbound": "Unbound Afrit Spawn Egg", "item.occultism.spawn_egg.demonic_husband": "Demonic Husband Spawn Egg", "item.occultism.spawn_egg.demonic_wife": "Demonic Wife Spawn Egg", "item.occultism.spawn_egg.djinni": "Djinni Spawn Egg", @@ -1437,27 +1682,32 @@ "item.occultism.spawn_egg.familiar_shub_niggurath": "Shub Niggurath Familiar Spawn Egg", "item.occultism.spawn_egg.foliot": "Foliot Spawn Egg", "item.occultism.spawn_egg.marid": "Marid Spawn Egg", + "item.occultism.spawn_egg.marid_unbound": "Unbound Marid Spawn Egg", "item.occultism.spawn_egg.otherworld_bird": "Drikwing Spawn Egg", - "item.occultism.spawn_egg.possessed_breeze": "Possessed Breeze Spawn Egg", + "item.occultism.spawn_egg.possessed_bee": "Possessed Bee Spawn Egg", "item.occultism.spawn_egg.possessed_elder_guardian": "Possessed Elder Guardian Spawn Egg", "item.occultism.spawn_egg.possessed_enderman": "Possessed Enderman Spawn Egg", "item.occultism.spawn_egg.possessed_endermite": "Possessed Endermite Spawn Egg", - "item.occultism.spawn_egg.possessed_evoker": "Possessed Evoker Spawn Egg", "item.occultism.spawn_egg.possessed_ghast": "Possessed Ghast Spawn Egg", + "item.occultism.spawn_egg.possessed_goat": "Goat of Mercy Spawn Egg", "item.occultism.spawn_egg.possessed_hoglin": "Possessed Hoglin Spawn Egg", "item.occultism.spawn_egg.possessed_phantom": "Possessed Phantom Spawn Egg", "item.occultism.spawn_egg.possessed_shulker": "Possessed Shulker Spawn Egg", "item.occultism.spawn_egg.possessed_skeleton": "Possessed Skeleton Spawn Egg", - "item.occultism.spawn_egg.possessed_strong_breeze": "Possessed Strong Breeze Spawn Egg", "item.occultism.spawn_egg.possessed_warden": "Possessed Warden Spawn Egg", - "item.occultism.spawn_egg.possessed_weak_breeze": "Possessed Weak Breeze Spawn Egg", "item.occultism.spawn_egg.possessed_weak_shulker": "Possessed Weak Shulker Spawn Egg", + "item.occultism.spawn_egg.possessed_witch": "Possessed Witch Spawn Egg", + "item.occultism.spawn_egg.possessed_zombie_piglin": "Possessed Zombified Piglin Spawn Egg", + "item.occultism.spawn_egg.wild_breeze": "Wild Breeze Spawn Egg", + "item.occultism.spawn_egg.wild_evoker": "Wild Evoker Spawn Egg", "item.occultism.spawn_egg.wild_horde_creeper": "Wild Horde Creeper Spawn Egg", "item.occultism.spawn_egg.wild_horde_drowned": "Wild Horde Drowned Spawn Egg", "item.occultism.spawn_egg.wild_horde_husk": "Wild Horde Husk Spawn Egg", "item.occultism.spawn_egg.wild_horde_silverfish": "Wild Horde Silverfish Spawn Egg", "item.occultism.spawn_egg.wild_hunt_skeleton": "Wild Hunt Skeleton Spawn Egg", "item.occultism.spawn_egg.wild_hunt_wither_skeleton": "Wild Hunt Wither Skeleton Spawn Egg", + "item.occultism.spawn_egg.wild_strong_breeze": "Wild Strong Breeze Spawn Egg", + "item.occultism.spawn_egg.wild_weak_breeze": "Wild Weak Breeze Spawn Egg", "item.occultism.spirit_attuned_gem": "Spirit Attuned Gem", "item.occultism.spirit_attuned_pickaxe_head": "Spirit Attuned Pickaxe Head", "item.occultism.storage_remote": "Storage Accessor", @@ -1468,6 +1718,7 @@ "item.occultism.storage_remote_inert": "Inert Storage Accessor", "item.occultism.taboo_book": "Taboo Book", "item.occultism.tallow": "Tallow", + "item.occultism.witherite_dust": "Witherite Dust", "item.occultism.wormhole_frame": "Wormhole Frame", "itemGroup.occultism": "Occultism", "jei.occultism.crushing.max_tier": "Max Crusher Tier: %d", @@ -1562,6 +1813,8 @@ "message.occultism.familiar.shub_niggurath_familiar.disabled": "Ring Effect - Shub Niggurath: Disabled", "message.occultism.familiar.shub_niggurath_familiar.enabled": "Ring Effect - Shub Niggurath: Enabled", "messages.occultism.container_already_open": "This container is already opened by another player, wait until they close it.", + "multiblock.occultism.contact_eldritch_spirit": "Ronaza's Contact", + "multiblock.occultism.contact_wild_spirit": "Osorin's Wild Calling", "multiblock.occultism.craft_afrit": "Sevira's Permanent Confinement", "multiblock.occultism.craft_djinni": "Strigeor's Higher Binding", "multiblock.occultism.craft_foliot": "Eziveus' Spectral Compulsion", @@ -1570,12 +1823,15 @@ "multiblock.occultism.possess_afrit": "Abras' Commanding Conjure", "multiblock.occultism.possess_djinni": "Ihagan's Enthrallment", "multiblock.occultism.possess_foliot": "Hedyrin's Lure", + "multiblock.occultism.possess_marid": "Xeovrenth Adjure", + "multiblock.occultism.possess_unbound_afrit": "Abras' Open Commanding Conjure", + "multiblock.occultism.resurrect_spirit": "Susje's Simple Circle", "multiblock.occultism.summon_afrit": "Abras' Conjure", "multiblock.occultism.summon_djinni": "Ophyx' Calling", "multiblock.occultism.summon_foliot": "Aviar's Circle", "multiblock.occultism.summon_marid": "Fatma's Incentivized Attraction", - "multiblock.occultism.summon_wild_afrit": "Abras' Open Conjure", - "multiblock.occultism.summon_wild_greater_spirit": "Osorin's Unbound Calling", + "multiblock.occultism.summon_unbound_afrit": "Abras' Open Conjure", + "multiblock.occultism.summon_unbound_marid": "Abras' Fortified Conjure", "network.messages.occultism.request_order.order_received": "Order received!", "occultism.configuration.anyOreDivinationRod": "Divination c:ores", "occultism.configuration.blackChalkGlyphColor": "Black Chalk Glyph Color", @@ -1602,7 +1858,6 @@ "occultism.configuration.enableRainWeatherRitual": "Enable the ritual to cause rain weather conditions.", "occultism.configuration.enableRemainingIngredientCountMatching": "Enable matching of remaining ingredients in ritual recipes.", "occultism.configuration.enableThunderWeatherRitual": "Enable the ritual to cause thunderstorm weather conditions.", - "occultism.configuration.goldenChalkGlyphColor": "Yellow Chalk Glyph Color", "occultism.configuration.grayChalkGlyphColor": "Gray Chalk Glyph Color", "occultism.configuration.greenChalkGlyphColor": "Green Chalk Glyph Color", "occultism.configuration.items": "Items", @@ -1611,7 +1866,9 @@ "occultism.configuration.limeChalkGlyphColor": "Lime Chalk Glyph Color", "occultism.configuration.magentaChalkGlyphColor": "Magenta Chalk Glyph Color", "occultism.configuration.maxMiningTime": "Max Mining Time", + "occultism.configuration.minerOutputBeforeBreak": "Save miners before breaking", "occultism.configuration.miner_afrit_deeps": "Afrit Deep Ore Miner", + "occultism.configuration.miner_ancient_eldritch": "Eldritch Ancient Miner", "occultism.configuration.miner_djinni_ores": "Djinni Ore Miner", "occultism.configuration.miner_foliot_unspecialized": "Foliot Miner Unspectialized", "occultism.configuration.miner_marid_master": "Marid Master Miner", @@ -1648,6 +1905,7 @@ "occultism.configuration.useAlternativeDivinationRodRenderer": "Use Alternative Divination Rod Renderer", "occultism.configuration.visual": "Visual Settings", "occultism.configuration.whiteChalkGlyphColor": "White Chalk Glyph Color", + "occultism.configuration.yellowChalkGlyphColor": "Yellow Chalk Glyph Color", "occultism.jei.crushing": "Crusher Spirit", "occultism.jei.miner": "Dimensional Mineshaft", "occultism.jei.miner.chance": "Weight: %d", @@ -1666,6 +1924,10 @@ "occultism.subtitle.start_ritual": "Start Ritual", "occultism.subtitle.tuning_fork": "Tuning Fork", "ritual.occultism.book_not_bound": "§lUnbound Book of Calling§r. You must craft this book with Dictionary of Spirits to bind to a spirit before starting a ritual.", + "ritual.occultism.craft_budding_amethyst.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.craft_budding_amethyst.finished": "Successfully forged budding amethyst.", + "ritual.occultism.craft_budding_amethyst.interrupted": "Forging budding amethyst interrupted.", + "ritual.occultism.craft_budding_amethyst.started": "Started forging budding amethyst.", "ritual.occultism.craft_dimensional_matrix.conditions": "Not all requirements for this ritual are met.", "ritual.occultism.craft_dimensional_matrix.finished": "Successfully bound djinni into dimensional matrix.", "ritual.occultism.craft_dimensional_matrix.interrupted": "Binding of djinni interrupted.", @@ -1678,6 +1940,10 @@ "ritual.occultism.craft_familiar_ring.finished": "Successfully bound djinni into familiar ring.", "ritual.occultism.craft_familiar_ring.interrupted": "Binding of djinni interrupted.", "ritual.occultism.craft_familiar_ring.started": "Started binding djinni into familiar ring.", + "ritual.occultism.craft_gray_paste.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.craft_gray_paste.finished": "Successfully infused Gray Paste.", + "ritual.occultism.craft_gray_paste.interrupted": "Craft of Gray Paste interrupted.", + "ritual.occultism.craft_gray_paste.started": "Started infusing Gray Paste.", "ritual.occultism.craft_infused_lenses.conditions": "Not all requirements for this ritual are met.", "ritual.occultism.craft_infused_lenses.finished": "Successfully bound foliot into lenses.", "ritual.occultism.craft_infused_lenses.interrupted": "Binding of foliot interrupted.", @@ -1690,6 +1956,10 @@ "ritual.occultism.craft_miner_afrit_deeps.finished": "Successfully summoned afrit into magic lamp.", "ritual.occultism.craft_miner_afrit_deeps.interrupted": "Summoning of afrit interrupted.", "ritual.occultism.craft_miner_afrit_deeps.started": "Started summoning afrit into magic lamp.", + "ritual.occultism.craft_miner_ancient_eldritch.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.craft_miner_ancient_eldritch.finished": "Successfully summoned something into magic lamp.", + "ritual.occultism.craft_miner_ancient_eldritch.interrupted": "Summoning of something interrupted.", + "ritual.occultism.craft_miner_ancient_eldritch.started": "Started summoning something into magic lamp.", "ritual.occultism.craft_miner_djinni_ores.conditions": "Not all requirements for this ritual are met.", "ritual.occultism.craft_miner_djinni_ores.finished": "Successfully summoned djinni into magic lamp.", "ritual.occultism.craft_miner_djinni_ores.interrupted": "Summoning of djinni interrupted.", @@ -1702,6 +1972,18 @@ "ritual.occultism.craft_miner_marid_master.finished": "Successfully summoned marid into magic lamp.", "ritual.occultism.craft_miner_marid_master.interrupted": "Summoning of marid interrupted.", "ritual.occultism.craft_miner_marid_master.started": "Started summoning marid into magic lamp.", + "ritual.occultism.craft_nature_paste.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.craft_nature_paste.finished": "Successfully infused Nature Paste.", + "ritual.occultism.craft_nature_paste.interrupted": "Craft of Nature Paste interrupted.", + "ritual.occultism.craft_nature_paste.started": "Started infusing Nature Paste.", + "ritual.occultism.craft_reinforced_deepslate.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.craft_reinforced_deepslate.finished": "Successfully forged reinforced deepslate.", + "ritual.occultism.craft_reinforced_deepslate.interrupted": "Forging reinforced deepslate interrupted.", + "ritual.occultism.craft_reinforced_deepslate.started": "Started forging reinforced deepslate.", + "ritual.occultism.craft_research_fragment_dust.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.craft_research_fragment_dust.finished": "Successfully infused Research Fragment Dust.", + "ritual.occultism.craft_research_fragment_dust.interrupted": "Craft of Research Fragment Dust interrupted.", + "ritual.occultism.craft_research_fragment_dust.started": "Started infusing Research Fragment Dust.", "ritual.occultism.craft_ritual_satchel_t1.conditions": "Not all requirements for this ritual are met.", "ritual.occultism.craft_ritual_satchel_t1.finished": "Successfully bound a djinni into a satchel.", "ritual.occultism.craft_ritual_satchel_t1.interrupted": "Binding of djinni interrupted.", @@ -1749,7 +2031,11 @@ "ritual.occultism.craft_wild_trim.conditions": "Not all requirements for this ritual are met.", "ritual.occultism.craft_wild_trim.finished": "Successfully forged the Wild Armor Trim Smithing Template.", "ritual.occultism.craft_wild_trim.interrupted": "Binding of djinni interrupted.", - "ritual.occultism.craft_wild_trim.started": "Marid has started to forge the Wild Armor Trim Smithing Template.", + "ritual.occultism.craft_wild_trim.started": "Wild Spirits has started to forge the Wild Armor Trim Smithing Template.", + "ritual.occultism.craft_witherite_dust.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.craft_witherite_dust.finished": "Successfully infused Witherite.", + "ritual.occultism.craft_witherite_dust.interrupted": "Craft of Witherite interrupted.", + "ritual.occultism.craft_witherite_dust.started": "Started infusing Witherite.", "ritual.occultism.debug.conditions": "Not all requirements for this ritual are met.", "ritual.occultism.debug.finished": "Ritual completed successfully.", "ritual.occultism.debug.interrupted": "Ritual interrupted.", @@ -1823,10 +2109,10 @@ "ritual.occultism.pentacle_help": "§lInvalid pentacle!§r\nWere you trying to create pentacle: %s? Missing:\n%s", "ritual.occultism.pentacle_help.no_pentacle": "§lNo pentacle found!§r\nIt seems you did not draw a pentacle, or your pentacle is missing large parts. See the \"Rituals\" section of the Dictionary of Spirits, the required Pentacle will be a clickable blue link above the ritual recipe on the ritual's page.", "ritual.occultism.pentacle_help_at_glue": " at position ", - "ritual.occultism.possess_breeze.conditions": "Not all requirements for this ritual are met.", - "ritual.occultism.possess_breeze.finished": "Summoned possessed breeze successfully.", - "ritual.occultism.possess_breeze.interrupted": "Summoning of possessed breeze interrupted.", - "ritual.occultism.possess_breeze.started": "Started summoning possessed breeze.", + "ritual.occultism.possess_bee.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.possess_bee.finished": "Summoned possessed bee successfully.", + "ritual.occultism.possess_bee.interrupted": "Summoning of possessed bee interrupted.", + "ritual.occultism.possess_bee.started": "Started summoning possessed bee.", "ritual.occultism.possess_elder_guardian.conditions": "Not all requirements for this ritual are met.", "ritual.occultism.possess_elder_guardian.finished": "Summoned possessed elder_guardian successfully.", "ritual.occultism.possess_elder_guardian.interrupted": "Summoning of possessed elder_guardian interrupted.", @@ -1843,6 +2129,10 @@ "ritual.occultism.possess_ghast.finished": "Summoned possessed ghast successfully.", "ritual.occultism.possess_ghast.interrupted": "Summoning of possessed ghast interrupted.", "ritual.occultism.possess_ghast.started": "Started summoning possessed ghast.", + "ritual.occultism.possess_goat.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.possess_goat.finished": "Summoned goat of mercy successfully.", + "ritual.occultism.possess_goat.interrupted": "Summoning of goat of mercy interrupted.", + "ritual.occultism.possess_goat.started": "Started summoning goat of mercy.", "ritual.occultism.possess_hoglin.conditions": "Not all requirements for this ritual are met.", "ritual.occultism.possess_hoglin.finished": "Summoned possessed hoglin successfully.", "ritual.occultism.possess_hoglin.interrupted": "Summoning of possessed hoglin interrupted.", @@ -1851,6 +2141,10 @@ "ritual.occultism.possess_phantom.finished": "Summoned possessed phantom successfully.", "ritual.occultism.possess_phantom.interrupted": "Summoning of possessed phantom interrupted.", "ritual.occultism.possess_phantom.started": "Started summoning possessed phantom.", + "ritual.occultism.possess_random_animal.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.possess_random_animal.finished": "Summoned successfully.", + "ritual.occultism.possess_random_animal.interrupted": "Summoning of random animal interrupted.", + "ritual.occultism.possess_random_animal.started": "Started summoning a random animal.", "ritual.occultism.possess_shulker.conditions": "Not all requirements for this ritual are met.", "ritual.occultism.possess_shulker.finished": "Summoned possessed shulker successfully.", "ritual.occultism.possess_shulker.interrupted": "Summoning of possessed shulker interrupted.", @@ -1859,30 +2153,60 @@ "ritual.occultism.possess_skeleton.finished": "Summoned possessed skeleton successfully.", "ritual.occultism.possess_skeleton.interrupted": "Summoning of possessed skeleton interrupted.", "ritual.occultism.possess_skeleton.started": "Started summoning possessed skeleton.", - "ritual.occultism.possess_strong_breeze.conditions": "Not all requirements for this ritual are met.", - "ritual.occultism.possess_strong_breeze.finished": "Summoned possessed strong breeze successfully.", - "ritual.occultism.possess_strong_breeze.interrupted": "Summoning of possessed strong breeze interrupted.", - "ritual.occultism.possess_strong_breeze.started": "Started summoning possessed strong breeze.", + "ritual.occultism.possess_unbound_otherworld_bird.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.possess_unbound_otherworld_bird.finished": "Summoned unbound drikwing successfully.", + "ritual.occultism.possess_unbound_otherworld_bird.interrupted": "Summoning of unbound drikwing interrupted.", + "ritual.occultism.possess_unbound_otherworld_bird.started": "Started summoning unbound drikwing.", + "ritual.occultism.possess_unbound_parrot.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.possess_unbound_parrot.finished": "Summoned unbound parrot successfully.", + "ritual.occultism.possess_unbound_parrot.interrupted": "Summoning of unbound parrot interrupted.", + "ritual.occultism.possess_unbound_parrot.started": "Started summoning unbound parrot.", "ritual.occultism.possess_warden.conditions": "Not all requirements for this ritual are met.", "ritual.occultism.possess_warden.finished": "Summoned possessed warden successfully.", "ritual.occultism.possess_warden.interrupted": "Summoning of possessed warden interrupted.", "ritual.occultism.possess_warden.started": "Started summoning possessed warden.", - "ritual.occultism.possess_weak_breeze.conditions": "Not all requirements for this ritual are met.", - "ritual.occultism.possess_weak_breeze.finished": "Summoned possessed weak breeze successfully.", - "ritual.occultism.possess_weak_breeze.interrupted": "Summoning of possessed weak breeze interrupted.", - "ritual.occultism.possess_weak_breeze.started": "Started summoning possessed weak breeze.", "ritual.occultism.possess_weak_shulker.conditions": "Not all requirements for this ritual are met.", "ritual.occultism.possess_weak_shulker.finished": "Summoned possessed weak shulker successfully.", "ritual.occultism.possess_weak_shulker.interrupted": "Summoning of possessed weak shulker interrupted.", "ritual.occultism.possess_weak_shulker.started": "Started summoning possessed weak shulker.", + "ritual.occultism.possess_witch.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.possess_witch.finished": "Summoned possessed witch successfully.", + "ritual.occultism.possess_witch.interrupted": "Summoning of possessed witch interrupted.", + "ritual.occultism.possess_witch.started": "Started summoning possessed witch.", + "ritual.occultism.possess_zombie_piglin.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.possess_zombie_piglin.finished": "Summoned possessed zombie piglin successfully.", + "ritual.occultism.possess_zombie_piglin.interrupted": "Summoning of possessed zombie piglin interrupted.", + "ritual.occultism.possess_zombie_piglin.started": "Started summoning possessed zombie piglin.", + "ritual.occultism.repair_armors.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.repair_armors.finished": "Successfully repaired armor.", + "ritual.occultism.repair_armors.interrupted": "Armor repair interrupted.", + "ritual.occultism.repair_armors.started": "Started repairing armor.", + "ritual.occultism.repair_chalks.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.repair_chalks.finished": "Successfully repaired chalk.", + "ritual.occultism.repair_chalks.interrupted": "Chalk repair interrupted.", + "ritual.occultism.repair_chalks.started": "Started repairing chalk.", + "ritual.occultism.repair_miners.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.repair_miners.finished": "Successfully repaired miner.", + "ritual.occultism.repair_miners.interrupted": "Miner repair interrupted.", + "ritual.occultism.repair_miners.started": "Started repairing miner.", + "ritual.occultism.repair_tools.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.repair_tools.finished": "Successfully repaired tool.", + "ritual.occultism.repair_tools.interrupted": "Tool repair interrupted.", + "ritual.occultism.repair_tools.started": "Started repairing tool.", + "ritual.occultism.resurrect_allay.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.resurrect_allay.finished": "Purified Vex to Allay successfully.", + "ritual.occultism.resurrect_allay.interrupted": "Purifying Vex to allay interrupted.", + "ritual.occultism.resurrect_allay.started": "Started purifying Vex to Allay.", "ritual.occultism.resurrect_familiar.conditions": "Not all requirements for this ritual are met.", "ritual.occultism.resurrect_familiar.finished": "Successfully resurrected familiar.", "ritual.occultism.resurrect_familiar.interrupted": "Resurrection interrupted.", "ritual.occultism.resurrect_familiar.started": "Started resurrecting familiar.", "ritual.occultism.ritual_help": "§lInvalid ritual!§r\nWere you trying to perform ritual: \"%s\"? Missing items:\n%s", + "ritual.occultism.sacrifice.allay": "Allay", "ritual.occultism.sacrifice.axolotls": "Axolotl", "ritual.occultism.sacrifice.bats": "Bat", "ritual.occultism.sacrifice.camel": "Camel", + "ritual.occultism.sacrifice.cats": "Cat", "ritual.occultism.sacrifice.chicken": "Chicken", "ritual.occultism.sacrifice.cows": "Cow", "ritual.occultism.sacrifice.cubemob": "Slime or Magma Cube", @@ -1900,7 +2224,9 @@ "ritual.occultism.sacrifice.snow_golem": "Snow Golem", "ritual.occultism.sacrifice.spiders": "Spider", "ritual.occultism.sacrifice.squid": "Squid", + "ritual.occultism.sacrifice.tadpoles": "Tadpole", "ritual.occultism.sacrifice.vex": "Vex", + "ritual.occultism.sacrifice.warden": "Warden", "ritual.occultism.sacrifice.wolfs": "Wolf", "ritual.occultism.sacrifice.zombies": "Zombie", "ritual.occultism.summon_afrit_crusher.conditions": "Not all requirements for this ritual are met.", @@ -1915,10 +2241,6 @@ "ritual.occultism.summon_afrit_thunder_weather.finished": "Summoned afrit successfully.", "ritual.occultism.summon_afrit_thunder_weather.interrupted": "Summoning of afrit interrupted.", "ritual.occultism.summon_afrit_thunder_weather.started": "Started summoning afrit for a thunderstorm.", - "ritual.occultism.summon_allay.conditions": "Not all requirements for this ritual are met.", - "ritual.occultism.summon_allay.finished": "Purified Vex to Allay successfully.", - "ritual.occultism.summon_allay.interrupted": "Purifying Vex to allay interrupted.", - "ritual.occultism.summon_allay.started": "Started purifying Vex to Allay.", "ritual.occultism.summon_demonic_husband.conditions": "Not all requirements for this ritual are met.", "ritual.occultism.summon_demonic_husband.finished": "Summoned successfully.", "ritual.occultism.summon_demonic_husband.interrupted": "Summoning interrupted.", @@ -1979,46 +2301,50 @@ "ritual.occultism.summon_marid_crusher.finished": "Summoned marid ore crusher successfully.", "ritual.occultism.summon_marid_crusher.interrupted": "Summoning of marid ore crusher interrupted.", "ritual.occultism.summon_marid_crusher.started": "Started summoning marid ore crusher.", - "ritual.occultism.summon_random_animal.conditions": "Not all requirements for this ritual are met.", - "ritual.occultism.summon_random_animal.finished": "Summoned successfully.", - "ritual.occultism.summon_random_animal.interrupted": "Summoning of random animal interrupted.", - "ritual.occultism.summon_random_animal.started": "Started summoning a random animal.", - "ritual.occultism.summon_wild_afrit.conditions": "Not all requirements for this ritual are met.", - "ritual.occultism.summon_wild_afrit.finished": "Summoned unbound afrit successfully.", - "ritual.occultism.summon_wild_afrit.interrupted": "Summoning of unbound afrit interrupted.", - "ritual.occultism.summon_wild_afrit.started": "Started summoning unbound afrit.", - "ritual.occultism.summon_wild_creeper.conditions": "Not all requirements for this ritual are met.", - "ritual.occultism.summon_wild_creeper.finished": "Summoned the wild horde creeper successfully.", - "ritual.occultism.summon_wild_creeper.interrupted": "Summoning of the wild horde creeper interrupted.", - "ritual.occultism.summon_wild_creeper.started": "Started summoning the wild horde creeper.", - "ritual.occultism.summon_wild_drowned.conditions": "Not all requirements for this ritual are met.", - "ritual.occultism.summon_wild_drowned.finished": "Summoned the wild horde drowned successfully.", - "ritual.occultism.summon_wild_drowned.interrupted": "Summoning of the wild horde drowned interrupted.", - "ritual.occultism.summon_wild_drowned.started": "Started summoning the wild horde drowned.", - "ritual.occultism.summon_wild_hunt.conditions": "Not all requirements for this ritual are met.", - "ritual.occultism.summon_wild_hunt.finished": "Summoned the wild hunt successfully.", - "ritual.occultism.summon_wild_hunt.interrupted": "Summoning of the wild hunt interrupted.", - "ritual.occultism.summon_wild_hunt.started": "Started summoning the wild hunt.", - "ritual.occultism.summon_wild_husk.conditions": "Not all requirements for this ritual are met.", - "ritual.occultism.summon_wild_husk.finished": "Summoned the wild horde husk successfully.", - "ritual.occultism.summon_wild_husk.interrupted": "Summoning of the wild horde husk interrupted.", - "ritual.occultism.summon_wild_husk.started": "Started summoning the wild horde husk.", - "ritual.occultism.summon_wild_otherworld_bird.conditions": "Not all requirements for this ritual are met.", - "ritual.occultism.summon_wild_otherworld_bird.finished": "Summoned wild drikwing successfully.", - "ritual.occultism.summon_wild_otherworld_bird.interrupted": "Summoning of wild drikwing interrupted.", - "ritual.occultism.summon_wild_otherworld_bird.started": "Started summoning wild drikwing.", - "ritual.occultism.summon_wild_parrot.conditions": "Not all requirements for this ritual are met.", - "ritual.occultism.summon_wild_parrot.finished": "Summoned wild parrot successfully.", - "ritual.occultism.summon_wild_parrot.interrupted": "Summoning of wild parrot interrupted.", - "ritual.occultism.summon_wild_parrot.started": "Started summoning wild parrot.", - "ritual.occultism.summon_wild_silverfish.conditions": "Not all requirements for this ritual are met.", - "ritual.occultism.summon_wild_silverfish.finished": "Summoned the wild horde silverfish successfully.", - "ritual.occultism.summon_wild_silverfish.interrupted": "Summoning of the wild horde silverfish interrupted.", - "ritual.occultism.summon_wild_silverfish.started": "Started summoning the wild horde silverfish.", + "ritual.occultism.summon_unbound_afrit.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.summon_unbound_afrit.finished": "Summoned unbound afrit successfully.", + "ritual.occultism.summon_unbound_afrit.interrupted": "Summoning of unbound afrit interrupted.", + "ritual.occultism.summon_unbound_afrit.started": "Started summoning unbound afrit.", + "ritual.occultism.summon_unbound_marid.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.summon_unbound_marid.finished": "Summoned unbound marid successfully.", + "ritual.occultism.summon_unbound_marid.interrupted": "Summoning of unbound marid interrupted.", + "ritual.occultism.summon_unbound_marid.started": "Started summoning unbound marid.", "ritual.occultism.unknown.conditions": "Not all requirements for this ritual are met.", "ritual.occultism.unknown.finished": "Ritual completed successfully.", "ritual.occultism.unknown.interrupted": "Ritual interrupted.", "ritual.occultism.unknown.started": "Ritual started.", + "ritual.occultism.wild_breeze.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.wild_breeze.finished": "Summoned wild breeze successfully.", + "ritual.occultism.wild_breeze.interrupted": "Summoning of wild breeze interrupted.", + "ritual.occultism.wild_breeze.started": "Started summoning wild breeze.", + "ritual.occultism.wild_creeper.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.wild_creeper.finished": "Summoned the wild horde creeper successfully.", + "ritual.occultism.wild_creeper.interrupted": "Summoning of the wild horde creeper interrupted.", + "ritual.occultism.wild_creeper.started": "Started summoning the wild horde creeper.", + "ritual.occultism.wild_drowned.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.wild_drowned.finished": "Summoned the wild horde drowned successfully.", + "ritual.occultism.wild_drowned.interrupted": "Summoning of the wild horde drowned interrupted.", + "ritual.occultism.wild_drowned.started": "Started summoning the wild horde drowned.", + "ritual.occultism.wild_hunt.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.wild_hunt.finished": "Summoned the wild hunt successfully.", + "ritual.occultism.wild_hunt.interrupted": "Summoning of the wild hunt interrupted.", + "ritual.occultism.wild_hunt.started": "Started summoning the wild hunt.", + "ritual.occultism.wild_husk.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.wild_husk.finished": "Summoned the wild horde husk successfully.", + "ritual.occultism.wild_husk.interrupted": "Summoning of the wild horde husk interrupted.", + "ritual.occultism.wild_husk.started": "Started summoning the wild horde husk.", + "ritual.occultism.wild_silverfish.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.wild_silverfish.finished": "Summoned the wild horde silverfish successfully.", + "ritual.occultism.wild_silverfish.interrupted": "Summoning of the wild horde silverfish interrupted.", + "ritual.occultism.wild_silverfish.started": "Started summoning the wild horde silverfish.", + "ritual.occultism.wild_strong_breeze.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.wild_strong_breeze.finished": "Summoned wild strong breeze successfully.", + "ritual.occultism.wild_strong_breeze.interrupted": "Summoning of wild strong breeze interrupted.", + "ritual.occultism.wild_strong_breeze.started": "Started summoning wild strong breeze.", + "ritual.occultism.wild_weak_breeze.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.wild_weak_breeze.finished": "Summoned wild weak breeze successfully.", + "ritual.occultism.wild_weak_breeze.interrupted": "Summoning of wild weak breeze interrupted.", + "ritual.occultism.wild_weak_breeze.started": "Started summoning wild weak breeze.", "tag.block.c.ores.iesnium": "Iesnium Ore", "tag.block.c.ores.silver": "Silver Ore", "tag.block.c.storage_blocks.iesnium": "Iesnium Storage Blocks", @@ -2029,19 +2355,36 @@ "tag.block.occultism.cave_wall_blocks": "Cave Wall Blocks", "tag.block.occultism.netherrack": "Netherrack", "tag.block.occultism.saplings.otherworld": "Otherworld Saplings", + "tag.block.occultism.saplings.otherworld_natural": "Otherworld Saplings_NATURAL", "tag.block.occultism.storage_stabilizer": "Storage Stabilizer Blocks", "tag.block.occultism.tree_soil": "Tree Soil Blocks", "tag.block.occultism.worldgen_blacklist": "Worldgen Blacklisted Blocks", "tag.item.c.books": "Books", "tag.item.c.crops.datura": "Demon's Dream", + "tag.item.c.dusts.amethyst": "Amethyst Dust", + "tag.item.c.dusts.blackstone": "Blackstone Dust", "tag.item.c.dusts.blaze": "Blaze Dust", + "tag.item.c.dusts.blue_ice": "Blue Ice Dust", + "tag.item.c.dusts.calcite": "Calcite Dust", "tag.item.c.dusts.copper": "Copper Dust", + "tag.item.c.dusts.dragonyst": "Dragonyst Dust", + "tag.item.c.dusts.echo": "Echo Dust", + "tag.item.c.dusts.emerald": "Emerald Dust", "tag.item.c.dusts.end_stone": "Crushed End Stone", "tag.item.c.dusts.gold": "Gold Dust", + "tag.item.c.dusts.ice": "Ice Dust", "tag.item.c.dusts.iesnium": "Iesnium Dust", "tag.item.c.dusts.iron": "Iron Dust", + "tag.item.c.dusts.lapis": "Lapis Dust", + "tag.item.c.dusts.netherite": "Netherite Dust", + "tag.item.c.dusts.netherite_scrap": "Netherite Scrap Dust", "tag.item.c.dusts.obsidian": "Crushed Obsidian", + "tag.item.c.dusts.otherstone": "Otherstone Dust", + "tag.item.c.dusts.otherworld_wood": "Otherworld Wood Dust", + "tag.item.c.dusts.packed_ice": "Packed Ice Dust", + "tag.item.c.dusts.research": "Research Dust", "tag.item.c.dusts.silver": "Silver Dust", + "tag.item.c.dusts.witherite": "Witherite Dust", "tag.item.c.fruits": "Fruits", "tag.item.c.ingots.iesnium": "Iesnium Ingot", "tag.item.c.ingots.silver": "Silver Ingot", @@ -2064,15 +2407,17 @@ "tag.item.curios.hands": "Hands", "tag.item.curios.heads": "Heads", "tag.item.curios.ring": "Ring", + "tag.item.occultism.armored_items": "Scute or Shell", "tag.item.occultism.books.book_of_calling_djinni": "Book of Calling Djinni", "tag.item.occultism.books.book_of_calling_foliot": "Book of Calling Foliot", "tag.item.occultism.books.books_of_binding": "Books of Binding", - "tag.item.occultism.candles": "Candles", + "tag.item.occultism.candles": "Occultism Candles", "tag.item.occultism.demonic_partner_food": "Demonic Partner Food", "tag.item.occultism.elytra": "Elytras", - "tag.item.occultism.miners": "Miners", + "tag.item.occultism.miners": "Dimensional Miners", "tag.item.occultism.miners.basic_resources": "Basic Resource Miners", "tag.item.occultism.miners.deeps": "Deepslate Miners", + "tag.item.occultism.miners.eldritch": "Eldritch Miners", "tag.item.occultism.miners.master": "Rare Resource Miners", "tag.item.occultism.miners.ores": "General Miners", "tag.item.occultism.othercobblestone": "Other Cobblestone", @@ -2081,6 +2426,7 @@ "tag.item.occultism.otherworld_logs": "Otherworld Logs", "tag.item.occultism.pentacle_materials": "Pentacle Materials", "tag.item.occultism.saplings.otherworld": "Otherworld Saplings", + "tag.item.occultism.saplings.otherworld_natural": "Otherworld Saplings Natural", "tag.item.occultism.tools.chalk": "Chalks", "tag.item.occultism.tools.knife": "Knives" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/chalk_gold_impure.json b/src/generated/resources/assets/occultism/models/item/amethyst_dust.json similarity index 56% rename from src/generated/resources/assets/occultism/models/item/chalk_gold_impure.json rename to src/generated/resources/assets/occultism/models/item/amethyst_dust.json index fc657b25b..e35d99703 100644 --- a/src/generated/resources/assets/occultism/models/item/chalk_gold_impure.json +++ b/src/generated/resources/assets/occultism/models/item/amethyst_dust.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "occultism:item/chalk_gold_impure" + "layer0": "occultism:item/amethyst_dust" } } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/chalk_yellow_impure.json b/src/generated/resources/assets/occultism/models/item/chalk_yellow_impure.json new file mode 100644 index 000000000..ee83e2c5d --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/chalk_yellow_impure.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/chalk_yellow_impure" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/cruelty_essence.json b/src/generated/resources/assets/occultism/models/item/cruelty_essence.json new file mode 100644 index 000000000..0c0904376 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/cruelty_essence.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/cruelty_essence" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/crushed_blackstone.json b/src/generated/resources/assets/occultism/models/item/crushed_blackstone.json new file mode 100644 index 000000000..d3169fd6e --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/crushed_blackstone.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/crushed_blackstone" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/crushed_blue_ice.json b/src/generated/resources/assets/occultism/models/item/crushed_blue_ice.json new file mode 100644 index 000000000..7b32fa590 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/crushed_blue_ice.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/crushed_blue_ice" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/crushed_calcite.json b/src/generated/resources/assets/occultism/models/item/crushed_calcite.json new file mode 100644 index 000000000..fc9f9c755 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/crushed_calcite.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/crushed_calcite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/pentacle.json b/src/generated/resources/assets/occultism/models/item/crushed_ice.json similarity index 58% rename from src/generated/resources/assets/occultism/models/item/pentacle.json rename to src/generated/resources/assets/occultism/models/item/crushed_ice.json index 1671e8880..8245ec4c3 100644 --- a/src/generated/resources/assets/occultism/models/item/pentacle.json +++ b/src/generated/resources/assets/occultism/models/item/crushed_ice.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "occultism:item/ritual_dummy" + "layer0": "occultism:item/crushed_ice" } } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/crushed_packed_ice.json b/src/generated/resources/assets/occultism/models/item/crushed_packed_ice.json new file mode 100644 index 000000000..a49e6cf33 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/crushed_packed_ice.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/crushed_packed_ice" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/cursed_honey.json b/src/generated/resources/assets/occultism/models/item/cursed_honey.json new file mode 100644 index 000000000..4014a9cc9 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/cursed_honey.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/cursed_honey" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/demonic_meat.json b/src/generated/resources/assets/occultism/models/item/demonic_meat.json new file mode 100644 index 000000000..2351cb1d5 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/demonic_meat.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/demonic_meat" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/dragonyst_dust.json b/src/generated/resources/assets/occultism/models/item/dragonyst_dust.json new file mode 100644 index 000000000..c25d390b5 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/dragonyst_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/dragonyst_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/echo_dust.json b/src/generated/resources/assets/occultism/models/item/echo_dust.json new file mode 100644 index 000000000..03a4fa698 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/echo_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/echo_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/emerald_dust.json b/src/generated/resources/assets/occultism/models/item/emerald_dust.json new file mode 100644 index 000000000..74d59aca7 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/emerald_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/emerald_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/gray_paste.json b/src/generated/resources/assets/occultism/models/item/gray_paste.json new file mode 100644 index 000000000..23a7f39a2 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/gray_paste.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/gray_paste" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/lapis_dust.json b/src/generated/resources/assets/occultism/models/item/lapis_dust.json new file mode 100644 index 000000000..363c4bd35 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/lapis_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/lapis_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/marid_essence.json b/src/generated/resources/assets/occultism/models/item/marid_essence.json new file mode 100644 index 000000000..b187e33c9 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/marid_essence.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/marid_essence" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/miner_ancient_eldritch.json b/src/generated/resources/assets/occultism/models/item/miner_ancient_eldritch.json new file mode 100644 index 000000000..c223490a9 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/miner_ancient_eldritch.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/magic_lamp" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/mining_dim_core.json b/src/generated/resources/assets/occultism/models/item/mining_dim_core.json new file mode 100644 index 000000000..80ef5e13e --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/mining_dim_core.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/mining_dim_core" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/nature_paste.json b/src/generated/resources/assets/occultism/models/item/nature_paste.json new file mode 100644 index 000000000..ecb9f13f6 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/nature_paste.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/nature_paste" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/netherite_dust.json b/src/generated/resources/assets/occultism/models/item/netherite_dust.json new file mode 100644 index 000000000..3fc540fc5 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/netherite_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/netherite_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/netherite_scrap_dust.json b/src/generated/resources/assets/occultism/models/item/netherite_scrap_dust.json new file mode 100644 index 000000000..d4e9971bd --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/netherite_scrap_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/netherite_scrap_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/pentacle_craft.json b/src/generated/resources/assets/occultism/models/item/pentacle_craft.json new file mode 100644 index 000000000..8240fdfb0 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/pentacle_craft.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/ritual_dummy_craft" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/pentacle_misc.json b/src/generated/resources/assets/occultism/models/item/pentacle_misc.json new file mode 100644 index 000000000..cea455c5e --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/pentacle_misc.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/ritual_dummy_misc" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/pentacle_possess.json b/src/generated/resources/assets/occultism/models/item/pentacle_possess.json new file mode 100644 index 000000000..1063d4b16 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/pentacle_possess.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/ritual_dummy_possess" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/pentacle_summon.json b/src/generated/resources/assets/occultism/models/item/pentacle_summon.json new file mode 100644 index 000000000..c09c33925 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/pentacle_summon.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/ritual_dummy_summon" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/repair_icon.json b/src/generated/resources/assets/occultism/models/item/repair_icon.json new file mode 100644 index 000000000..7d5c20e19 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/repair_icon.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/repair_icon" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/research_fragment_dust.json b/src/generated/resources/assets/occultism/models/item/research_fragment_dust.json new file mode 100644 index 000000000..5f28ebc9b --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/research_fragment_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/research_fragment_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/resurrect_icon.json b/src/generated/resources/assets/occultism/models/item/resurrect_icon.json new file mode 100644 index 000000000..665c11697 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/resurrect_icon.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/resurrect_icon" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_budding_amethyst.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_budding_amethyst.json new file mode 100644 index 000000000..ccdb9737f --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_budding_amethyst.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_craft" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_dimensional_matrix.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_dimensional_matrix.json index 1a5442cc2..ccdb9737f 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_dimensional_matrix.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_dimensional_matrix.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_craft" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_dimensional_mineshaft.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_dimensional_mineshaft.json index 1a5442cc2..ccdb9737f 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_dimensional_mineshaft.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_dimensional_mineshaft.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_craft" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_dragonyst_dust.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_dragonyst_dust.json new file mode 100644 index 000000000..ccdb9737f --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_dragonyst_dust.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_craft" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_familiar_ring.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_familiar_ring.json index 1a5442cc2..ccdb9737f 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_familiar_ring.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_familiar_ring.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_craft" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_gray_paste.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_gray_paste.json new file mode 100644 index 000000000..ccdb9737f --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_gray_paste.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_craft" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_infused_lenses.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_infused_lenses.json index 1a5442cc2..ccdb9737f 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_infused_lenses.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_infused_lenses.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_craft" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_infused_pickaxe.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_infused_pickaxe.json index 1a5442cc2..ccdb9737f 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_infused_pickaxe.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_infused_pickaxe.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_craft" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_miner_afrit_deeps.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_miner_afrit_deeps.json index 1a5442cc2..ccdb9737f 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_miner_afrit_deeps.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_miner_afrit_deeps.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_craft" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_miner_ancient_eldritch.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_miner_ancient_eldritch.json new file mode 100644 index 000000000..ccdb9737f --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_miner_ancient_eldritch.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_craft" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_miner_djinni_ores.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_miner_djinni_ores.json index 1a5442cc2..ccdb9737f 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_miner_djinni_ores.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_miner_djinni_ores.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_craft" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_miner_foliot_unspecialized.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_miner_foliot_unspecialized.json index 1a5442cc2..ccdb9737f 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_miner_foliot_unspecialized.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_miner_foliot_unspecialized.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_craft" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_miner_marid_master.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_miner_marid_master.json index 1a5442cc2..ccdb9737f 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_miner_marid_master.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_miner_marid_master.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_craft" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_nature_paste.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_nature_paste.json new file mode 100644 index 000000000..ccdb9737f --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_nature_paste.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_craft" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_reinforced_deepslate.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_reinforced_deepslate.json new file mode 100644 index 000000000..ccdb9737f --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_reinforced_deepslate.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_craft" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_research_fragment_dust.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_research_fragment_dust.json new file mode 100644 index 000000000..ccdb9737f --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_research_fragment_dust.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_craft" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_ritual_satchel_t1.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_ritual_satchel_t1.json index 1a5442cc2..ccdb9737f 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_ritual_satchel_t1.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_ritual_satchel_t1.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_craft" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_ritual_satchel_t2.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_ritual_satchel_t2.json index 1a5442cc2..ccdb9737f 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_ritual_satchel_t2.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_ritual_satchel_t2.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_craft" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_satchel.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_satchel.json index 1a5442cc2..ccdb9737f 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_satchel.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_satchel.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_craft" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_soul_gem.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_soul_gem.json index 1a5442cc2..ccdb9737f 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_soul_gem.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_soul_gem.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_craft" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_stabilizer_tier1.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_stabilizer_tier1.json index 1a5442cc2..ccdb9737f 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_stabilizer_tier1.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_stabilizer_tier1.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_craft" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_stabilizer_tier2.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_stabilizer_tier2.json index 1a5442cc2..ccdb9737f 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_stabilizer_tier2.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_stabilizer_tier2.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_craft" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_stabilizer_tier3.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_stabilizer_tier3.json index 1a5442cc2..ccdb9737f 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_stabilizer_tier3.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_stabilizer_tier3.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_craft" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_stabilizer_tier4.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_stabilizer_tier4.json index 1a5442cc2..ccdb9737f 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_stabilizer_tier4.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_stabilizer_tier4.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_craft" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_stable_wormhole.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_stable_wormhole.json index 1a5442cc2..ccdb9737f 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_stable_wormhole.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_stable_wormhole.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_craft" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_storage_controller_base.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_storage_controller_base.json index 1a5442cc2..ccdb9737f 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_storage_controller_base.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_storage_controller_base.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_craft" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_storage_remote.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_storage_remote.json index 1a5442cc2..ccdb9737f 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_storage_remote.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_storage_remote.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_craft" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_wild_trim.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_wild_trim.json index 1a5442cc2..1d2191b74 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_wild_trim.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_wild_trim.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_misc" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_witherite_dust.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_witherite_dust.json new file mode 100644 index 000000000..ccdb9737f --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_witherite_dust.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_craft" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/custom_ritual.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/custom_ritual.json deleted file mode 100644 index 1a5442cc2..000000000 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/custom_ritual.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "occultism:item/ritual_dummy" -} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/custom_ritual_craft.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/custom_ritual_craft.json new file mode 100644 index 000000000..ccdb9737f --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/custom_ritual_craft.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_craft" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/custom_ritual_misc.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/custom_ritual_misc.json new file mode 100644 index 000000000..1d2191b74 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/custom_ritual_misc.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_misc" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/custom_ritual_possess.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/custom_ritual_possess.json new file mode 100644 index 000000000..6fbdc0dab --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/custom_ritual_possess.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_possess" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/custom_ritual_summon.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/custom_ritual_summon.json new file mode 100644 index 000000000..662fe08aa --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/custom_ritual_summon.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_summon" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_bat.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_bat.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_bat.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_bat.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_beaver.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_beaver.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_beaver.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_beaver.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_beholder.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_beholder.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_beholder.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_beholder.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_blacksmith.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_blacksmith.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_blacksmith.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_blacksmith.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_chimera.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_chimera.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_chimera.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_chimera.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_cthulhu.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_cthulhu.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_cthulhu.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_cthulhu.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_deer.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_deer.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_deer.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_deer.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_devil.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_devil.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_devil.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_devil.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_dragon.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_dragon.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_dragon.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_dragon.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_fairy.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_fairy.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_fairy.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_fairy.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_greedy.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_greedy.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_greedy.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_greedy.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_guardian.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_guardian.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_guardian.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_guardian.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_headless.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_headless.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_headless.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_headless.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_mummy.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_mummy.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_mummy.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_mummy.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_otherworld_bird.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_otherworld_bird.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_otherworld_bird.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_otherworld_bird.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_parrot.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_parrot.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_parrot.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/familiar_parrot.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_bee.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_bee.json new file mode 100644 index 000000000..6fbdc0dab --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_bee.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_possess" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_breeze.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_breeze.json deleted file mode 100644 index 1a5442cc2..000000000 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_breeze.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "occultism:item/ritual_dummy" -} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_elder_guardian.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_elder_guardian.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_elder_guardian.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_elder_guardian.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_enderman.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_enderman.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_enderman.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_enderman.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_endermite.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_endermite.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_endermite.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_endermite.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_ghast.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_ghast.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_ghast.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_ghast.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_goat.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_goat.json new file mode 100644 index 000000000..6fbdc0dab --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_goat.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_possess" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_hoglin.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_hoglin.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_hoglin.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_hoglin.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_phantom.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_phantom.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_phantom.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_phantom.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_random_animal.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_random_animal.json new file mode 100644 index 000000000..6fbdc0dab --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_random_animal.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_possess" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_shulker.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_shulker.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_shulker.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_shulker.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_skeleton.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_skeleton.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_skeleton.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_skeleton.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_strong_breeze.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_strong_breeze.json deleted file mode 100644 index 1a5442cc2..000000000 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_strong_breeze.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "occultism:item/ritual_dummy" -} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_unbound_otherworld_bird.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_unbound_otherworld_bird.json new file mode 100644 index 000000000..6fbdc0dab --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_unbound_otherworld_bird.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_possess" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_unbound_parrot.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_unbound_parrot.json new file mode 100644 index 000000000..6fbdc0dab --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_unbound_parrot.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_possess" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_warden.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_warden.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_warden.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_warden.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_weak_breeze.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_weak_breeze.json deleted file mode 100644 index 1a5442cc2..000000000 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_weak_breeze.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "occultism:item/ritual_dummy" -} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_weak_shulker.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_weak_shulker.json index 1a5442cc2..6fbdc0dab 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_weak_shulker.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_weak_shulker.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_possess" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_witch.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_witch.json new file mode 100644 index 000000000..6fbdc0dab --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_witch.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_possess" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_zombie_piglin.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_zombie_piglin.json new file mode 100644 index 000000000..6fbdc0dab --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_zombie_piglin.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_possess" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/repair_armors.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/repair_armors.json new file mode 100644 index 000000000..ccdb9737f --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/repair_armors.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_craft" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/repair_chalks.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/repair_chalks.json new file mode 100644 index 000000000..ccdb9737f --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/repair_chalks.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_craft" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/repair_miners.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/repair_miners.json new file mode 100644 index 000000000..ccdb9737f --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/repair_miners.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_craft" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/repair_tools.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/repair_tools.json new file mode 100644 index 000000000..ccdb9737f --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/repair_tools.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_craft" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/resurrect_allay.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/resurrect_allay.json new file mode 100644 index 000000000..1d2191b74 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/resurrect_allay.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_misc" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/resurrect_familiar.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/resurrect_familiar.json index 1a5442cc2..1d2191b74 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/resurrect_familiar.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/resurrect_familiar.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_misc" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_afrit_crusher.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_afrit_crusher.json index 1a5442cc2..662fe08aa 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_afrit_crusher.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_afrit_crusher.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_summon" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_afrit_rain_weather.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_afrit_rain_weather.json index 1a5442cc2..662fe08aa 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_afrit_rain_weather.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_afrit_rain_weather.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_summon" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_afrit_thunder_weather.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_afrit_thunder_weather.json index 1a5442cc2..662fe08aa 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_afrit_thunder_weather.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_afrit_thunder_weather.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_summon" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_allay.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_allay.json deleted file mode 100644 index 1a5442cc2..000000000 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_allay.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "occultism:item/ritual_dummy" -} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_demonic_husband.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_demonic_husband.json index 1a5442cc2..662fe08aa 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_demonic_husband.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_demonic_husband.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_summon" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_demonic_wife.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_demonic_wife.json index 1a5442cc2..662fe08aa 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_demonic_wife.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_demonic_wife.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_summon" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_djinni_clear_weather.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_djinni_clear_weather.json index 1a5442cc2..662fe08aa 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_djinni_clear_weather.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_djinni_clear_weather.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_summon" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_djinni_crusher.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_djinni_crusher.json index 1a5442cc2..662fe08aa 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_djinni_crusher.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_djinni_crusher.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_summon" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_djinni_day_time.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_djinni_day_time.json index 1a5442cc2..662fe08aa 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_djinni_day_time.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_djinni_day_time.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_summon" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_djinni_manage_machine.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_djinni_manage_machine.json index 1a5442cc2..662fe08aa 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_djinni_manage_machine.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_djinni_manage_machine.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_summon" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_djinni_night_time.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_djinni_night_time.json index 1a5442cc2..662fe08aa 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_djinni_night_time.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_djinni_night_time.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_summon" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_cleaner.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_cleaner.json index 1a5442cc2..662fe08aa 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_cleaner.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_cleaner.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_summon" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_crusher.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_crusher.json index 1a5442cc2..662fe08aa 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_crusher.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_crusher.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_summon" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_lumberjack.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_lumberjack.json index 1a5442cc2..662fe08aa 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_lumberjack.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_lumberjack.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_summon" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_otherstone_trader.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_otherstone_trader.json index 1a5442cc2..662fe08aa 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_otherstone_trader.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_otherstone_trader.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_summon" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_sapling_trader.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_sapling_trader.json index 1a5442cc2..662fe08aa 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_sapling_trader.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_sapling_trader.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_summon" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_transport_items.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_transport_items.json index 1a5442cc2..662fe08aa 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_transport_items.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_foliot_transport_items.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_summon" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_horde_illager.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_horde_illager.json deleted file mode 100644 index 1a5442cc2..000000000 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_horde_illager.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "occultism:item/ritual_dummy" -} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_marid_crusher.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_marid_crusher.json index 1a5442cc2..662fe08aa 100644 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_marid_crusher.json +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_marid_crusher.json @@ -1,3 +1,3 @@ { - "parent": "occultism:item/ritual_dummy" + "parent": "occultism:item/pentacle_summon" } \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_random_animal.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_random_animal.json deleted file mode 100644 index 1a5442cc2..000000000 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_random_animal.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "occultism:item/ritual_dummy" -} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_unbound_afrit.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_unbound_afrit.json new file mode 100644 index 000000000..662fe08aa --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_unbound_afrit.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_summon" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_unbound_marid.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_unbound_marid.json new file mode 100644 index 000000000..662fe08aa --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_unbound_marid.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_summon" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_afrit.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_afrit.json deleted file mode 100644 index 1a5442cc2..000000000 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_afrit.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "occultism:item/ritual_dummy" -} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_creeper.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_creeper.json deleted file mode 100644 index 1a5442cc2..000000000 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_creeper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "occultism:item/ritual_dummy" -} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_drowned.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_drowned.json deleted file mode 100644 index 1a5442cc2..000000000 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_drowned.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "occultism:item/ritual_dummy" -} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_hunt.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_hunt.json deleted file mode 100644 index 1a5442cc2..000000000 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_hunt.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "occultism:item/ritual_dummy" -} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_husk.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_husk.json deleted file mode 100644 index 1a5442cc2..000000000 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_husk.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "occultism:item/ritual_dummy" -} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_otherworld_bird.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_otherworld_bird.json deleted file mode 100644 index 1a5442cc2..000000000 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_otherworld_bird.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "occultism:item/ritual_dummy" -} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_parrot.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_parrot.json deleted file mode 100644 index 1a5442cc2..000000000 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_parrot.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "occultism:item/ritual_dummy" -} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_silverfish.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_silverfish.json deleted file mode 100644 index 1a5442cc2..000000000 --- a/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_silverfish.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "occultism:item/ritual_dummy" -} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_breeze.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_breeze.json new file mode 100644 index 000000000..1d2191b74 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_breeze.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_misc" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_creeper.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_creeper.json new file mode 100644 index 000000000..1d2191b74 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_creeper.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_misc" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_drowned.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_drowned.json new file mode 100644 index 000000000..1d2191b74 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_drowned.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_misc" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_horde_illager.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_horde_illager.json new file mode 100644 index 000000000..1d2191b74 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_horde_illager.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_misc" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_hunt.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_hunt.json new file mode 100644 index 000000000..1d2191b74 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_hunt.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_misc" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_husk.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_husk.json new file mode 100644 index 000000000..1d2191b74 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_husk.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_misc" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_silverfish.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_silverfish.json new file mode 100644 index 000000000..1d2191b74 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_silverfish.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_misc" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_strong_breeze.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_strong_breeze.json new file mode 100644 index 000000000..1d2191b74 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_strong_breeze.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_misc" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_weak_breeze.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_weak_breeze.json new file mode 100644 index 000000000..1d2191b74 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/wild_weak_breeze.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/pentacle_misc" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/spawn_egg/afrit_wild.json b/src/generated/resources/assets/occultism/models/item/spawn_egg/afrit_unbound.json similarity index 100% rename from src/generated/resources/assets/occultism/models/item/spawn_egg/afrit_wild.json rename to src/generated/resources/assets/occultism/models/item/spawn_egg/afrit_unbound.json diff --git a/src/generated/resources/assets/occultism/models/item/spawn_egg/possessed_breeze.json b/src/generated/resources/assets/occultism/models/item/spawn_egg/marid_unbound.json similarity index 100% rename from src/generated/resources/assets/occultism/models/item/spawn_egg/possessed_breeze.json rename to src/generated/resources/assets/occultism/models/item/spawn_egg/marid_unbound.json diff --git a/src/generated/resources/assets/occultism/models/item/spawn_egg/possessed_evoker.json b/src/generated/resources/assets/occultism/models/item/spawn_egg/possessed_bee.json similarity index 100% rename from src/generated/resources/assets/occultism/models/item/spawn_egg/possessed_evoker.json rename to src/generated/resources/assets/occultism/models/item/spawn_egg/possessed_bee.json diff --git a/src/generated/resources/assets/occultism/models/item/spawn_egg/possessed_strong_breeze.json b/src/generated/resources/assets/occultism/models/item/spawn_egg/possessed_goat.json similarity index 100% rename from src/generated/resources/assets/occultism/models/item/spawn_egg/possessed_strong_breeze.json rename to src/generated/resources/assets/occultism/models/item/spawn_egg/possessed_goat.json diff --git a/src/generated/resources/assets/occultism/models/item/spawn_egg/possessed_weak_breeze.json b/src/generated/resources/assets/occultism/models/item/spawn_egg/possessed_witch.json similarity index 100% rename from src/generated/resources/assets/occultism/models/item/spawn_egg/possessed_weak_breeze.json rename to src/generated/resources/assets/occultism/models/item/spawn_egg/possessed_witch.json diff --git a/src/generated/resources/assets/occultism/models/item/spawn_egg/possessed_zombie_piglin.json b/src/generated/resources/assets/occultism/models/item/spawn_egg/possessed_zombie_piglin.json new file mode 100644 index 000000000..d1aaa9d6e --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/spawn_egg/possessed_zombie_piglin.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/spawn_egg/wild_breeze.json b/src/generated/resources/assets/occultism/models/item/spawn_egg/wild_breeze.json new file mode 100644 index 000000000..d1aaa9d6e --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/spawn_egg/wild_breeze.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/spawn_egg/wild_evoker.json b/src/generated/resources/assets/occultism/models/item/spawn_egg/wild_evoker.json new file mode 100644 index 000000000..d1aaa9d6e --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/spawn_egg/wild_evoker.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/spawn_egg/wild_strong_breeze.json b/src/generated/resources/assets/occultism/models/item/spawn_egg/wild_strong_breeze.json new file mode 100644 index 000000000..d1aaa9d6e --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/spawn_egg/wild_strong_breeze.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/spawn_egg/wild_weak_breeze.json b/src/generated/resources/assets/occultism/models/item/spawn_egg/wild_weak_breeze.json new file mode 100644 index 000000000..d1aaa9d6e --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/spawn_egg/wild_weak_breeze.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} \ No newline at end of file diff --git a/src/generated/resources/assets/occultism/models/item/witherite_dust.json b/src/generated/resources/assets/occultism/models/item/witherite_dust.json new file mode 100644 index 000000000..ac7f1cf13 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/witherite_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "occultism:item/witherite_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/entity_type/allay.json b/src/generated/resources/data/c/tags/entity_type/allay.json new file mode 100644 index 000000000..af85395e0 --- /dev/null +++ b/src/generated/resources/data/c/tags/entity_type/allay.json @@ -0,0 +1,5 @@ +{ + "values": [ + "minecraft:allay" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/tags/entity_type/camel.json b/src/generated/resources/data/c/tags/entity_type/camels.json similarity index 100% rename from src/generated/resources/data/occultism/tags/entity_type/camel.json rename to src/generated/resources/data/c/tags/entity_type/camels.json diff --git a/src/generated/resources/data/c/tags/entity_type/cats.json b/src/generated/resources/data/c/tags/entity_type/cats.json new file mode 100644 index 000000000..59adbd4d0 --- /dev/null +++ b/src/generated/resources/data/c/tags/entity_type/cats.json @@ -0,0 +1,6 @@ +{ + "values": [ + "minecraft:cat", + "minecraft:ocelot" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/entity_type/chicken.json b/src/generated/resources/data/c/tags/entity_type/chickens.json similarity index 100% rename from src/generated/resources/data/c/tags/entity_type/chicken.json rename to src/generated/resources/data/c/tags/entity_type/chickens.json diff --git a/src/generated/resources/data/occultism/tags/entity_type/dolphin.json b/src/generated/resources/data/c/tags/entity_type/dolphins.json similarity index 100% rename from src/generated/resources/data/occultism/tags/entity_type/dolphin.json rename to src/generated/resources/data/c/tags/entity_type/dolphins.json diff --git a/src/generated/resources/data/c/tags/entity_type/goats.json b/src/generated/resources/data/c/tags/entity_type/goats.json index f59c77bcd..d6bb757b3 100644 --- a/src/generated/resources/data/c/tags/entity_type/goats.json +++ b/src/generated/resources/data/c/tags/entity_type/goats.json @@ -1,5 +1,6 @@ { "values": [ - "minecraft:goat" + "minecraft:goat", + "occultism:mercy_goat" ] } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/tags/entity_type/ocelot.json b/src/generated/resources/data/c/tags/entity_type/ocelots.json similarity index 100% rename from src/generated/resources/data/occultism/tags/entity_type/ocelot.json rename to src/generated/resources/data/c/tags/entity_type/ocelots.json diff --git a/src/generated/resources/data/c/tags/entity_type/squid.json b/src/generated/resources/data/c/tags/entity_type/squids.json similarity index 100% rename from src/generated/resources/data/c/tags/entity_type/squid.json rename to src/generated/resources/data/c/tags/entity_type/squids.json diff --git a/src/generated/resources/data/c/tags/entity_type/tadpoles.json b/src/generated/resources/data/c/tags/entity_type/tadpoles.json new file mode 100644 index 000000000..9f488049d --- /dev/null +++ b/src/generated/resources/data/c/tags/entity_type/tadpoles.json @@ -0,0 +1,5 @@ +{ + "values": [ + "minecraft:tadpole" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/tags/entity_type/vex.json b/src/generated/resources/data/c/tags/entity_type/vex.json similarity index 100% rename from src/generated/resources/data/occultism/tags/entity_type/vex.json rename to src/generated/resources/data/c/tags/entity_type/vex.json diff --git a/src/generated/resources/data/c/tags/entity_type/wardens.json b/src/generated/resources/data/c/tags/entity_type/wardens.json new file mode 100644 index 000000000..a4ba9df8a --- /dev/null +++ b/src/generated/resources/data/c/tags/entity_type/wardens.json @@ -0,0 +1,6 @@ +{ + "values": [ + "minecraft:warden", + "occultism:possessed_warden" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/tags/entity_type/wolfs.json b/src/generated/resources/data/c/tags/entity_type/wolfs.json similarity index 100% rename from src/generated/resources/data/occultism/tags/entity_type/wolfs.json rename to src/generated/resources/data/c/tags/entity_type/wolfs.json diff --git a/src/generated/resources/data/c/tags/item/dusts.json b/src/generated/resources/data/c/tags/item/dusts.json index ddf391bb2..5081b4174 100644 --- a/src/generated/resources/data/c/tags/item/dusts.json +++ b/src/generated/resources/data/c/tags/item/dusts.json @@ -7,7 +7,21 @@ "#c:dusts/iesnium", "#c:dusts/silver", "#c:dusts/obsidian", - "occultism:burnt_otherstone", - "occultism:otherworld_ashes" + "#c:dusts/amethyst", + "#c:dusts/blackstone", + "#c:dusts/blue_ice", + "#c:dusts/calcite", + "#c:dusts/ice", + "#c:dusts/packed_ice", + "#c:dusts/dragonyst", + "#c:dusts/echo", + "#c:dusts/emerald", + "#c:dusts/lapis", + "#c:dusts/netherite", + "#c:dusts/netherite_scrap", + "#c:dusts/research", + "#c:dusts/witherite", + "#c:dusts/otherstone", + "#c:dusts/otherworld_wood" ] } \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/amethyst.json b/src/generated/resources/data/c/tags/item/dusts/amethyst.json new file mode 100644 index 000000000..64c8e9111 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/amethyst.json @@ -0,0 +1,5 @@ +{ + "values": [ + "occultism:amethyst_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/blackstone.json b/src/generated/resources/data/c/tags/item/dusts/blackstone.json new file mode 100644 index 000000000..ce024ce6d --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/blackstone.json @@ -0,0 +1,5 @@ +{ + "values": [ + "occultism:crushed_blackstone" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/blue_ice.json b/src/generated/resources/data/c/tags/item/dusts/blue_ice.json new file mode 100644 index 000000000..f76d99abb --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/blue_ice.json @@ -0,0 +1,5 @@ +{ + "values": [ + "occultism:crushed_blue_ice" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/calcite.json b/src/generated/resources/data/c/tags/item/dusts/calcite.json new file mode 100644 index 000000000..97da1bbac --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/calcite.json @@ -0,0 +1,5 @@ +{ + "values": [ + "occultism:crushed_calcite" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/dragonyst.json b/src/generated/resources/data/c/tags/item/dusts/dragonyst.json new file mode 100644 index 000000000..213268250 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/dragonyst.json @@ -0,0 +1,5 @@ +{ + "values": [ + "occultism:dragonyst_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/echo.json b/src/generated/resources/data/c/tags/item/dusts/echo.json new file mode 100644 index 000000000..bd7800806 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/echo.json @@ -0,0 +1,5 @@ +{ + "values": [ + "occultism:echo_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/emerald.json b/src/generated/resources/data/c/tags/item/dusts/emerald.json new file mode 100644 index 000000000..ad2f16c5a --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/emerald.json @@ -0,0 +1,5 @@ +{ + "values": [ + "occultism:emerald_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/ice.json b/src/generated/resources/data/c/tags/item/dusts/ice.json new file mode 100644 index 000000000..9b8b3144a --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/ice.json @@ -0,0 +1,5 @@ +{ + "values": [ + "occultism:crushed_ice" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/lapis.json b/src/generated/resources/data/c/tags/item/dusts/lapis.json new file mode 100644 index 000000000..5d00ebd95 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/lapis.json @@ -0,0 +1,5 @@ +{ + "values": [ + "occultism:lapis_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/netherite.json b/src/generated/resources/data/c/tags/item/dusts/netherite.json new file mode 100644 index 000000000..0613a7365 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/netherite.json @@ -0,0 +1,5 @@ +{ + "values": [ + "occultism:netherite_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/netherite_scrap.json b/src/generated/resources/data/c/tags/item/dusts/netherite_scrap.json new file mode 100644 index 000000000..46a569252 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/netherite_scrap.json @@ -0,0 +1,5 @@ +{ + "values": [ + "occultism:netherite_scrap_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/otherstone.json b/src/generated/resources/data/c/tags/item/dusts/otherstone.json new file mode 100644 index 000000000..875acbd81 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/otherstone.json @@ -0,0 +1,5 @@ +{ + "values": [ + "occultism:burnt_otherstone" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/otherworld_wood.json b/src/generated/resources/data/c/tags/item/dusts/otherworld_wood.json new file mode 100644 index 000000000..08a6e1b45 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/otherworld_wood.json @@ -0,0 +1,5 @@ +{ + "values": [ + "occultism:otherworld_ashes" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/packed_ice.json b/src/generated/resources/data/c/tags/item/dusts/packed_ice.json new file mode 100644 index 000000000..4403ae483 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/packed_ice.json @@ -0,0 +1,5 @@ +{ + "values": [ + "occultism:crushed_packed_ice" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/research.json b/src/generated/resources/data/c/tags/item/dusts/research.json new file mode 100644 index 000000000..8fd0048cb --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/research.json @@ -0,0 +1,5 @@ +{ + "values": [ + "occultism:research_fragment_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts/witherite.json b/src/generated/resources/data/c/tags/item/dusts/witherite.json new file mode 100644 index 000000000..39c8dc67c --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/witherite.json @@ -0,0 +1,5 @@ +{ + "values": [ + "occultism:witherite_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/tools.json b/src/generated/resources/data/c/tags/item/tools.json new file mode 100644 index 000000000..0c7623356 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/tools.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "#occultism:tools/knife", + "required": false + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/saplings.json b/src/generated/resources/data/minecraft/tags/block/saplings.json index ae2130428..b6d795dee 100644 --- a/src/generated/resources/data/minecraft/tags/block/saplings.json +++ b/src/generated/resources/data/minecraft/tags/block/saplings.json @@ -1,5 +1,6 @@ { "values": [ - "#occultism:saplings/otherworld" + "#occultism:saplings/otherworld", + "#occultism:saplings/otherworld_natural" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/item/saplings.json b/src/generated/resources/data/minecraft/tags/item/saplings.json index ae2130428..b6d795dee 100644 --- a/src/generated/resources/data/minecraft/tags/item/saplings.json +++ b/src/generated/resources/data/minecraft/tags/item/saplings.json @@ -1,5 +1,6 @@ { "values": [ - "#occultism:saplings/otherworld" + "#occultism:saplings/otherworld", + "#occultism:saplings/otherworld_natural" ] } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/occultism/familiar/root.json b/src/generated/resources/data/occultism/advancement/occultism/familiar/root.json index d75b7dae0..aaaf3cbea 100644 --- a/src/generated/resources/data/occultism/advancement/occultism/familiar/root.json +++ b/src/generated/resources/data/occultism/advancement/occultism/familiar/root.json @@ -8,13 +8,13 @@ } }, "display": { - "background": "minecraft:textures/gui/advancements/backgrounds/stone.png", + "background": "occultism:textures/block/otherplanks.png", "description": { "translate": "advancements.occultism.familiars.description" }, "icon": { "count": 1, - "id": "occultism:jei_dummy/none" + "id": "occultism:pentacle_possess" }, "title": { "translate": "advancements.occultism.familiars.title" diff --git a/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/amethyst_dust.json b/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/amethyst_dust.json new file mode 100644 index 000000000..8d2a7d7fc --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/amethyst_dust.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:ores/amethyst" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:dusts/amethyst" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_amethyst": { + "conditions": { + "items": [ + { + "items": "#c:ores/amethyst" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:crushing/amethyst_dust" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_amethyst" + ] + ], + "rewards": { + "recipes": [ + "occultism:crushing/amethyst_dust" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/amethyst_dust_from_gem.json b/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/amethyst_dust_from_gem.json new file mode 100644 index 000000000..baf47700b --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/amethyst_dust_from_gem.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:gems/amethyst" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:dusts/amethyst" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_amethyst_gem": { + "conditions": { + "items": [ + { + "items": "#c:gems/amethyst" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:crushing/amethyst_dust_from_gem" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_amethyst_gem" + ] + ], + "rewards": { + "recipes": [ + "occultism:crushing/amethyst_dust_from_gem" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/blackstone_dust.json b/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/blackstone_dust.json new file mode 100644 index 000000000..f8eb256c6 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/blackstone_dust.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_blackstone": { + "conditions": { + "items": [ + { + "items": "minecraft:blackstone" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:crushing/blackstone_dust" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_blackstone" + ] + ], + "rewards": { + "recipes": [ + "occultism:crushing/blackstone_dust" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/blue_ice_dust.json b/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/blue_ice_dust.json new file mode 100644 index 000000000..ceffc2411 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/blue_ice_dust.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_blue_ice": { + "conditions": { + "items": [ + { + "items": "minecraft:blue_ice" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:crushing/blue_ice_dust" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_blue_ice" + ] + ], + "rewards": { + "recipes": [ + "occultism:crushing/blue_ice_dust" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/calcite_dust.json b/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/calcite_dust.json new file mode 100644 index 000000000..32cb1b026 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/calcite_dust.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_calcite": { + "conditions": { + "items": [ + { + "items": "minecraft:calcite" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:crushing/calcite_dust" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_calcite" + ] + ], + "rewards": { + "recipes": [ + "occultism:crushing/calcite_dust" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/echo_dust.json b/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/echo_dust.json new file mode 100644 index 000000000..786414471 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/echo_dust.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_echo_shard": { + "conditions": { + "items": [ + { + "items": "minecraft:echo_shard" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:crushing/echo_dust" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_echo_shard" + ] + ], + "rewards": { + "recipes": [ + "occultism:crushing/echo_dust" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/ice_dust.json b/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/ice_dust.json new file mode 100644 index 000000000..cfeb0eeaf --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/ice_dust.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_ice": { + "conditions": { + "items": [ + { + "items": "minecraft:ice" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:crushing/ice_dust" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_ice" + ] + ], + "rewards": { + "recipes": [ + "occultism:crushing/ice_dust" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/netherite_scrap_dust.json b/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/netherite_scrap_dust.json new file mode 100644 index 000000000..894e4d3c9 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/netherite_scrap_dust.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_ancient_debris": { + "conditions": { + "items": [ + { + "items": "#c:ores/netherite_scrap" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:crushing/netherite_scrap_dust" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_ancient_debris" + ] + ], + "rewards": { + "recipes": [ + "occultism:crushing/netherite_scrap_dust" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/packed_ice_dust.json b/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/packed_ice_dust.json new file mode 100644 index 000000000..2300458bf --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/crushing/crushing/packed_ice_dust.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_packed_ice": { + "conditions": { + "items": [ + { + "items": "minecraft:packed_ice" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:crushing/packed_ice_dust" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_packed_ice" + ] + ], + "rewards": { + "recipes": [ + "occultism:crushing/packed_ice_dust" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/basic_resources/basalt.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/basic_resources/basalt.json new file mode 100644 index 000000000..2b9f4e341 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/basic_resources/basalt.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/basic_resources/basalt" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/basic_resources/basalt" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/basic_resources/blackstone.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/basic_resources/blackstone.json new file mode 100644 index 000000000..e8954f03b --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/basic_resources/blackstone.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/basic_resources/blackstone" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/basic_resources/blackstone" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/basic_resources/deepslate.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/basic_resources/deepslate.json new file mode 100644 index 000000000..5688b775d --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/basic_resources/deepslate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/basic_resources/deepslate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/basic_resources/deepslate" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/amethyst.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/amethyst.json new file mode 100644 index 000000000..96e1c7f89 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/amethyst.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:gems/amethyst" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/amethyst" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/amethyst" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/ancient_debris.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/ancient_debris.json new file mode 100644 index 000000000..31d40d74c --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/ancient_debris.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/ancient_debris" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/ancient_debris" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/arcane_crystal.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/arcane_crystal.json new file mode 100644 index 000000000..282374b6e --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/arcane_crystal.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/arcane_crystal" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/arcane_crystal" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/arcane_crystal" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/coal.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/coal.json new file mode 100644 index 000000000..94fb731bb --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/coal.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/coal" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/coal" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/coal" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/dark.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/dark.json new file mode 100644 index 000000000..e2b881c5c --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/dark.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/dark" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/dark" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/dark" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/diamond.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/diamond.json new file mode 100644 index 000000000..24811c1b7 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/diamond.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/diamond" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/diamond" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/diamond" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/emerald.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/emerald.json new file mode 100644 index 000000000..e95f8cc0c --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/emerald.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/emerald" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/emerald" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/emerald" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/fluorite.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/fluorite.json new file mode 100644 index 000000000..3743cf23a --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/fluorite.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/fluorite" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/fluorite" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/fluorite" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/glowstone_dust.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/glowstone_dust.json new file mode 100644 index 000000000..d790d1695 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/glowstone_dust.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:dusts/glowstone" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/glowstone_dust" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/glowstone_dust" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/inferium_essence.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/inferium_essence.json new file mode 100644 index 000000000..2cb512274 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/inferium_essence.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/inferium_essence" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/inferium_essence" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/inferium_essence" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/lapis.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/lapis.json new file mode 100644 index 000000000..299fd5a4f --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/lapis.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/lapis" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/lapis" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/lapis" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/lignite_coal.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/lignite_coal.json new file mode 100644 index 000000000..9062c9dfa --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/lignite_coal.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/lignite_coal" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/lignite_coal" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/lignite_coal" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/mining_dim_core.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/mining_dim_core.json new file mode 100644 index 000000000..3ff669412 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/mining_dim_core.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/mining_dim_core" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/mining_dim_core" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/monazite.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/monazite.json new file mode 100644 index 000000000..fd5880fb5 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/monazite.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/monazite" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/monazite" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/monazite" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/peridot.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/peridot.json new file mode 100644 index 000000000..d990c1985 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/peridot.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/peridot" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/peridot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/peridot" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/prosperity_shard.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/prosperity_shard.json new file mode 100644 index 000000000..7bddaedb9 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/prosperity_shard.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/prosperity_shard" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/prosperity_shard" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/prosperity_shard" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/quartz.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/quartz.json new file mode 100644 index 000000000..c26c64397 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/quartz.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:gems/quartz" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/quartz" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/quartz" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_aethersent.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_aethersent.json new file mode 100644 index 000000000..d41b2bca2 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_aethersent.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_aethersent" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_aethersent" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_aethersent" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_allthemodium.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_allthemodium.json new file mode 100644 index 000000000..09a4d6533 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_allthemodium.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_allthemodium" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_allthemodium" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_allthemodium" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_aluminium.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_aluminium.json new file mode 100644 index 000000000..fa6777e49 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_aluminium.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_aluminium" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_aluminium" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_aluminium" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_antimony.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_antimony.json new file mode 100644 index 000000000..0b786129c --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_antimony.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_antimony" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_antimony" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_antimony" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_azure_silver.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_azure_silver.json new file mode 100644 index 000000000..a2162e3bc --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_azure_silver.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_azure_silver" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_azure_silver" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_azure_silver" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_cloggrum.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_cloggrum.json new file mode 100644 index 000000000..ce9f9974f --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_cloggrum.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_cloggrum" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_cloggrum" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_cloggrum" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_copper.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_copper.json new file mode 100644 index 000000000..00fac1ecc --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_copper.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_copper" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_copper" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_copper" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_crimson_iron.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_crimson_iron.json new file mode 100644 index 000000000..87c108a3e --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_crimson_iron.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_crimson_iron" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_crimson_iron" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_crimson_iron" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_froststeel.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_froststeel.json new file mode 100644 index 000000000..577e1bab5 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_froststeel.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_froststeel" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_froststeel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_froststeel" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_gold.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_gold.json new file mode 100644 index 000000000..16c5b549e --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_gold.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_gold" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_gold" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_gold" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_iesnium.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_iesnium.json new file mode 100644 index 000000000..f4fda153b --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_iesnium.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_iesnium" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_iesnium" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_iesnium" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_iridium.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_iridium.json new file mode 100644 index 000000000..46c70a90b --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_iridium.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_iridium" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_iridium" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_iridium" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_iron.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_iron.json new file mode 100644 index 000000000..58e6313ac --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_iron.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_iron" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_iron" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_iron" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_lead.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_lead.json new file mode 100644 index 000000000..3f045ffdb --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_lead.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_lead" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_lead" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_lead" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_nickel.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_nickel.json new file mode 100644 index 000000000..0e852cf4e --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_nickel.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_nickel" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_nickel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_nickel" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_osmium.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_osmium.json new file mode 100644 index 000000000..480cd0120 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_osmium.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_osmium" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_osmium" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_osmium" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_platinum.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_platinum.json new file mode 100644 index 000000000..ec4e071fa --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_platinum.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_platinum" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_platinum" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_platinum" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_silver.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_silver.json new file mode 100644 index 000000000..9a8b7ff74 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_silver.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_silver" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_silver" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_silver" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_tin.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_tin.json new file mode 100644 index 000000000..c30ad59c2 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_tin.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_tin" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_tin" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_tin" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_titanium.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_titanium.json new file mode 100644 index 000000000..d72ca7838 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_titanium.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_titanium" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_titanium" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_titanium" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_tungsten.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_tungsten.json new file mode 100644 index 000000000..a057671b9 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_tungsten.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_tungsten" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_tungsten" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_tungsten" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_unobtainium.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_unobtainium.json new file mode 100644 index 000000000..2cd1eebe2 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_unobtainium.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_unobtainium" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_unobtainium" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_unobtainium" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_uranium.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_uranium.json new file mode 100644 index 000000000..6d740b630 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_uranium.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_uranium" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_uranium" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_uranium" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_vibranium.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_vibranium.json new file mode 100644 index 000000000..fb9c67098 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_vibranium.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_vibranium" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_vibranium" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_vibranium" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_yellorium.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_yellorium.json new file mode 100644 index 000000000..7a37e0454 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_yellorium.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_yellorium" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_yellorium" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_yellorium" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_zinc.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_zinc.json new file mode 100644 index 000000000..c6e436725 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/raw_zinc.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_zinc" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/raw_zinc" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/raw_zinc" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/redstone.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/redstone.json new file mode 100644 index 000000000..7a2f8c0bb --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/redstone.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/redstone" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/redstone" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/redstone" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/ruby.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/ruby.json new file mode 100644 index 000000000..e40348142 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/ruby.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/ruby" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/ruby" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/ruby" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/rune.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/rune.json new file mode 100644 index 000000000..0b9246e83 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/rune.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/rune" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/rune" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/rune" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/sal_ammoniac.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/sal_ammoniac.json new file mode 100644 index 000000000..c512566e8 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/sal_ammoniac.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:gems/sal_ammoniac" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/sal_ammoniac" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/sal_ammoniac" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/salt.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/salt.json new file mode 100644 index 000000000..c69e3be44 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/salt.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/salt" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/salt" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/salt" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/sapphire.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/sapphire.json new file mode 100644 index 000000000..363167472 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/sapphire.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/sapphire" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/sapphire" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/sapphire" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/soulium_dust.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/soulium_dust.json new file mode 100644 index 000000000..bc19aa61e --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/soulium_dust.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/soulium_dust" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/soulium_dust" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/soulium_dust" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/stellarite.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/stellarite.json new file mode 100644 index 000000000..500879f44 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/stellarite.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/stellarite" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/stellarite" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/stellarite" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/sulfur.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/sulfur.json new file mode 100644 index 000000000..0b6452307 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/sulfur.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/sulfur" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/sulfur" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/sulfur" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/uraninite.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/uraninite.json new file mode 100644 index 000000000..ec449e868 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/eldritch/uraninite.json @@ -0,0 +1,48 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/uraninite" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/eldritch/uraninite" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/eldritch/uraninite" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/master/mining_dim_core.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/master/mining_dim_core.json new file mode 100644 index 000000000..9aa67e0ff --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/master/mining_dim_core.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/master/mining_dim_core" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/master/mining_dim_core" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/ores/crying_obsidian.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/ores/crying_obsidian.json new file mode 100644 index 000000000..690b17eef --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/ores/crying_obsidian.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/ores/crying_obsidian" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/ores/crying_obsidian" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/miner/miner/ores/gilded_blackstone.json b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/ores/gilded_blackstone.json new file mode 100644 index 000000000..4f4fe76b6 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/miner/miner/ores/gilded_blackstone.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_miner": { + "conditions": { + "items": [ + { + "items": "occultism:magic_lamp_empty" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:miner/ores/gilded_blackstone" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_miner" + ] + ], + "rewards": { + "recipes": [ + "occultism:miner/ores/gilded_blackstone" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/misc/blasting/netherite_ingot_from_dust.json b/src/generated/resources/data/occultism/advancement/recipes/misc/blasting/netherite_ingot_from_dust.json new file mode 100644 index 000000000..47bad773f --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/misc/blasting/netherite_ingot_from_dust.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_netherite_dust": { + "conditions": { + "items": [ + { + "items": "#c:dusts/netherite" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:blasting/netherite_ingot_from_dust" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_netherite_dust" + ] + ], + "rewards": { + "recipes": [ + "occultism:blasting/netherite_ingot_from_dust" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_black_impure.json b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_black_impure.json index 96360fa27..8f44bbfe8 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_black_impure.json +++ b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_black_impure.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_chalk_white": { + "has_chalk_white_impure": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_chalk_white" + "has_chalk_white_impure" ] ], "rewards": { diff --git a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_blue_impure.json b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_blue_impure.json index aee75b40b..51aab2749 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_blue_impure.json +++ b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_blue_impure.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_chalk_white": { + "has_chalk_white_impure": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_chalk_white" + "has_chalk_white_impure" ] ], "rewards": { diff --git a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_brown_impure.json b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_brown_impure.json index 4e6bcd2ac..827de2376 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_brown_impure.json +++ b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_brown_impure.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_chalk_white": { + "has_chalk_white_impure": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_chalk_white" + "has_chalk_white_impure" ] ], "rewards": { diff --git a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_cyan_impure.json b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_cyan_impure.json index b557a19be..933ce43aa 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_cyan_impure.json +++ b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_cyan_impure.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_chalk_white": { + "has_chalk_white_impure": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_chalk_white" + "has_chalk_white_impure" ] ], "rewards": { diff --git a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_gray_impure.json b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_gray_impure.json index e6c4918c1..9cf1668c4 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_gray_impure.json +++ b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_gray_impure.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_chalk_white": { + "has_chalk_white_impure": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_chalk_white" + "has_chalk_white_impure" ] ], "rewards": { diff --git a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_green_impure.json b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_green_impure.json index 241a5a5fb..0d2aa0c9f 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_green_impure.json +++ b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_green_impure.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_chalk_white": { + "has_chalk_white_impure": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_chalk_white" + "has_chalk_white_impure" ] ], "rewards": { diff --git a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_light_blue_impure.json b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_light_blue_impure.json index ab695324d..89e149438 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_light_blue_impure.json +++ b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_light_blue_impure.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_chalk_white": { + "has_chalk_white_impure": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_chalk_white" + "has_chalk_white_impure" ] ], "rewards": { diff --git a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_light_gray_impure.json b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_light_gray_impure.json index 1278acd02..6e6df9641 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_light_gray_impure.json +++ b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_light_gray_impure.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_chalk_white": { + "has_chalk_white_impure": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_chalk_white" + "has_chalk_white_impure" ] ], "rewards": { diff --git a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_lime_impure.json b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_lime_impure.json index 997d2d41c..12e9b8e46 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_lime_impure.json +++ b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_lime_impure.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_chalk_white": { + "has_chalk_white_impure": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_chalk_white" + "has_chalk_white_impure" ] ], "rewards": { diff --git a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_magenta_impure.json b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_magenta_impure.json index 9f5acb120..39a49d86b 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_magenta_impure.json +++ b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_magenta_impure.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_chalk_white": { + "has_chalk_white_impure": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_chalk_white" + "has_chalk_white_impure" ] ], "rewards": { diff --git a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_orange_impure.json b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_orange_impure.json index 5a46e6be3..c70a15d0d 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_orange_impure.json +++ b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_orange_impure.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_chalk_white": { + "has_chalk_white_impure": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_chalk_white" + "has_chalk_white_impure" ] ], "rewards": { diff --git a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_pink_impure.json b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_pink_impure.json index d34724fdd..09c1673f2 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_pink_impure.json +++ b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_pink_impure.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_chalk_white": { + "has_chalk_white_impure": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_chalk_white" + "has_chalk_white_impure" ] ], "rewards": { diff --git a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_purple_impure.json b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_purple_impure.json index 53295e335..def3a84d8 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_purple_impure.json +++ b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_purple_impure.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_chalk_white": { + "has_chalk_white_impure": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_chalk_white" + "has_chalk_white_impure" ] ], "rewards": { diff --git a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_red_impure.json b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_red_impure.json index f9ff3fbbb..b019fbc94 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_red_impure.json +++ b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_red_impure.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_chalk_white": { + "has_chalk_white_impure": { "conditions": { "items": [ { @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_chalk_white" + "has_chalk_white_impure" ] ], "rewards": { diff --git a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_gold_impure.json b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_yellow_impure.json similarity index 73% rename from src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_gold_impure.json rename to src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_yellow_impure.json index 130fb8525..71c10e916 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_gold_impure.json +++ b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/chalk_yellow_impure.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_chalk_white": { + "has_chalk_white_impure": { "conditions": { "items": [ { @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "occultism:crafting/chalk_gold_impure" + "recipe": "occultism:crafting/chalk_yellow_impure" }, "trigger": "minecraft:recipe_unlocked" } @@ -21,12 +21,12 @@ "requirements": [ [ "has_the_recipe", - "has_chalk_white" + "has_chalk_white_impure" ] ], "rewards": { "recipes": [ - "occultism:crafting/chalk_gold_impure" + "occultism:crafting/chalk_yellow_impure" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/netherite_dust.json b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/netherite_dust.json new file mode 100644 index 000000000..6f9586477 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/misc/crafting/netherite_dust.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_netherite_scrap_dust": { + "conditions": { + "items": [ + { + "items": "#c:dusts/netherite_scrap" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:crafting/netherite_dust" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_netherite_scrap_dust" + ] + ], + "rewards": { + "recipes": [ + "occultism:crafting/netherite_dust" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/misc/smelting/netherite_ingot_from_dust.json b/src/generated/resources/data/occultism/advancement/recipes/misc/smelting/netherite_ingot_from_dust.json new file mode 100644 index 000000000..fad332213 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/misc/smelting/netherite_ingot_from_dust.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_netherite_dust": { + "conditions": { + "items": [ + { + "items": "#c:dusts/netherite" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:smelting/netherite_ingot_from_dust" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_netherite_dust" + ] + ], + "rewards": { + "recipes": [ + "occultism:smelting/netherite_ingot_from_dust" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_budding_amethyst.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_budding_amethyst.json new file mode 100644 index 000000000..0db254625 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_budding_amethyst.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_bound_afrit": { + "conditions": { + "items": [ + { + "items": "occultism:book_of_binding_bound_afrit" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:ritual/craft_budding_amethyst" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_afrit" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/craft_budding_amethyst" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_dragonyst_dust.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_dragonyst_dust.json new file mode 100644 index 000000000..4d4d93a5e --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_dragonyst_dust.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_bound_marid": { + "conditions": { + "items": [ + { + "items": "occultism:book_of_binding_bound_marid" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:ritual/craft_dragonyst_dust" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_marid" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/craft_dragonyst_dust" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_otherworld_bird.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_gray_paste.json similarity index 81% rename from src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_otherworld_bird.json rename to src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_gray_paste.json index 9770816a8..16662b7c6 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_otherworld_bird.json +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_gray_paste.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "occultism:ritual/summon_wild_otherworld_bird" + "recipe": "occultism:ritual/craft_gray_paste" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "occultism:ritual/summon_wild_otherworld_bird" + "occultism:ritual/craft_gray_paste" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_miner_ancient_eldritch.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_miner_ancient_eldritch.json new file mode 100644 index 000000000..e03a38438 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_miner_ancient_eldritch.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_mining_dimension_core": { + "conditions": { + "items": [ + { + "items": "occultism:mining_dim_core" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:ritual/craft_miner_ancient_eldritch" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_mining_dimension_core" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/craft_miner_ancient_eldritch" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_parrot.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_nature_paste.json similarity index 83% rename from src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_parrot.json rename to src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_nature_paste.json index aab2f931e..2dcf0663f 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_parrot.json +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_nature_paste.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "occultism:ritual/summon_wild_parrot" + "recipe": "occultism:ritual/craft_nature_paste" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "occultism:ritual/summon_wild_parrot" + "occultism:ritual/craft_nature_paste" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_reinforced_deepslate.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_reinforced_deepslate.json new file mode 100644 index 000000000..cc699cab1 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_reinforced_deepslate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_bound_marid": { + "conditions": { + "items": [ + { + "items": "occultism:book_of_binding_bound_marid" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:ritual/craft_reinforced_deepslate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_marid" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/craft_reinforced_deepslate" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_research_fragment_dust.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_research_fragment_dust.json new file mode 100644 index 000000000..43b37d409 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_research_fragment_dust.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_bound_foliot": { + "conditions": { + "items": [ + { + "items": "occultism:book_of_binding_bound_foliot" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:ritual/craft_research_fragment_dust" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_foliot" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/craft_research_fragment_dust" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_wild_trim.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_wild_trim.json index 41994ca34..32bed3191 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_wild_trim.json +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_wild_trim.json @@ -1,11 +1,11 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_bound_marid": { + "has_bound_afrit": { "conditions": { "items": [ { - "items": "occultism:book_of_binding_bound_marid" + "items": "occultism:book_of_binding_bound_afrit" } ] }, @@ -21,7 +21,7 @@ "requirements": [ [ "has_the_recipe", - "has_bound_marid" + "has_bound_afrit" ] ], "rewards": { diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_horde_illager.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_witherite_dust.json similarity index 83% rename from src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_horde_illager.json rename to src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_witherite_dust.json index 6de07f3f0..488078f68 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_horde_illager.json +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_witherite_dust.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "occultism:ritual/summon_horde_illager" + "recipe": "occultism:ritual/craft_witherite_dust" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "occultism:ritual/summon_horde_illager" + "occultism:ritual/craft_witherite_dust" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_bee.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_bee.json new file mode 100644 index 000000000..f676792e2 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_bee.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_bound_djinni": { + "conditions": { + "items": [ + { + "items": "occultism:book_of_binding_bound_djinni" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:ritual/possess_bee" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_djinni" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/possess_bee" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_goat.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_goat.json new file mode 100644 index 000000000..0762b5bf1 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_goat.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_bound_marid": { + "conditions": { + "items": [ + { + "items": "occultism:book_of_binding_bound_marid" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:ritual/possess_goat" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_marid" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/possess_goat" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_random_animal.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_random_animal.json new file mode 100644 index 000000000..9db04fdc7 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_random_animal.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_bound_foliot": { + "conditions": { + "items": [ + { + "items": "occultism:book_of_binding_bound_foliot" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:ritual/possess_random_animal" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_foliot" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/possess_random_animal" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_unbound_otherworld_bird.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_unbound_otherworld_bird.json new file mode 100644 index 000000000..19184bc26 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_unbound_otherworld_bird.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_bound_djinni": { + "conditions": { + "items": [ + { + "items": "occultism:book_of_binding_bound_djinni" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:ritual/possess_unbound_otherworld_bird" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_djinni" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/possess_unbound_otherworld_bird" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_unbound_parrot.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_unbound_parrot.json new file mode 100644 index 000000000..1d69e20a3 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_unbound_parrot.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_bound_foliot": { + "conditions": { + "items": [ + { + "items": "occultism:book_of_binding_bound_foliot" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:ritual/possess_unbound_parrot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_foliot" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/possess_unbound_parrot" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_allay.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_witch.json similarity index 85% rename from src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_allay.json rename to src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_witch.json index 763ae83bf..47fa942b8 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_allay.json +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_witch.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "occultism:ritual/summon_allay" + "recipe": "occultism:ritual/possess_witch" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "occultism:ritual/summon_allay" + "occultism:ritual/possess_witch" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_strong_breeze.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_zombie_piglin.json similarity index 83% rename from src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_strong_breeze.json rename to src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_zombie_piglin.json index d38c3fca6..ccdd16f7b 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_strong_breeze.json +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_zombie_piglin.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "occultism:ritual/possess_strong_breeze" + "recipe": "occultism:ritual/possess_zombie_piglin" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "occultism:ritual/possess_strong_breeze" + "occultism:ritual/possess_zombie_piglin" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_breeze.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/repair_armors.json similarity index 84% rename from src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_breeze.json rename to src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/repair_armors.json index 595be0875..86ddcd77c 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_breeze.json +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/repair_armors.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "occultism:ritual/possess_breeze" + "recipe": "occultism:ritual/repair_armors" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "occultism:ritual/possess_breeze" + "occultism:ritual/repair_armors" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/repair_chalks.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/repair_chalks.json new file mode 100644 index 000000000..3fc307325 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/repair_chalks.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_the_recipe": { + "conditions": { + "recipe": "occultism:ritual/repair_chalks" + }, + "trigger": "minecraft:recipe_unlocked" + }, + "has_white_chalk": { + "conditions": { + "items": [ + { + "items": "occultism:chalk_white" + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_white_chalk" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/repair_chalks" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_hunt.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/repair_miners.json similarity index 84% rename from src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_hunt.json rename to src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/repair_miners.json index a3206e635..51afb1795 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_hunt.json +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/repair_miners.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "occultism:ritual/summon_wild_hunt" + "recipe": "occultism:ritual/repair_miners" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "occultism:ritual/summon_wild_hunt" + "occultism:ritual/repair_miners" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_husk.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/repair_tools.json similarity index 84% rename from src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_husk.json rename to src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/repair_tools.json index 6ad56fec4..3b4074fd7 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_husk.json +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/repair_tools.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "occultism:ritual/summon_wild_husk" + "recipe": "occultism:ritual/repair_tools" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "occultism:ritual/summon_wild_husk" + "occultism:ritual/repair_tools" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_random_animal.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/resurrect_allay.json similarity index 83% rename from src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_random_animal.json rename to src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/resurrect_allay.json index b9168fd2d..ba194892e 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_random_animal.json +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/resurrect_allay.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "occultism:ritual/summon_random_animal" + "recipe": "occultism:ritual/resurrect_allay" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "occultism:ritual/summon_random_animal" + "occultism:ritual/resurrect_allay" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_weak_breeze.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_unbound_afrit.json similarity index 83% rename from src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_weak_breeze.json rename to src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_unbound_afrit.json index bca51eaae..ed90ce75b 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_weak_breeze.json +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_unbound_afrit.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "occultism:ritual/possess_weak_breeze" + "recipe": "occultism:ritual/summon_unbound_afrit" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "occultism:ritual/possess_weak_breeze" + "occultism:ritual/summon_unbound_afrit" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_unbound_marid.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_unbound_marid.json new file mode 100644 index 000000000..db225842d --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_unbound_marid.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_bound_marid": { + "conditions": { + "items": [ + { + "items": "occultism:book_of_binding_bound_marid" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:ritual/summon_unbound_marid" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_marid" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/summon_unbound_marid" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_creeper.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_creeper.json deleted file mode 100644 index 2850e89c8..000000000 --- a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_creeper.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_bound_afrit": { - "conditions": { - "items": [ - { - "items": "occultism:book_of_binding_bound_afrit" - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "occultism:ritual/summon_wild_creeper" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_the_recipe", - "has_bound_afrit" - ] - ], - "rewards": { - "recipes": [ - "occultism:ritual/summon_wild_creeper" - ] - } -} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_drowned.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_drowned.json deleted file mode 100644 index be450f29a..000000000 --- a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_drowned.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_bound_afrit": { - "conditions": { - "items": [ - { - "items": "occultism:book_of_binding_bound_afrit" - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "occultism:ritual/summon_wild_drowned" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_the_recipe", - "has_bound_afrit" - ] - ], - "rewards": { - "recipes": [ - "occultism:ritual/summon_wild_drowned" - ] - } -} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_silverfish.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_silverfish.json deleted file mode 100644 index 69baeb735..000000000 --- a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_silverfish.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_bound_afrit": { - "conditions": { - "items": [ - { - "items": "occultism:book_of_binding_bound_afrit" - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "occultism:ritual/summon_wild_silverfish" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_the_recipe", - "has_bound_afrit" - ] - ], - "rewards": { - "recipes": [ - "occultism:ritual/summon_wild_silverfish" - ] - } -} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_afrit.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_breeze.json similarity index 84% rename from src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_afrit.json rename to src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_breeze.json index e97b68cc7..aa2a04ed0 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_afrit.json +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_breeze.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "occultism:ritual/summon_wild_afrit" + "recipe": "occultism:ritual/wild_breeze" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "occultism:ritual/summon_wild_afrit" + "occultism:ritual/wild_breeze" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_creeper.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_creeper.json new file mode 100644 index 000000000..074ef36a7 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_creeper.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_bound_afrit": { + "conditions": { + "items": [ + { + "items": "occultism:book_of_binding_bound_afrit" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:ritual/wild_creeper" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_afrit" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/wild_creeper" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_drowned.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_drowned.json new file mode 100644 index 000000000..e4f18260d --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_drowned.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_bound_afrit": { + "conditions": { + "items": [ + { + "items": "occultism:book_of_binding_bound_afrit" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:ritual/wild_drowned" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_afrit" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/wild_drowned" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_horde_illager.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_horde_illager.json new file mode 100644 index 000000000..968bc3fba --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_horde_illager.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_bound_afrit": { + "conditions": { + "items": [ + { + "items": "occultism:book_of_binding_bound_afrit" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:ritual/wild_horde_illager" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_afrit" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/wild_horde_illager" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_hunt.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_hunt.json new file mode 100644 index 000000000..2f111f24d --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_hunt.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_bound_afrit": { + "conditions": { + "items": [ + { + "items": "occultism:book_of_binding_bound_afrit" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:ritual/wild_hunt" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_afrit" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/wild_hunt" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_husk.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_husk.json new file mode 100644 index 000000000..9235d94ca --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_husk.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_bound_afrit": { + "conditions": { + "items": [ + { + "items": "occultism:book_of_binding_bound_afrit" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:ritual/wild_husk" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_afrit" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/wild_husk" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_silverfish.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_silverfish.json new file mode 100644 index 000000000..0a3a45853 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_silverfish.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_bound_afrit": { + "conditions": { + "items": [ + { + "items": "occultism:book_of_binding_bound_afrit" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:ritual/wild_silverfish" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_afrit" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/wild_silverfish" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_strong_breeze.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_strong_breeze.json new file mode 100644 index 000000000..8d8630c5d --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_strong_breeze.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_bound_afrit": { + "conditions": { + "items": [ + { + "items": "occultism:book_of_binding_bound_afrit" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:ritual/wild_strong_breeze" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_afrit" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/wild_strong_breeze" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_weak_breeze.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_weak_breeze.json new file mode 100644 index 000000000..9fb923e85 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/wild_weak_breeze.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_bound_afrit": { + "conditions": { + "items": [ + { + "items": "occultism:book_of_binding_bound_afrit" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:ritual/wild_weak_breeze" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_afrit" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/wild_weak_breeze" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/spirit_fire/spirit_fire/chalk_gold.json b/src/generated/resources/data/occultism/advancement/recipes/spirit_fire/spirit_fire/chalk_gold.json deleted file mode 100644 index 4f6dc2451..000000000 --- a/src/generated/resources/data/occultism/advancement/recipes/spirit_fire/spirit_fire/chalk_gold.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_chalk_gold_impure": { - "conditions": { - "items": [ - { - "items": "occultism:chalk_gold_impure" - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "occultism:spirit_fire/chalk_gold" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_the_recipe", - "has_chalk_gold_impure" - ] - ], - "rewards": { - "recipes": [ - "occultism:spirit_fire/chalk_gold" - ] - } -} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/spirit_fire/spirit_fire/chalk_yellow.json b/src/generated/resources/data/occultism/advancement/recipes/spirit_fire/spirit_fire/chalk_yellow.json new file mode 100644 index 000000000..cef6d1e49 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/spirit_fire/spirit_fire/chalk_yellow.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_chalk_yellow_impure": { + "conditions": { + "items": [ + { + "items": "occultism:chalk_yellow_impure" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "occultism:spirit_fire/chalk_yellow" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_chalk_yellow_impure" + ] + ], + "rewards": { + "recipes": [ + "occultism:spirit_fire/chalk_yellow" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/advancement/recipes/spirit_trade/spirit_trade/otherworld_sapling.json b/src/generated/resources/data/occultism/advancement/recipes/spirit_trade/spirit_trade/otherworld_sapling.json index c466744f7..c5f485348 100644 --- a/src/generated/resources/data/occultism/advancement/recipes/spirit_trade/spirit_trade/otherworld_sapling.json +++ b/src/generated/resources/data/occultism/advancement/recipes/spirit_trade/spirit_trade/otherworld_sapling.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "items": "occultism:otherworld_sapling_natural" + "items": "minecraft:air" } ] }, diff --git a/src/generated/resources/data/occultism/loot_table/blocks/otherworld_leaves_natural.json b/src/generated/resources/data/occultism/loot_table/blocks/otherworld_leaves_natural.json index 66971bae2..82b626709 100644 --- a/src/generated/resources/data/occultism/loot_table/blocks/otherworld_leaves_natural.json +++ b/src/generated/resources/data/occultism/loot_table/blocks/otherworld_leaves_natural.json @@ -53,7 +53,7 @@ } } ], - "name": "occultism:otherworld_sapling_natural" + "name": "minecraft:air" }, { "type": "minecraft:item", diff --git a/src/generated/resources/data/occultism/loot_table/blocks/otherworld_sapling_natural.json b/src/generated/resources/data/occultism/loot_table/blocks/otherworld_sapling_natural.json index bb2400fb7..805171c63 100644 --- a/src/generated/resources/data/occultism/loot_table/blocks/otherworld_sapling_natural.json +++ b/src/generated/resources/data/occultism/loot_table/blocks/otherworld_sapling_natural.json @@ -18,7 +18,7 @@ } } ], - "name": "occultism:otherworld_sapling_natural" + "name": "minecraft:air" }, { "type": "minecraft:item", diff --git a/src/generated/resources/data/occultism/loot_table/entities/marid_unbound.json b/src/generated/resources/data/occultism/loot_table/entities/marid_unbound.json new file mode 100644 index 000000000..3be8ddc34 --- /dev/null +++ b/src/generated/resources/data/occultism/loot_table/entities/marid_unbound.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.9 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "enchantment": "minecraft:looting", + "function": "minecraft:enchanted_count_increase" + } + ], + "name": "occultism:marid_essence" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "occultism:entities/marid_unbound" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/loot_table/entities/mercy_goat.json b/src/generated/resources/data/occultism/loot_table/entities/mercy_goat.json new file mode 100644 index 000000000..4bc4bc8ac --- /dev/null +++ b/src/generated/resources/data/occultism/loot_table/entities/mercy_goat.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "enchantment": "minecraft:looting", + "function": "minecraft:enchanted_count_increase" + } + ], + "name": "occultism:cruelty_essence" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "occultism:entities/mercy_goat" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/loot_table/entities/possessed_bee.json b/src/generated/resources/data/occultism/loot_table/entities/possessed_bee.json new file mode 100644 index 000000000..bf127d453 --- /dev/null +++ b/src/generated/resources/data/occultism/loot_table/entities/possessed_bee.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.5 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.3 + }, + "enchantment": "minecraft:looting", + "function": "minecraft:enchanted_count_increase" + } + ], + "name": "occultism:cursed_honey" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "occultism:entities/possessed_bee" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/loot_table/entities/possessed_witch.json b/src/generated/resources/data/occultism/loot_table/entities/possessed_witch.json new file mode 100644 index 000000000..ae44c589c --- /dev/null +++ b/src/generated/resources/data/occultism/loot_table/entities/possessed_witch.json @@ -0,0 +1,42 @@ +{ + "type": "minecraft:entity", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 0.0 + }, + "enchantment": "minecraft:looting", + "function": "minecraft:enchanted_count_increase" + } + ], + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:experience_bottle", + "weight": 8 + }, + { + "type": "minecraft:item", + "name": "minecraft:honey_bottle", + "weight": 4 + }, + { + "type": "minecraft:item", + "name": "minecraft:ominous_bottle", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "minecraft:potion" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "occultism:entities/possessed_witch" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/loot_table/entities/possessed_zombie_piglin.json b/src/generated/resources/data/occultism/loot_table/entities/possessed_zombie_piglin.json new file mode 100644 index 000000000..43c530932 --- /dev/null +++ b/src/generated/resources/data/occultism/loot_table/entities/possessed_zombie_piglin.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "enchantment": "minecraft:looting", + "function": "minecraft:enchanted_count_increase" + } + ], + "name": "occultism:demonic_meat" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "occultism:entities/possessed_zombie_piglin" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/loot_table/entities/wild_horde_drowned.json b/src/generated/resources/data/occultism/loot_table/entities/wild_horde_drowned.json index bcb367570..0baec3cdf 100644 --- a/src/generated/resources/data/occultism/loot_table/entities/wild_horde_drowned.json +++ b/src/generated/resources/data/occultism/loot_table/entities/wild_horde_drowned.json @@ -6,11 +6,12 @@ "entries": [ { "type": "minecraft:empty", - "weight": 3 + "weight": 2 }, { "type": "minecraft:item", - "name": "minecraft:sniffer_egg" + "name": "minecraft:sniffer_egg", + "weight": 2 }, { "type": "minecraft:item", diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/crafting_rituals.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/crafting_rituals.json index d236c3f79..f8449dee5 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/crafting_rituals.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/crafting_rituals.json @@ -5,8 +5,8 @@ "background_texture_zoom_multiplier": 1.0, "background_width": 512, "condition": { - "type": "modonomicon:entry_read", - "entry_id": "getting_started/intro" + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/purple" }, "description": "", "display_mode": "node", @@ -20,5 +20,5 @@ "max_scroll_y": 512, "name": "book.occultism.dictionary_of_spirits.crafting_rituals.name", "show_category_button": true, - "sort_number": 7 + "sort_number": 8 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/familiar_rituals.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/familiar_rituals.json index 0dc100f84..c2db3d1bf 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/familiar_rituals.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/familiar_rituals.json @@ -5,20 +5,20 @@ "background_texture_zoom_multiplier": 1.0, "background_width": 512, "condition": { - "type": "modonomicon:entry_read", - "entry_id": "getting_started/intro" + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/yellow" }, "description": "", "display_mode": "node", "entry_textures": "modonomicon:textures/gui/entry_textures.png", "icon": { "height": 16, - "texture": "occultism:textures/gui/book/parrot.png", + "texture": "occultism:textures/gui/book/familiar.png", "width": 16 }, "max_scroll_x": 512, "max_scroll_y": 512, "name": "book.occultism.dictionary_of_spirits.familiar_rituals.name", "show_category_button": true, - "sort_number": 8 + "sort_number": 7 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/pentacles.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/pentacles.json index 9241a4097..dd67cf623 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/pentacles.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/pentacles.json @@ -12,11 +12,13 @@ "display_mode": "node", "entry_textures": "modonomicon:textures/gui/entry_textures.png", "icon": { - "item": "occultism:pentacle" + "height": 16, + "texture": "occultism:textures/gui/book/pentacle.png", + "width": 16 }, "max_scroll_x": 512, "max_scroll_y": 512, "name": "book.occultism.dictionary_of_spirits.pentacles.name", "show_category_button": true, - "sort_number": 9 + "sort_number": 4 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/possession_rituals.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/possession_rituals.json index 5ca640fdd..d54ff9fe9 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/possession_rituals.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/possession_rituals.json @@ -5,8 +5,8 @@ "background_texture_zoom_multiplier": 1.0, "background_width": 512, "condition": { - "type": "modonomicon:entry_read", - "entry_id": "getting_started/intro" + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/yellow" }, "description": "", "display_mode": "node", diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/rituals.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/rituals.json index 07a5ecfea..9dfa991d8 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/rituals.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/rituals.json @@ -20,5 +20,5 @@ "max_scroll_y": 512, "name": "book.occultism.dictionary_of_spirits.rituals.name", "show_category_button": true, - "sort_number": 4 + "sort_number": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/storage.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/storage.json index 66fb06d8e..eeb02156c 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/storage.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/storage.json @@ -6,7 +6,7 @@ "background_width": 512, "condition": { "type": "modonomicon:entry_read", - "entry_id": "getting_started/intro" + "entry_id": "crafting_rituals/craft_storage_system" }, "description": "", "display_mode": "node", @@ -18,5 +18,5 @@ "max_scroll_y": 512, "name": "book.occultism.dictionary_of_spirits.storage.name", "show_category_button": true, - "sort_number": 3 + "sort_number": 9 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/summoning_rituals.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/summoning_rituals.json index 65e71f3b1..0e321bce3 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/summoning_rituals.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/categories/summoning_rituals.json @@ -5,8 +5,8 @@ "background_texture_zoom_multiplier": 1.0, "background_width": 512, "condition": { - "type": "modonomicon:entry_read", - "entry_id": "getting_started/intro" + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/white" }, "description": "", "display_mode": "node", diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/apprentice_ritual_satchel.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/apprentice_ritual_satchel.json index d6cf21656..32cdbe030 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/apprentice_ritual_satchel.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/apprentice_ritual_satchel.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "crafting_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/craft_djinni" }, "description": "book.occultism.dictionary_of_spirits.crafting_rituals.apprentice_ritual_satchel.description", "hide_while_locked": false, @@ -67,7 +68,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 19, + "sort_number": 20, "x": 3, "y": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/artisanal_ritual_satchel.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/artisanal_ritual_satchel.json index f2092e27b..805d22d5e 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/artisanal_ritual_satchel.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/artisanal_ritual_satchel.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "crafting_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/craft_afrit" }, "description": "book.occultism.dictionary_of_spirits.crafting_rituals.artisanal_ritual_satchel.description", "hide_while_locked": false, @@ -78,7 +79,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 20, + "sort_number": 21, "x": 5, "y": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_afrit_miner.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_afrit_miner.json index 82e8fa57e..81a86b62a 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_afrit_miner.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_afrit_miner.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "crafting_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/craft_afrit" }, "description": "", "hide_while_locked": false, diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_ancient_miner.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_ancient_miner.json new file mode 100644 index 000000000..6ce1ab5dc --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_ancient_miner.json @@ -0,0 +1,52 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "crafting_rituals", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/contact_eldritch_spirit" + }, + "description": "", + "hide_while_locked": false, + "icon": { + "item": "occultism:miner_ancient_eldritch" + }, + "name": "book.occultism.dictionary_of_spirits.crafting_rituals.craft_ancient_miner.name", + "pages": [ + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "occultism:miner_ancient_eldritch" + }, + "text": "book.occultism.dictionary_of_spirits.crafting_rituals.craft_ancient_miner.spotlight.text", + "title": "" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/craft_miner_ancient_eldritch", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "crafting_rituals/craft_afrit_miner", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 8, + "x": 4, + "y": -5 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_budding_amethyst.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_budding_amethyst.json new file mode 100644 index 000000000..fb391200a --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_budding_amethyst.json @@ -0,0 +1,52 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "crafting_rituals", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/contact_wild_spirit" + }, + "description": "", + "hide_while_locked": false, + "icon": { + "item": "minecraft:budding_amethyst" + }, + "name": "book.occultism.dictionary_of_spirits.crafting_rituals.craft_budding_amethyst.name", + "pages": [ + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "minecraft:budding_amethyst" + }, + "text": "book.occultism.dictionary_of_spirits.crafting_rituals.craft_budding_amethyst.spotlight.text", + "title": "" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/craft_budding_amethyst", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "crafting_rituals/overview", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 25, + "x": 3, + "y": -3 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_dimensional_matrix.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_dimensional_matrix.json index c8b5b0292..236769883 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_dimensional_matrix.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_dimensional_matrix.json @@ -2,9 +2,6 @@ "background_u_index": 0, "background_v_index": 0, "category": "crafting_rituals", - "condition": { - "type": "modonomicon:true" - }, "description": "", "hide_while_locked": false, "icon": { @@ -45,7 +42,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 9, + "sort_number": 10, "x": -2, "y": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_dimensional_mineshaft.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_dimensional_mineshaft.json index 905c90969..f0222574d 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_dimensional_mineshaft.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_dimensional_mineshaft.json @@ -2,9 +2,6 @@ "background_u_index": 0, "background_v_index": 0, "category": "crafting_rituals", - "condition": { - "type": "modonomicon:true" - }, "description": "", "hide_while_locked": false, "icon": { diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_djinni_miner.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_djinni_miner.json index 00cbace5b..42d6be220 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_djinni_miner.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_djinni_miner.json @@ -2,9 +2,6 @@ "background_u_index": 0, "background_v_index": 0, "category": "crafting_rituals", - "condition": { - "type": "modonomicon:true" - }, "description": "", "hide_while_locked": false, "icon": { diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_familiar_ring.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_familiar_ring.json index a5d439bf0..f3c74eeca 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_familiar_ring.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_familiar_ring.json @@ -2,9 +2,6 @@ "background_u_index": 0, "background_v_index": 0, "category": "crafting_rituals", - "condition": { - "type": "modonomicon:true" - }, "description": "", "hide_while_locked": false, "icon": { @@ -56,7 +53,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 22, + "sort_number": 23, "x": -2, "y": -3 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_foliot_miner.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_foliot_miner.json index 3480c7636..0da00f49e 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_foliot_miner.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_foliot_miner.json @@ -2,9 +2,6 @@ "background_u_index": 0, "background_v_index": 0, "category": "crafting_rituals", - "condition": { - "type": "modonomicon:true" - }, "description": "", "hide_while_locked": false, "icon": { diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_infused_pickaxe.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_infused_pickaxe.json index b271a0337..ac5b78b63 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_infused_pickaxe.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_infused_pickaxe.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "crafting_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/craft_djinni" }, "description": "", "hide_while_locked": false, diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_marid_miner.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_marid_miner.json index 5291b956b..e4d6598cb 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_marid_miner.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_marid_miner.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "crafting_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/craft_marid" }, "description": "", "hide_while_locked": false, diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_otherworld_goggles.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_otherworld_goggles.json index d3938b1d1..7f71cad2c 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_otherworld_goggles.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_otherworld_goggles.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "crafting_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/craft_foliot" }, "description": "", "hide_while_locked": false, @@ -101,7 +102,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 17, + "sort_number": 18, "x": -6, "y": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_reinforced_deepslate.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_reinforced_deepslate.json new file mode 100644 index 000000000..1a84a924a --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_reinforced_deepslate.json @@ -0,0 +1,52 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "crafting_rituals", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/contact_eldritch_spirit" + }, + "description": "", + "hide_while_locked": true, + "icon": { + "item": "minecraft:reinforced_deepslate" + }, + "name": "book.occultism.dictionary_of_spirits.crafting_rituals.craft_reinforced_deepslate.name", + "pages": [ + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "minecraft:reinforced_deepslate" + }, + "text": "book.occultism.dictionary_of_spirits.crafting_rituals.craft_reinforced_deepslate.spotlight.text", + "title": "" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/craft_reinforced_deepslate", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "crafting_rituals/overview", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 26, + "x": 5, + "y": -3 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_satchel.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_satchel.json index 75a494669..1e779ec25 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_satchel.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_satchel.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "crafting_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/craft_foliot" }, "description": "", "hide_while_locked": false, @@ -45,7 +46,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 18, + "sort_number": 19, "x": 1, "y": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_soul_gem.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_soul_gem.json index e1168f568..2aab73ae4 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_soul_gem.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_soul_gem.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "crafting_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/craft_djinni" }, "description": "", "hide_while_locked": false, @@ -56,7 +57,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 21, + "sort_number": 22, "x": -4, "y": -3 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_stabilizer_tier1.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_stabilizer_tier1.json index fe4dcce20..a3847d717 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_stabilizer_tier1.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_stabilizer_tier1.json @@ -2,9 +2,6 @@ "background_u_index": 0, "background_v_index": 0, "category": "crafting_rituals", - "condition": { - "type": "modonomicon:true" - }, "description": "", "hide_while_locked": false, "icon": { @@ -45,7 +42,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 11, + "sort_number": 12, "x": -2, "y": 5 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_stabilizer_tier2.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_stabilizer_tier2.json index f18679255..4529e6781 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_stabilizer_tier2.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_stabilizer_tier2.json @@ -2,9 +2,6 @@ "background_u_index": 0, "background_v_index": 0, "category": "crafting_rituals", - "condition": { - "type": "modonomicon:true" - }, "description": "", "hide_while_locked": false, "icon": { @@ -45,7 +42,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 12, + "sort_number": 13, "x": 0, "y": 5 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_stabilizer_tier3.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_stabilizer_tier3.json index 8a8191f10..a60d5dc8e 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_stabilizer_tier3.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_stabilizer_tier3.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "crafting_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/craft_afrit" }, "description": "", "hide_while_locked": false, @@ -45,7 +46,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 13, + "sort_number": 14, "x": 2, "y": 5 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_stabilizer_tier4.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_stabilizer_tier4.json index 4619b39ee..874db5975 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_stabilizer_tier4.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_stabilizer_tier4.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "crafting_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/craft_marid" }, "description": "", "hide_while_locked": false, @@ -45,7 +46,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 14, + "sort_number": 15, "x": 4, "y": 5 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_stable_wormhole.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_stable_wormhole.json index ca95e89d0..f942c648f 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_stable_wormhole.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_stable_wormhole.json @@ -2,9 +2,6 @@ "background_u_index": 0, "background_v_index": 0, "category": "crafting_rituals", - "condition": { - "type": "modonomicon:true" - }, "description": "", "hide_while_locked": false, "icon": { @@ -45,7 +42,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 15, + "sort_number": 16, "x": 0, "y": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_storage_controller_base.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_storage_controller_base.json index 66cbaf40a..5225cb6f3 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_storage_controller_base.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_storage_controller_base.json @@ -2,9 +2,6 @@ "background_u_index": 0, "background_v_index": 0, "category": "crafting_rituals", - "condition": { - "type": "modonomicon:true" - }, "description": "", "hide_while_locked": false, "icon": { @@ -45,7 +42,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 10, + "sort_number": 11, "x": -2, "y": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_storage_remote.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_storage_remote.json index ae1a9eef5..ed2292dc1 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_storage_remote.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_storage_remote.json @@ -2,9 +2,6 @@ "background_u_index": 0, "background_v_index": 0, "category": "crafting_rituals", - "condition": { - "type": "modonomicon:true" - }, "description": "", "hide_while_locked": false, "icon": { @@ -39,13 +36,13 @@ "parents": [ { "draw_arrow": true, - "entry": "crafting_rituals/craft_stable_wormhole", + "entry": "crafting_rituals/craft_storage_controller_base", "line_enabled": true, "line_reversed": false } ], "show_when_any_parent_unlocked": false, - "sort_number": 16, - "x": 2, + "sort_number": 17, + "x": -4, "y": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_storage_system.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_storage_system.json index 903c9e11a..f2c7df6cc 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_storage_system.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_storage_system.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "crafting_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/craft_djinni" }, "description": "", "hide_while_locked": false, @@ -34,7 +35,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 8, + "sort_number": 9, "x": -4, "y": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_wild_trim.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_wild_trim.json index be5eb0e23..e3f0ece46 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_wild_trim.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_wild_trim.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "crafting_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/contact_wild_spirit" }, "description": "", "hide_while_locked": false, @@ -45,7 +46,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 23, + "sort_number": 24, "x": 1, "y": -3 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/overview.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/overview.json index a5d034cb3..3f0c818ea 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/overview.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/overview.json @@ -3,7 +3,8 @@ "background_v_index": 1, "category": "crafting_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/craft_foliot" }, "description": "", "hide_while_locked": false, diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/repair.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/repair.json new file mode 100644 index 000000000..7fb8fd4df --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/repair.json @@ -0,0 +1,85 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "crafting_rituals", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/craft_djinni" + }, + "description": "", + "hide_while_locked": false, + "icon": { + "item": "occultism:repair_icon" + }, + "name": "book.occultism.dictionary_of_spirits.crafting_rituals.repair.name", + "pages": [ + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "minecraft:anvil" + }, + "text": "book.occultism.dictionary_of_spirits.crafting_rituals.repair.spotlight.text", + "title": "book.occultism.dictionary_of_spirits.crafting_rituals.repair.spotlight.title" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/repair_chalks", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/repair_miners", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/repair_tools", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/repair_armors", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "crafting_rituals/overview", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 27, + "x": 7, + "y": -1 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/return_to_rituals.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/return_to_rituals.json index 4faf76bc2..29e081669 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/return_to_rituals.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/return_to_rituals.json @@ -4,7 +4,8 @@ "category": "crafting_rituals", "category_to_open": "rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/craft_foliot" }, "description": "", "hide_while_locked": false, diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/demonic_partner.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/demonic_partner.json index ee9cf74a1..89890eab7 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/demonic_partner.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/demonic_partner.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "familiar_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_djinni" }, "description": "book.occultism.dictionary_of_spirits.familiar_rituals.demonic_partner.description", "hide_while_locked": false, @@ -130,6 +131,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": 21, - "x": 2, - "y": -2 + "x": 4, + "y": 0 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_bat.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_bat.json index 0d45c97e2..eb4edfd1b 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_bat.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_bat.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "familiar_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_djinni" }, "description": "", "hide_while_locked": false, @@ -60,7 +61,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 3, - "x": -6, - "y": 2 + "sort_number": 4, + "x": 1, + "y": 4 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_beaver.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_beaver.json index 720a98353..22c3ee12c 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_beaver.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_beaver.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "familiar_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_foliot" }, "description": "", "hide_while_locked": false, @@ -60,7 +61,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 4, + "sort_number": 5, "x": -5, - "y": 4 + "y": -4 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_beholder.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_beholder.json index cc4e7cd6b..a3e5440eb 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_beholder.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_beholder.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "familiar_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_djinni" }, "description": "", "hide_while_locked": false, @@ -60,7 +61,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 5, + "sort_number": 6, "x": -4, "y": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_blacksmith.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_blacksmith.json index ac742ea6f..fbdd6665c 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_blacksmith.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_blacksmith.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "familiar_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_foliot" }, "description": "", "hide_while_locked": false, @@ -71,7 +72,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 6, - "x": -3, - "y": 4 + "sort_number": 7, + "x": -2, + "y": -2 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_chimera.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_chimera.json index ac6f13b00..294f3c14e 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_chimera.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_chimera.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "familiar_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_djinni" }, "description": "", "hide_while_locked": false, @@ -71,7 +72,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 7, - "x": -2, - "y": 2 + "sort_number": 8, + "x": 0, + "y": -2 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_cthulhu.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_cthulhu.json index 93f9ae5d5..d4222f93a 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_cthulhu.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_cthulhu.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "familiar_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_djinni" }, "description": "", "hide_while_locked": false, @@ -60,7 +61,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 8, - "x": -1, - "y": 4 + "sort_number": 9, + "x": -2, + "y": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_deer.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_deer.json index 13b70251e..650326239 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_deer.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_deer.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "familiar_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_foliot" }, "description": "", "hide_while_locked": false, @@ -60,7 +61,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 9, - "x": 0, - "y": 2 + "sort_number": 10, + "x": -3, + "y": -4 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_devil.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_devil.json index c31e6ab18..05c413d32 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_devil.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_devil.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "familiar_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_djinni" }, "description": "", "hide_while_locked": false, @@ -60,7 +61,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 10, - "x": 1, - "y": 4 + "sort_number": 11, + "x": 2, + "y": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_dragon.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_dragon.json index 071648408..bff7801c1 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_dragon.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_dragon.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "familiar_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_djinni" }, "description": "", "hide_while_locked": false, @@ -60,7 +61,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 11, - "x": -6, - "y": -2 + "sort_number": 12, + "x": 0, + "y": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_fairy.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_fairy.json index 122237313..3e0b92721 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_fairy.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_fairy.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "familiar_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_djinni" }, "description": "", "hide_while_locked": false, @@ -60,7 +61,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 12, + "sort_number": 13, "x": -5, - "y": -4 + "y": 4 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_greedy.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_greedy.json index 8f07aa7f8..15489b25a 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_greedy.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_greedy.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "familiar_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_foliot" }, "description": "", "hide_while_locked": false, @@ -60,7 +61,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 13, + "sort_number": 14, "x": -4, "y": -2 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_guardian.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_guardian.json index 994c30438..aaf23a060 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_guardian.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_guardian.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "familiar_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_afrit" }, "description": "", "hide_while_locked": false, @@ -71,7 +72,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 14, - "x": -3, - "y": -4 + "sort_number": 15, + "x": 2, + "y": -2 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_headless.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_headless.json index 709d9dc34..b78a4cd9b 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_headless.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_headless.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "familiar_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_djinni" }, "description": "", "hide_while_locked": false, @@ -60,7 +61,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 15, - "x": -2, - "y": -2 + "sort_number": 16, + "x": -3, + "y": 4 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_mummy.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_mummy.json index edb928e61..f99549186 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_mummy.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_mummy.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "familiar_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_djinni" }, "description": "", "hide_while_locked": false, @@ -60,7 +61,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 16, + "sort_number": 17, "x": -1, - "y": -4 + "y": 4 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_otherworld_bird.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_otherworld_bird.json index 188da6657..d02583003 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_otherworld_bird.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_otherworld_bird.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "familiar_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_djinni" }, "description": "", "hide_while_locked": false, @@ -71,7 +72,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 17, - "x": 0, - "y": -2 + "sort_number": 18, + "x": -6, + "y": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_parrot.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_parrot.json index 77935690a..29daf8fa0 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_parrot.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_parrot.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "familiar_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_foliot" }, "description": "", "hide_while_locked": false, @@ -71,7 +72,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 18, - "x": 1, - "y": -4 + "sort_number": 19, + "x": -6, + "y": -2 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_shub_niggurath.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_shub_niggurath.json index 6b3496f62..92420353f 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_shub_niggurath.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/familiar_shub_niggurath.json @@ -2,9 +2,6 @@ "background_u_index": 0, "background_v_index": 0, "category": "familiar_rituals", - "condition": { - "type": "modonomicon:true" - }, "description": "", "hide_while_locked": false, "icon": { @@ -54,13 +51,13 @@ "parents": [ { "draw_arrow": true, - "entry": "familiar_rituals/overview", + "entry": "familiar_rituals/familiar_chimera", "line_enabled": true, "line_reversed": false } ], "show_when_any_parent_unlocked": false, - "sort_number": 19, - "x": 2, - "y": 2 + "sort_number": 20, + "x": 0, + "y": -4 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/overview.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/overview.json index 47e4c1e5e..ba26aa0c7 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/overview.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/overview.json @@ -3,13 +3,14 @@ "background_v_index": 1, "category": "familiar_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_foliot" }, "description": "", "hide_while_locked": false, "icon": { "height": 16, - "texture": "occultism:textures/gui/book/parrot.png", + "texture": "occultism:textures/gui/book/familiar.png", "width": 16 }, "name": "book.occultism.dictionary_of_spirits.familiar_rituals.overview.name", diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/summon_allay.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/resurrect_allay.json similarity index 83% rename from src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/summon_allay.json rename to src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/resurrect_allay.json index 280242db1..8b32bb6a4 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/summon_allay.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/resurrect_allay.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "familiar_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/resurrect_spirit" }, "description": "", "hide_while_locked": false, @@ -12,7 +13,7 @@ "texture": "occultism:textures/gui/book/allay.png", "width": 16 }, - "name": "book.occultism.dictionary_of_spirits.familiar_rituals.summon_allay.name", + "name": "book.occultism.dictionary_of_spirits.familiar_rituals.resurrect_allay.name", "pages": [ { "type": "modonomicon:entity", @@ -26,7 +27,7 @@ "offset": 0.0, "rotate": true, "scale": 1.0, - "text": "book.occultism.dictionary_of_spirits.familiar_rituals.summon_allay.entity.text" + "text": "book.occultism.dictionary_of_spirits.familiar_rituals.resurrect_allay.entity.text" }, { "type": "occultism:ritual_recipe", @@ -34,7 +35,7 @@ "condition": { "type": "modonomicon:none" }, - "recipe_id_1": "occultism:ritual/summon_allay", + "recipe_id_1": "occultism:ritual/resurrect_allay", "text": "", "title1": "", "title2": "" @@ -46,7 +47,7 @@ "type": "modonomicon:none" }, "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.familiar_rituals.summon_allay.description.text", + "text": "book.occultism.dictionary_of_spirits.familiar_rituals.resurrect_allay.description.text", "title": "", "use_markdown_in_title": false } @@ -60,7 +61,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 20, - "x": 4, - "y": 0 + "sort_number": 3, + "x": -8, + "y": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/resurrection.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/resurrection.json index 6529bc02c..d653f9c78 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/resurrection.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/resurrection.json @@ -2,6 +2,10 @@ "background_u_index": 0, "background_v_index": 0, "category": "familiar_rituals", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/resurrect_spirit" + }, "description": "book.occultism.dictionary_of_spirits.familiar_rituals.resurrection.description", "hide_while_locked": false, "icon": { diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/return_to_rituals.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/return_to_rituals.json index e0e5a6aeb..e78080696 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/return_to_rituals.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/return_to_rituals.json @@ -4,7 +4,8 @@ "category": "familiar_rituals", "category_to_open": "rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_foliot" }, "description": "", "hide_while_locked": false, diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/chalks.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/chalks.json index 6689aa2d4..e5886ca05 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/chalks.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/chalks.json @@ -20,84 +20,6 @@ "title": "book.occultism.dictionary_of_spirits.getting_started.chalks.intro.title", "use_markdown_in_title": false }, - { - "type": "modonomicon:crafting_recipe", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "recipe_id_1": "occultism:crafting/chalk_gold_impure", - "text": "", - "title1": "", - "title2": "" - }, - { - "type": "occultism:spirit_fire_recipe", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "recipe_id_1": "occultism:spirit_fire/chalk_gold", - "text": "", - "title1": "", - "title2": "" - }, - { - "type": "modonomicon:crafting_recipe", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "recipe_id_1": "occultism:crafting/chalk_purple_impure", - "text": "book.occultism.dictionary_of_spirits.getting_started.chalks.impure_purple_chalk_recipe.text", - "title1": "", - "title2": "" - }, - { - "type": "occultism:spirit_fire_recipe", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "recipe_id_1": "occultism:spirit_fire/chalk_purple", - "text": "", - "title1": "", - "title2": "" - }, - { - "type": "modonomicon:crafting_recipe", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "recipe_id_1": "occultism:crafting/chalk_red_impure", - "text": "", - "title1": "", - "title2": "" - }, - { - "type": "occultism:spirit_fire_recipe", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "recipe_id_1": "occultism:spirit_fire/chalk_red", - "text": "", - "title1": "", - "title2": "" - }, - { - "type": "modonomicon:spotlight", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "item": { - "item": "occultism:afrit_essence" - }, - "text": "book.occultism.dictionary_of_spirits.getting_started.chalks.afrit_essence.text", - "title": "" - }, { "type": "modonomicon:text", "anchor": "", @@ -105,141 +27,9 @@ "type": "modonomicon:none" }, "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.getting_started.chalks.decoColors.text", - "title": "book.occultism.dictionary_of_spirits.getting_started.chalks.decoColors.title", + "text": "book.occultism.dictionary_of_spirits.getting_started.chalks.more.text", + "title": "book.occultism.dictionary_of_spirits.getting_started.chalks.more.title", "use_markdown_in_title": false - }, - { - "type": "modonomicon:crafting_recipe", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "recipe_id_1": "occultism:crafting/chalk_light_gray_impure", - "text": "", - "title1": "", - "title2": "" - }, - { - "type": "modonomicon:crafting_recipe", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "recipe_id_1": "occultism:crafting/chalk_gray_impure", - "text": "", - "title1": "", - "title2": "" - }, - { - "type": "modonomicon:crafting_recipe", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "recipe_id_1": "occultism:crafting/chalk_black_impure", - "text": "", - "title1": "", - "title2": "" - }, - { - "type": "modonomicon:crafting_recipe", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "recipe_id_1": "occultism:crafting/chalk_brown_impure", - "text": "", - "title1": "", - "title2": "" - }, - { - "type": "modonomicon:crafting_recipe", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "recipe_id_1": "occultism:crafting/chalk_orange_impure", - "text": "", - "title1": "", - "title2": "" - }, - { - "type": "modonomicon:crafting_recipe", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "recipe_id_1": "occultism:crafting/chalk_lime_impure", - "text": "", - "title1": "", - "title2": "" - }, - { - "type": "modonomicon:crafting_recipe", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "recipe_id_1": "occultism:crafting/chalk_green_impure", - "text": "", - "title1": "", - "title2": "" - }, - { - "type": "modonomicon:crafting_recipe", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "recipe_id_1": "occultism:crafting/chalk_cyan_impure", - "text": "", - "title1": "", - "title2": "" - }, - { - "type": "modonomicon:crafting_recipe", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "recipe_id_1": "occultism:crafting/chalk_blue_impure", - "text": "", - "title1": "", - "title2": "" - }, - { - "type": "modonomicon:crafting_recipe", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "recipe_id_1": "occultism:crafting/chalk_light_blue_impure", - "text": "", - "title1": "", - "title2": "" - }, - { - "type": "modonomicon:crafting_recipe", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "recipe_id_1": "occultism:crafting/chalk_pink_impure", - "text": "", - "title1": "", - "title2": "" - }, - { - "type": "modonomicon:crafting_recipe", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "recipe_id_1": "occultism:crafting/chalk_magenta_impure", - "text": "", - "title1": "", - "title2": "" } ], "parents": [ diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/crafting_rituals.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/crafting_rituals.json index c0d9b08a2..9ab08152d 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/crafting_rituals.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/crafting_rituals.json @@ -2,6 +2,10 @@ "background_u_index": 1, "background_v_index": 1, "category": "getting_started", + "condition": { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/purple" + }, "description": "book.occultism.dictionary_of_spirits.getting_started.crafting_rituals.description", "hide_while_locked": false, "icon": { diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/familiar_rituals.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/familiar_rituals.json index 79e767039..fe2616494 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/familiar_rituals.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/familiar_rituals.json @@ -2,11 +2,15 @@ "background_u_index": 1, "background_v_index": 1, "category": "getting_started", + "condition": { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/yellow" + }, "description": "book.occultism.dictionary_of_spirits.getting_started.familiar_rituals.description", "hide_while_locked": false, "icon": { "height": 16, - "texture": "occultism:textures/gui/book/parrot.png", + "texture": "occultism:textures/gui/book/familiar.png", "width": 16 }, "name": "book.occultism.dictionary_of_spirits.getting_started.familiar_rituals.name", diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/first_ritual.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/first_ritual.json index 4ae4bee53..0bb3a1c87 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/first_ritual.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/first_ritual.json @@ -5,7 +5,7 @@ "description": "book.occultism.dictionary_of_spirits.getting_started.first_ritual.description", "hide_while_locked": false, "icon": { - "item": "occultism:pentacle" + "item": "occultism:pentacle_summon" }, "name": "book.occultism.dictionary_of_spirits.getting_started.first_ritual.name", "pages": [ @@ -121,6 +121,31 @@ "text": "book.occultism.dictionary_of_spirits.getting_started.first_ritual.redstone.text", "title": "book.occultism.dictionary_of_spirits.getting_started.first_ritual.redstone.title", "use_markdown_in_title": false + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.getting_started.first_ritual.clone_redstone.text", + "title": "book.occultism.dictionary_of_spirits.getting_started.first_ritual.clone_redstone.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:image", + "anchor": "", + "border": true, + "condition": { + "type": "modonomicon:none" + }, + "images": [ + "occultism:textures/gui/book/redstone_clone.png" + ], + "text": "book.occultism.dictionary_of_spirits.getting_started.first_ritual.clone_placement.text", + "title": "", + "use_legacy_rendering": false } ], "parents": [ diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/otherworld_goggles.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/otherworld_goggles.json index 31f67e4dc..28eb2c1e1 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/otherworld_goggles.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/otherworld_goggles.json @@ -2,6 +2,10 @@ "background_u_index": 0, "background_v_index": 0, "category": "getting_started", + "condition": { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/purple" + }, "description": "book.occultism.dictionary_of_spirits.getting_started.otherworld_goggles.description", "hide_while_locked": false, "icon": { diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/possession_rituals.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/possession_rituals.json index 52b292d1d..37d1b059b 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/possession_rituals.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/possession_rituals.json @@ -2,6 +2,10 @@ "background_u_index": 1, "background_v_index": 1, "category": "getting_started", + "condition": { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/yellow" + }, "description": "book.occultism.dictionary_of_spirits.getting_started.possession_rituals.description", "hide_while_locked": false, "icon": { diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/ritual_satchels.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/ritual_satchels.json index 9d842e75e..4e8d616a4 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/ritual_satchels.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/ritual_satchels.json @@ -2,6 +2,10 @@ "background_u_index": 0, "background_v_index": 0, "category": "getting_started", + "condition": { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/purple" + }, "description": "book.occultism.dictionary_of_spirits.getting_started.ritual_satchels.description", "hide_while_locked": false, "icon": { diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/storage.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/storage.json index 56c32a36a..68a50ff53 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/storage.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/storage.json @@ -3,6 +3,10 @@ "background_v_index": 1, "category": "getting_started", "category_to_open": "storage", + "condition": { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/purple" + }, "description": "book.occultism.dictionary_of_spirits.getting_started.storage.description", "hide_while_locked": false, "icon": { diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/summoning_rituals.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/summoning_rituals.json index b0aba7de0..6c7940bb3 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/summoning_rituals.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/summoning_rituals.json @@ -2,6 +2,10 @@ "background_u_index": 1, "background_v_index": 1, "category": "getting_started", + "condition": { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/white" + }, "description": "book.occultism.dictionary_of_spirits.getting_started.summoning_rituals.description", "hide_while_locked": false, "icon": { diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/black_chalk.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/black_chalk.json new file mode 100644 index 000000000..9ce149d8f --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/black_chalk.json @@ -0,0 +1,85 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/craft_afrit" + }, + "description": "book.occultism.dictionary_of_spirits.pentacles.black_chalk.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:chalk_black" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.black_chalk.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.black_chalk.lore.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.black_chalk.lore.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "occultism:chalk_black" + }, + "text": "book.occultism.dictionary_of_spirits.pentacles.black_chalk.spotlight.text", + "title": "" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/craft_witherite_dust", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:crafting_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:crafting/chalk_black_impure", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "occultism:spirit_fire_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:spirit_fire/chalk_black", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/gray_chalk", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 27, + "x": 7, + "y": -6 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/blue_chalk.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/blue_chalk.json new file mode 100644 index 000000000..198bad569 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/blue_chalk.json @@ -0,0 +1,74 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_unbound_marid" + }, + "description": "book.occultism.dictionary_of_spirits.pentacles.blue_chalk.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:chalk_blue" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.blue_chalk.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.blue_chalk.lore.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.blue_chalk.lore.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "occultism:chalk_blue" + }, + "text": "book.occultism.dictionary_of_spirits.pentacles.blue_chalk.spotlight.text", + "title": "" + }, + { + "type": "modonomicon:crafting_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:crafting/chalk_blue_impure", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "occultism:spirit_fire_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:spirit_fire/chalk_blue", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/red_chalk", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 29, + "x": 10, + "y": 2 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/brown_chalk.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/brown_chalk.json new file mode 100644 index 000000000..a5eaf906a --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/brown_chalk.json @@ -0,0 +1,70 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "description": "book.occultism.dictionary_of_spirits.pentacles.brown_chalk.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:chalk_brown" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.brown_chalk.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.brown_chalk.lore.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.brown_chalk.lore.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "occultism:chalk_brown" + }, + "text": "book.occultism.dictionary_of_spirits.pentacles.brown_chalk.spotlight.text", + "title": "" + }, + { + "type": "modonomicon:crafting_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:crafting/chalk_brown_impure", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "occultism:spirit_fire_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:spirit_fire/chalk_brown", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/possess_marid", + "line_enabled": false, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 33, + "x": 10, + "y": 4 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/chalk_uses.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/chalk_uses.json deleted file mode 100644 index 44cca792a..000000000 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/chalk_uses.json +++ /dev/null @@ -1,153 +0,0 @@ -{ - "background_u_index": 0, - "background_v_index": 0, - "category": "pentacles", - "condition": { - "type": "modonomicon:true" - }, - "description": "", - "hide_while_locked": false, - "icon": { - "item": "occultism:chalk_purple" - }, - "name": "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.name", - "pages": [ - { - "type": "modonomicon:text", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.intro.text", - "title": "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.intro.title", - "use_markdown_in_title": false - }, - { - "type": "modonomicon:text", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.intro2.text", - "title": "", - "use_markdown_in_title": false - }, - { - "type": "modonomicon:spotlight", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "item": { - "item": "occultism:chalk_white" - }, - "text": "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.white_chalk.text", - "title": "" - }, - { - "type": "modonomicon:text", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.white_chalk_uses.text", - "title": "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.white_chalk_uses.title", - "use_markdown_in_title": false - }, - { - "type": "modonomicon:text", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.white_chalk_uses2.text", - "title": "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.white_chalk_uses2.title", - "use_markdown_in_title": false - }, - { - "type": "modonomicon:spotlight", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "item": { - "item": "occultism:chalk_gold" - }, - "text": "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.golden_chalk.text", - "title": "" - }, - { - "type": "modonomicon:text", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.golden_chalk_uses.text", - "title": "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.golden_chalk_uses.title", - "use_markdown_in_title": false - }, - { - "type": "modonomicon:spotlight", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "item": { - "item": "occultism:chalk_purple" - }, - "text": "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.purple_chalk.text", - "title": "" - }, - { - "type": "modonomicon:text", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.purple_chalk_uses.text", - "title": "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.purple_chalk_uses.title", - "use_markdown_in_title": false - }, - { - "type": "modonomicon:spotlight", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "item": { - "item": "occultism:chalk_red" - }, - "text": "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.red_chalk.text", - "title": "" - }, - { - "type": "modonomicon:text", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.red_chalk_uses.text", - "title": "book.occultism.dictionary_of_spirits.pentacles.chalk_uses.red_chalk_uses.title", - "use_markdown_in_title": false - } - ], - "parents": [ - { - "draw_arrow": true, - "entry": "pentacles/pentacles_overview", - "line_enabled": true, - "line_reversed": false - } - ], - "show_when_any_parent_unlocked": false, - "sort_number": -1, - "x": -8, - "y": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/contact_eldritch_spirit.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/contact_eldritch_spirit.json new file mode 100644 index 000000000..bbb183263 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/contact_eldritch_spirit.json @@ -0,0 +1,87 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "condition": { + "type": "modonomicon:and", + "children": [ + { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/magenta" + }, + { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/brown" + }, + { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/cyan" + } + ] + }, + "description": "book.occultism.dictionary_of_spirits.pentacles.contact_eldritch_spirit.description", + "hide_while_locked": true, + "icon": { + "item": "occultism:pentacle_misc" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.contact_eldritch_spirit.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.contact_eldritch_spirit.intro.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.contact_eldritch_spirit.intro.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:multiblock", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "multiblock_id": "contact_eldritch_spirit", + "multiblock_name": "", + "show_visualize_button": true, + "text": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.contact_eldritch_spirit.uses.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.contact_eldritch_spirit.uses.title", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/magenta_chalk", + "line_enabled": true, + "line_reversed": true + }, + { + "draw_arrow": true, + "entry": "pentacles/brown_chalk", + "line_enabled": true, + "line_reversed": false + }, + { + "draw_arrow": true, + "entry": "pentacles/cyan_chalk", + "line_enabled": true, + "line_reversed": true + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 36, + "x": 10, + "y": 6 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/contact_wild_spirit.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/contact_wild_spirit.json new file mode 100644 index 000000000..284ec9634 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/contact_wild_spirit.json @@ -0,0 +1,87 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "condition": { + "type": "modonomicon:and", + "children": [ + { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/pink" + }, + { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/green" + }, + { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/light_blue" + } + ] + }, + "description": "book.occultism.dictionary_of_spirits.pentacles.contact_wild_spirit.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:pentacle_misc" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.contact_wild_spirit.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.contact_wild_spirit.intro.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.contact_wild_spirit.intro.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:multiblock", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "multiblock_id": "contact_wild_spirit", + "multiblock_name": "", + "show_visualize_button": true, + "text": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.contact_wild_spirit.uses.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.contact_wild_spirit.uses.title", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/pink_chalk", + "line_enabled": true, + "line_reversed": true + }, + { + "draw_arrow": true, + "entry": "pentacles/green_chalk", + "line_enabled": true, + "line_reversed": true + }, + { + "draw_arrow": true, + "entry": "pentacles/light_blue_chalk", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 23, + "x": 1, + "y": 6 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/craft_afrit.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/craft_afrit.json index 7205d6192..4f1bee977 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/craft_afrit.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/craft_afrit.json @@ -3,12 +3,13 @@ "background_v_index": 0, "category": "pentacles", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/red" }, - "description": "", + "description": "book.occultism.dictionary_of_spirits.pentacles.craft_afrit.description", "hide_while_locked": false, "icon": { - "item": "occultism:pentacle" + "item": "occultism:pentacle_craft" }, "name": "book.occultism.dictionary_of_spirits.pentacles.craft_afrit.name", "pages": [ @@ -55,7 +56,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": -1, - "x": -2, - "y": 2 + "sort_number": 26, + "x": 4, + "y": 0 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/craft_djinni.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/craft_djinni.json index bb8e17333..97d8097c6 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/craft_djinni.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/craft_djinni.json @@ -3,12 +3,22 @@ "background_v_index": 0, "category": "pentacles", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:and", + "children": [ + { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/light_gray" + }, + { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/lime" + } + ] }, - "description": "", + "description": "book.occultism.dictionary_of_spirits.pentacles.craft_djinni.description", "hide_while_locked": false, "icon": { - "item": "occultism:pentacle" + "item": "occultism:pentacle_craft" }, "name": "book.occultism.dictionary_of_spirits.pentacles.craft_djinni.name", "pages": [ @@ -55,7 +65,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": -1, - "x": -4, - "y": 2 + "sort_number": 17, + "x": -2, + "y": 0 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/craft_foliot.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/craft_foliot.json index 3585681a3..78317af8b 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/craft_foliot.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/craft_foliot.json @@ -3,12 +3,13 @@ "background_v_index": 0, "category": "pentacles", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/purple" }, - "description": "", + "description": "book.occultism.dictionary_of_spirits.pentacles.craft_foliot.description", "hide_while_locked": false, "icon": { - "item": "occultism:pentacle" + "item": "occultism:pentacle_craft" }, "name": "book.occultism.dictionary_of_spirits.pentacles.craft_foliot.name", "pages": [ @@ -49,13 +50,13 @@ "parents": [ { "draw_arrow": true, - "entry": "pentacles/pentacles_overview", + "entry": "pentacles/purple_chalk", "line_enabled": true, "line_reversed": false } ], "show_when_any_parent_unlocked": false, - "sort_number": -1, - "x": -6, - "y": 2 + "sort_number": 9, + "x": -5, + "y": 0 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/craft_marid.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/craft_marid.json index 9b7974ba0..8fa4327d3 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/craft_marid.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/craft_marid.json @@ -3,12 +3,13 @@ "background_v_index": 0, "category": "pentacles", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/blue" }, - "description": "", + "description": "book.occultism.dictionary_of_spirits.pentacles.craft_marid.description", "hide_while_locked": false, "icon": { - "item": "occultism:pentacle" + "item": "occultism:pentacle_craft" }, "name": "book.occultism.dictionary_of_spirits.pentacles.craft_marid.name", "pages": [ @@ -55,7 +56,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": -1, - "x": 0, - "y": 2 + "sort_number": 34, + "x": 10, + "y": 0 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/cyan_chalk.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/cyan_chalk.json new file mode 100644 index 000000000..2556493d7 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/cyan_chalk.json @@ -0,0 +1,70 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "description": "book.occultism.dictionary_of_spirits.pentacles.cyan_chalk.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:chalk_cyan" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.cyan_chalk.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.cyan_chalk.lore.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.cyan_chalk.lore.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "occultism:chalk_cyan" + }, + "text": "book.occultism.dictionary_of_spirits.pentacles.cyan_chalk.spotlight.text", + "title": "" + }, + { + "type": "modonomicon:crafting_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:crafting/chalk_cyan_impure", + "text": "book.occultism.dictionary_of_spirits.pentacles.cyan_chalk.recipe_impure.text", + "title1": "", + "title2": "" + }, + { + "type": "occultism:spirit_fire_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:spirit_fire/chalk_cyan", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/summon_marid", + "line_enabled": false, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 31, + "x": 11, + "y": 4 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/didactics.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/didactics.json new file mode 100644 index 000000000..8bde2aec2 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/didactics.json @@ -0,0 +1,47 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "description": "book.occultism.dictionary_of_spirits.pentacles.didactics.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:brush" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.didactics.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.didactics.intro.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.didactics.intro.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.didactics.table.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.didactics.table.title", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/pentacle_overview", + "line_enabled": true, + "line_reversed": true + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 2, + "x": -8, + "y": -4 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/gray_chalk.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/gray_chalk.json new file mode 100644 index 000000000..f405911ab --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/gray_chalk.json @@ -0,0 +1,85 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/craft_djinni" + }, + "description": "book.occultism.dictionary_of_spirits.pentacles.gray_chalk.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:chalk_gray" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.gray_chalk.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.gray_chalk.lore.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.gray_chalk.lore.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "occultism:chalk_gray" + }, + "text": "book.occultism.dictionary_of_spirits.pentacles.gray_chalk.spotlight.text", + "title": "" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/craft_gray_paste", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:crafting_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:crafting/chalk_gray_impure", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "occultism:spirit_fire_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:spirit_fire/chalk_gray", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/light_gray_chalk", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 18, + "x": 1, + "y": -6 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/green_chalk.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/green_chalk.json new file mode 100644 index 000000000..faff37b4c --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/green_chalk.json @@ -0,0 +1,81 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "description": "book.occultism.dictionary_of_spirits.pentacles.green_chalk.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:chalk_green" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.green_chalk.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.green_chalk.lore.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.green_chalk.lore.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "occultism:chalk_green" + }, + "text": "book.occultism.dictionary_of_spirits.pentacles.green_chalk.spotlight.text", + "title": "" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/craft_nature_paste", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:crafting_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:crafting/chalk_green_impure", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "occultism:spirit_fire_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:spirit_fire/chalk_green", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/craft_foliot", + "line_enabled": false, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 11, + "x": 0, + "y": 4 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/light_blue_chalk.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/light_blue_chalk.json new file mode 100644 index 000000000..6b1c521c6 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/light_blue_chalk.json @@ -0,0 +1,74 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_djinni" + }, + "description": "book.occultism.dictionary_of_spirits.pentacles.light_blue_chalk.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:chalk_light_blue" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.light_blue_chalk.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.light_blue_chalk.lore.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.light_blue_chalk.lore.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "occultism:chalk_light_blue" + }, + "text": "book.occultism.dictionary_of_spirits.pentacles.light_blue_chalk.spotlight.text", + "title": "" + }, + { + "type": "modonomicon:crafting_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:crafting/chalk_light_blue_impure", + "text": "book.occultism.dictionary_of_spirits.pentacles.light_blue_chalk.recipe_impure.text", + "title1": "", + "title2": "" + }, + { + "type": "occultism:spirit_fire_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:spirit_fire/chalk_light_blue", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/summon_djinni", + "line_enabled": false, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 14, + "x": 1, + "y": 4 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/light_gray_chalk.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/light_gray_chalk.json new file mode 100644 index 000000000..6cd430c9c --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/light_gray_chalk.json @@ -0,0 +1,74 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_foliot" + }, + "description": "book.occultism.dictionary_of_spirits.pentacles.light_gray_chalk.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:chalk_light_gray" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.light_gray_chalk.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.light_gray_chalk.lore.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.light_gray_chalk.lore.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "occultism:chalk_light_gray" + }, + "text": "book.occultism.dictionary_of_spirits.pentacles.light_gray_chalk.spotlight.text", + "title": "" + }, + { + "type": "modonomicon:crafting_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:crafting/chalk_light_gray_impure", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "occultism:spirit_fire_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:spirit_fire/chalk_light_gray", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/white_chalk", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 5, + "x": -2, + "y": -6 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/lime_chalk.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/lime_chalk.json new file mode 100644 index 000000000..c244fcd73 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/lime_chalk.json @@ -0,0 +1,85 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/craft_foliot" + }, + "description": "book.occultism.dictionary_of_spirits.pentacles.lime_chalk.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:chalk_lime" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.lime_chalk.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.lime_chalk.lore.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.lime_chalk.lore.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "occultism:chalk_lime" + }, + "text": "book.occultism.dictionary_of_spirits.pentacles.lime_chalk.spotlight.text", + "title": "" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/craft_research_fragment_dust", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:crafting_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:crafting/chalk_lime_impure", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "occultism:spirit_fire_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:spirit_fire/chalk_lime", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/purple_chalk", + "line_enabled": true, + "line_reversed": true + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 10, + "x": -2, + "y": 2 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/magenta_chalk.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/magenta_chalk.json new file mode 100644 index 000000000..4c74f9719 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/magenta_chalk.json @@ -0,0 +1,81 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "description": "book.occultism.dictionary_of_spirits.pentacles.magenta_chalk.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:chalk_magenta" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.magenta_chalk.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.magenta_chalk.lore.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.magenta_chalk.lore.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "occultism:chalk_magenta" + }, + "text": "book.occultism.dictionary_of_spirits.pentacles.magenta_chalk.spotlight.text", + "title": "" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/craft_dragonyst_dust", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:crafting_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:crafting/chalk_magenta_impure", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "occultism:spirit_fire_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:spirit_fire/chalk_magenta", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/craft_marid", + "line_enabled": false, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 35, + "x": 9, + "y": 4 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/orange_chalk.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/orange_chalk.json new file mode 100644 index 000000000..1ba21484e --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/orange_chalk.json @@ -0,0 +1,74 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_djinni" + }, + "description": "book.occultism.dictionary_of_spirits.pentacles.orange_chalk.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:chalk_orange" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.orange_chalk.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.orange_chalk.lore.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.orange_chalk.lore.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "occultism:chalk_orange" + }, + "text": "book.occultism.dictionary_of_spirits.pentacles.orange_chalk.spotlight.text", + "title": "" + }, + { + "type": "modonomicon:crafting_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:crafting/chalk_orange_impure", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "occultism:spirit_fire_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:spirit_fire/chalk_orange", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/lime_chalk", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 16, + "x": 1, + "y": 2 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/paraphernalia.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/paraphernalia.json index d56fbc13f..9b78d0d46 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/paraphernalia.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/paraphernalia.json @@ -2,10 +2,7 @@ "background_u_index": 0, "background_v_index": 0, "category": "pentacles", - "condition": { - "type": "modonomicon:true" - }, - "description": "", + "description": "book.occultism.dictionary_of_spirits.pentacles.paraphernalia.description", "hide_while_locked": false, "icon": { "item": "minecraft:skeleton_skull" @@ -35,6 +32,18 @@ "text": "book.occultism.dictionary_of_spirits.pentacles.paraphernalia.candle.text", "title": "" }, + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "minecraft:skeleton_skull" + }, + "text": "book.occultism.dictionary_of_spirits.pentacles.paraphernalia.skull.text", + "title": "" + }, { "type": "modonomicon:spotlight", "anchor": "", @@ -76,22 +85,22 @@ "type": "modonomicon:none" }, "item": { - "item": "minecraft:skeleton_skull" + "item": "minecraft:wither_skeleton_skull" }, - "text": "book.occultism.dictionary_of_spirits.pentacles.paraphernalia.skeleton_skull.text", + "text": "book.occultism.dictionary_of_spirits.pentacles.paraphernalia.wither_skull.text", "title": "" } ], "parents": [ { "draw_arrow": true, - "entry": "pentacles/pentacles_overview", + "entry": "pentacles/pentacle_overview", "line_enabled": true, - "line_reversed": false + "line_reversed": true } ], "show_when_any_parent_unlocked": false, - "sort_number": -1, - "x": -8, - "y": -2 + "sort_number": 1, + "x": -11, + "y": -1 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/pentacle_overview.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/pentacle_overview.json new file mode 100644 index 000000000..e11af2222 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/pentacle_overview.json @@ -0,0 +1,63 @@ +{ + "background_u_index": 0, + "background_v_index": 1, + "category": "pentacles", + "description": "book.occultism.dictionary_of_spirits.pentacles.pentacle_overview.description", + "hide_while_locked": false, + "icon": { + "height": 16, + "texture": "occultism:textures/gui/book/pentacle.png", + "width": 16 + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.pentacle_overview.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.pentacle_overview.intro1.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.pentacle_overview.intro1.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.pentacle_overview.intro2.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.pentacle_overview.intro2.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.pentacle_overview.intro3.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.pentacle_overview.intro3.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.pentacle_overview.intro4.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.pentacle_overview.intro4.title", + "use_markdown_in_title": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 0, + "x": -11, + "y": -3 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/pentacles_overview.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/pentacles_overview.json deleted file mode 100644 index 76cbde6a1..000000000 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/pentacles_overview.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "background_u_index": 0, - "background_v_index": 1, - "category": "pentacles", - "condition": { - "type": "modonomicon:true" - }, - "description": "", - "hide_while_locked": false, - "icon": { - "item": "occultism:spirit_attuned_crystal" - }, - "name": "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.name", - "pages": [ - { - "type": "modonomicon:text", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.intro1.text", - "title": "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.intro1.title", - "use_markdown_in_title": false - }, - { - "type": "modonomicon:text", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.intro2.text", - "title": "", - "use_markdown_in_title": false - }, - { - "type": "modonomicon:text", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.intro3.text", - "title": "", - "use_markdown_in_title": false - }, - { - "type": "modonomicon:text", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.intro4.text", - "title": "", - "use_markdown_in_title": false - }, - { - "type": "modonomicon:image", - "anchor": "", - "border": true, - "condition": { - "type": "modonomicon:none" - }, - "images": [ - "occultism:textures/gui/book/bowl_placement.png" - ], - "text": "", - "title": "", - "use_legacy_rendering": false - }, - { - "type": "modonomicon:text", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.bowl_text.text", - "title": "", - "use_markdown_in_title": false - }, - { - "type": "modonomicon:text", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.summoning_pentacles.text", - "title": "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.summoning_pentacles.title", - "use_markdown_in_title": false - }, - { - "type": "modonomicon:text", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.infusion_pentacles.text", - "title": "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.infusion_pentacles.title", - "use_markdown_in_title": false - }, - { - "type": "modonomicon:text", - "anchor": "", - "condition": { - "type": "modonomicon:none" - }, - "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.possession_pentacles.text", - "title": "book.occultism.dictionary_of_spirits.pentacles.pentacles_overview.possession_pentacles.title", - "use_markdown_in_title": false - } - ], - "show_when_any_parent_unlocked": false, - "sort_number": -1, - "x": -8, - "y": 0 -} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/pink_chalk.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/pink_chalk.json new file mode 100644 index 000000000..f896233eb --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/pink_chalk.json @@ -0,0 +1,70 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "description": "book.occultism.dictionary_of_spirits.pentacles.pink_chalk.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:chalk_pink" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.pink_chalk.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.pink_chalk.lore.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.pink_chalk.lore.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "occultism:chalk_pink" + }, + "text": "book.occultism.dictionary_of_spirits.pentacles.pink_chalk.spotlight.text", + "title": "" + }, + { + "type": "modonomicon:crafting_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:crafting/chalk_pink_impure", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "occultism:spirit_fire_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:spirit_fire/chalk_pink", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/possess_unbound_afrit", + "line_enabled": false, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 22, + "x": 2, + "y": 4 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/possess_afrit.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/possess_afrit.json index d125b349d..248d6ef8c 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/possess_afrit.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/possess_afrit.json @@ -3,12 +3,13 @@ "background_v_index": 0, "category": "pentacles", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/red" }, - "description": "", + "description": "book.occultism.dictionary_of_spirits.pentacles.possess_afrit.description", "hide_while_locked": false, "icon": { - "item": "occultism:pentacle" + "item": "occultism:pentacle_possess" }, "name": "book.occultism.dictionary_of_spirits.pentacles.possess_afrit.name", "pages": [ @@ -49,13 +50,13 @@ "parents": [ { "draw_arrow": true, - "entry": "pentacles/possess_djinni", + "entry": "pentacles/possess_unbound_afrit", "line_enabled": true, "line_reversed": false } ], "show_when_any_parent_unlocked": false, - "sort_number": -1, - "x": 0, - "y": 0 + "sort_number": 25, + "x": 4, + "y": -2 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/possess_djinni.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/possess_djinni.json index 0982e039e..36a4aa3a1 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/possess_djinni.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/possess_djinni.json @@ -3,12 +3,22 @@ "background_v_index": 0, "category": "pentacles", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:and", + "children": [ + { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/light_gray" + }, + { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/lime" + } + ] }, - "description": "", + "description": "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.description", "hide_while_locked": false, "icon": { - "item": "occultism:pentacle" + "item": "occultism:pentacle_possess" }, "name": "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.name", "pages": [ @@ -66,7 +76,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": -1, + "sort_number": 15, "x": -2, - "y": 0 + "y": -2 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/possess_foliot.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/possess_foliot.json index ea77fa7cf..03cad44bf 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/possess_foliot.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/possess_foliot.json @@ -3,12 +3,13 @@ "background_v_index": 0, "category": "pentacles", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/yellow" }, - "description": "", + "description": "book.occultism.dictionary_of_spirits.pentacles.possess_foliot.description", "hide_while_locked": false, "icon": { - "item": "occultism:pentacle" + "item": "occultism:pentacle_possess" }, "name": "book.occultism.dictionary_of_spirits.pentacles.possess_foliot.name", "pages": [ @@ -49,13 +50,13 @@ "parents": [ { "draw_arrow": true, - "entry": "pentacles/pentacles_overview", + "entry": "pentacles/yellow_chalk", "line_enabled": true, "line_reversed": false } ], "show_when_any_parent_unlocked": false, - "sort_number": -1, - "x": -4, - "y": 0 + "sort_number": 7, + "x": -5, + "y": -2 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/possess_marid.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/possess_marid.json new file mode 100644 index 000000000..e53ebbde3 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/possess_marid.json @@ -0,0 +1,62 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "condition": { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/blue" + }, + "description": "book.occultism.dictionary_of_spirits.pentacles.possess_marid.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:pentacle_possess" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.possess_marid.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.possess_marid.intro.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.possess_marid.intro.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:multiblock", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "multiblock_id": "possess_marid", + "multiblock_name": "", + "show_visualize_button": true, + "text": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.possess_marid.uses.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.possess_marid.uses.title", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/possess_afrit", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 32, + "x": 10, + "y": -2 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/possess_unbound_afrit.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/possess_unbound_afrit.json new file mode 100644 index 000000000..317d741d1 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/possess_unbound_afrit.json @@ -0,0 +1,71 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "condition": { + "type": "modonomicon:and", + "children": [ + { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/gray" + }, + { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/orange" + } + ] + }, + "description": "book.occultism.dictionary_of_spirits.pentacles.possess_unbound_afrit.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:pentacle_possess" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.possess_unbound_afrit.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.possess_unbound_afrit.intro.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.possess_unbound_afrit.intro.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:multiblock", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "multiblock_id": "possess_unbound_afrit", + "multiblock_name": "", + "show_visualize_button": true, + "text": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.possess_unbound_afrit.uses.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.possess_unbound_afrit.uses.title", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/possess_djinni", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 21, + "x": 1, + "y": -2 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/purple_chalk.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/purple_chalk.json new file mode 100644 index 000000000..21aa4c9eb --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/purple_chalk.json @@ -0,0 +1,74 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_foliot" + }, + "description": "book.occultism.dictionary_of_spirits.pentacles.purple_chalk.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:chalk_purple" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.purple_chalk.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.purple_chalk.lore.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.purple_chalk.lore.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "occultism:chalk_purple" + }, + "text": "book.occultism.dictionary_of_spirits.pentacles.purple_chalk.spotlight.text", + "title": "" + }, + { + "type": "modonomicon:crafting_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:crafting/chalk_purple_impure", + "text": "book.occultism.dictionary_of_spirits.pentacles.purple_chalk.recipe_impure.text", + "title1": "", + "title2": "" + }, + { + "type": "occultism:spirit_fire_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:spirit_fire/chalk_purple", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/yellow_chalk", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 8, + "x": -8, + "y": 0 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/red_chalk.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/red_chalk.json new file mode 100644 index 000000000..dac8bc11f --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/red_chalk.json @@ -0,0 +1,86 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_unbound_afrit" + }, + "description": "book.occultism.dictionary_of_spirits.pentacles.red_chalk.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:chalk_red" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.red_chalk.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.red_chalk.lore.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.red_chalk.lore.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "occultism:chalk_red" + }, + "text": "book.occultism.dictionary_of_spirits.pentacles.red_chalk.spotlight.text", + "title": "" + }, + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "occultism:afrit_essence" + }, + "text": "book.occultism.dictionary_of_spirits.pentacles.red_chalk.essence.text", + "title": "" + }, + { + "type": "modonomicon:crafting_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:crafting/chalk_red_impure", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "occultism:spirit_fire_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:spirit_fire/chalk_red", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/orange_chalk", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 20, + "x": 4, + "y": 2 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/resurrect_spirit.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/resurrect_spirit.json new file mode 100644 index 000000000..6af4d75cd --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/resurrect_spirit.json @@ -0,0 +1,62 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_foliot" + }, + "description": "book.occultism.dictionary_of_spirits.pentacles.resurrect_spirit.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:pentacle_misc" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.resurrect_spirit.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.resurrect_spirit.intro.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.resurrect_spirit.intro.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:multiblock", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "multiblock_id": "resurrect_spirit", + "multiblock_name": "", + "show_visualize_button": true, + "text": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.resurrect_spirit.uses.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.resurrect_spirit.uses.title", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/possess_foliot", + "line_enabled": false, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 12, + "x": -5, + "y": 6 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_afrit.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_afrit.json index 319e3c443..608ae11e1 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_afrit.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_afrit.json @@ -3,12 +3,13 @@ "background_v_index": 0, "category": "pentacles", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/red" }, - "description": "", + "description": "book.occultism.dictionary_of_spirits.pentacles.summon_afrit.description", "hide_while_locked": false, "icon": { - "item": "occultism:pentacle" + "item": "occultism:pentacle_summon" }, "name": "book.occultism.dictionary_of_spirits.pentacles.summon_afrit.name", "pages": [ @@ -49,13 +50,13 @@ "parents": [ { "draw_arrow": true, - "entry": "pentacles/summon_wild_afrit", + "entry": "pentacles/summon_unbound_afrit", "line_enabled": true, "line_reversed": false } ], "show_when_any_parent_unlocked": false, - "sort_number": -1, - "x": 0, - "y": -2 + "sort_number": 24, + "x": 4, + "y": -4 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_djinni.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_djinni.json index 7fd20b123..fe5b151b6 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_djinni.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_djinni.json @@ -3,12 +3,22 @@ "background_v_index": 0, "category": "pentacles", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:and", + "children": [ + { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/light_gray" + }, + { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/lime" + } + ] }, - "description": "", + "description": "book.occultism.dictionary_of_spirits.pentacles.summon_djinni.description", "hide_while_locked": false, "icon": { - "item": "occultism:pentacle" + "item": "occultism:pentacle_summon" }, "name": "book.occultism.dictionary_of_spirits.pentacles.summon_djinni.name", "pages": [ @@ -55,7 +65,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": -1, - "x": -4, - "y": -2 + "sort_number": 13, + "x": -2, + "y": -4 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_foliot.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_foliot.json index 1e3ab946d..91ba19865 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_foliot.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_foliot.json @@ -3,12 +3,13 @@ "background_v_index": 0, "category": "pentacles", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/white" }, - "description": "", + "description": "book.occultism.dictionary_of_spirits.pentacles.summon_foliot.description", "hide_while_locked": false, "icon": { - "item": "occultism:pentacle" + "item": "occultism:pentacle_summon" }, "name": "book.occultism.dictionary_of_spirits.pentacles.summon_foliot.name", "pages": [ @@ -49,13 +50,13 @@ "parents": [ { "draw_arrow": true, - "entry": "pentacles/pentacles_overview", + "entry": "pentacles/didactics", "line_enabled": true, "line_reversed": false } ], "show_when_any_parent_unlocked": false, - "sort_number": -1, - "x": -6, - "y": -2 + "sort_number": 4, + "x": -5, + "y": -4 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_marid.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_marid.json index 298d2e5de..7b325dc9a 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_marid.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_marid.json @@ -3,12 +3,13 @@ "background_v_index": 0, "category": "pentacles", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/blue" }, - "description": "", + "description": "book.occultism.dictionary_of_spirits.pentacles.summon_marid.description", "hide_while_locked": false, "icon": { - "item": "occultism:pentacle" + "item": "occultism:pentacle_summon" }, "name": "book.occultism.dictionary_of_spirits.pentacles.summon_marid.name", "pages": [ @@ -49,13 +50,13 @@ "parents": [ { "draw_arrow": true, - "entry": "pentacles/summon_afrit", + "entry": "pentacles/summon_unbound_marid", "line_enabled": true, "line_reversed": false } ], "show_when_any_parent_unlocked": false, - "sort_number": -1, - "x": 2, - "y": -2 + "sort_number": 30, + "x": 10, + "y": -4 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_wild_greater_spirit.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_unbound_afrit.json similarity index 64% rename from src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_wild_greater_spirit.json rename to src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_unbound_afrit.json index 7e43ec64b..e5541e41c 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_wild_greater_spirit.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_unbound_afrit.json @@ -3,14 +3,24 @@ "background_v_index": 0, "category": "pentacles", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:and", + "children": [ + { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/gray" + }, + { + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/orange" + } + ] }, - "description": "", + "description": "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_afrit.description", "hide_while_locked": false, "icon": { - "item": "occultism:pentacle" + "item": "occultism:pentacle_summon" }, - "name": "book.occultism.dictionary_of_spirits.pentacles.summon_wild_greater_spirit.name", + "name": "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_afrit.name", "pages": [ { "type": "modonomicon:text", @@ -19,8 +29,8 @@ "type": "modonomicon:none" }, "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.pentacles.summon_wild_greater_spirit.intro.text", - "title": "book.occultism.dictionary_of_spirits.pentacles.summon_wild_greater_spirit.intro.title", + "text": "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_afrit.intro.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_afrit.intro.title", "use_markdown_in_title": false }, { @@ -29,7 +39,7 @@ "condition": { "type": "modonomicon:none" }, - "multiblock_id": "summon_wild_greater_spirit", + "multiblock_id": "summon_unbound_afrit", "multiblock_name": "", "show_visualize_button": true, "text": "" @@ -41,21 +51,21 @@ "type": "modonomicon:none" }, "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.pentacles.summon_wild_greater_spirit.uses.text", - "title": "book.occultism.dictionary_of_spirits.pentacles.summon_wild_greater_spirit.uses.title", + "text": "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_afrit.uses.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_afrit.uses.title", "use_markdown_in_title": false } ], "parents": [ { "draw_arrow": true, - "entry": "pentacles/summon_marid", + "entry": "pentacles/summon_djinni", "line_enabled": true, "line_reversed": false } ], "show_when_any_parent_unlocked": false, - "sort_number": -1, - "x": 4, - "y": -2 + "sort_number": 19, + "x": 1, + "y": -4 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_wild_afrit.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_unbound_marid.json similarity index 71% rename from src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_wild_afrit.json rename to src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_unbound_marid.json index df550fa3e..36d0fd1a4 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_wild_afrit.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/summon_unbound_marid.json @@ -3,14 +3,15 @@ "background_v_index": 0, "category": "pentacles", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/black" }, - "description": "", + "description": "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_marid.description", "hide_while_locked": false, "icon": { - "item": "occultism:pentacle" + "item": "occultism:pentacle_summon" }, - "name": "book.occultism.dictionary_of_spirits.pentacles.summon_wild_afrit.name", + "name": "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_marid.name", "pages": [ { "type": "modonomicon:text", @@ -19,8 +20,8 @@ "type": "modonomicon:none" }, "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.pentacles.summon_wild_afrit.intro.text", - "title": "book.occultism.dictionary_of_spirits.pentacles.summon_wild_afrit.intro.title", + "text": "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_marid.intro.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_marid.intro.title", "use_markdown_in_title": false }, { @@ -29,7 +30,7 @@ "condition": { "type": "modonomicon:none" }, - "multiblock_id": "summon_wild_afrit", + "multiblock_id": "summon_unbound_marid", "multiblock_name": "", "show_visualize_button": true, "text": "" @@ -41,21 +42,21 @@ "type": "modonomicon:none" }, "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.pentacles.summon_wild_afrit.uses.text", - "title": "book.occultism.dictionary_of_spirits.pentacles.summon_wild_afrit.uses.title", + "text": "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_marid.uses.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.summon_unbound_marid.uses.title", "use_markdown_in_title": false } ], "parents": [ { "draw_arrow": true, - "entry": "pentacles/summon_djinni", + "entry": "pentacles/summon_afrit", "line_enabled": true, "line_reversed": false } ], "show_when_any_parent_unlocked": false, - "sort_number": -1, - "x": -2, - "y": -2 + "sort_number": 28, + "x": 7, + "y": -4 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/white_chalk.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/white_chalk.json new file mode 100644 index 000000000..69076d503 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/white_chalk.json @@ -0,0 +1,74 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/didactics" + }, + "description": "book.occultism.dictionary_of_spirits.pentacles.white_chalk.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:chalk_white" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.white_chalk.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.white_chalk.lore.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.white_chalk.lore.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "occultism:chalk_white" + }, + "text": "book.occultism.dictionary_of_spirits.pentacles.white_chalk.spotlight.text", + "title": "" + }, + { + "type": "modonomicon:crafting_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:crafting/chalk_white_impure", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "occultism:spirit_fire_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:spirit_fire/chalk_white", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/didactics", + "line_enabled": true, + "line_reversed": true + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 3, + "x": -5, + "y": -6 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/yellow_chalk.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/yellow_chalk.json new file mode 100644 index 000000000..ab5acf9e5 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/pentacles/yellow_chalk.json @@ -0,0 +1,80 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "pentacles", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_foliot" + }, + "description": "book.occultism.dictionary_of_spirits.pentacles.yellow_chalk.description", + "hide_while_locked": false, + "icon": { + "item": "occultism:chalk_gold" + }, + "name": "book.occultism.dictionary_of_spirits.pentacles.yellow_chalk.name", + "pages": [ + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.pentacles.yellow_chalk.lore.text", + "title": "book.occultism.dictionary_of_spirits.pentacles.yellow_chalk.lore.title", + "use_markdown_in_title": false + }, + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "occultism:chalk_gold" + }, + "text": "book.occultism.dictionary_of_spirits.pentacles.yellow_chalk.spotlight.text", + "title": "" + }, + { + "type": "modonomicon:crafting_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:crafting/chalk_yellow_impure", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "occultism:spirit_fire_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:spirit_fire/chalk_yellow", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "pentacles/didactics", + "line_enabled": true, + "line_reversed": false + }, + { + "draw_arrow": true, + "entry": "pentacles/white_chalk", + "line_enabled": false, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 6, + "x": -8, + "y": -2 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_creeper.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_creeper.json index 1ae8b70c8..ac7d3c842 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_creeper.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_creeper.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/contact_wild_spirit" }, "description": "", "hide_while_locked": false, @@ -32,7 +33,7 @@ "condition": { "type": "modonomicon:none" }, - "recipe_id_1": "occultism:ritual/summon_wild_creeper", + "recipe_id_1": "occultism:ritual/wild_creeper", "text": "", "title1": "", "title2": "" diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_drowned.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_drowned.json index 977380592..bae2a6e9d 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_drowned.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_drowned.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/contact_wild_spirit" }, "description": "", "hide_while_locked": false, @@ -32,7 +33,7 @@ "condition": { "type": "modonomicon:none" }, - "recipe_id_1": "occultism:ritual/summon_wild_drowned", + "recipe_id_1": "occultism:ritual/wild_drowned", "text": "", "title1": "", "title2": "" diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_husk.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_husk.json index d8c5c5ce8..f51691fa0 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_husk.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_husk.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/contact_wild_spirit" }, "description": "", "hide_while_locked": false, @@ -32,7 +33,7 @@ "condition": { "type": "modonomicon:none" }, - "recipe_id_1": "occultism:ritual/summon_wild_husk", + "recipe_id_1": "occultism:ritual/wild_husk", "text": "", "title1": "", "title2": "" diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_illager.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_illager.json index 98a4cc7b3..5af567570 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_illager.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_illager.json @@ -2,6 +2,10 @@ "background_u_index": 0, "background_v_index": 0, "category": "possession_rituals", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/contact_wild_spirit" + }, "description": "", "hide_while_locked": false, "icon": { @@ -29,7 +33,7 @@ "condition": { "type": "modonomicon:none" }, - "recipe_id_1": "occultism:ritual/summon_horde_illager", + "recipe_id_1": "occultism:ritual/wild_horde_illager", "text": "", "title1": "", "title2": "" @@ -56,6 +60,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": -6, - "y": 1 + "x": -5, + "y": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_silverfish.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_silverfish.json index 9e9889076..2900ad15f 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_silverfish.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_silverfish.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/contact_wild_spirit" }, "description": "", "hide_while_locked": false, @@ -32,7 +33,7 @@ "condition": { "type": "modonomicon:none" }, - "recipe_id_1": "occultism:ritual/summon_wild_silverfish", + "recipe_id_1": "occultism:ritual/wild_silverfish", "text": "", "title1": "", "title2": "" diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/overview.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/overview.json index 60ebe33a9..c5f5f8def 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/overview.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/overview.json @@ -3,7 +3,8 @@ "background_v_index": 1, "category": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_foliot" }, "description": "", "hide_while_locked": false, diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_bee.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_bee.json new file mode 100644 index 000000000..6b98e5c3a --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_bee.json @@ -0,0 +1,65 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "possession_rituals", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_djinni" + }, + "description": "", + "hide_while_locked": false, + "icon": { + "item": "occultism:cursed_honey" + }, + "name": "book.occultism.dictionary_of_spirits.possession_rituals.possess_bee.name", + "pages": [ + { + "type": "modonomicon:entity", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "default_rotation": -45.0, + "entity_id": "occultism:possessed_bee", + "name": "", + "offset": 0.0, + "rotate": true, + "scale": 1.0, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_bee.entity.text" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/possess_bee", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_bee.description.text", + "title": "", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "possession_rituals/overview", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": -1, + "x": -1, + "y": -5 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_breeze.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_breeze.json index 6373f78d5..3b4f7b1e0 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_breeze.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_breeze.json @@ -2,6 +2,10 @@ "background_u_index": 0, "background_v_index": 0, "category": "possession_rituals", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "possession_rituals/possess_weak_breeze" + }, "description": "", "hide_while_locked": false, "icon": { @@ -29,7 +33,7 @@ "condition": { "type": "modonomicon:none" }, - "recipe_id_1": "occultism:ritual/possess_breeze", + "recipe_id_1": "occultism:ritual/wild_breeze", "text": "", "title1": "", "title2": "" @@ -56,6 +60,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 3, + "x": 1, "y": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_elder_guardian.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_elder_guardian.json index 4015333c6..9b12bfc1d 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_elder_guardian.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_elder_guardian.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_afrit" }, "description": "", "hide_while_locked": false, diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_enderman.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_enderman.json index f0100c18a..153f280d9 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_enderman.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_enderman.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_djinni" }, "description": "", "hide_while_locked": false, @@ -59,6 +60,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 2, + "x": -2, "y": -3 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_endermite.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_endermite.json index 2fdcb0788..21415369a 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_endermite.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_endermite.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_foliot" }, "description": "", "hide_while_locked": false, diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_ghast.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_ghast.json index 94ed0a394..c6c2c18bd 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_ghast.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_ghast.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_djinni" }, "description": "", "hide_while_locked": false, @@ -59,6 +60,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 1, - "y": -5 + "x": 0, + "y": -3 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/summoning_rituals/afrit_essence.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_goat.json similarity index 51% rename from src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/summoning_rituals/afrit_essence.json rename to src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_goat.json index 183102e17..91fbdd700 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/summoning_rituals/afrit_essence.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_goat.json @@ -3,25 +3,29 @@ "background_v_index": 0, "category": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_marid" }, "description": "", "hide_while_locked": false, "icon": { - "item": "occultism:afrit_essence" + "item": "occultism:cruelty_essence" }, - "name": "book.occultism.dictionary_of_spirits.summoning_rituals.afrit_essence.name", + "name": "book.occultism.dictionary_of_spirits.possession_rituals.possess_goat.name", "pages": [ { - "type": "modonomicon:text", + "type": "modonomicon:entity", "anchor": "", "condition": { "type": "modonomicon:none" }, - "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.summoning_rituals.afrit_essence.intro.text", - "title": "book.occultism.dictionary_of_spirits.summoning_rituals.afrit_essence.intro.title", - "use_markdown_in_title": false + "default_rotation": -45.0, + "entity_id": "occultism:mercy_goat", + "name": "", + "offset": 0.0, + "rotate": true, + "scale": 0.7, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_goat.entity.text" }, { "type": "occultism:ritual_recipe", @@ -29,10 +33,21 @@ "condition": { "type": "modonomicon:none" }, - "recipe_id_1": "occultism:ritual/summon_wild_afrit", + "recipe_id_1": "occultism:ritual/possess_goat", "text": "", "title1": "", "title2": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_goat.description.text", + "title": "", + "use_markdown_in_title": false } ], "parents": [ @@ -45,6 +60,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": -5, - "y": -4 + "x": 7, + "y": -5 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_hoglin.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_hoglin.json index 89aad28b3..885e9a457 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_hoglin.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_hoglin.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_afrit" }, "description": "", "hide_while_locked": false, @@ -59,6 +60,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 7, + "x": 5, "y": -5 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_phantom.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_phantom.json index 251fb7738..505e0a734 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_phantom.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_phantom.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_foliot" }, "description": "", "hide_while_locked": false, @@ -59,6 +60,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 0, - "y": -3 + "x": -5, + "y": -5 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_random_animal.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_random_animal.json similarity index 59% rename from src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_random_animal.json rename to src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_random_animal.json index a3427282d..7b99803fd 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_random_animal.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_random_animal.json @@ -1,16 +1,17 @@ { "background_u_index": 0, "background_v_index": 0, - "category": "summoning_rituals", + "category": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_foliot" }, "description": "", "hide_while_locked": false, "icon": { "item": "minecraft:cow_spawn_egg" }, - "name": "book.occultism.dictionary_of_spirits.summoning_rituals.summon_random_animal.name", + "name": "book.occultism.dictionary_of_spirits.possession_rituals.possess_random_animal.name", "pages": [ { "type": "modonomicon:entity", @@ -20,11 +21,11 @@ }, "default_rotation": -45.0, "entity_id": "minecraft:cow", - "name": "book.occultism.dictionary_of_spirits.summoning_rituals.summon_random_animal.entity.title", + "name": "book.occultism.dictionary_of_spirits.possession_rituals.possess_random_animal.entity.title", "offset": 0.0, "rotate": true, "scale": 1.0, - "text": "book.occultism.dictionary_of_spirits.summoning_rituals.summon_random_animal.entity.text" + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_random_animal.entity.text" }, { "type": "occultism:ritual_recipe", @@ -32,7 +33,7 @@ "condition": { "type": "modonomicon:none" }, - "recipe_id_1": "occultism:ritual/summon_random_animal", + "recipe_id_1": "occultism:ritual/possess_random_animal", "text": "", "title1": "", "title2": "" @@ -44,7 +45,7 @@ "type": "modonomicon:none" }, "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.summoning_rituals.summon_random_animal.description.text", + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_random_animal.description.text", "title": "", "use_markdown_in_title": false } @@ -52,13 +53,13 @@ "parents": [ { "draw_arrow": true, - "entry": "summoning_rituals/summon_wild_parrot", + "entry": "possession_rituals/overview", "line_enabled": true, - "line_reversed": true + "line_reversed": false } ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 4, - "y": 2 + "x": 7, + "y": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_shulker.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_shulker.json index eef8a7f7e..ce2ffcd0b 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_shulker.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_shulker.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_afrit" }, "description": "", "hide_while_locked": false, @@ -59,6 +60,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 5, - "y": -5 + "x": 6, + "y": -3 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_skeleton.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_skeleton.json index f82758304..5bc81d8cd 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_skeleton.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_skeleton.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_foliot" }, "description": "", "hide_while_locked": false, diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_strong_breeze.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_strong_breeze.json index 8e5c5acb6..0923e45a9 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_strong_breeze.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_strong_breeze.json @@ -2,6 +2,10 @@ "background_u_index": 0, "background_v_index": 0, "category": "possession_rituals", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "possession_rituals/possess_breeze" + }, "description": "", "hide_while_locked": false, "icon": { @@ -29,7 +33,7 @@ "condition": { "type": "modonomicon:none" }, - "recipe_id_1": "occultism:ritual/possess_strong_breeze", + "recipe_id_1": "occultism:ritual/wild_strong_breeze", "text": "", "title1": "", "title2": "" @@ -56,6 +60,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 3, + "x": 1, "y": 5 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_wild_otherworld_bird.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_unbound_otherworld_bird.json similarity index 65% rename from src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_wild_otherworld_bird.json rename to src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_unbound_otherworld_bird.json index 0e24a859d..23ea56370 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_wild_otherworld_bird.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_unbound_otherworld_bird.json @@ -1,9 +1,10 @@ { "background_u_index": 0, "background_v_index": 0, - "category": "summoning_rituals", + "category": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_djinni" }, "description": "", "hide_while_locked": false, @@ -12,7 +13,7 @@ "texture": "occultism:textures/gui/book/otherworld_bird.png", "width": 16 }, - "name": "book.occultism.dictionary_of_spirits.summoning_rituals.summon_wild_otherworld_bird.name", + "name": "book.occultism.dictionary_of_spirits.possession_rituals.possess_unbound_otherworld_bird.name", "pages": [ { "type": "modonomicon:entity", @@ -26,7 +27,7 @@ "offset": 0.0, "rotate": true, "scale": 1.0, - "text": "book.occultism.dictionary_of_spirits.summoning_rituals.summon_wild_otherworld_bird.entity.text" + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_unbound_otherworld_bird.entity.text" }, { "type": "occultism:ritual_recipe", @@ -34,7 +35,7 @@ "condition": { "type": "modonomicon:none" }, - "recipe_id_1": "occultism:ritual/summon_wild_otherworld_bird", + "recipe_id_1": "occultism:ritual/possess_unbound_otherworld_bird", "text": "", "title1": "", "title2": "" @@ -46,7 +47,7 @@ "type": "modonomicon:none" }, "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.summoning_rituals.summon_wild_otherworld_bird.description.text", + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_unbound_otherworld_bird.description.text", "title": "", "use_markdown_in_title": false } @@ -54,13 +55,13 @@ "parents": [ { "draw_arrow": true, - "entry": "summoning_rituals/summon_wild_parrot", + "entry": "possession_rituals/possess_unbound_parrot", "line_enabled": true, "line_reversed": false } ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 2, - "y": 4 + "x": 5, + "y": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_wild_parrot.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_unbound_parrot.json similarity index 66% rename from src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_wild_parrot.json rename to src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_unbound_parrot.json index 796c201b9..c396fc99f 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_wild_parrot.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_unbound_parrot.json @@ -1,9 +1,10 @@ { "background_u_index": 0, "background_v_index": 0, - "category": "summoning_rituals", + "category": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_foliot" }, "description": "", "hide_while_locked": false, @@ -12,7 +13,7 @@ "texture": "occultism:textures/gui/book/parrot.png", "width": 16 }, - "name": "book.occultism.dictionary_of_spirits.summoning_rituals.summon_wild_parrot.name", + "name": "book.occultism.dictionary_of_spirits.possession_rituals.possess_unbound_parrot.name", "pages": [ { "type": "modonomicon:entity", @@ -26,7 +27,7 @@ "offset": 0.0, "rotate": true, "scale": 1.0, - "text": "book.occultism.dictionary_of_spirits.summoning_rituals.summon_wild_parrot.entity.text" + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_unbound_parrot.entity.text" }, { "type": "occultism:ritual_recipe", @@ -34,7 +35,7 @@ "condition": { "type": "modonomicon:none" }, - "recipe_id_1": "occultism:ritual/summon_wild_parrot", + "recipe_id_1": "occultism:ritual/possess_unbound_parrot", "text": "", "title1": "", "title2": "" @@ -46,7 +47,7 @@ "type": "modonomicon:none" }, "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.summoning_rituals.summon_wild_parrot.description.text", + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_unbound_parrot.description.text", "title": "", "use_markdown_in_title": false }, @@ -57,7 +58,7 @@ "type": "modonomicon:none" }, "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.summoning_rituals.summon_wild_parrot.description2.text", + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_unbound_parrot.description2.text", "title": "", "use_markdown_in_title": false } @@ -65,13 +66,13 @@ "parents": [ { "draw_arrow": true, - "entry": "summoning_rituals/overview", + "entry": "possession_rituals/overview", "line_enabled": true, "line_reversed": false } ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 2, - "y": 0 + "x": 5, + "y": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_warden.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_warden.json index ce99fd440..ba39b987b 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_warden.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_warden.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_djinni" }, "description": "", "hide_while_locked": false, @@ -59,6 +60,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 6, + "x": 2, "y": -3 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_weak_breeze.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_weak_breeze.json index 5a499cd66..cf36fc855 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_weak_breeze.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_weak_breeze.json @@ -2,6 +2,10 @@ "background_u_index": 0, "background_v_index": 0, "category": "possession_rituals", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/contact_wild_spirit" + }, "description": "", "hide_while_locked": false, "icon": { @@ -29,7 +33,7 @@ "condition": { "type": "modonomicon:none" }, - "recipe_id_1": "occultism:ritual/possess_weak_breeze", + "recipe_id_1": "occultism:ritual/wild_weak_breeze", "text": "", "title1": "", "title2": "" @@ -56,6 +60,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 3, + "x": 1, "y": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_weak_shulker.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_weak_shulker.json index 337a71728..19a5a4251 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_weak_shulker.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_weak_shulker.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_djinni" }, "description": "", "hide_while_locked": false, @@ -59,6 +60,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 3, + "x": 1, "y": -5 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_witch.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_witch.json new file mode 100644 index 000000000..54567cd3c --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_witch.json @@ -0,0 +1,65 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "possession_rituals", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_foliot" + }, + "description": "", + "hide_while_locked": false, + "icon": { + "item": "minecraft:experience_bottle" + }, + "name": "book.occultism.dictionary_of_spirits.possession_rituals.possess_witch.name", + "pages": [ + { + "type": "modonomicon:entity", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "default_rotation": -45.0, + "entity_id": "occultism:possessed_witch", + "name": "", + "offset": 0.8, + "rotate": true, + "scale": 0.4, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_witch.entity.text" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/possess_witch", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_witch.description.text", + "title": "", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "possession_rituals/overview", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": -1, + "x": -3, + "y": -5 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_zombie_piglin.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_zombie_piglin.json new file mode 100644 index 000000000..18896ed33 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_zombie_piglin.json @@ -0,0 +1,65 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "possession_rituals", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_unbound_afrit" + }, + "description": "", + "hide_while_locked": false, + "icon": { + "item": "occultism:demonic_meat" + }, + "name": "book.occultism.dictionary_of_spirits.possession_rituals.possess_zombie_piglin.name", + "pages": [ + { + "type": "modonomicon:entity", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "default_rotation": -45.0, + "entity_id": "occultism:possessed_zombie_piglin", + "name": "", + "offset": 0.0, + "rotate": true, + "scale": 0.7, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_zombie_piglin.entity.text" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/possess_zombie_piglin", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_zombie_piglin.description.text", + "title": "", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "possession_rituals/overview", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": -1, + "x": 3, + "y": -5 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/return_to_rituals.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/return_to_rituals.json index b0b34f858..3d6ba24df 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/return_to_rituals.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/return_to_rituals.json @@ -4,7 +4,8 @@ "category": "possession_rituals", "category_to_open": "rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/possess_foliot" }, "description": "", "hide_while_locked": false, diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/summoning_rituals/wither_skull.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/wither_skull.json similarity index 62% rename from src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/summoning_rituals/wither_skull.json rename to src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/wither_skull.json index 40d7f5e04..28be0a02b 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/summoning_rituals/wither_skull.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/wither_skull.json @@ -3,14 +3,15 @@ "background_v_index": 0, "category": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/contact_wild_spirit" }, "description": "", "hide_while_locked": false, "icon": { "item": "minecraft:wither_skeleton_skull" }, - "name": "book.occultism.dictionary_of_spirits.summoning_rituals.wither_skull.name", + "name": "book.occultism.dictionary_of_spirits.possession_rituals.wither_skull.name", "pages": [ { "type": "modonomicon:text", @@ -19,8 +20,8 @@ "type": "modonomicon:none" }, "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.summoning_rituals.wither_skull.intro.text", - "title": "book.occultism.dictionary_of_spirits.summoning_rituals.wither_skull.intro.title", + "text": "book.occultism.dictionary_of_spirits.possession_rituals.wither_skull.intro.text", + "title": "book.occultism.dictionary_of_spirits.possession_rituals.wither_skull.intro.title", "use_markdown_in_title": false }, { @@ -29,7 +30,7 @@ "condition": { "type": "modonomicon:none" }, - "recipe_id_1": "occultism:ritual/summon_wild_hunt", + "recipe_id_1": "occultism:ritual/wild_hunt", "text": "", "title1": "", "title2": "" @@ -38,13 +39,13 @@ "parents": [ { "draw_arrow": true, - "entry": "possession_rituals/possess_skeleton", + "entry": "possession_rituals/overview", "line_enabled": true, "line_reversed": false } ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": -4, - "y": -5 + "x": -6, + "y": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/rituals/crafting_rituals.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/rituals/crafting_rituals.json index cce49a6f7..d955ffb61 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/rituals/crafting_rituals.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/rituals/crafting_rituals.json @@ -4,7 +4,8 @@ "category": "rituals", "category_to_open": "crafting_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/purple" }, "description": "", "hide_while_locked": false, diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/rituals/familiar_rituals.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/rituals/familiar_rituals.json index 841e4b9e8..8204b7907 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/rituals/familiar_rituals.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/rituals/familiar_rituals.json @@ -4,13 +4,14 @@ "category": "rituals", "category_to_open": "familiar_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/yellow" }, "description": "", "hide_while_locked": false, "icon": { "height": 16, - "texture": "occultism:textures/gui/book/parrot.png", + "texture": "occultism:textures/gui/book/familiar.png", "width": 16 }, "name": "book.occultism.dictionary_of_spirits.rituals.familiar_rituals.name", diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/rituals/possession_rituals.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/rituals/possession_rituals.json index a74929bef..521d87872 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/rituals/possession_rituals.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/rituals/possession_rituals.json @@ -4,7 +4,8 @@ "category": "rituals", "category_to_open": "possession_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/yellow" }, "description": "", "hide_while_locked": false, diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/rituals/summoning_rituals.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/rituals/summoning_rituals.json index 397fcaa35..9f5af0f1d 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/rituals/summoning_rituals.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/rituals/summoning_rituals.json @@ -4,7 +4,8 @@ "category": "rituals", "category_to_open": "summoning_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:advancement", + "advancement_id": "occultism:chalks/white" }, "description": "", "hide_while_locked": false, diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/storage/crafting_rituals/craft_stabilizer_tier3.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/storage/crafting_rituals/craft_stabilizer_tier3.json index aa86a9284..2ced3cbe4 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/storage/crafting_rituals/craft_stabilizer_tier3.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/storage/crafting_rituals/craft_stabilizer_tier3.json @@ -2,6 +2,10 @@ "background_u_index": 0, "background_v_index": 0, "category": "storage", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/craft_afrit" + }, "description": "", "hide_while_locked": false, "icon": { diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/storage/crafting_rituals/craft_stabilizer_tier4.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/storage/crafting_rituals/craft_stabilizer_tier4.json index 26b8614ef..2ccc2b027 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/storage/crafting_rituals/craft_stabilizer_tier4.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/storage/crafting_rituals/craft_stabilizer_tier4.json @@ -2,6 +2,10 @@ "background_u_index": 0, "background_v_index": 0, "category": "storage", + "condition": { + "type": "modonomicon:entry_read", + "entry_id": "pentacles/craft_marid" + }, "description": "", "hide_while_locked": false, "icon": { diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/storage/crafting_rituals/craft_storage_remote.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/storage/crafting_rituals/craft_storage_remote.json index 2d3be31a9..579fbfa52 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/storage/crafting_rituals/craft_storage_remote.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/storage/crafting_rituals/craft_storage_remote.json @@ -36,13 +36,13 @@ "parents": [ { "draw_arrow": true, - "entry": "storage/crafting_rituals/craft_stable_wormhole", + "entry": "storage/storage_controller", "line_enabled": true, "line_reversed": false } ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": -2, - "y": -2 + "x": -4, + "y": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/storage/summoning_rituals/summon_manage_machine.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/storage/summoning_rituals/summon_manage_machine.json index bcd6c4c59..798de95f7 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/storage/summoning_rituals/summon_manage_machine.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/storage/summoning_rituals/summon_manage_machine.json @@ -75,6 +75,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": -4, + "x": -6, "y": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/afrit_essence.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/afrit_essence.json index a52afbb0e..1f4a781b4 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/afrit_essence.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/afrit_essence.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "summoning_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_unbound_afrit" }, "description": "", "hide_while_locked": false, @@ -29,7 +30,7 @@ "condition": { "type": "modonomicon:none" }, - "recipe_id_1": "occultism:ritual/summon_wild_afrit", + "recipe_id_1": "occultism:ritual/summon_unbound_afrit", "text": "", "title1": "", "title2": "" diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/wither_skull.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/marid_essence.json similarity index 73% rename from src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/wither_skull.json rename to src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/marid_essence.json index 1c355f82e..a00a70f44 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/wither_skull.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/marid_essence.json @@ -3,14 +3,15 @@ "background_v_index": 0, "category": "summoning_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_unbound_marid" }, "description": "", "hide_while_locked": false, "icon": { - "item": "minecraft:wither_skeleton_skull" + "item": "occultism:marid_essence" }, - "name": "book.occultism.dictionary_of_spirits.summoning_rituals.wither_skull.name", + "name": "book.occultism.dictionary_of_spirits.summoning_rituals.marid_essence.name", "pages": [ { "type": "modonomicon:text", @@ -19,8 +20,8 @@ "type": "modonomicon:none" }, "show_title_separator": true, - "text": "book.occultism.dictionary_of_spirits.summoning_rituals.wither_skull.intro.text", - "title": "book.occultism.dictionary_of_spirits.summoning_rituals.wither_skull.intro.title", + "text": "book.occultism.dictionary_of_spirits.summoning_rituals.marid_essence.intro.text", + "title": "book.occultism.dictionary_of_spirits.summoning_rituals.marid_essence.intro.title", "use_markdown_in_title": false }, { @@ -29,7 +30,7 @@ "condition": { "type": "modonomicon:none" }, - "recipe_id_1": "occultism:ritual/summon_wild_hunt", + "recipe_id_1": "occultism:ritual/summon_unbound_marid", "text": "", "title1": "", "title2": "" @@ -38,13 +39,13 @@ "parents": [ { "draw_arrow": true, - "entry": "summoning_rituals/overview", + "entry": "summoning_rituals/afrit_essence", "line_enabled": true, "line_reversed": false } ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 6, - "y": 0 + "x": 4, + "y": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/overview.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/overview.json index dc10af079..f28f6563c 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/overview.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/overview.json @@ -3,7 +3,8 @@ "background_v_index": 1, "category": "summoning_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_foliot" }, "description": "", "hide_while_locked": false, @@ -28,6 +29,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": -6, + "x": -7, "y": -2 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/return_to_rituals.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/return_to_rituals.json index ffd873452..0a3a0f388 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/return_to_rituals.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/return_to_rituals.json @@ -4,7 +4,8 @@ "category": "summoning_rituals", "category_to_open": "rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_foliot" }, "description": "", "hide_while_locked": false, @@ -24,6 +25,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": -8, + "x": -9, "y": -2 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_cleaner.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_cleaner.json index ecc2d6190..6d32ca5b4 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_cleaner.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_cleaner.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "summoning_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_foliot" }, "description": "", "hide_while_locked": false, @@ -71,7 +72,7 @@ "parents": [ { "draw_arrow": true, - "entry": "summoning_rituals/summon_transport_items", + "entry": "summoning_rituals/overview", "line_enabled": true, "line_reversed": false } @@ -79,5 +80,5 @@ "show_when_any_parent_unlocked": false, "sort_number": -1, "x": 0, - "y": -6 + "y": -4 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_crusher_t1.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_crusher_t1.json index 7942c72cd..4ba56f3fd 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_crusher_t1.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_crusher_t1.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "summoning_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_foliot" }, "description": "", "hide_while_locked": false, @@ -67,6 +68,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": -2, + "x": -4, "y": 0 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_crusher_t2.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_crusher_t2.json index a90cb70a5..76c1b6548 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_crusher_t2.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_crusher_t2.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "summoning_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_djinni" }, "description": "", "hide_while_locked": false, @@ -45,6 +46,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": -2, + "x": -4, "y": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_crusher_t3.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_crusher_t3.json index e18ca1c2a..376878f6f 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_crusher_t3.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_crusher_t3.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "summoning_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_afrit" }, "description": "", "hide_while_locked": false, @@ -45,6 +46,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": -2, + "x": -4, "y": 4 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_crusher_t4.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_crusher_t4.json index 98c92d388..55c36fbdb 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_crusher_t4.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_crusher_t4.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "summoning_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_marid" }, "description": "", "hide_while_locked": false, @@ -45,6 +46,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": -2, + "x": -4, "y": 6 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_lumberjack.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_lumberjack.json index 124e8d12e..a5114d86b 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_lumberjack.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_lumberjack.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "summoning_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_foliot" }, "description": "", "hide_while_locked": false, @@ -89,6 +90,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": -2, + "x": -4, "y": -4 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_manage_machine.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_manage_machine.json index a0359b5a3..818496f40 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_manage_machine.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_manage_machine.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "summoning_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_djinni" }, "description": "", "hide_while_locked": false, @@ -71,13 +72,13 @@ "parents": [ { "draw_arrow": true, - "entry": "summoning_rituals/summon_transport_items", + "entry": "summoning_rituals/overview", "line_enabled": true, "line_reversed": false } ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 2, - "y": -4 + "x": -1, + "y": -5 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_otherstone_trader.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_otherstone_trader.json index be8619ebe..b45fea046 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_otherstone_trader.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_otherstone_trader.json @@ -2,9 +2,6 @@ "background_u_index": 0, "background_v_index": 0, "category": "summoning_rituals", - "condition": { - "type": "modonomicon:true" - }, "description": "", "hide_while_locked": false, "icon": { @@ -49,9 +46,9 @@ "parents": [ { "draw_arrow": true, - "entry": "summoning_rituals/summon_otherworld_sapling_trader", + "entry": "summoning_rituals/trade_spirits", "line_enabled": true, - "line_reversed": false + "line_reversed": true } ], "show_when_any_parent_unlocked": false, diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_otherworld_sapling_trader.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_otherworld_sapling_trader.json index 69baf17e5..31052a203 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_otherworld_sapling_trader.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_otherworld_sapling_trader.json @@ -2,9 +2,6 @@ "background_u_index": 0, "background_v_index": 0, "category": "summoning_rituals", - "condition": { - "type": "modonomicon:true" - }, "description": "", "hide_while_locked": false, "icon": { @@ -51,7 +48,7 @@ "draw_arrow": true, "entry": "summoning_rituals/trade_spirits", "line_enabled": true, - "line_reversed": false + "line_reversed": true } ], "show_when_any_parent_unlocked": false, diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_transport_items.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_transport_items.json index 447765e5e..a4c3d815d 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_transport_items.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/summon_transport_items.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "summoning_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_foliot" }, "description": "", "hide_while_locked": false, @@ -89,6 +90,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 0, + "x": -2, "y": -4 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/time_magic.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/time_magic.json index e998eb44d..fd3fe6956 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/time_magic.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/time_magic.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "summoning_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_djinni" }, "description": "", "hide_while_locked": false, @@ -49,7 +50,7 @@ "parents": [ { "draw_arrow": true, - "entry": "summoning_rituals/weather_magic", + "entry": "summoning_rituals/overview", "line_enabled": true, "line_reversed": false } @@ -57,5 +58,5 @@ "show_when_any_parent_unlocked": false, "sort_number": -1, "x": 4, - "y": -6 + "y": -4 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/trade_spirits.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/trade_spirits.json index 8e297235f..8acf29dfb 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/trade_spirits.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/trade_spirits.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "summoning_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_foliot" }, "description": "", "hide_while_locked": false, @@ -47,6 +48,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 0, + "x": -1, "y": 0 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/weather_magic.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/weather_magic.json index c29cdb4c1..ec2cce4e9 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/weather_magic.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/summoning_rituals/weather_magic.json @@ -3,7 +3,8 @@ "background_v_index": 0, "category": "summoning_rituals", "condition": { - "type": "modonomicon:true" + "type": "modonomicon:entry_read", + "entry_id": "pentacles/summon_djinni" }, "description": "", "hide_while_locked": false, @@ -67,6 +68,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 4, + "x": 2, "y": -4 } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/multiblocks/contact_eldritch_spirit.json b/src/generated/resources/data/occultism/modonomicon/multiblocks/contact_eldritch_spirit.json new file mode 100644 index 000000000..f0cffc9d1 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/multiblocks/contact_eldritch_spirit.json @@ -0,0 +1,109 @@ +{ + "type": "modonomicon:dense", + "mapping": { + "*": { + "type": "modonomicon:display", + "display": "occultism:otherstone" + }, + "+": { + "type": "modonomicon:display", + "display": "minecraft:stone" + }, + "0": { + "type": "modonomicon:block", + "block": "occultism:golden_sacrificial_bowl" + }, + "B": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_brown" + }, + "C": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_cyan" + }, + "M": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_magenta" + }, + "e": { + "type": "modonomicon:block", + "block": "minecraft:lodestone" + }, + "f": { + "type": "modonomicon:block", + "block": "minecraft:end_rod" + }, + "g": { + "type": "modonomicon:block", + "block": "minecraft:amethyst_cluster" + }, + "h": { + "type": "modonomicon:tag", + "tag": "#c:glass_panes" + }, + "i": { + "type": "modonomicon:block", + "block": "minecraft:beacon" + }, + "j": { + "type": "modonomicon:block", + "block": "minecraft:lightning_rod" + }, + "k": { + "type": "modonomicon:block", + "block": "minecraft:enchanting_table" + }, + "l": { + "type": "modonomicon:block", + "block": "minecraft:iron_bars" + } + }, + "pattern": [ + [ + "_____________________", + "__________C__________", + "_________CeC_________", + "_________CMC_________", + "____BB__CMMMC__BB____", + "____BlBBCM_MCBBfB____", + "_____B_B_____B_B_____", + "_____BB_______BB_____", + "____CC_________CC____", + "__CCMM_________MMCC__", + "_CkMM_____0_____MMgC_", + "__CCMM_________MMCC__", + "____CC_________CC____", + "_____BB_______BB_____", + "_____B_B_____B_B_____", + "____BjBBCM_MCBBhB____", + "____BB__CMMMC__BB____", + "_________CMC_________", + "_________CiC_________", + "__________C__________", + "_____________________" + ], + [ + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/multiblocks/contact_wild_spirit.json b/src/generated/resources/data/occultism/modonomicon/multiblocks/contact_wild_spirit.json new file mode 100644 index 000000000..cfa562345 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/multiblocks/contact_wild_spirit.json @@ -0,0 +1,61 @@ +{ + "type": "modonomicon:dense", + "mapping": { + "*": { + "type": "modonomicon:display", + "display": "occultism:otherstone" + }, + "+": { + "type": "modonomicon:display", + "display": "minecraft:stone" + }, + "0": { + "type": "modonomicon:block", + "block": "occultism:golden_sacrificial_bowl" + }, + "A": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_light_blue" + }, + "E": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_green" + }, + "P": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_pink" + } + }, + "pattern": [ + [ + "_____________", + "______P______", + "__A_AE_EA_A__", + "____PE_EP____", + "__APA_P_APA__", + "__EE_____EE__", + "_P__P_0_P__P_", + "__EE_____EE__", + "__APA_P_APA__", + "____PE_EP____", + "__A_AE_EA_A__", + "______P______", + "_____________" + ], + [ + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/multiblocks/craft_afrit.json b/src/generated/resources/data/occultism/modonomicon/multiblocks/craft_afrit.json index 023a731f7..a9842c08a 100644 --- a/src/generated/resources/data/occultism/modonomicon/multiblocks/craft_afrit.json +++ b/src/generated/resources/data/occultism/modonomicon/multiblocks/craft_afrit.json @@ -13,65 +13,81 @@ "type": "modonomicon:block", "block": "occultism:golden_sacrificial_bowl" }, - "C": { + "1": { "type": "modonomicon:tag", "tag": "#minecraft:candles" }, - "G": { + "2": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_gold" + "block": "minecraft:skeleton_skull" }, - "N": { + "3": { "type": "modonomicon:block", - "block": "minecraft:wither_skeleton_skull" + "block": "occultism:spirit_attuned_crystal" + }, + "G": { + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_dark" }, - "P": { + "L": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_purple" + "block": "occultism:chalk_glyph_lime" }, - "R": { + "O": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_red" + "block": "occultism:chalk_glyph_orange" }, - "S": { + "R": { "type": "modonomicon:block", - "block": "occultism:spirit_attuned_crystal" + "block": "occultism:chalk_glyph_red" }, "W": { - "type": "modonomicon:block", - "block": "occultism:chalk_glyph_white" + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_any" }, - "Z": { + "X": { "type": "modonomicon:block", - "block": "minecraft:skeleton_skull" + "block": "occultism:chalk_glyph_purple" } }, "pattern": [ [ - "_____N_____", - "____GGG____", - "___GCPCG___", - "__G_WCW_G__", - "_GCWW_WWCG_", - "ZGPC_0_CPGZ", - "_GCWW_WWCG_", - "__G_WCW_G__", - "___GCPCG___", - "____GGG____", - "_____Z_____" + "_________________", + "__RXOXOXRXOXOXR__", + "_RX____3_3____XR_", + "_X__XLXLXLXLX__X_", + "_O_XL_2___2_LX_O_", + "_X_L__WXXXW__L_X_", + "_O_X2WG1_1GW2X_O_", + "_X3L_X1G_G1X_L3X_", + "_R_X_X__0__X_X_R_", + "_X3L_X1G_G1X_L3X_", + "_O_X2WG1_1GW2X_O_", + "_X_L__WXXXW__L_X_", + "_O_XL_2___2_LX_O_", + "_X__XLXLXLXLX__X_", + "_RX____3_3____XR_", + "__RXOXOXRXOXOXR__", + "_________________" ], [ - "*+*+*+*+*+*", - "+*+*+*+*+*+", - "*+*+*+*+*+*", - "+*+*+*+*+*+", - "*+*+*+*+*+*", - "+*+*+*+*+*+", - "*+*+*+*+*+*", - "+*+*+*+*+*+", - "*+*+*+*+*+*", - "+*+*+*+*+*+", - "*+*+*+*+*+*" + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*" ] ] } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/multiblocks/craft_djinni.json b/src/generated/resources/data/occultism/modonomicon/multiblocks/craft_djinni.json index 6d93da462..31f0e805e 100644 --- a/src/generated/resources/data/occultism/modonomicon/multiblocks/craft_djinni.json +++ b/src/generated/resources/data/occultism/modonomicon/multiblocks/craft_djinni.json @@ -13,49 +13,61 @@ "type": "modonomicon:block", "block": "occultism:golden_sacrificial_bowl" }, - "C": { + "1": { "type": "modonomicon:tag", "tag": "#minecraft:candles" }, - "G": { + "2": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_gold" + "block": "minecraft:skeleton_skull" }, - "P": { + "L": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_purple" + "block": "occultism:chalk_glyph_lime" }, "S": { - "type": "modonomicon:block", - "block": "occultism:spirit_attuned_crystal" + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_no_white" }, "W": { + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_any" + }, + "X": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_white" + "block": "occultism:chalk_glyph_purple" } }, "pattern": [ [ - "_________", - "_C_WGW_C_", - "__P_W_P__", - "_W_SWS_W_", - "_GWW0WWG_", - "_W_SWS_W_", - "__P_W_P__", - "_C_WGW_C_", - "_________" + "_____________", + "__XLXLXLXLX__", + "_XL_2___2_LX_", + "_L__WXXXW__L_", + "_X2WS1_1SW2X_", + "_L_X1S_S1X_L_", + "_X_X__0__X_X_", + "_L_X1S_S1X_L_", + "_X2WS1_1SW2X_", + "_L__WXXXW__L_", + "_XL_2___2_LX_", + "__XLXLXLXLX__", + "_____________" ], [ - "*+*+*+*+*", - "+*+*+*+*+", - "*+*+*+*+*", - "+*+*+*+*+", - "*+*+*+*+*", - "+*+*+*+*+", - "*+*+*+*+*", - "+*+*+*+*+", - "*+*+*+*+*" + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*" ] ] } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/multiblocks/craft_foliot.json b/src/generated/resources/data/occultism/modonomicon/multiblocks/craft_foliot.json index 532d1bd86..14f60f7e7 100644 --- a/src/generated/resources/data/occultism/modonomicon/multiblocks/craft_foliot.json +++ b/src/generated/resources/data/occultism/modonomicon/multiblocks/craft_foliot.json @@ -13,41 +13,41 @@ "type": "modonomicon:block", "block": "occultism:golden_sacrificial_bowl" }, - "C": { + "1": { "type": "modonomicon:tag", "tag": "#minecraft:candles" }, - "G": { - "type": "modonomicon:block", - "block": "occultism:chalk_glyph_gold" - }, - "S": { - "type": "modonomicon:block", - "block": "occultism:spirit_attuned_crystal" - }, "W": { + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_any" + }, + "X": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_white" + "block": "occultism:chalk_glyph_purple" } }, "pattern": [ [ - "__WSW__", - "_G___G_", - "W__W__W", - "C_W0W_C", - "W__W__W", - "_G___G_", - "__WSW__" + "_________", + "__WXXXW__", + "_WW1_1WW_", + "_X1W_W1X_", + "_X__0__X_", + "_X1W_W1X_", + "_WW1_1WW_", + "__WXXXW__", + "_________" ], [ - "*+*+*+*", - "+*+*+*+", - "*+*+*+*", - "+*+*+*+", - "*+*+*+*", - "+*+*+*+", - "*+*+*+*" + "*+*+*+*+*", + "+*+*+*+*+", + "*+*+*+*+*", + "+*+*+*+*+", + "*+*+*+*+*", + "+*+*+*+*+", + "*+*+*+*+*", + "+*+*+*+*+", + "*+*+*+*+*" ] ] } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/multiblocks/craft_marid.json b/src/generated/resources/data/occultism/modonomicon/multiblocks/craft_marid.json index e1447a635..ce39a2ea1 100644 --- a/src/generated/resources/data/occultism/modonomicon/multiblocks/craft_marid.json +++ b/src/generated/resources/data/occultism/modonomicon/multiblocks/craft_marid.json @@ -13,69 +13,97 @@ "type": "modonomicon:block", "block": "occultism:golden_sacrificial_bowl" }, - "C": { + "1": { "type": "modonomicon:tag", "tag": "#minecraft:candles" }, - "G": { + "2": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_gold" + "block": "minecraft:skeleton_skull" + }, + "3": { + "type": "modonomicon:block", + "block": "occultism:spirit_attuned_crystal" }, - "N": { + "4": { "type": "modonomicon:block", "block": "minecraft:wither_skeleton_skull" }, + "K": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_black" + }, + "L": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_lime" + }, + "O": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_orange" + }, "R": { "type": "modonomicon:block", "block": "occultism:chalk_glyph_red" }, - "S": { + "U": { "type": "modonomicon:block", - "block": "occultism:spirit_attuned_crystal" + "block": "occultism:chalk_glyph_blue" }, "W": { - "type": "modonomicon:block", - "block": "occultism:chalk_glyph_white" + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_any" }, - "Z": { + "X": { "type": "modonomicon:block", - "block": "minecraft:skeleton_skull" + "block": "occultism:chalk_glyph_purple" } }, "pattern": [ [ - "_______Z_______", - "______RRR______", - "_____RCWCR_____", - "____R__W__R____", - "___RGSWNWSGR___", - "__R_SGW_WGS_R__", - "_RC_WW___WW_CR_", - "ZRWWN__0__NWWRZ", - "_RC_WW___WW_CR_", - "__R_SGW_WGS_R__", - "___RGSWNWSGR___", - "____R__W__R____", - "_____RCWCR_____", - "______RRR______", - "_______Z_______" + "_____________________", + "__XXUUUXUUUUUXUUUXX__", + "_XX_______4_______XX_", + "_X__RXOXOXRXOXOXR__X_", + "_U_RX____3_3____XR_U_", + "_U_X__XLXLXLXLX__X_U_", + "_U_O_XL_2___2_LX_O_U_", + "_X_X_L__WXXXW__L_X_X_", + "_U_O_X2WK1_1KW2X_O_U_", + "_U_X3L_X1K_K1X_L3X_U_", + "_U4R_X_X__0__X_X_R4U_", + "_U_X3L_X1K_K1X_L3X_U_", + "_U_O_X2WK1_1KW2X_O_U_", + "_X_X_L__WXXXW__L_X_X_", + "_U_O_XL_2___2_LX_O_U_", + "_U_X__XLXLXLXLX__X_U_", + "_U_RX____3_3____XR_U_", + "_X__RXOXOXRXOXOXR__X_", + "_XX_______4_______XX_", + "__XXUUUXUUUUUXUUUXX__", + "_____________________" ], [ - "*+*+*+*+*+*+*+*", - "+*+*+*+*+*+*+*+", - "*+*+*+*+*+*+*+*", - "+*+*+*+*+*+*+*+", - "*+*+*+*+*+*+*+*", - "+*+*+*+*+*+*+*+", - "*+*+*+*+*+*+*+*", - "+*+*+*+*+*+*+*+", - "*+*+*+*+*+*+*+*", - "+*+*+*+*+*+*+*+", - "*+*+*+*+*+*+*+*", - "+*+*+*+*+*+*+*+", - "*+*+*+*+*+*+*+*", - "+*+*+*+*+*+*+*+", - "*+*+*+*+*+*+*+*" + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*" ] ] } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/multiblocks/debug.json b/src/generated/resources/data/occultism/modonomicon/multiblocks/debug.json index 077e4cb40..0bd5e2db0 100644 --- a/src/generated/resources/data/occultism/modonomicon/multiblocks/debug.json +++ b/src/generated/resources/data/occultism/modonomicon/multiblocks/debug.json @@ -13,32 +13,64 @@ "type": "modonomicon:block", "block": "occultism:golden_sacrificial_bowl" }, - "C": { + "1": { "type": "modonomicon:tag", "tag": "#minecraft:candles" }, - "G": { + "2": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_gold" + "block": "minecraft:skeleton_skull" }, - "P": { + "X": { "type": "modonomicon:block", "block": "occultism:chalk_glyph_purple" }, - "Z": { + "Y": { "type": "modonomicon:block", - "block": "minecraft:skeleton_skull" + "block": "occultism:chalk_glyph_gold" + }, + "e": { + "type": "modonomicon:block", + "block": "minecraft:lodestone" + }, + "f": { + "type": "modonomicon:block", + "block": "minecraft:end_rod" + }, + "g": { + "type": "modonomicon:block", + "block": "minecraft:amethyst_cluster" + }, + "h": { + "type": "modonomicon:tag", + "tag": "#c:glass_panes" + }, + "i": { + "type": "modonomicon:block", + "block": "minecraft:beacon" + }, + "j": { + "type": "modonomicon:block", + "block": "minecraft:lightning_rod" + }, + "k": { + "type": "modonomicon:block", + "block": "minecraft:enchanting_table" + }, + "l": { + "type": "modonomicon:block", + "block": "minecraft:iron_bars" } }, "pattern": [ [ - "__GCG__", - "_G_P_G_", - "G__P__G", - "CPP0PPC", - "G__P__G", - "_G_P_G_", - "__GCG__" + "__Y1Y__", + "_Y_X_Y_", + "Y__X__Y", + "1XX0XX1", + "Y__X__Y", + "_Y_X_Y_", + "__Y1Y__" ], [ "*+*+*+*", diff --git a/src/generated/resources/data/occultism/modonomicon/multiblocks/possess_afrit.json b/src/generated/resources/data/occultism/modonomicon/multiblocks/possess_afrit.json index dd3a45e03..98b922772 100644 --- a/src/generated/resources/data/occultism/modonomicon/multiblocks/possess_afrit.json +++ b/src/generated/resources/data/occultism/modonomicon/multiblocks/possess_afrit.json @@ -13,61 +13,81 @@ "type": "modonomicon:block", "block": "occultism:golden_sacrificial_bowl" }, - "C": { + "1": { "type": "modonomicon:tag", "tag": "#minecraft:candles" }, - "G": { + "2": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_gold" + "block": "minecraft:skeleton_skull" + }, + "3": { + "type": "modonomicon:block", + "block": "occultism:spirit_attuned_crystal" + }, + "G": { + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_dark" }, - "N": { + "L": { "type": "modonomicon:block", - "block": "minecraft:wither_skeleton_skull" + "block": "occultism:chalk_glyph_lime" }, - "P": { + "O": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_purple" + "block": "occultism:chalk_glyph_orange" }, "R": { "type": "modonomicon:block", "block": "occultism:chalk_glyph_red" }, "W": { - "type": "modonomicon:block", - "block": "occultism:chalk_glyph_white" + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_any" }, - "Z": { + "Y": { "type": "modonomicon:block", - "block": "minecraft:skeleton_skull" + "block": "occultism:chalk_glyph_gold" } }, "pattern": [ [ - "___________", - "____PRP____", - "___GCWCG___", - "__G_WNW_G__", - "_PCWP_PWCP_", - "_RWZ_0_ZWR_", - "_PCWP_PWCP_", - "__G_WNW_G__", - "___GCWCG___", - "____PRP____", - "___________" + "_________________", + "________Y________", + "_______Y3Y_______", + "______R_L_R______", + "_____O_L2L_O_____", + "____O2Y_W_Y2O____", + "___R_Y1G1G1Y_R___", + "__Y_L_G_Y_G_L_Y__", + "_Y3L2W1Y0Y1W2L3Y_", + "__Y_L_G_Y_G_L_Y__", + "___R_Y1G1G1Y_R___", + "____O2Y_W_Y2O____", + "_____O_L2L_O_____", + "______R_L_R______", + "_______Y3Y_______", + "________Y________", + "_________________" ], [ - "*+*+*+*+*+*", - "+*+*+*+*+*+", - "*+*+*+*+*+*", - "+*+*+*+*+*+", - "*+*+*+*+*+*", - "+*+*+*+*+*+", - "*+*+*+*+*+*", - "+*+*+*+*+*+", - "*+*+*+*+*+*", - "+*+*+*+*+*+", - "*+*+*+*+*+*" + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*" ] ] } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/multiblocks/possess_djinni.json b/src/generated/resources/data/occultism/modonomicon/multiblocks/possess_djinni.json index cb066e518..4e4e1871a 100644 --- a/src/generated/resources/data/occultism/modonomicon/multiblocks/possess_djinni.json +++ b/src/generated/resources/data/occultism/modonomicon/multiblocks/possess_djinni.json @@ -13,49 +13,61 @@ "type": "modonomicon:block", "block": "occultism:golden_sacrificial_bowl" }, - "C": { + "1": { "type": "modonomicon:tag", "tag": "#minecraft:candles" }, - "G": { + "2": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_gold" + "block": "minecraft:skeleton_skull" }, - "P": { + "L": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_purple" + "block": "occultism:chalk_glyph_lime" + }, + "S": { + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_no_white" }, "W": { - "type": "modonomicon:block", - "block": "occultism:chalk_glyph_white" + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_any" }, - "Z": { + "Y": { "type": "modonomicon:block", - "block": "minecraft:skeleton_skull" + "block": "occultism:chalk_glyph_gold" } }, "pattern": [ [ - "___GPG___", - "__GC_CG__", - "_GZW_WZG_", - "GCWP_PWCG", - "P___0___P", - "GCWP_PWCG", - "_GZW_WZG_", - "__GC_CG__", - "___GPG___" + "_____________", + "______L______", + "_____L2L_____", + "____Y_W_Y____", + "___Y1S1S1Y___", + "__L_S_Y_S_L__", + "_L2W1Y0Y1W2L_", + "__L_S_Y_S_L__", + "___Y1S1S1Y___", + "____Y_W_Y____", + "_____L2L_____", + "______L______", + "_____________" ], [ - "*+*+*+*+*", - "+*+*+*+*+", - "*+*+*+*+*", - "+*+*+*+*+", - "*+*+*+*+*", - "+*+*+*+*+", - "*+*+*+*+*", - "+*+*+*+*+", - "*+*+*+*+*" + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*" ] ] } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/multiblocks/possess_foliot.json b/src/generated/resources/data/occultism/modonomicon/multiblocks/possess_foliot.json index 2e5d2fc77..2797dd290 100644 --- a/src/generated/resources/data/occultism/modonomicon/multiblocks/possess_foliot.json +++ b/src/generated/resources/data/occultism/modonomicon/multiblocks/possess_foliot.json @@ -13,30 +13,30 @@ "type": "modonomicon:block", "block": "occultism:golden_sacrificial_bowl" }, - "C": { + "1": { "type": "modonomicon:tag", "tag": "#minecraft:candles" }, - "G": { - "type": "modonomicon:block", - "block": "occultism:chalk_glyph_gold" - }, "W": { + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_any" + }, + "Y": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_white" + "block": "occultism:chalk_glyph_gold" } }, "pattern": [ [ - "___GGG___", - "__GC_CG__", - "_GW___WG_", - "GC_W_W_CG", - "G___0___G", - "GC_W_W_CG", - "_GW___WG_", - "__GC_CG__", - "___GGG___" + "_________", + "____W____", + "___W1W___", + "__W_Y_W__", + "_W1Y0Y1W_", + "__W_Y_W__", + "___W1W___", + "____W____", + "_________" ], [ "*+*+*+*+*", diff --git a/src/generated/resources/data/occultism/modonomicon/multiblocks/possess_marid.json b/src/generated/resources/data/occultism/modonomicon/multiblocks/possess_marid.json new file mode 100644 index 000000000..dcd697376 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/multiblocks/possess_marid.json @@ -0,0 +1,109 @@ +{ + "type": "modonomicon:dense", + "mapping": { + "*": { + "type": "modonomicon:display", + "display": "occultism:otherstone" + }, + "+": { + "type": "modonomicon:display", + "display": "minecraft:stone" + }, + "0": { + "type": "modonomicon:block", + "block": "occultism:golden_sacrificial_bowl" + }, + "1": { + "type": "modonomicon:tag", + "tag": "#minecraft:candles" + }, + "2": { + "type": "modonomicon:block", + "block": "minecraft:skeleton_skull" + }, + "3": { + "type": "modonomicon:block", + "block": "occultism:spirit_attuned_crystal" + }, + "4": { + "type": "modonomicon:block", + "block": "minecraft:wither_skeleton_skull" + }, + "K": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_black" + }, + "L": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_lime" + }, + "O": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_orange" + }, + "R": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_red" + }, + "U": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_blue" + }, + "W": { + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_any" + }, + "Y": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_gold" + } + }, + "pattern": [ + [ + "_____________________", + "__________U__________", + "_________Y4Y_________", + "________U_Y_U________", + "_______Y_Y3Y_Y_______", + "______U_R_L_R_U______", + "_____U3O_L2L_O3U_____", + "____Y_O2Y_W_Y2O_Y____", + "___U_R_Y1K1K1Y_R_U___", + "__Y_Y_L_K_Y_K_L_Y_Y__", + "_U4Y3L2W1Y0Y1W2L3Y4U_", + "__Y_Y_L_K_Y_K_L_Y_Y__", + "___U_R_Y1K1K1Y_R_U___", + "____Y_O2Y_W_Y2O_Y____", + "_____U3O_L2L_O3U_____", + "______U_R_L_R_U______", + "_______Y_Y3Y_Y_______", + "________U_Y_U________", + "_________Y4Y_________", + "__________U__________", + "_____________________" + ], + [ + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/multiblocks/possess_unbound_afrit.json b/src/generated/resources/data/occultism/modonomicon/multiblocks/possess_unbound_afrit.json new file mode 100644 index 000000000..b7b1cf6d9 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/multiblocks/possess_unbound_afrit.json @@ -0,0 +1,89 @@ +{ + "type": "modonomicon:dense", + "mapping": { + "*": { + "type": "modonomicon:display", + "display": "occultism:otherstone" + }, + "+": { + "type": "modonomicon:display", + "display": "minecraft:stone" + }, + "0": { + "type": "modonomicon:block", + "block": "occultism:golden_sacrificial_bowl" + }, + "1": { + "type": "modonomicon:tag", + "tag": "#minecraft:candles" + }, + "2": { + "type": "modonomicon:block", + "block": "minecraft:skeleton_skull" + }, + "3": { + "type": "modonomicon:block", + "block": "occultism:spirit_attuned_crystal" + }, + "G": { + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_dark" + }, + "L": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_lime" + }, + "O": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_orange" + }, + "W": { + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_any" + }, + "Y": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_gold" + } + }, + "pattern": [ + [ + "_________________", + "________Y________", + "_______Y3Y_______", + "________L________", + "_____O_L2L_O_____", + "____O2Y_W_Y2O____", + "_____Y1G1G1Y_____", + "__Y_L_G_Y_G_L_Y__", + "_Y3L2W1Y0Y1W2L3Y_", + "__Y_L_G_Y_G_L_Y__", + "_____Y1G1G1Y_____", + "____O2Y_W_Y2O____", + "_____O_L2L_O_____", + "________L________", + "_______Y3Y_______", + "________Y________", + "_________________" + ], + [ + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_wild_greater_spirit.json b/src/generated/resources/data/occultism/modonomicon/multiblocks/resurrect_spirit.json similarity index 66% rename from src/generated/resources/data/occultism/modonomicon/multiblocks/summon_wild_greater_spirit.json rename to src/generated/resources/data/occultism/modonomicon/multiblocks/resurrect_spirit.json index 9a0419e86..7413b504b 100644 --- a/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_wild_greater_spirit.json +++ b/src/generated/resources/data/occultism/modonomicon/multiblocks/resurrect_spirit.json @@ -13,31 +13,23 @@ "type": "modonomicon:block", "block": "occultism:golden_sacrificial_bowl" }, - "P": { - "type": "modonomicon:block", - "block": "occultism:chalk_glyph_purple" - }, "W": { "type": "modonomicon:block", "block": "occultism:chalk_glyph_white" - }, - "Z": { - "type": "modonomicon:block", - "block": "minecraft:skeleton_skull" } }, "pattern": [ [ "___________", - "____PPP____", - "___W_W_W___", - "__W_WZW_W__", - "_P_WP_PW_P_", - "_PWZ_0_ZWP_", - "_P_WP_PW_P_", - "__W_WZW_W__", - "___W_W_W___", - "____PPP____", + "_____W_____", + "__W_____W__", + "___________", + "____WWW____", + "_W__W0W__W_", + "____WWW____", + "___________", + "__W_____W__", + "_____W_____", "___________" ], [ diff --git a/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_afrit.json b/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_afrit.json index 6100acd64..5db247d6b 100644 --- a/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_afrit.json +++ b/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_afrit.json @@ -13,57 +13,77 @@ "type": "modonomicon:block", "block": "occultism:golden_sacrificial_bowl" }, - "C": { + "1": { "type": "modonomicon:tag", "tag": "#minecraft:candles" }, - "N": { + "2": { "type": "modonomicon:block", - "block": "minecraft:wither_skeleton_skull" + "block": "minecraft:skeleton_skull" }, - "P": { + "3": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_purple" + "block": "occultism:spirit_attuned_crystal" }, - "R": { + "G": { + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_dark" + }, + "L": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_red" + "block": "occultism:chalk_glyph_lime" }, - "W": { + "O": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_white" + "block": "occultism:chalk_glyph_orange" }, - "Z": { + "R": { "type": "modonomicon:block", - "block": "minecraft:skeleton_skull" + "block": "occultism:chalk_glyph_red" + }, + "W": { + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_any" } }, "pattern": [ [ - "___________", - "____PRP____", - "___WCWCW___", - "__W_WNW_W__", - "_PCWP_PWCP_", - "_RWZ_0_ZWR_", - "_PCWP_PWCP_", - "__W_WNW_W__", - "___WCWCW___", - "____PRP____", - "___________" + "_________________", + "______OOOOO______", + "____OOR_2_ROO____", + "___OR_LLLLL_RO___", + "__OR3L_L1L_L3RO__", + "__O_L2_WWW_2L_O__", + "_ORL__W_G_W__LRO_", + "_O_LLW_1G1_WLL_O_", + "_O2L1WGG0GGW1L2O_", + "_O_LLW_1G1_WLL_O_", + "_ORL__W_G_W__LRO_", + "__O_L2_WWW_2L_O__", + "__OR3L_L1L_L3RO__", + "___OR_LLLLL_RO___", + "____OOR_2_ROO____", + "______OOOOO______", + "_________________" ], [ - "*+*+*+*+*+*", - "+*+*+*+*+*+", - "*+*+*+*+*+*", - "+*+*+*+*+*+", - "*+*+*+*+*+*", - "+*+*+*+*+*+", - "*+*+*+*+*+*", - "+*+*+*+*+*+", - "*+*+*+*+*+*", - "+*+*+*+*+*+", - "*+*+*+*+*+*" + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*" ] ] } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_djinni.json b/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_djinni.json index 865e7129f..8e2647a5f 100644 --- a/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_djinni.json +++ b/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_djinni.json @@ -13,45 +13,57 @@ "type": "modonomicon:block", "block": "occultism:golden_sacrificial_bowl" }, - "C": { + "1": { "type": "modonomicon:tag", "tag": "#minecraft:candles" }, - "P": { + "2": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_purple" + "block": "minecraft:skeleton_skull" }, - "W": { + "L": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_white" + "block": "occultism:chalk_glyph_lime" }, - "Z": { - "type": "modonomicon:block", - "block": "minecraft:skeleton_skull" + "S": { + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_no_white" + }, + "W": { + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_any" } }, "pattern": [ [ - "___C_C___", - "___PPP___", - "__W_Z_W__", - "CP_W_W_PC", - "_PZ_0_ZP_", - "CP_W_W_PC", - "__W_Z_W__", - "___PPP___", - "___C_C___" + "_____________", + "____LLLLL____", + "___L_L1L_L___", + "__L2_WWW_2L__", + "_L__W_S_W__L_", + "_LLW_1S1_WLL_", + "_L1WSS0SSW1L_", + "_LLW_1S1_WLL_", + "_L__W_S_W__L_", + "__L2_WWW_2L__", + "___L_L1L_L___", + "____LLLLL____", + "_____________" ], [ - "*+*+*+*+*", - "+*+*+*+*+", - "*+*+*+*+*", - "+*+*+*+*+", - "*+*+*+*+*", - "+*+*+*+*+", - "*+*+*+*+*", - "+*+*+*+*+", - "*+*+*+*+*" + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*", + "+*+*+*+*+*+*+", + "*+*+*+*+*+*+*" ] ] } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_foliot.json b/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_foliot.json index d8fe0ac49..8f20b3be4 100644 --- a/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_foliot.json +++ b/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_foliot.json @@ -13,25 +13,25 @@ "type": "modonomicon:block", "block": "occultism:golden_sacrificial_bowl" }, - "C": { + "1": { "type": "modonomicon:tag", "tag": "#minecraft:candles" }, "W": { - "type": "modonomicon:block", - "block": "occultism:chalk_glyph_white" + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_any" } }, "pattern": [ [ "_________", - "___WCW___", + "___WWW___", "__W_W_W__", - "_W__W__W_", - "_CWW0WWC_", - "_W__W__W_", + "_W_1W1_W_", + "_WWW0WWW_", + "_W_1W1_W_", "__W_W_W__", - "___WCW___", + "___WWW___", "_________" ], [ diff --git a/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_marid.json b/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_marid.json index a1062304d..883409c13 100644 --- a/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_marid.json +++ b/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_marid.json @@ -13,65 +13,93 @@ "type": "modonomicon:block", "block": "occultism:golden_sacrificial_bowl" }, - "C": { + "1": { "type": "modonomicon:tag", "tag": "#minecraft:candles" }, - "G": { + "2": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_gold" + "block": "minecraft:skeleton_skull" + }, + "3": { + "type": "modonomicon:block", + "block": "occultism:spirit_attuned_crystal" }, - "N": { + "4": { "type": "modonomicon:block", "block": "minecraft:wither_skeleton_skull" }, + "K": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_black" + }, + "L": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_lime" + }, + "O": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_orange" + }, "R": { "type": "modonomicon:block", "block": "occultism:chalk_glyph_red" }, - "W": { + "U": { "type": "modonomicon:block", - "block": "occultism:chalk_glyph_white" + "block": "occultism:chalk_glyph_blue" }, - "Z": { - "type": "modonomicon:block", - "block": "minecraft:skeleton_skull" + "W": { + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_any" } }, "pattern": [ [ - "_______Z_______", - "______RRR______", - "_____RCWCR_____", - "____R__W__R____", - "___RG_WNW_GR___", - "__R__GW_WG__R__", - "_RC_WW___WW_CR_", - "ZRWWN__0__NWWRZ", - "_RC_WW___WW_CR_", - "__R__GW_WG__R__", - "___RG_WNW_GR___", - "____R__W__R____", - "_____RCWCR_____", - "______RRR______", - "_______Z_______" + "_____________________", + "_______UUUUUUU_______", + "_____UU__U3U__UU_____", + "____U___OOOOO___U____", + "___U4_OOR_2_ROO_4U___", + "__U__OR_LLLLL_RO__U__", + "__U_OR3L_L1L_L3RO_U__", + "_U__O_L2_WWW_2L_O__U_", + "_U_ORL__W_K_W__LRO_U_", + "_UUO_LLW_1K1_WLL_OUU_", + "_U3O2L1WKK0KKW1L2O3U_", + "_UUO_LLW_1K1_WLL_OUU_", + "_U_ORL__W_K_W__LRO_U_", + "_U__O_L2_WWW_2L_O__U_", + "__U_OR3L_L1L_L3RO_U__", + "__U__OR_LLLLL_RO__U__", + "___U4_OOR_2_ROO_4U___", + "____U___OOOOO___U____", + "_____UU__U3U__UU_____", + "_______UUUUUUU_______", + "_____________________" ], [ - "*+*+*+*+*+*+*+*", - "+*+*+*+*+*+*+*+", - "*+*+*+*+*+*+*+*", - "+*+*+*+*+*+*+*+", - "*+*+*+*+*+*+*+*", - "+*+*+*+*+*+*+*+", - "*+*+*+*+*+*+*+*", - "+*+*+*+*+*+*+*+", - "*+*+*+*+*+*+*+*", - "+*+*+*+*+*+*+*+", - "*+*+*+*+*+*+*+*", - "+*+*+*+*+*+*+*+", - "*+*+*+*+*+*+*+*", - "+*+*+*+*+*+*+*+", - "*+*+*+*+*+*+*+*" + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*+*+*" ] ] } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_unbound_afrit.json b/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_unbound_afrit.json new file mode 100644 index 000000000..fd62da791 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_unbound_afrit.json @@ -0,0 +1,85 @@ +{ + "type": "modonomicon:dense", + "mapping": { + "*": { + "type": "modonomicon:display", + "display": "occultism:otherstone" + }, + "+": { + "type": "modonomicon:display", + "display": "minecraft:stone" + }, + "0": { + "type": "modonomicon:block", + "block": "occultism:golden_sacrificial_bowl" + }, + "1": { + "type": "modonomicon:tag", + "tag": "#minecraft:candles" + }, + "2": { + "type": "modonomicon:block", + "block": "minecraft:skeleton_skull" + }, + "3": { + "type": "modonomicon:block", + "block": "occultism:spirit_attuned_crystal" + }, + "G": { + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_dark" + }, + "L": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_lime" + }, + "O": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_orange" + }, + "W": { + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_any" + } + }, + "pattern": [ + [ + "_________________", + "______OOOOO______", + "____OO__2__OO____", + "___O__LLLLL__O___", + "__O__L_L1L_L__O__", + "__O_L2_WWW_2L_O__", + "_O_L__W_G_W__L_O_", + "_O_LLW_1G1_WLL_O_", + "_O2L1WGG0GGW1L2O_", + "_O_LLW_1G1_WLL_O_", + "_O_L__W_G_W__L_O_", + "__O_L2_WWW_2L_O__", + "__O__L_L1L_L__O__", + "___O__LLLLL__O___", + "____OO__2__OO____", + "______OOOOO______", + "_________________" + ], + [ + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_unbound_marid.json b/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_unbound_marid.json new file mode 100644 index 000000000..7d892d250 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_unbound_marid.json @@ -0,0 +1,93 @@ +{ + "type": "modonomicon:dense", + "mapping": { + "*": { + "type": "modonomicon:display", + "display": "occultism:otherstone" + }, + "+": { + "type": "modonomicon:display", + "display": "minecraft:stone" + }, + "0": { + "type": "modonomicon:block", + "block": "occultism:golden_sacrificial_bowl" + }, + "1": { + "type": "modonomicon:tag", + "tag": "#minecraft:candles" + }, + "2": { + "type": "modonomicon:block", + "block": "minecraft:skeleton_skull" + }, + "3": { + "type": "modonomicon:block", + "block": "occultism:spirit_attuned_crystal" + }, + "4": { + "type": "modonomicon:block", + "block": "minecraft:wither_skeleton_skull" + }, + "K": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_black" + }, + "L": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_lime" + }, + "O": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_orange" + }, + "R": { + "type": "modonomicon:block", + "block": "occultism:chalk_glyph_red" + }, + "W": { + "type": "modonomicon:tag", + "tag": "#occultism:foundation_glyphs_any" + } + }, + "pattern": [ + [ + "_________________", + "______OOOOO______", + "__4_OOR_2_ROO_4__", + "___OR_LLLLL_RO___", + "__OR3L_L1L_L3RO__", + "__O_L2_WWW_2L_O__", + "_ORL__W_K_W__LRO_", + "_O_LLW_1K1_WLL_O_", + "_O2L1WKK0KKW1L2O_", + "_O_LLW_1K1_WLL_O_", + "_ORL__W_K_W__LRO_", + "__O_L2_WWW_2L_O__", + "__OR3L_L1L_L3RO__", + "___OR_LLLLL_RO___", + "__4_OOR_2_ROO_4__", + "______OOOOO______", + "_________________" + ], + [ + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*", + "+*+*+*+*+*+*+*+*+", + "*+*+*+*+*+*+*+*+*" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_wild_afrit.json b/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_wild_afrit.json deleted file mode 100644 index 2a3b15870..000000000 --- a/src/generated/resources/data/occultism/modonomicon/multiblocks/summon_wild_afrit.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "modonomicon:dense", - "mapping": { - "*": { - "type": "modonomicon:display", - "display": "occultism:otherstone" - }, - "+": { - "type": "modonomicon:display", - "display": "minecraft:stone" - }, - "0": { - "type": "modonomicon:block", - "block": "occultism:golden_sacrificial_bowl" - }, - "C": { - "type": "modonomicon:tag", - "tag": "#minecraft:candles" - }, - "N": { - "type": "modonomicon:block", - "block": "minecraft:wither_skeleton_skull" - }, - "P": { - "type": "modonomicon:block", - "block": "occultism:chalk_glyph_purple" - }, - "W": { - "type": "modonomicon:block", - "block": "occultism:chalk_glyph_white" - }, - "Z": { - "type": "modonomicon:block", - "block": "minecraft:skeleton_skull" - } - }, - "pattern": [ - [ - "___________", - "____PPP____", - "___WCWCW___", - "__W_WNW_W__", - "_PCWP_PWCP_", - "_PWZ_0_ZWP_", - "_PCWP_PWCP_", - "__W_WNW_W__", - "___WCWCW___", - "____PPP____", - "___________" - ], - [ - "*+*+*+*+*+*", - "+*+*+*+*+*+", - "*+*+*+*+*+*", - "+*+*+*+*+*+", - "*+*+*+*+*+*", - "+*+*+*+*+*+", - "*+*+*+*+*+*", - "+*+*+*+*+*+", - "*+*+*+*+*+*", - "+*+*+*+*+*+", - "*+*+*+*+*+*" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/blasting/netherite_ingot_from_dust.json b/src/generated/resources/data/occultism/recipe/blasting/netherite_ingot_from_dust.json new file mode 100644 index 000000000..184223f52 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/blasting/netherite_ingot_from_dust.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 100, + "experience": 0.7, + "ingredient": { + "tag": "c:dusts/netherite" + }, + "result": { + "count": 1, + "id": "minecraft:netherite_ingot" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/crafting/chalk_black_impure.json b/src/generated/resources/data/occultism/recipe/crafting/chalk_black_impure.json index d45bd8a4e..49c44ed81 100644 --- a/src/generated/resources/data/occultism/recipe/crafting/chalk_black_impure.json +++ b/src/generated/resources/data/occultism/recipe/crafting/chalk_black_impure.json @@ -6,13 +6,13 @@ "item": "occultism:chalk_white_impure" }, { - "item": "minecraft:netherite_ingot" + "tag": "c:dusts/witherite" }, { - "item": "minecraft:wither_rose" + "tag": "c:dusts/witherite" }, { - "item": "minecraft:blackstone" + "tag": "c:dusts/witherite" } ], "result": { diff --git a/src/generated/resources/data/occultism/recipe/crafting/chalk_blue_impure.json b/src/generated/resources/data/occultism/recipe/crafting/chalk_blue_impure.json index 78648eead..e67cabe54 100644 --- a/src/generated/resources/data/occultism/recipe/crafting/chalk_blue_impure.json +++ b/src/generated/resources/data/occultism/recipe/crafting/chalk_blue_impure.json @@ -6,13 +6,13 @@ "item": "occultism:chalk_white_impure" }, { - "item": "minecraft:heart_of_the_sea" + "item": "occultism:marid_essence" }, { - "tag": "c:gems/lapis" + "tag": "c:dusts/lapis" }, { - "item": "minecraft:tube_coral" + "tag": "c:dusts/lapis" } ], "result": { diff --git a/src/generated/resources/data/occultism/recipe/crafting/chalk_brown_impure.json b/src/generated/resources/data/occultism/recipe/crafting/chalk_brown_impure.json index 2e9442259..efed6c8d4 100644 --- a/src/generated/resources/data/occultism/recipe/crafting/chalk_brown_impure.json +++ b/src/generated/resources/data/occultism/recipe/crafting/chalk_brown_impure.json @@ -6,13 +6,13 @@ "item": "occultism:chalk_white_impure" }, { - "item": "minecraft:pointed_dripstone" + "item": "occultism:cruelty_essence" }, { - "item": "minecraft:armadillo_scute" + "item": "minecraft:cocoa_beans" }, { - "item": "minecraft:rabbit_foot" + "item": "minecraft:cocoa_beans" } ], "result": { diff --git a/src/generated/resources/data/occultism/recipe/crafting/chalk_cyan_impure.json b/src/generated/resources/data/occultism/recipe/crafting/chalk_cyan_impure.json index 2d5a860af..a56adc7fd 100644 --- a/src/generated/resources/data/occultism/recipe/crafting/chalk_cyan_impure.json +++ b/src/generated/resources/data/occultism/recipe/crafting/chalk_cyan_impure.json @@ -9,10 +9,10 @@ "tag": "c:dusts/iesnium" }, { - "item": "minecraft:glow_ink_sac" + "tag": "c:dusts/echo" }, { - "item": "minecraft:echo_shard" + "item": "minecraft:glow_ink_sac" } ], "result": { diff --git a/src/generated/resources/data/occultism/recipe/crafting/chalk_gray_impure.json b/src/generated/resources/data/occultism/recipe/crafting/chalk_gray_impure.json index 551d7ca01..a8d6018ae 100644 --- a/src/generated/resources/data/occultism/recipe/crafting/chalk_gray_impure.json +++ b/src/generated/resources/data/occultism/recipe/crafting/chalk_gray_impure.json @@ -6,13 +6,7 @@ "item": "occultism:chalk_white_impure" }, { - "tag": "c:gunpowders" - }, - { - "item": "minecraft:wind_charge" - }, - { - "item": "minecraft:clay_ball" + "item": "occultism:gray_paste" } ], "result": { diff --git a/src/generated/resources/data/occultism/recipe/crafting/chalk_green_impure.json b/src/generated/resources/data/occultism/recipe/crafting/chalk_green_impure.json index 165c92378..3227c2643 100644 --- a/src/generated/resources/data/occultism/recipe/crafting/chalk_green_impure.json +++ b/src/generated/resources/data/occultism/recipe/crafting/chalk_green_impure.json @@ -6,13 +6,7 @@ "item": "occultism:chalk_white_impure" }, { - "tag": "c:seeds" - }, - { - "tag": "minecraft:saplings" - }, - { - "tag": "minecraft:leaves" + "item": "occultism:nature_paste" } ], "result": { diff --git a/src/generated/resources/data/occultism/recipe/crafting/chalk_light_blue_impure.json b/src/generated/resources/data/occultism/recipe/crafting/chalk_light_blue_impure.json index 2a813083f..9f2018ecf 100644 --- a/src/generated/resources/data/occultism/recipe/crafting/chalk_light_blue_impure.json +++ b/src/generated/resources/data/occultism/recipe/crafting/chalk_light_blue_impure.json @@ -6,13 +6,13 @@ "item": "occultism:chalk_white_impure" }, { - "item": "minecraft:ice" + "tag": "c:dusts/ice" }, { - "item": "minecraft:packed_ice" + "tag": "c:dusts/packed_ice" }, { - "item": "minecraft:blue_ice" + "tag": "c:dusts/blue_ice" } ], "result": { diff --git a/src/generated/resources/data/occultism/recipe/crafting/chalk_light_gray_impure.json b/src/generated/resources/data/occultism/recipe/crafting/chalk_light_gray_impure.json index 847d52042..313110520 100644 --- a/src/generated/resources/data/occultism/recipe/crafting/chalk_light_gray_impure.json +++ b/src/generated/resources/data/occultism/recipe/crafting/chalk_light_gray_impure.json @@ -12,7 +12,7 @@ "tag": "c:dusts/iron" }, { - "item": "minecraft:calcite" + "tag": "c:dusts/calcite" } ], "result": { diff --git a/src/generated/resources/data/occultism/recipe/crafting/chalk_lime_impure.json b/src/generated/resources/data/occultism/recipe/crafting/chalk_lime_impure.json index 32e36f7a9..b486718f9 100644 --- a/src/generated/resources/data/occultism/recipe/crafting/chalk_lime_impure.json +++ b/src/generated/resources/data/occultism/recipe/crafting/chalk_lime_impure.json @@ -6,13 +6,13 @@ "item": "occultism:chalk_white_impure" }, { - "tag": "c:slime_balls" + "tag": "c:dusts/research" }, { - "item": "minecraft:emerald" + "tag": "c:dusts/emerald" }, { - "item": "minecraft:experience_bottle" + "tag": "c:slime_balls" } ], "result": { diff --git a/src/generated/resources/data/occultism/recipe/crafting/chalk_magenta_impure.json b/src/generated/resources/data/occultism/recipe/crafting/chalk_magenta_impure.json index 112d80147..a0c9eebe0 100644 --- a/src/generated/resources/data/occultism/recipe/crafting/chalk_magenta_impure.json +++ b/src/generated/resources/data/occultism/recipe/crafting/chalk_magenta_impure.json @@ -6,13 +6,13 @@ "item": "occultism:chalk_white_impure" }, { - "item": "minecraft:dragon_breath" + "tag": "c:dusts/dragonyst" }, { - "tag": "c:gems/amethyst" + "tag": "c:dusts/amethyst" }, { - "item": "minecraft:end_crystal" + "tag": "c:dusts/amethyst" } ], "result": { diff --git a/src/generated/resources/data/occultism/recipe/crafting/chalk_orange_impure.json b/src/generated/resources/data/occultism/recipe/crafting/chalk_orange_impure.json index 38a675092..bbfd8214f 100644 --- a/src/generated/resources/data/occultism/recipe/crafting/chalk_orange_impure.json +++ b/src/generated/resources/data/occultism/recipe/crafting/chalk_orange_impure.json @@ -6,13 +6,13 @@ "item": "occultism:chalk_white_impure" }, { - "item": "minecraft:torchflower" + "item": "occultism:cursed_honey" }, { "item": "minecraft:glow_berries" }, { - "item": "minecraft:honeycomb" + "tag": "c:dusts/blaze" } ], "result": { diff --git a/src/generated/resources/data/occultism/recipe/crafting/chalk_pink_impure.json b/src/generated/resources/data/occultism/recipe/crafting/chalk_pink_impure.json index 38647117b..af7a202db 100644 --- a/src/generated/resources/data/occultism/recipe/crafting/chalk_pink_impure.json +++ b/src/generated/resources/data/occultism/recipe/crafting/chalk_pink_impure.json @@ -6,13 +6,13 @@ "item": "occultism:chalk_white_impure" }, { - "item": "minecraft:pink_petals" + "item": "occultism:demonic_meat" }, { - "item": "minecraft:porkchop" + "item": "occultism:demonic_meat" }, { - "item": "minecraft:cherry_leaves" + "item": "occultism:demonic_meat" } ], "result": { diff --git a/src/generated/resources/data/occultism/recipe/crafting/chalk_red_impure.json b/src/generated/resources/data/occultism/recipe/crafting/chalk_red_impure.json index 793f544ac..593708103 100644 --- a/src/generated/resources/data/occultism/recipe/crafting/chalk_red_impure.json +++ b/src/generated/resources/data/occultism/recipe/crafting/chalk_red_impure.json @@ -9,7 +9,7 @@ "item": "occultism:afrit_essence" }, { - "item": "minecraft:blaze_powder" + "item": "minecraft:torchflower" }, { "tag": "c:dusts/redstone" diff --git a/src/generated/resources/data/occultism/recipe/crafting/chalk_white_impure.json b/src/generated/resources/data/occultism/recipe/crafting/chalk_white_impure.json index 0fae64d5a..d3769c97b 100644 --- a/src/generated/resources/data/occultism/recipe/crafting/chalk_white_impure.json +++ b/src/generated/resources/data/occultism/recipe/crafting/chalk_white_impure.json @@ -3,10 +3,10 @@ "category": "misc", "key": { "x": { - "item": "occultism:burnt_otherstone" + "tag": "c:dusts/otherstone" }, "y": { - "item": "occultism:otherworld_ashes" + "tag": "c:dusts/otherworld_wood" } }, "pattern": [ diff --git a/src/generated/resources/data/occultism/recipe/crafting/chalk_gold_impure.json b/src/generated/resources/data/occultism/recipe/crafting/chalk_yellow_impure.json similarity index 88% rename from src/generated/resources/data/occultism/recipe/crafting/chalk_gold_impure.json rename to src/generated/resources/data/occultism/recipe/crafting/chalk_yellow_impure.json index 3b143826a..1b98d2204 100644 --- a/src/generated/resources/data/occultism/recipe/crafting/chalk_gold_impure.json +++ b/src/generated/resources/data/occultism/recipe/crafting/chalk_yellow_impure.json @@ -17,6 +17,6 @@ ], "result": { "count": 1, - "id": "occultism:chalk_gold_impure" + "id": "occultism:chalk_yellow_impure" } } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/crafting/magic_lamp_empty.json b/src/generated/resources/data/occultism/recipe/crafting/magic_lamp_empty.json index 61c2db782..0d455dd31 100644 --- a/src/generated/resources/data/occultism/recipe/crafting/magic_lamp_empty.json +++ b/src/generated/resources/data/occultism/recipe/crafting/magic_lamp_empty.json @@ -3,7 +3,7 @@ "category": "misc", "key": { "i": { - "tag": "c:ingots/iesnium" + "tag": "c:raw_materials/iesnium" }, "s": { "tag": "c:ingots/silver" diff --git a/src/generated/resources/data/occultism/recipe/crafting/netherite_dust.json b/src/generated/resources/data/occultism/recipe/crafting/netherite_dust.json new file mode 100644 index 000000000..475ff7bf3 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/crafting/netherite_dust.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "c:dusts/netherite_scrap" + }, + { + "tag": "c:dusts/netherite_scrap" + }, + { + "tag": "c:dusts/netherite_scrap" + }, + { + "tag": "c:dusts/netherite_scrap" + }, + { + "tag": "c:dusts/gold" + }, + { + "tag": "c:dusts/gold" + }, + { + "tag": "c:dusts/gold" + }, + { + "tag": "c:dusts/gold" + } + ], + "result": { + "count": 1, + "id": "occultism:netherite_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/crushing/amethyst_dust.json b/src/generated/resources/data/occultism/recipe/crushing/amethyst_dust.json new file mode 100644 index 000000000..a610f4a72 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/crushing/amethyst_dust.json @@ -0,0 +1,27 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:ores/amethyst" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:dusts/amethyst" + } + } + ], + "type": "occultism:crushing", + "ingredient": { + "tag": "c:ores/amethyst" + }, + "result": { + "type": "occultism:tag", + "count": 4, + "tag": "c:dusts/amethyst" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/crushing/amethyst_dust_from_gem.json b/src/generated/resources/data/occultism/recipe/crushing/amethyst_dust_from_gem.json new file mode 100644 index 000000000..721faed5c --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/crushing/amethyst_dust_from_gem.json @@ -0,0 +1,27 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:gems/amethyst" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:dusts/amethyst" + } + } + ], + "type": "occultism:crushing", + "ingredient": { + "tag": "c:gems/amethyst" + }, + "result": { + "type": "occultism:tag", + "count": 1, + "tag": "c:dusts/amethyst" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/crushing/blackstone_dust.json b/src/generated/resources/data/occultism/recipe/crushing/blackstone_dust.json new file mode 100644 index 000000000..b44756745 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/crushing/blackstone_dust.json @@ -0,0 +1,12 @@ +{ + "type": "occultism:crushing", + "ignore_crushing_multiplier": true, + "ingredient": { + "item": "minecraft:blackstone" + }, + "result": { + "type": "occultism:tag", + "count": 1, + "tag": "c:dusts/blackstone" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/crushing/blue_ice_dust.json b/src/generated/resources/data/occultism/recipe/crushing/blue_ice_dust.json new file mode 100644 index 000000000..939448a10 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/crushing/blue_ice_dust.json @@ -0,0 +1,13 @@ +{ + "type": "occultism:crushing", + "ignore_crushing_multiplier": true, + "ingredient": { + "item": "minecraft:blue_ice" + }, + "min_tier": 2, + "result": { + "type": "occultism:tag", + "count": 1, + "tag": "c:dusts/blue_ice" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/crushing/calcite_dust.json b/src/generated/resources/data/occultism/recipe/crushing/calcite_dust.json new file mode 100644 index 000000000..709160e12 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/crushing/calcite_dust.json @@ -0,0 +1,12 @@ +{ + "type": "occultism:crushing", + "ignore_crushing_multiplier": true, + "ingredient": { + "item": "minecraft:calcite" + }, + "result": { + "type": "occultism:tag", + "count": 1, + "tag": "c:dusts/calcite" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/crushing/echo_dust.json b/src/generated/resources/data/occultism/recipe/crushing/echo_dust.json new file mode 100644 index 000000000..b484bcd87 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/crushing/echo_dust.json @@ -0,0 +1,13 @@ +{ + "type": "occultism:crushing", + "ignore_crushing_multiplier": true, + "ingredient": { + "item": "minecraft:echo_shard" + }, + "min_tier": 4, + "result": { + "type": "occultism:tag", + "count": 1, + "tag": "c:dusts/echo" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/crushing/ice_dust.json b/src/generated/resources/data/occultism/recipe/crushing/ice_dust.json new file mode 100644 index 000000000..62a13621d --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/crushing/ice_dust.json @@ -0,0 +1,13 @@ +{ + "type": "occultism:crushing", + "ignore_crushing_multiplier": true, + "ingredient": { + "item": "minecraft:ice" + }, + "min_tier": 2, + "result": { + "type": "occultism:tag", + "count": 1, + "tag": "c:dusts/ice" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/crushing/netherite_scrap_dust.json b/src/generated/resources/data/occultism/recipe/crushing/netherite_scrap_dust.json new file mode 100644 index 000000000..8de59c0e1 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/crushing/netherite_scrap_dust.json @@ -0,0 +1,11 @@ +{ + "type": "occultism:crushing", + "ingredient": { + "tag": "c:ores/netherite_scrap" + }, + "result": { + "type": "occultism:tag", + "count": 2, + "tag": "c:dusts/netherite_scrap" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/crushing/packed_ice_dust.json b/src/generated/resources/data/occultism/recipe/crushing/packed_ice_dust.json new file mode 100644 index 000000000..a47b34de8 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/crushing/packed_ice_dust.json @@ -0,0 +1,13 @@ +{ + "type": "occultism:crushing", + "ignore_crushing_multiplier": true, + "ingredient": { + "item": "minecraft:packed_ice" + }, + "min_tier": 2, + "result": { + "type": "occultism:tag", + "count": 1, + "tag": "c:dusts/packed_ice" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/basic_resources/andesite.json b/src/generated/resources/data/occultism/recipe/miner/basic_resources/andesite.json index 782ca58e9..7a4dcf9b4 100644 --- a/src/generated/resources/data/occultism/recipe/miner/basic_resources/andesite.json +++ b/src/generated/resources/data/occultism/recipe/miner/basic_resources/andesite.json @@ -9,6 +9,6 @@ "count": 1, "id": "minecraft:andesite" }, - "weight": 10000 + "weight": 7000 } } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/basic_resources/basalt.json b/src/generated/resources/data/occultism/recipe/miner/basic_resources/basalt.json new file mode 100644 index 000000000..3d0a509fb --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/basic_resources/basalt.json @@ -0,0 +1,14 @@ +{ + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/basic_resources" + }, + "result": { + "type": "occultism:weighted_item", + "stack": { + "count": 1, + "id": "minecraft:basalt" + }, + "weight": 1000 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/basic_resources/blackstone.json b/src/generated/resources/data/occultism/recipe/miner/basic_resources/blackstone.json new file mode 100644 index 000000000..4c0cba4aa --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/basic_resources/blackstone.json @@ -0,0 +1,14 @@ +{ + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/basic_resources" + }, + "result": { + "type": "occultism:weighted_item", + "stack": { + "count": 1, + "id": "minecraft:blackstone" + }, + "weight": 1000 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/basic_resources/deepslate.json b/src/generated/resources/data/occultism/recipe/miner/basic_resources/deepslate.json new file mode 100644 index 000000000..adcccb823 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/basic_resources/deepslate.json @@ -0,0 +1,14 @@ +{ + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/basic_resources" + }, + "result": { + "type": "occultism:weighted_item", + "stack": { + "count": 1, + "id": "minecraft:deepslate" + }, + "weight": 5000 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/basic_resources/diorite.json b/src/generated/resources/data/occultism/recipe/miner/basic_resources/diorite.json index 8b49e9fdb..31e357c08 100644 --- a/src/generated/resources/data/occultism/recipe/miner/basic_resources/diorite.json +++ b/src/generated/resources/data/occultism/recipe/miner/basic_resources/diorite.json @@ -9,6 +9,6 @@ "count": 1, "id": "minecraft:diorite" }, - "weight": 10000 + "weight": 7000 } } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/basic_resources/granite.json b/src/generated/resources/data/occultism/recipe/miner/basic_resources/granite.json index 6aae98f94..6aca08cd1 100644 --- a/src/generated/resources/data/occultism/recipe/miner/basic_resources/granite.json +++ b/src/generated/resources/data/occultism/recipe/miner/basic_resources/granite.json @@ -9,6 +9,6 @@ "count": 1, "id": "minecraft:granite" }, - "weight": 10000 + "weight": 7000 } } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/basic_resources/mossy_cobblestone.json b/src/generated/resources/data/occultism/recipe/miner/basic_resources/mossy_cobblestone.json index 9e7fad2bd..d5e8946b5 100644 --- a/src/generated/resources/data/occultism/recipe/miner/basic_resources/mossy_cobblestone.json +++ b/src/generated/resources/data/occultism/recipe/miner/basic_resources/mossy_cobblestone.json @@ -9,6 +9,6 @@ "count": 1, "id": "minecraft:mossy_cobblestone" }, - "weight": 200 + "weight": 3000 } } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/basic_resources/mossy_stone_bricks.json b/src/generated/resources/data/occultism/recipe/miner/basic_resources/mossy_stone_bricks.json index a8e2e0f13..78777c33f 100644 --- a/src/generated/resources/data/occultism/recipe/miner/basic_resources/mossy_stone_bricks.json +++ b/src/generated/resources/data/occultism/recipe/miner/basic_resources/mossy_stone_bricks.json @@ -9,6 +9,6 @@ "count": 1, "id": "minecraft:mossy_stone_bricks" }, - "weight": 10000 + "weight": 3000 } } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/amethyst.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/amethyst.json new file mode 100644 index 000000000..fc0da1dc2 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/amethyst.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:gems/amethyst" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 9, + "tag": "c:gems/amethyst", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/ancient_debris.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/ancient_debris.json new file mode 100644 index 000000000..0faa5dd3a --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/ancient_debris.json @@ -0,0 +1,12 @@ +{ + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 9, + "tag": "c:ores/netherite_scrap", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/arcane_crystal.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/arcane_crystal.json new file mode 100644 index 000000000..76b0a5a0f --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/arcane_crystal.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/arcane_crystal" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/arcane_crystal", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/coal.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/coal.json new file mode 100644 index 000000000..a5c166f5f --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/coal.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/coal" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/coal", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/dark.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/dark.json new file mode 100644 index 000000000..e588ca250 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/dark.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/dark" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/dark", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/diamond.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/diamond.json new file mode 100644 index 000000000..f73a5ce04 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/diamond.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/diamond" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/diamond", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/emerald.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/emerald.json new file mode 100644 index 000000000..b35b8059b --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/emerald.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/emerald" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/emerald", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/fluorite.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/fluorite.json new file mode 100644 index 000000000..61dab1983 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/fluorite.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/fluorite" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/fluorite", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/glowstone_dust.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/glowstone_dust.json new file mode 100644 index 000000000..8c2a11117 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/glowstone_dust.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:dusts/glowstone" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 9, + "tag": "c:dusts/glowstone", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/inferium_essence.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/inferium_essence.json new file mode 100644 index 000000000..f9c87090d --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/inferium_essence.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/inferium_essence" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/inferium_essence", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/lapis.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/lapis.json new file mode 100644 index 000000000..190c07cde --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/lapis.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/lapis" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/lapis", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/lignite_coal.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/lignite_coal.json new file mode 100644 index 000000000..c1d121157 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/lignite_coal.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/lignite_coal" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/lignite_coal", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/mining_dim_core.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/mining_dim_core.json new file mode 100644 index 000000000..8aa6ed99f --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/mining_dim_core.json @@ -0,0 +1,14 @@ +{ + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_item", + "stack": { + "count": 1, + "id": "occultism:mining_dim_core" + }, + "weight": 1 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/monazite.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/monazite.json new file mode 100644 index 000000000..7cb13d58f --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/monazite.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/monazite" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/monazite", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/peridot.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/peridot.json new file mode 100644 index 000000000..11a3ff809 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/peridot.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/peridot" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/peridot", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/prosperity_shard.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/prosperity_shard.json new file mode 100644 index 000000000..baf1363ae --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/prosperity_shard.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/prosperity_shard" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/prosperity_shard", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/quartz.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/quartz.json new file mode 100644 index 000000000..b15678fb1 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/quartz.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:gems/quartz" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 9, + "tag": "c:gems/quartz", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_aethersent.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_aethersent.json new file mode 100644 index 000000000..f5119058f --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_aethersent.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_aethersent" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_aethersent", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_allthemodium.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_allthemodium.json new file mode 100644 index 000000000..646a21a42 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_allthemodium.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_allthemodium" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_allthemodium", + "weight": 30 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_aluminium.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_aluminium.json new file mode 100644 index 000000000..cc7d9609b --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_aluminium.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_aluminium" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_aluminium", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_antimony.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_antimony.json new file mode 100644 index 000000000..418d68c6b --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_antimony.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_antimony" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_antimony", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_azure_silver.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_azure_silver.json new file mode 100644 index 000000000..1bb8bb231 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_azure_silver.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_azure_silver" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_azure_silver", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_cloggrum.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_cloggrum.json new file mode 100644 index 000000000..fcfcb6e84 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_cloggrum.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_cloggrum" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_cloggrum", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_copper.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_copper.json new file mode 100644 index 000000000..f9f20de2c --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_copper.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_copper" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_copper", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_crimson_iron.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_crimson_iron.json new file mode 100644 index 000000000..c1c08056d --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_crimson_iron.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_crimson_iron" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_crimson_iron", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_froststeel.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_froststeel.json new file mode 100644 index 000000000..61fa762a9 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_froststeel.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_froststeel" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_froststeel", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_gold.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_gold.json new file mode 100644 index 000000000..b47929d4d --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_gold.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_gold" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_gold", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_iesnium.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_iesnium.json new file mode 100644 index 000000000..a810877da --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_iesnium.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_iesnium" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_iesnium", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_iridium.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_iridium.json new file mode 100644 index 000000000..00b4dbcc1 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_iridium.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_iridium" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_iridium", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_iron.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_iron.json new file mode 100644 index 000000000..285f1d818 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_iron.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_iron" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_iron", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_lead.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_lead.json new file mode 100644 index 000000000..688c5b708 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_lead.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_lead" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_lead", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_nickel.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_nickel.json new file mode 100644 index 000000000..742413c40 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_nickel.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_nickel" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_nickel", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_osmium.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_osmium.json new file mode 100644 index 000000000..2ed5d2835 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_osmium.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_osmium" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_osmium", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_platinum.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_platinum.json new file mode 100644 index 000000000..6b08b2756 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_platinum.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_platinum" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_platinum", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_silver.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_silver.json new file mode 100644 index 000000000..2bc802cd3 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_silver.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_silver" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_silver", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_tin.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_tin.json new file mode 100644 index 000000000..46ee71b5a --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_tin.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_tin" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_tin", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_titanium.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_titanium.json new file mode 100644 index 000000000..f4eff9b94 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_titanium.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_titanium" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_titanium", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_tungsten.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_tungsten.json new file mode 100644 index 000000000..b7fb30f63 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_tungsten.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_tungsten" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_tungsten", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_unobtainium.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_unobtainium.json new file mode 100644 index 000000000..406b83900 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_unobtainium.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_unobtainium" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_unobtainium", + "weight": 10 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_uranium.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_uranium.json new file mode 100644 index 000000000..dbb18f58f --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_uranium.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_uranium" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_uranium", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_vibranium.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_vibranium.json new file mode 100644 index 000000000..0126aa89b --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_vibranium.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_vibranium" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_vibranium", + "weight": 20 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_yellorium.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_yellorium.json new file mode 100644 index 000000000..e7279d726 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_yellorium.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_yellorium" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_yellorium", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_zinc.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_zinc.json new file mode 100644 index 000000000..a6e4b6382 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/raw_zinc.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_zinc" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/raw_zinc", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/redstone.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/redstone.json new file mode 100644 index 000000000..50b7ff124 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/redstone.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/redstone" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/redstone", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/ruby.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/ruby.json new file mode 100644 index 000000000..12ed3e3f8 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/ruby.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/ruby" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/ruby", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/rune.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/rune.json new file mode 100644 index 000000000..601b6d9c5 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/rune.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/rune" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/rune", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/sal_ammoniac.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/sal_ammoniac.json new file mode 100644 index 000000000..bbab4e18d --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/sal_ammoniac.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:gems/sal_ammoniac" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 9, + "tag": "c:gems/sal_ammoniac", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/salt.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/salt.json new file mode 100644 index 000000000..a1b1124ba --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/salt.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/salt" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/salt", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/sapphire.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/sapphire.json new file mode 100644 index 000000000..db39a7ea7 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/sapphire.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/sapphire" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/sapphire", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/soulium_dust.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/soulium_dust.json new file mode 100644 index 000000000..1f69b322c --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/soulium_dust.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/soulium_dust" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/soulium_dust", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/stellarite.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/stellarite.json new file mode 100644 index 000000000..565b3d475 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/stellarite.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/stellarite" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/stellarite", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/sulfur.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/sulfur.json new file mode 100644 index 000000000..266f39b4f --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/sulfur.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/sulfur" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/sulfur", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/eldritch/uraninite.json b/src/generated/resources/data/occultism/recipe/miner/eldritch/uraninite.json new file mode 100644 index 000000000..2b036cca4 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/eldritch/uraninite.json @@ -0,0 +1,28 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "occultism:miners/eldritch" + } + }, + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/uraninite" + } + } + ], + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/eldritch" + }, + "result": { + "type": "occultism:weighted_tag", + "count": 1, + "tag": "c:storage_blocks/uraninite", + "weight": 90 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/master/mining_dim_core.json b/src/generated/resources/data/occultism/recipe/miner/master/mining_dim_core.json new file mode 100644 index 000000000..737afc602 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/master/mining_dim_core.json @@ -0,0 +1,14 @@ +{ + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/master" + }, + "result": { + "type": "occultism:weighted_item", + "stack": { + "count": 1, + "id": "occultism:mining_dim_core" + }, + "weight": 1 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/ores/crying_obsidian.json b/src/generated/resources/data/occultism/recipe/miner/ores/crying_obsidian.json new file mode 100644 index 000000000..05d8e961e --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/ores/crying_obsidian.json @@ -0,0 +1,14 @@ +{ + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/ores" + }, + "result": { + "type": "occultism:weighted_item", + "stack": { + "count": 1, + "id": "minecraft:crying_obsidian" + }, + "weight": 50 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/miner/ores/gilded_blackstone.json b/src/generated/resources/data/occultism/recipe/miner/ores/gilded_blackstone.json new file mode 100644 index 000000000..3b443cdb6 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/miner/ores/gilded_blackstone.json @@ -0,0 +1,14 @@ +{ + "type": "occultism:miner", + "ingredient": { + "tag": "occultism:miners/ores" + }, + "result": { + "type": "occultism:weighted_item", + "stack": { + "count": 1, + "id": "minecraft:gilded_blackstone" + }, + "weight": 373 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/craft_budding_amethyst.json b/src/generated/resources/data/occultism/recipe/ritual/craft_budding_amethyst.json new file mode 100644 index 000000000..9678a3801 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/craft_budding_amethyst.json @@ -0,0 +1,59 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "minecraft:amethyst_block" + }, + "duration": 180, + "entity_to_sacrifice": { + "display_name": "ritual.occultism.sacrifice.allay", + "tag": "c:allay" + }, + "ingredients": [ + { + "item": "minecraft:small_amethyst_bud" + }, + { + "item": "minecraft:medium_amethyst_bud" + }, + { + "item": "minecraft:large_amethyst_bud" + }, + { + "item": "minecraft:amethyst_cluster" + }, + { + "item": "minecraft:amethyst_shard" + }, + { + "tag": "c:dusts/amethyst" + }, + { + "item": "minecraft:small_amethyst_bud" + }, + { + "item": "minecraft:medium_amethyst_bud" + }, + { + "item": "minecraft:large_amethyst_bud" + }, + { + "item": "minecraft:amethyst_cluster" + }, + { + "item": "minecraft:amethyst_shard" + }, + { + "tag": "c:dusts/amethyst" + } + ], + "pentacle_id": "occultism:contact_wild_spirit", + "result": { + "count": 1, + "id": "minecraft:budding_amethyst" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/craft_budding_amethyst" + }, + "ritual_type": "occultism:craft" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/craft_dragonyst_dust.json b/src/generated/resources/data/occultism/recipe/ritual/craft_dragonyst_dust.json new file mode 100644 index 000000000..70f674883 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/craft_dragonyst_dust.json @@ -0,0 +1,49 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "occultism:book_of_binding_bound_marid" + }, + "duration": 300, + "ingredients": [ + { + "tag": "c:dusts/amethyst" + }, + { + "tag": "c:dusts/amethyst" + }, + { + "tag": "c:dusts/end_stone" + }, + { + "item": "minecraft:end_crystal" + }, + { + "item": "minecraft:end_crystal" + }, + { + "item": "minecraft:end_crystal" + }, + { + "item": "minecraft:end_crystal" + }, + { + "item": "minecraft:dragon_breath" + }, + { + "item": "minecraft:dragon_breath" + }, + { + "item": "minecraft:dragon_breath" + } + ], + "pentacle_id": "occultism:craft_marid", + "result": { + "count": 1, + "id": "occultism:dragonyst_dust" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/craft_dragonyst_dust" + }, + "ritual_type": "occultism:craft" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/craft_gray_paste.json b/src/generated/resources/data/occultism/recipe/ritual/craft_gray_paste.json new file mode 100644 index 000000000..2ed046a71 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/craft_gray_paste.json @@ -0,0 +1,28 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "occultism:book_of_binding_bound_djinni" + }, + "duration": 90, + "ingredients": [ + { + "tag": "c:gunpowders" + }, + { + "item": "minecraft:clay_ball" + }, + { + "item": "minecraft:wind_charge" + } + ], + "pentacle_id": "occultism:craft_djinni", + "result": { + "count": 1, + "id": "occultism:gray_paste" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/craft_gray_paste" + }, + "ritual_type": "occultism:craft" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/craft_miner_ancient_eldritch.json b/src/generated/resources/data/occultism/recipe/ritual/craft_miner_ancient_eldritch.json new file mode 100644 index 000000000..0ffee38ca --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/craft_miner_ancient_eldritch.json @@ -0,0 +1,43 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "occultism:mining_dim_core" + }, + "duration": 360, + "ingredients": [ + { + "item": "occultism:miner_marid_master" + }, + { + "item": "occultism:miner_marid_master" + }, + { + "item": "occultism:miner_marid_master" + }, + { + "item": "occultism:miner_marid_master" + }, + { + "item": "occultism:miner_marid_master" + }, + { + "item": "occultism:miner_marid_master" + }, + { + "item": "occultism:miner_marid_master" + }, + { + "item": "occultism:miner_marid_master" + } + ], + "pentacle_id": "occultism:contact_eldritch_spirit", + "result": { + "count": 1, + "id": "occultism:miner_ancient_eldritch" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/craft_miner_ancient_eldritch" + }, + "ritual_type": "occultism:craft_miner_spirit" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/craft_nature_paste.json b/src/generated/resources/data/occultism/recipe/ritual/craft_nature_paste.json new file mode 100644 index 000000000..78a3a712a --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/craft_nature_paste.json @@ -0,0 +1,45 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "occultism:book_of_binding_bound_foliot" + }, + "ingredients": [ + { + "tag": "minecraft:leaves" + }, + { + "tag": "minecraft:saplings" + }, + { + "tag": "c:seeds" + }, + { + "tag": "minecraft:leaves" + }, + { + "tag": "minecraft:saplings" + }, + { + "tag": "c:seeds" + }, + { + "tag": "minecraft:leaves" + }, + { + "tag": "minecraft:saplings" + }, + { + "tag": "c:seeds" + } + ], + "pentacle_id": "occultism:craft_foliot", + "result": { + "count": 1, + "id": "occultism:nature_paste" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/craft_nature_paste" + }, + "ritual_type": "occultism:craft" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/craft_reinforced_deepslate.json b/src/generated/resources/data/occultism/recipe/ritual/craft_reinforced_deepslate.json new file mode 100644 index 000000000..731f72716 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/craft_reinforced_deepslate.json @@ -0,0 +1,59 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "minecraft:deepslate" + }, + "duration": 360, + "entity_to_sacrifice": { + "display_name": "ritual.occultism.sacrifice.warden", + "tag": "c:wardens" + }, + "ingredients": [ + { + "tag": "c:nether_stars" + }, + { + "item": "minecraft:shulker_shell" + }, + { + "item": "minecraft:armadillo_scute" + }, + { + "item": "minecraft:turtle_scute" + }, + { + "item": "minecraft:echo_shard" + }, + { + "item": "minecraft:anvil" + }, + { + "tag": "c:storage_blocks/netherite" + }, + { + "tag": "c:obsidians" + }, + { + "tag": "c:obsidians/crying" + }, + { + "item": "minecraft:end_stone_bricks" + }, + { + "item": "minecraft:sculk_catalyst" + }, + { + "tag": "c:storage_blocks/iesnium" + } + ], + "pentacle_id": "occultism:contact_eldritch_spirit", + "result": { + "count": 1, + "id": "minecraft:reinforced_deepslate" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/craft_reinforced_deepslate" + }, + "ritual_type": "occultism:craft" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/craft_research_fragment_dust.json b/src/generated/resources/data/occultism/recipe/ritual/craft_research_fragment_dust.json new file mode 100644 index 000000000..53b18c1e7 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/craft_research_fragment_dust.json @@ -0,0 +1,28 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "occultism:book_of_binding_bound_foliot" + }, + "duration": 60, + "ingredients": [ + { + "tag": "c:dusts/emerald" + }, + { + "item": "minecraft:experience_bottle" + }, + { + "item": "minecraft:experience_bottle" + } + ], + "pentacle_id": "occultism:craft_foliot", + "result": { + "count": 1, + "id": "occultism:research_fragment_dust" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/craft_research_fragment_dust" + }, + "ritual_type": "occultism:craft" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/craft_ritual_satchel_t2.json b/src/generated/resources/data/occultism/recipe/ritual/craft_ritual_satchel_t2.json index 24cf2a8b8..78c6d81c3 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/craft_ritual_satchel_t2.json +++ b/src/generated/resources/data/occultism/recipe/ritual/craft_ritual_satchel_t2.json @@ -39,7 +39,7 @@ "tag": "c:ender_pearls" } ], - "pentacle_id": "occultism:craft_djinni", + "pentacle_id": "occultism:craft_afrit", "result": { "count": 1, "id": "occultism:ritual_satchel_t2" diff --git a/src/generated/resources/data/occultism/recipe/ritual/craft_wild_trim.json b/src/generated/resources/data/occultism/recipe/ritual/craft_wild_trim.json index c949487a6..74170bcf1 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/craft_wild_trim.json +++ b/src/generated/resources/data/occultism/recipe/ritual/craft_wild_trim.json @@ -6,7 +6,7 @@ "duration": 240, "entity_to_sacrifice": { "display_name": "ritual.occultism.sacrifice.ocelot", - "tag": "occultism:ocelot" + "tag": "c:ocelots" }, "ingredients": [ { @@ -46,7 +46,7 @@ "item": "minecraft:glistering_melon_slice" } ], - "pentacle_id": "occultism:craft_marid", + "pentacle_id": "occultism:contact_wild_spirit", "result": { "count": 1, "id": "minecraft:wild_armor_trim_smithing_template" diff --git a/src/generated/resources/data/occultism/recipe/ritual/craft_witherite_dust.json b/src/generated/resources/data/occultism/recipe/ritual/craft_witherite_dust.json new file mode 100644 index 000000000..ea9944020 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/craft_witherite_dust.json @@ -0,0 +1,37 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "occultism:book_of_binding_bound_afrit" + }, + "duration": 150, + "ingredients": [ + { + "tag": "c:dusts/netherite" + }, + { + "tag": "c:dusts/blackstone" + }, + { + "tag": "c:dusts/blackstone" + }, + { + "item": "minecraft:wither_rose" + }, + { + "item": "minecraft:wither_rose" + }, + { + "item": "minecraft:wither_rose" + } + ], + "pentacle_id": "occultism:craft_afrit", + "result": { + "count": 3, + "id": "occultism:witherite_dust" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/craft_witherite_dust" + }, + "ritual_type": "occultism:craft" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/familiar_cthulhu.json b/src/generated/resources/data/occultism/recipe/ritual/familiar_cthulhu.json index f3b81226e..b70cb3659 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/familiar_cthulhu.json +++ b/src/generated/resources/data/occultism/recipe/ritual/familiar_cthulhu.json @@ -6,7 +6,7 @@ "duration": 60, "entity_to_sacrifice": { "display_name": "ritual.occultism.sacrifice.squid", - "tag": "c:squid" + "tag": "c:squids" }, "entity_to_summon": "occultism:cthulhu_familiar", "ingredients": [ diff --git a/src/generated/resources/data/occultism/recipe/ritual/familiar_mummy.json b/src/generated/resources/data/occultism/recipe/ritual/familiar_mummy.json index 96b8428fb..cb16d3b21 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/familiar_mummy.json +++ b/src/generated/resources/data/occultism/recipe/ritual/familiar_mummy.json @@ -10,10 +10,10 @@ "entity_to_summon": "occultism:mummy_familiar", "ingredients": [ { - "tag": "c:slimeballs" + "tag": "c:slime_balls" }, { - "tag": "c:slimeballs" + "tag": "c:slime_balls" }, { "item": "minecraft:paper" diff --git a/src/generated/resources/data/occultism/recipe/ritual/familiar_parrot.json b/src/generated/resources/data/occultism/recipe/ritual/familiar_parrot.json index 42e222dc1..e1619975e 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/familiar_parrot.json +++ b/src/generated/resources/data/occultism/recipe/ritual/familiar_parrot.json @@ -5,7 +5,7 @@ }, "entity_to_sacrifice": { "display_name": "ritual.occultism.sacrifice.chicken", - "tag": "c:chicken" + "tag": "c:chickens" }, "entity_to_summon": "minecraft:parrot", "ingredients": [ diff --git a/src/generated/resources/data/occultism/recipe/ritual/possess_bee.json b/src/generated/resources/data/occultism/recipe/ritual/possess_bee.json new file mode 100644 index 000000000..d6a1e27e1 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/possess_bee.json @@ -0,0 +1,42 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "occultism:book_of_binding_bound_djinni" + }, + "duration": 60, + "entity_to_sacrifice": { + "display_name": "ritual.occultism.sacrifice.bats", + "tag": "c:bats" + }, + "entity_to_summon": "occultism:possessed_bee", + "ingredients": [ + { + "item": "minecraft:honeycomb" + }, + { + "item": "minecraft:honey_block" + }, + { + "item": "minecraft:honey_bottle" + }, + { + "item": "minecraft:honeycomb_block" + } + ], + "pentacle_id": "occultism:possess_djinni", + "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.possess_bee\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.possess_bee.tooltip\"}" + ] + }, + "count": 1, + "id": "occultism:cursed_honey" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/possess_bee" + }, + "ritual_type": "occultism:summon" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/possess_elder_guardian.json b/src/generated/resources/data/occultism/recipe/ritual/possess_elder_guardian.json index 8b1330e5d..4344f65b3 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/possess_elder_guardian.json +++ b/src/generated/resources/data/occultism/recipe/ritual/possess_elder_guardian.json @@ -23,7 +23,7 @@ "item": "minecraft:dark_prismarine" }, { - "item": "minecraft:wet_sponge" + "item": "minecraft:yellow_wool" }, { "item": "minecraft:sea_lantern" diff --git a/src/generated/resources/data/occultism/recipe/ritual/possess_goat.json b/src/generated/resources/data/occultism/recipe/ritual/possess_goat.json new file mode 100644 index 000000000..e58406585 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/possess_goat.json @@ -0,0 +1,66 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "occultism:book_of_binding_bound_marid" + }, + "duration": 240, + "entity_to_sacrifice": { + "display_name": "ritual.occultism.sacrifice.tadpoles", + "tag": "c:tadpoles" + }, + "entity_to_summon": "occultism:mercy_goat", + "ingredients": [ + { + "item": "minecraft:pointed_dripstone" + }, + { + "item": "minecraft:pointed_dripstone" + }, + { + "item": "minecraft:rabbit_foot" + }, + { + "item": "minecraft:rabbit_foot" + }, + { + "item": "minecraft:rabbit_foot" + }, + { + "item": "minecraft:rabbit_foot" + }, + { + "item": "minecraft:armadillo_scute" + }, + { + "item": "minecraft:armadillo_scute" + }, + { + "item": "minecraft:armadillo_scute" + }, + { + "item": "minecraft:armadillo_scute" + }, + { + "tag": "minecraft:wool" + }, + { + "tag": "minecraft:wool" + } + ], + "pentacle_id": "occultism:possess_marid", + "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.possess_goat\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.possess_goat.tooltip\"}" + ] + }, + "count": 1, + "id": "occultism:cruelty_essence" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/possess_goat" + }, + "ritual_type": "occultism:summon" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_random_animal.json b/src/generated/resources/data/occultism/recipe/ritual/possess_random_animal.json similarity index 78% rename from src/generated/resources/data/occultism/recipe/ritual/summon_random_animal.json rename to src/generated/resources/data/occultism/recipe/ritual/possess_random_animal.json index bb191b16a..af1a751a9 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_random_animal.json +++ b/src/generated/resources/data/occultism/recipe/ritual/possess_random_animal.json @@ -33,12 +33,12 @@ "item": "minecraft:egg" } ], - "pentacle_id": "occultism:summon_foliot", + "pentacle_id": "occultism:possess_foliot", "result": { "components": { - "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_random_animal\"}", + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.possess_random_animal\"}", "minecraft:lore": [ - "{\"translate\":\"item.occultism.ritual_dummy.summon_random_animal.tooltip\"}" + "{\"translate\":\"item.occultism.ritual_dummy.possess_random_animal.tooltip\"}" ] }, "count": 1, @@ -46,7 +46,7 @@ }, "ritual_dummy": { "count": 1, - "id": "occultism:ritual_dummy/summon_random_animal" + "id": "occultism:ritual_dummy/possess_random_animal" }, "ritual_type": "occultism:summon" } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/possess_skeleton.json b/src/generated/resources/data/occultism/recipe/ritual/possess_skeleton.json index fbac9fb26..4a7e1f1ec 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/possess_skeleton.json +++ b/src/generated/resources/data/occultism/recipe/ritual/possess_skeleton.json @@ -3,9 +3,10 @@ "activation_item": { "item": "occultism:book_of_binding_bound_foliot" }, + "duration": 15, "entity_to_sacrifice": { "display_name": "ritual.occultism.sacrifice.chicken", - "tag": "c:chicken" + "tag": "c:chickens" }, "entity_to_summon": "occultism:possessed_skeleton", "ingredients": [ diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_wild_otherworld_bird.json b/src/generated/resources/data/occultism/recipe/ritual/possess_unbound_otherworld_bird.json similarity index 79% rename from src/generated/resources/data/occultism/recipe/ritual/summon_wild_otherworld_bird.json rename to src/generated/resources/data/occultism/recipe/ritual/possess_unbound_otherworld_bird.json index 993971af4..35cc573c8 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_wild_otherworld_bird.json +++ b/src/generated/resources/data/occultism/recipe/ritual/possess_unbound_otherworld_bird.json @@ -28,9 +28,9 @@ "pentacle_id": "occultism:possess_djinni", "result": { "components": { - "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_otherworld_bird\"}", + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.possess_unbound_otherworld_bird\"}", "minecraft:lore": [ - "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_otherworld_bird.tooltip\"}" + "{\"translate\":\"item.occultism.ritual_dummy.possess_unbound_otherworld_bird.tooltip\"}" ] }, "count": 1, @@ -38,7 +38,7 @@ }, "ritual_dummy": { "count": 1, - "id": "occultism:ritual_dummy/summon_wild_otherworld_bird" + "id": "occultism:ritual_dummy/possess_unbound_otherworld_bird" }, "ritual_type": "occultism:summon" } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_wild_parrot.json b/src/generated/resources/data/occultism/recipe/ritual/possess_unbound_parrot.json similarity index 74% rename from src/generated/resources/data/occultism/recipe/ritual/summon_wild_parrot.json rename to src/generated/resources/data/occultism/recipe/ritual/possess_unbound_parrot.json index 086813db2..2da037536 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_wild_parrot.json +++ b/src/generated/resources/data/occultism/recipe/ritual/possess_unbound_parrot.json @@ -5,7 +5,7 @@ }, "entity_to_sacrifice": { "display_name": "ritual.occultism.sacrifice.chicken", - "tag": "c:chicken" + "tag": "c:chickens" }, "entity_to_summon": "minecraft:parrot", "ingredients": [ @@ -25,12 +25,12 @@ "tag": "c:dyes/blue" } ], - "pentacle_id": "occultism:summon_foliot", + "pentacle_id": "occultism:possess_foliot", "result": { "components": { - "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_parrot\"}", + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.possess_unbound_parrot\"}", "minecraft:lore": [ - "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_parrot.tooltip\"}" + "{\"translate\":\"item.occultism.ritual_dummy.possess_unbound_parrot.tooltip\"}" ] }, "count": 1, @@ -38,7 +38,7 @@ }, "ritual_dummy": { "count": 1, - "id": "occultism:ritual_dummy/summon_wild_parrot" + "id": "occultism:ritual_dummy/possess_unbound_parrot" }, "ritual_type": "occultism:summon" } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/possess_warden.json b/src/generated/resources/data/occultism/recipe/ritual/possess_warden.json index 837152bf9..60aff046e 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/possess_warden.json +++ b/src/generated/resources/data/occultism/recipe/ritual/possess_warden.json @@ -22,9 +22,6 @@ { "item": "minecraft:sculk" }, - { - "item": "minecraft:sculk_shrieker" - }, { "item": "minecraft:sculk_sensor" }, @@ -34,9 +31,6 @@ { "item": "minecraft:sculk" }, - { - "item": "minecraft:sculk_shrieker" - }, { "item": "minecraft:sculk_sensor" }, diff --git a/src/generated/resources/data/occultism/recipe/ritual/possess_witch.json b/src/generated/resources/data/occultism/recipe/ritual/possess_witch.json new file mode 100644 index 000000000..72610edf9 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/possess_witch.json @@ -0,0 +1,41 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "occultism:book_of_binding_bound_foliot" + }, + "entity_to_sacrifice": { + "display_name": "ritual.occultism.sacrifice.cats", + "tag": "c:cats" + }, + "entity_to_summon": "occultism:possessed_witch", + "ingredients": [ + { + "item": "minecraft:glass_bottle" + }, + { + "tag": "c:dusts/redstone" + }, + { + "item": "minecraft:brown_mushroom" + }, + { + "item": "minecraft:red_mushroom" + } + ], + "pentacle_id": "occultism:possess_foliot", + "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.possess_witch\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.possess_witch.tooltip\"}" + ] + }, + "count": 1, + "id": "minecraft:experience_bottle" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/possess_witch" + }, + "ritual_type": "occultism:summon" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/possess_zombie_piglin.json b/src/generated/resources/data/occultism/recipe/ritual/possess_zombie_piglin.json new file mode 100644 index 000000000..5380f0e64 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/possess_zombie_piglin.json @@ -0,0 +1,42 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "occultism:book_of_binding_bound_afrit" + }, + "duration": 90, + "entity_to_sacrifice": { + "display_name": "ritual.occultism.sacrifice.pigs", + "tag": "c:pigs" + }, + "entity_to_summon": "occultism:possessed_zombie_piglin", + "ingredients": [ + { + "item": "minecraft:cherry_leaves" + }, + { + "item": "minecraft:pink_petals" + }, + { + "item": "occultism:tallow" + }, + { + "item": "minecraft:quartz" + } + ], + "pentacle_id": "occultism:possess_unbound_afrit", + "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.possess_zombie_piglin\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.possess_zombie_piglin.tooltip\"}" + ] + }, + "count": 1, + "id": "occultism:demonic_meat" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/possess_zombie_piglin" + }, + "ritual_type": "occultism:summon" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/repair_armors.json b/src/generated/resources/data/occultism/recipe/ritual/repair_armors.json new file mode 100644 index 000000000..1e7ec0fd1 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/repair_armors.json @@ -0,0 +1,37 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "tag": "c:armors" + }, + "duration": 60, + "ingredients": [ + { + "tag": "c:ingots/iesnium" + }, + { + "tag": "c:ingots/iesnium" + }, + { + "tag": "occultism:armored_items" + }, + { + "item": "occultism:spirit_attuned_gem" + } + ], + "pentacle_id": "occultism:craft_afrit", + "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.repair_armors\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.repair_armors.tooltip\"}" + ] + }, + "count": 1, + "id": "occultism:repair_icon" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/repair_armors" + }, + "ritual_type": "occultism:repair" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/repair_chalks.json b/src/generated/resources/data/occultism/recipe/ritual/repair_chalks.json new file mode 100644 index 000000000..b86b93789 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/repair_chalks.json @@ -0,0 +1,34 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "tag": "occultism:tools/chalk" + }, + "duration": 5, + "ingredients": [ + { + "tag": "c:dusts/copper" + }, + { + "tag": "c:dusts/otherworld_wood" + }, + { + "tag": "c:dusts/otherstone" + } + ], + "pentacle_id": "occultism:craft_djinni", + "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.repair_chalks\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.repair_chalks.tooltip\"}" + ] + }, + "count": 1, + "id": "occultism:repair_icon" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/repair_chalks" + }, + "ritual_type": "occultism:repair" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/repair_miners.json b/src/generated/resources/data/occultism/recipe/ritual/repair_miners.json new file mode 100644 index 000000000..ec5393bad --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/repair_miners.json @@ -0,0 +1,34 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "tag": "occultism:miners" + }, + "duration": 60, + "ingredients": [ + { + "tag": "c:storage_blocks/iesnium" + }, + { + "item": "occultism:spirit_attuned_crystal" + }, + { + "item": "occultism:otherworld_essence" + } + ], + "pentacle_id": "occultism:craft_afrit", + "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.repair_miners\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.repair_miners.tooltip\"}" + ] + }, + "count": 1, + "id": "occultism:repair_icon" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/repair_miners" + }, + "ritual_type": "occultism:repair" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/repair_tools.json b/src/generated/resources/data/occultism/recipe/ritual/repair_tools.json new file mode 100644 index 000000000..fce9e78db --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/repair_tools.json @@ -0,0 +1,34 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "tag": "c:tools" + }, + "duration": 60, + "ingredients": [ + { + "tag": "c:ingots/iesnium" + }, + { + "tag": "c:ingots/iesnium" + }, + { + "item": "occultism:spirit_attuned_gem" + } + ], + "pentacle_id": "occultism:craft_afrit", + "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.repair_tools\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.repair_tools.tooltip\"}" + ] + }, + "count": 1, + "id": "occultism:repair_icon" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/repair_tools" + }, + "ritual_type": "occultism:repair" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_allay.json b/src/generated/resources/data/occultism/recipe/ritual/resurrect_allay.json similarity index 74% rename from src/generated/resources/data/occultism/recipe/ritual/summon_allay.json rename to src/generated/resources/data/occultism/recipe/ritual/resurrect_allay.json index d9038ac06..26b9f8ffa 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_allay.json +++ b/src/generated/resources/data/occultism/recipe/ritual/resurrect_allay.json @@ -5,7 +5,7 @@ }, "entity_to_sacrifice": { "display_name": "ritual.occultism.sacrifice.vex", - "tag": "occultism:vex" + "tag": "c:vex" }, "entity_to_summon": "minecraft:allay", "ingredients": [ @@ -22,12 +22,12 @@ "tag": "c:dusts/gold" } ], - "pentacle_id": "occultism:summon_foliot", + "pentacle_id": "occultism:resurrect_spirit", "result": { "components": { - "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_allay\"}", + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.resurrect_allay\"}", "minecraft:lore": [ - "{\"translate\":\"item.occultism.ritual_dummy.summon_allay.tooltip\"}" + "{\"translate\":\"item.occultism.ritual_dummy.resurrect_allay.tooltip\"}" ] }, "count": 1, @@ -35,7 +35,7 @@ }, "ritual_dummy": { "count": 1, - "id": "occultism:ritual_dummy/summon_allay" + "id": "occultism:ritual_dummy/resurrect_allay" }, "ritual_type": "occultism:summon" } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/resurrect_familiar.json b/src/generated/resources/data/occultism/recipe/ritual/resurrect_familiar.json index 2f23fa6ea..5956c56f8 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/resurrect_familiar.json +++ b/src/generated/resources/data/occultism/recipe/ritual/resurrect_familiar.json @@ -18,10 +18,16 @@ "item": "occultism:otherworld_essence" } ], - "pentacle_id": "occultism:summon_foliot", + "pentacle_id": "occultism:resurrect_spirit", "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.resurrect_familiar\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.resurrect_familiar.tooltip\"}" + ] + }, "count": 1, - "id": "occultism:jei_dummy/none" + "id": "occultism:resurrect_icon" }, "ritual_dummy": { "count": 1, diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_afrit_crusher.json b/src/generated/resources/data/occultism/recipe/ritual/summon_afrit_crusher.json index c00ae5390..d717de923 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_afrit_crusher.json +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_afrit_crusher.json @@ -21,8 +21,14 @@ ], "pentacle_id": "occultism:summon_afrit", "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_afrit_crusher\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.summon_afrit_crusher.tooltip\"}" + ] + }, "count": 1, - "id": "occultism:jei_dummy/none" + "id": "occultism:spawn_egg/afrit" }, "ritual_dummy": { "count": 1, diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_afrit_rain_weather.json b/src/generated/resources/data/occultism/recipe/ritual/summon_afrit_rain_weather.json index e241c6716..86393fe98 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_afrit_rain_weather.json +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_afrit_rain_weather.json @@ -25,8 +25,14 @@ ], "pentacle_id": "occultism:summon_afrit", "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_afrit_rain_weather\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.summon_afrit_rain_weather.tooltip\"}" + ] + }, "count": 1, - "id": "occultism:jei_dummy/none" + "id": "occultism:spawn_egg/afrit" }, "ritual_dummy": { "count": 1, diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_afrit_thunder_weather.json b/src/generated/resources/data/occultism/recipe/ritual/summon_afrit_thunder_weather.json index c67bcddd7..c130c69a7 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_afrit_thunder_weather.json +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_afrit_thunder_weather.json @@ -25,8 +25,14 @@ ], "pentacle_id": "occultism:summon_afrit", "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_afrit_thunder_weather\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.summon_afrit_thunder_weather.tooltip\"}" + ] + }, "count": 1, - "id": "occultism:jei_dummy/none" + "id": "occultism:spawn_egg/afrit" }, "ritual_dummy": { "count": 1, diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_demonic_husband.json b/src/generated/resources/data/occultism/recipe/ritual/summon_demonic_husband.json index 5828308bf..68a37d6e7 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_demonic_husband.json +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_demonic_husband.json @@ -6,7 +6,7 @@ "duration": 60, "entity_to_sacrifice": { "display_name": "ritual.occultism.sacrifice.chicken", - "tag": "c:chicken" + "tag": "c:chickens" }, "entity_to_summon": "occultism:demonic_husband", "ingredients": [ @@ -38,7 +38,7 @@ ] }, "count": 1, - "id": "occultism:ritual_dummy/summon_demonic_husband" + "id": "occultism:spawn_egg/demonic_husband" }, "ritual_dummy": { "count": 1, diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_demonic_wife.json b/src/generated/resources/data/occultism/recipe/ritual/summon_demonic_wife.json index 2ad417dd5..73be0dffb 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_demonic_wife.json +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_demonic_wife.json @@ -6,7 +6,7 @@ "duration": 60, "entity_to_sacrifice": { "display_name": "ritual.occultism.sacrifice.chicken", - "tag": "c:chicken" + "tag": "c:chickens" }, "entity_to_summon": "occultism:demonic_wife", "ingredients": [ @@ -38,7 +38,7 @@ ] }, "count": 1, - "id": "occultism:ritual_dummy/summon_demonic_wife" + "id": "occultism:spawn_egg/demonic_wife" }, "ritual_dummy": { "count": 1, diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_djinni_clear_weather.json b/src/generated/resources/data/occultism/recipe/ritual/summon_djinni_clear_weather.json index 550db586c..59105e7d3 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_djinni_clear_weather.json +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_djinni_clear_weather.json @@ -21,8 +21,14 @@ ], "pentacle_id": "occultism:summon_djinni", "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_djinni_clear_weather\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.summon_djinni_clear_weather.tooltip\"}" + ] + }, "count": 1, - "id": "occultism:jei_dummy/none" + "id": "occultism:spawn_egg/djinni" }, "ritual_dummy": { "count": 1, diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_djinni_crusher.json b/src/generated/resources/data/occultism/recipe/ritual/summon_djinni_crusher.json index 052ba18d5..6ae96520b 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_djinni_crusher.json +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_djinni_crusher.json @@ -21,8 +21,14 @@ ], "pentacle_id": "occultism:summon_djinni", "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_djinni_crusher\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.summon_djinni_crusher.tooltip\"}" + ] + }, "count": 1, - "id": "occultism:jei_dummy/none" + "id": "occultism:spawn_egg/djinni" }, "ritual_dummy": { "count": 1, diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_djinni_day_time.json b/src/generated/resources/data/occultism/recipe/ritual/summon_djinni_day_time.json index d132d7082..d27e7cb57 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_djinni_day_time.json +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_djinni_day_time.json @@ -21,8 +21,14 @@ ], "pentacle_id": "occultism:summon_djinni", "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_djinni_day_time\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.summon_djinni_day_time.tooltip\"}" + ] + }, "count": 1, - "id": "occultism:jei_dummy/none" + "id": "occultism:spawn_egg/marid" }, "ritual_dummy": { "count": 1, diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_djinni_night_time.json b/src/generated/resources/data/occultism/recipe/ritual/summon_djinni_night_time.json index 2af9a5857..ae3ef11ac 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_djinni_night_time.json +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_djinni_night_time.json @@ -21,8 +21,14 @@ ], "pentacle_id": "occultism:summon_djinni", "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_djinni_night_time\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.summon_djinni_night_time.tooltip\"}" + ] + }, "count": 1, - "id": "occultism:jei_dummy/none" + "id": "occultism:spawn_egg/djinni" }, "ritual_dummy": { "count": 1, diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_foliot_crusher.json b/src/generated/resources/data/occultism/recipe/ritual/summon_foliot_crusher.json index 5b25a88f6..9f4f60241 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_foliot_crusher.json +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_foliot_crusher.json @@ -21,8 +21,14 @@ ], "pentacle_id": "occultism:summon_foliot", "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_foliot_crusher\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.summon_foliot_crusher.tooltip\"}" + ] + }, "count": 1, - "id": "occultism:jei_dummy/none" + "id": "occultism:spawn_egg/foliot" }, "ritual_dummy": { "count": 1, diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_foliot_otherstone_trader.json b/src/generated/resources/data/occultism/recipe/ritual/summon_foliot_otherstone_trader.json index 898176c5c..7cf9ce67c 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_foliot_otherstone_trader.json +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_foliot_otherstone_trader.json @@ -20,8 +20,14 @@ ], "pentacle_id": "occultism:summon_foliot", "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_foliot_otherstone_trader\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.summon_foliot_otherstone_trader.tooltip\"}" + ] + }, "count": 1, - "id": "occultism:jei_dummy/none" + "id": "occultism:spawn_egg/foliot" }, "ritual_dummy": { "count": 1, diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_foliot_sapling_trader.json b/src/generated/resources/data/occultism/recipe/ritual/summon_foliot_sapling_trader.json index 188d4e830..0f3bc4600 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_foliot_sapling_trader.json +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_foliot_sapling_trader.json @@ -20,8 +20,14 @@ ], "pentacle_id": "occultism:summon_foliot", "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_foliot_sapling_trader\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.summon_foliot_sapling_trader.tooltip\"}" + ] + }, "count": 1, - "id": "occultism:jei_dummy/none" + "id": "occultism:spawn_egg/foliot" }, "ritual_dummy": { "count": 1, diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_marid_crusher.json b/src/generated/resources/data/occultism/recipe/ritual/summon_marid_crusher.json index b67901584..8530c278a 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_marid_crusher.json +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_marid_crusher.json @@ -21,8 +21,14 @@ ], "pentacle_id": "occultism:summon_marid", "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_marid_crusher\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.summon_marid_crusher.tooltip\"}" + ] + }, "count": 1, - "id": "occultism:jei_dummy/none" + "id": "occultism:spawn_egg/marid" }, "ritual_dummy": { "count": 1, diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_wild_afrit.json b/src/generated/resources/data/occultism/recipe/ritual/summon_unbound_afrit.json similarity index 73% rename from src/generated/resources/data/occultism/recipe/ritual/summon_wild_afrit.json rename to src/generated/resources/data/occultism/recipe/ritual/summon_unbound_afrit.json index 48b8b300e..a6d7c847a 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_wild_afrit.json +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_unbound_afrit.json @@ -20,15 +20,15 @@ "item": "minecraft:flint_and_steel" }, { - "item": "minecraft:gunpowder" + "tag": "c:gunpowders" } ], - "pentacle_id": "occultism:summon_wild_afrit", + "pentacle_id": "occultism:summon_unbound_afrit", "result": { "components": { - "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_afrit\"}", + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_unbound_afrit\"}", "minecraft:lore": [ - "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_afrit.tooltip\"}" + "{\"translate\":\"item.occultism.ritual_dummy.summon_unbound_afrit.tooltip\"}" ] }, "count": 1, @@ -36,7 +36,7 @@ }, "ritual_dummy": { "count": 1, - "id": "occultism:ritual_dummy/summon_wild_afrit" + "id": "occultism:ritual_dummy/summon_unbound_afrit" }, "ritual_type": "occultism:summon" } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_unbound_marid.json b/src/generated/resources/data/occultism/recipe/ritual/summon_unbound_marid.json new file mode 100644 index 000000000..f916bac25 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_unbound_marid.json @@ -0,0 +1,41 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "occultism:book_of_binding_bound_marid" + }, + "duration": 90, + "entity_to_summon": "occultism:marid_unbound", + "ingredients": [ + { + "item": "minecraft:conduit" + }, + { + "tag": "c:gems/prismarine" + }, + { + "item": "minecraft:prismarine_shard" + }, + { + "item": "minecraft:ghast_tear" + } + ], + "item_to_use": { + "item": "minecraft:trident" + }, + "pentacle_id": "occultism:summon_unbound_marid", + "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_unbound_marid\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.summon_unbound_marid.tooltip\"}" + ] + }, + "count": 1, + "id": "occultism:marid_essence" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/summon_unbound_marid" + }, + "ritual_type": "occultism:summon" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/possess_breeze.json b/src/generated/resources/data/occultism/recipe/ritual/wild_breeze.json similarity index 77% rename from src/generated/resources/data/occultism/recipe/ritual/possess_breeze.json rename to src/generated/resources/data/occultism/recipe/ritual/wild_breeze.json index 7c5936ad6..9ec43f98c 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/possess_breeze.json +++ b/src/generated/resources/data/occultism/recipe/ritual/wild_breeze.json @@ -5,7 +5,7 @@ }, "entity_to_sacrifice": { "display_name": "ritual.occultism.sacrifice.wolfs", - "tag": "occultism:wolfs" + "tag": "c:wolfs" }, "entity_to_summon": "occultism:possessed_breeze", "ingredients": [ @@ -28,12 +28,12 @@ "item": "minecraft:tuff_bricks" } ], - "pentacle_id": "occultism:summon_wild_greater_spirit", + "pentacle_id": "occultism:contact_wild_spirit", "result": { "components": { - "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.possess_breeze\"}", + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.wild_breeze\"}", "minecraft:lore": [ - "{\"translate\":\"item.occultism.ritual_dummy.possess_breeze.tooltip\"}" + "{\"translate\":\"item.occultism.ritual_dummy.wild_breeze.tooltip\"}" ] }, "count": 1, @@ -41,7 +41,7 @@ }, "ritual_dummy": { "count": 1, - "id": "occultism:ritual_dummy/possess_breeze" + "id": "occultism:ritual_dummy/wild_breeze" }, "ritual_type": "occultism:summon_wild" } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_wild_creeper.json b/src/generated/resources/data/occultism/recipe/ritual/wild_creeper.json similarity index 83% rename from src/generated/resources/data/occultism/recipe/ritual/summon_wild_creeper.json rename to src/generated/resources/data/occultism/recipe/ritual/wild_creeper.json index e6fc2c958..4e34507e0 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_wild_creeper.json +++ b/src/generated/resources/data/occultism/recipe/ritual/wild_creeper.json @@ -46,12 +46,12 @@ "item": "minecraft:moss_block" } ], - "pentacle_id": "occultism:summon_wild_greater_spirit", + "pentacle_id": "occultism:contact_wild_spirit", "result": { "components": { - "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_creeper\"}", + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.wild_creeper\"}", "minecraft:lore": [ - "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_creeper.tooltip\"}" + "{\"translate\":\"item.occultism.ritual_dummy.wild_creeper.tooltip\"}" ] }, "count": 1, @@ -59,7 +59,7 @@ }, "ritual_dummy": { "count": 1, - "id": "occultism:ritual_dummy/summon_wild_creeper" + "id": "occultism:ritual_dummy/wild_creeper" }, "ritual_type": "occultism:summon_wild", "summon_number": 5 diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_wild_drowned.json b/src/generated/resources/data/occultism/recipe/ritual/wild_drowned.json similarity index 59% rename from src/generated/resources/data/occultism/recipe/ritual/summon_wild_drowned.json rename to src/generated/resources/data/occultism/recipe/ritual/wild_drowned.json index cad8443a0..c4b45ced6 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_wild_drowned.json +++ b/src/generated/resources/data/occultism/recipe/ritual/wild_drowned.json @@ -5,35 +5,35 @@ }, "entity_to_sacrifice": { "display_name": "ritual.occultism.sacrifice.dolphin", - "tag": "occultism:dolphin" + "tag": "c:dolphins" }, "entity_to_summon": "occultism:wild_horde_drowned", "ingredients": [ { - "item": "minecraft:dead_brain_coral" + "item": "minecraft:dead_brain_coral_block" }, { - "item": "minecraft:dead_bubble_coral" + "item": "minecraft:dead_bubble_coral_block" }, { - "item": "minecraft:dead_fire_coral" + "item": "minecraft:dead_fire_coral_block" }, { - "item": "minecraft:dead_horn_coral" + "item": "minecraft:dead_horn_coral_block" }, { - "item": "minecraft:dead_tube_coral" + "item": "minecraft:dead_tube_coral_block" }, { "item": "minecraft:dried_kelp_block" } ], - "pentacle_id": "occultism:summon_wild_greater_spirit", + "pentacle_id": "occultism:contact_wild_spirit", "result": { "components": { - "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_drowned\"}", + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.wild_drowned\"}", "minecraft:lore": [ - "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_drowned.tooltip\"}" + "{\"translate\":\"item.occultism.ritual_dummy.wild_drowned.tooltip\"}" ] }, "count": 1, @@ -41,7 +41,7 @@ }, "ritual_dummy": { "count": 1, - "id": "occultism:ritual_dummy/summon_wild_drowned" + "id": "occultism:ritual_dummy/wild_drowned" }, "ritual_type": "occultism:summon_wild", "summon_number": 5 diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_horde_illager.json b/src/generated/resources/data/occultism/recipe/ritual/wild_horde_illager.json similarity index 68% rename from src/generated/resources/data/occultism/recipe/ritual/summon_horde_illager.json rename to src/generated/resources/data/occultism/recipe/ritual/wild_horde_illager.json index 1f93cbb5d..cab897c15 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_horde_illager.json +++ b/src/generated/resources/data/occultism/recipe/ritual/wild_horde_illager.json @@ -10,7 +10,7 @@ "entity_to_summon": "occultism:possessed_evoker", "ingredients": [ { - "item": "minecraft:ominous_bottle" + "item": "minecraft:dark_oak_log" }, { "item": "minecraft:dark_oak_log" @@ -19,21 +19,21 @@ "item": "minecraft:dark_oak_log" }, { - "item": "minecraft:dark_oak_log" + "tag": "c:dusts/emerald" }, { - "item": "minecraft:end_crystal" + "tag": "c:dusts/emerald" }, { - "item": "minecraft:emerald_block" + "tag": "c:dusts/emerald" } ], - "pentacle_id": "occultism:summon_wild_greater_spirit", + "pentacle_id": "occultism:contact_wild_spirit", "result": { "components": { - "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_horde_illager\"}", + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.wild_horde_illager\"}", "minecraft:lore": [ - "{\"translate\":\"item.occultism.ritual_dummy.summon_horde_illager.tooltip\"}" + "{\"translate\":\"item.occultism.ritual_dummy.wild_horde_illager.tooltip\"}" ] }, "count": 1, @@ -41,7 +41,7 @@ }, "ritual_dummy": { "count": 1, - "id": "occultism:ritual_dummy/summon_horde_illager" + "id": "occultism:ritual_dummy/wild_horde_illager" }, "ritual_type": "occultism:summon_wild" } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_wild_hunt.json b/src/generated/resources/data/occultism/recipe/ritual/wild_hunt.json similarity index 79% rename from src/generated/resources/data/occultism/recipe/ritual/summon_wild_hunt.json rename to src/generated/resources/data/occultism/recipe/ritual/wild_hunt.json index b764cca4d..b0ff828ab 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_wild_hunt.json +++ b/src/generated/resources/data/occultism/recipe/ritual/wild_hunt.json @@ -28,12 +28,12 @@ "item": "minecraft:soul_sand" } ], - "pentacle_id": "occultism:summon_wild_greater_spirit", + "pentacle_id": "occultism:contact_wild_spirit", "result": { "components": { - "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_hunt\"}", + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.wild_hunt\"}", "minecraft:lore": [ - "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_hunt.tooltip\"}" + "{\"translate\":\"item.occultism.ritual_dummy.wild_hunt.tooltip\"}" ] }, "count": 1, @@ -41,7 +41,7 @@ }, "ritual_dummy": { "count": 1, - "id": "occultism:ritual_dummy/summon_wild_hunt" + "id": "occultism:ritual_dummy/wild_hunt" }, "ritual_type": "occultism:summon_wild" } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_wild_husk.json b/src/generated/resources/data/occultism/recipe/ritual/wild_husk.json similarity index 82% rename from src/generated/resources/data/occultism/recipe/ritual/summon_wild_husk.json rename to src/generated/resources/data/occultism/recipe/ritual/wild_husk.json index 12423dfa0..21afe703d 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_wild_husk.json +++ b/src/generated/resources/data/occultism/recipe/ritual/wild_husk.json @@ -5,7 +5,7 @@ }, "entity_to_sacrifice": { "display_name": "ritual.occultism.sacrifice.camel", - "tag": "occultism:camel" + "tag": "c:camels" }, "entity_to_summon": "occultism:wild_horde_husk", "ingredients": [ @@ -46,12 +46,12 @@ "item": "minecraft:dead_bush" } ], - "pentacle_id": "occultism:summon_wild_greater_spirit", + "pentacle_id": "occultism:contact_wild_spirit", "result": { "components": { - "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_husk\"}", + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.wild_husk\"}", "minecraft:lore": [ - "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_husk.tooltip\"}" + "{\"translate\":\"item.occultism.ritual_dummy.wild_husk.tooltip\"}" ] }, "count": 1, @@ -59,7 +59,7 @@ }, "ritual_dummy": { "count": 1, - "id": "occultism:ritual_dummy/summon_wild_husk" + "id": "occultism:ritual_dummy/wild_husk" }, "ritual_type": "occultism:summon_wild", "summon_number": 5 diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_wild_silverfish.json b/src/generated/resources/data/occultism/recipe/ritual/wild_silverfish.json similarity index 78% rename from src/generated/resources/data/occultism/recipe/ritual/summon_wild_silverfish.json rename to src/generated/resources/data/occultism/recipe/ritual/wild_silverfish.json index 13c4951bc..a2fb408fe 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_wild_silverfish.json +++ b/src/generated/resources/data/occultism/recipe/ritual/wild_silverfish.json @@ -30,12 +30,12 @@ "item_to_use": { "item": "minecraft:egg" }, - "pentacle_id": "occultism:summon_wild_greater_spirit", + "pentacle_id": "occultism:contact_wild_spirit", "result": { "components": { - "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_silverfish\"}", + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.wild_silverfish\"}", "minecraft:lore": [ - "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_silverfish.tooltip\"}" + "{\"translate\":\"item.occultism.ritual_dummy.wild_silverfish.tooltip\"}" ] }, "count": 1, @@ -43,7 +43,7 @@ }, "ritual_dummy": { "count": 1, - "id": "occultism:ritual_dummy/summon_wild_silverfish" + "id": "occultism:ritual_dummy/wild_silverfish" }, "ritual_type": "occultism:summon_wild", "summon_number": 7 diff --git a/src/generated/resources/data/occultism/recipe/ritual/possess_strong_breeze.json b/src/generated/resources/data/occultism/recipe/ritual/wild_strong_breeze.json similarity index 83% rename from src/generated/resources/data/occultism/recipe/ritual/possess_strong_breeze.json rename to src/generated/resources/data/occultism/recipe/ritual/wild_strong_breeze.json index 4f1b2087c..5ff96b41a 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/possess_strong_breeze.json +++ b/src/generated/resources/data/occultism/recipe/ritual/wild_strong_breeze.json @@ -43,12 +43,12 @@ "item": "minecraft:ominous_bottle" } ], - "pentacle_id": "occultism:summon_wild_greater_spirit", + "pentacle_id": "occultism:contact_wild_spirit", "result": { "components": { - "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.possess_strong_breeze\"}", + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.wild_strong_breeze\"}", "minecraft:lore": [ - "{\"translate\":\"item.occultism.ritual_dummy.possess_strong_breeze.tooltip\"}" + "{\"translate\":\"item.occultism.ritual_dummy.wild_strong_breeze.tooltip\"}" ] }, "count": 1, @@ -56,7 +56,7 @@ }, "ritual_dummy": { "count": 1, - "id": "occultism:ritual_dummy/possess_strong_breeze" + "id": "occultism:ritual_dummy/wild_strong_breeze" }, "ritual_type": "occultism:summon_wild" } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/possess_weak_breeze.json b/src/generated/resources/data/occultism/recipe/ritual/wild_weak_breeze.json similarity index 80% rename from src/generated/resources/data/occultism/recipe/ritual/possess_weak_breeze.json rename to src/generated/resources/data/occultism/recipe/ritual/wild_weak_breeze.json index f50a3eaf4..9b679dc44 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/possess_weak_breeze.json +++ b/src/generated/resources/data/occultism/recipe/ritual/wild_weak_breeze.json @@ -34,12 +34,12 @@ "item": "minecraft:tuff" } ], - "pentacle_id": "occultism:summon_wild_greater_spirit", + "pentacle_id": "occultism:contact_wild_spirit", "result": { "components": { - "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.possess_weak_breeze\"}", + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.wild_weak_breeze\"}", "minecraft:lore": [ - "{\"translate\":\"item.occultism.ritual_dummy.possess_weak_breeze.tooltip\"}" + "{\"translate\":\"item.occultism.ritual_dummy.wild_weak_breeze.tooltip\"}" ] }, "count": 1, @@ -47,7 +47,7 @@ }, "ritual_dummy": { "count": 1, - "id": "occultism:ritual_dummy/possess_weak_breeze" + "id": "occultism:ritual_dummy/wild_weak_breeze" }, "ritual_type": "occultism:summon_wild" } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/smelting/netherite_ingot_from_dust.json b/src/generated/resources/data/occultism/recipe/smelting/netherite_ingot_from_dust.json new file mode 100644 index 000000000..0b31aa1d2 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/smelting/netherite_ingot_from_dust.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 0.7, + "ingredient": { + "tag": "c:dusts/netherite" + }, + "result": { + "count": 1, + "id": "minecraft:netherite_ingot" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/spirit_fire/chalk_gold.json b/src/generated/resources/data/occultism/recipe/spirit_fire/chalk_yellow.json similarity index 74% rename from src/generated/resources/data/occultism/recipe/spirit_fire/chalk_gold.json rename to src/generated/resources/data/occultism/recipe/spirit_fire/chalk_yellow.json index 76ff243cb..5de0dd6f3 100644 --- a/src/generated/resources/data/occultism/recipe/spirit_fire/chalk_gold.json +++ b/src/generated/resources/data/occultism/recipe/spirit_fire/chalk_yellow.json @@ -1,7 +1,7 @@ { "type": "occultism:spirit_fire", "ingredient": { - "item": "occultism:chalk_gold_impure" + "item": "occultism:chalk_yellow_impure" }, "result": { "count": 1, diff --git a/src/generated/resources/data/occultism/recipe/spirit_trade/otherworld_sapling.json b/src/generated/resources/data/occultism/recipe/spirit_trade/otherworld_sapling.json index 8c054dad6..ae0349d77 100644 --- a/src/generated/resources/data/occultism/recipe/spirit_trade/otherworld_sapling.json +++ b/src/generated/resources/data/occultism/recipe/spirit_trade/otherworld_sapling.json @@ -1,7 +1,7 @@ { "type": "occultism:spirit_trade", "ingredient": { - "item": "occultism:otherworld_sapling_natural" + "tag": "occultism:saplings/otherworld_natural" }, "result": { "count": 1, diff --git a/src/generated/resources/data/occultism/tags/block/foundation_glyphs_any.json b/src/generated/resources/data/occultism/tags/block/foundation_glyphs_any.json new file mode 100644 index 000000000..5d0575211 --- /dev/null +++ b/src/generated/resources/data/occultism/tags/block/foundation_glyphs_any.json @@ -0,0 +1,8 @@ +{ + "values": [ + "occultism:chalk_glyph_white", + "occultism:chalk_glyph_light_gray", + "occultism:chalk_glyph_gray", + "occultism:chalk_glyph_black" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/tags/block/foundation_glyphs_dark.json b/src/generated/resources/data/occultism/tags/block/foundation_glyphs_dark.json new file mode 100644 index 000000000..8efa942ed --- /dev/null +++ b/src/generated/resources/data/occultism/tags/block/foundation_glyphs_dark.json @@ -0,0 +1,6 @@ +{ + "values": [ + "occultism:chalk_glyph_gray", + "occultism:chalk_glyph_black" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/tags/block/foundation_glyphs_no_white.json b/src/generated/resources/data/occultism/tags/block/foundation_glyphs_no_white.json new file mode 100644 index 000000000..e436f5efe --- /dev/null +++ b/src/generated/resources/data/occultism/tags/block/foundation_glyphs_no_white.json @@ -0,0 +1,7 @@ +{ + "values": [ + "occultism:chalk_glyph_light_gray", + "occultism:chalk_glyph_gray", + "occultism:chalk_glyph_black" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/tags/block/saplings/otherworld_natural.json b/src/generated/resources/data/occultism/tags/block/saplings/otherworld_natural.json new file mode 100644 index 000000000..2f0a3c057 --- /dev/null +++ b/src/generated/resources/data/occultism/tags/block/saplings/otherworld_natural.json @@ -0,0 +1,5 @@ +{ + "values": [ + "occultism:otherworld_sapling_natural" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/tags/entity_type/healed_by_demons_dream_fruit.json b/src/generated/resources/data/occultism/tags/entity_type/healed_by_demons_dream_fruit.json index 09f26df7c..6af9eb616 100644 --- a/src/generated/resources/data/occultism/tags/entity_type/healed_by_demons_dream_fruit.json +++ b/src/generated/resources/data/occultism/tags/entity_type/healed_by_demons_dream_fruit.json @@ -5,9 +5,20 @@ "occultism:afrit", "occultism:afrit_wild", "occultism:marid", + "occultism:marid_unbound", "occultism:possessed_endermite", + "occultism:possessed_skeleton", "occultism:possessed_enderman", "occultism:possessed_ghast", + "occultism:possessed_phantom", + "occultism:possessed_weak_shulker", + "occultism:possessed_shulker", + "occultism:possessed_elder_guardian", + "occultism:possessed_warden", + "occultism:possessed_hoglin", + "occultism:possessed_witch", + "occultism:possessed_zombie_piglin", + "occultism:possessed_bee", "occultism:wild_hunt_skeleton", "occultism:wild_hunt_wither_skeleton", "occultism:otherworld_bird", diff --git a/src/generated/resources/data/occultism/tags/item/armored_items.json b/src/generated/resources/data/occultism/tags/item/armored_items.json new file mode 100644 index 000000000..8c0caffc6 --- /dev/null +++ b/src/generated/resources/data/occultism/tags/item/armored_items.json @@ -0,0 +1,8 @@ +{ + "values": [ + "minecraft:armadillo_scute", + "minecraft:turtle_scute", + "minecraft:shulker_shell", + "minecraft:nautilus_shell" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/tags/item/miners.json b/src/generated/resources/data/occultism/tags/item/miners.json index 75d1e19aa..e1ced0392 100644 --- a/src/generated/resources/data/occultism/tags/item/miners.json +++ b/src/generated/resources/data/occultism/tags/item/miners.json @@ -3,6 +3,7 @@ "#occultism:miners/basic_resources", "#occultism:miners/deeps", "#occultism:miners/master", - "#occultism:miners/ores" + "#occultism:miners/ores", + "#occultism:miners/eldritch" ] } \ No newline at end of file diff --git a/src/generated/resources/data/occultism/tags/item/miners/eldritch.json b/src/generated/resources/data/occultism/tags/item/miners/eldritch.json new file mode 100644 index 000000000..39a071ba8 --- /dev/null +++ b/src/generated/resources/data/occultism/tags/item/miners/eldritch.json @@ -0,0 +1,5 @@ +{ + "values": [ + "occultism:miner_ancient_eldritch" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/tags/item/saplings/otherworld_natural.json b/src/generated/resources/data/occultism/tags/item/saplings/otherworld_natural.json new file mode 100644 index 000000000..2f0a3c057 --- /dev/null +++ b/src/generated/resources/data/occultism/tags/item/saplings/otherworld_natural.json @@ -0,0 +1,5 @@ +{ + "values": [ + "occultism:otherworld_sapling_natural" + ] +} \ No newline at end of file diff --git a/src/main/java/com/klikli_dev/occultism/Occultism.java b/src/main/java/com/klikli_dev/occultism/Occultism.java index fb9c8ae2e..77e67ed10 100644 --- a/src/main/java/com/klikli_dev/occultism/Occultism.java +++ b/src/main/java/com/klikli_dev/occultism/Occultism.java @@ -157,6 +157,7 @@ private void onEntityAttributeCreation(final EntityAttributeCreationEvent event) event.put(OccultismEntities.AFRIT_TYPE.get(), AfritEntity.createAttributes().build()); event.put(OccultismEntities.AFRIT_WILD_TYPE.get(), AfritWildEntity.createAttributes().build()); event.put(OccultismEntities.MARID_TYPE.get(), MaridEntity.createAttributes().build()); + event.put(OccultismEntities.MARID_UNBOUND_TYPE.get(), MaridUnboundEntity.createAttributes().build()); event.put(OccultismEntities.POSSESSED_ENDERMITE_TYPE.get(), PossessedEndermiteEntity.createAttributes().build()); event.put(OccultismEntities.POSSESSED_SKELETON_TYPE.get(), PossessedSkeletonEntity.createAttributes().build()); event.put(OccultismEntities.POSSESSED_ENDERMAN_TYPE.get(), PossessedEndermanEntity.createAttributes().build()); @@ -167,6 +168,10 @@ private void onEntityAttributeCreation(final EntityAttributeCreationEvent event) event.put(OccultismEntities.POSSESSED_ELDER_GUARDIAN_TYPE.get(), PossessedElderGuardianEntity.createAttributes().build()); event.put(OccultismEntities.POSSESSED_WARDEN_TYPE.get(), PossessedWardenEntity.createAttributes().build()); event.put(OccultismEntities.POSSESSED_HOGLIN_TYPE.get(), PossessedHoglinEntity.createAttributes().build()); + event.put(OccultismEntities.POSSESSED_WITCH_TYPE.get(), PossessedWitchEntity.createAttributes().build()); + event.put(OccultismEntities.POSSESSED_ZOMBIE_PIGLIN_TYPE.get(), PossessedZombiePiglinEntity.createAttributes().build()); + event.put(OccultismEntities.POSSESSED_BEE_TYPE.get(), PossessedBeeEntity.createAttributes().build()); + event.put(OccultismEntities.GOAT_OF_MERCY_TYPE.get(), GoatOfMercyEntity.createAttributes().build()); event.put(OccultismEntities.WILD_HUNT_SKELETON_TYPE.get(), WildHuntSkeletonEntity.createAttributes().build()); event.put(OccultismEntities.WILD_HUNT_WITHER_SKELETON_TYPE.get(), WildHuntWitherSkeletonEntity.createAttributes().build()); event.put(OccultismEntities.OTHERWORLD_BIRD_TYPE.get(), OtherworldBirdEntity.createAttributes().build()); diff --git a/src/main/java/com/klikli_dev/occultism/client/model/entity/MaridUnboundModel.java b/src/main/java/com/klikli_dev/occultism/client/model/entity/MaridUnboundModel.java new file mode 100644 index 000000000..359362c26 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/client/model/entity/MaridUnboundModel.java @@ -0,0 +1,47 @@ +/* + * MIT License + * + * Copyright 2020 klikli-dev + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and + * associated documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT + * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.klikli_dev.occultism.client.model.entity; + +import com.klikli_dev.occultism.Occultism; +import com.klikli_dev.occultism.common.entity.spirit.MaridUnboundEntity; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.DefaultedGeoModel; + +public class MaridUnboundModel extends DefaultedGeoModel { + + public MaridUnboundModel() { + super(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "marid")); + } + + @Override + protected String subtype() { + return "entity"; + } + + @Override + public RenderType getRenderType(MaridUnboundEntity animatable, ResourceLocation texture) { + return RenderType.entityTranslucent(this.getTextureResource(animatable)); + } +} + diff --git a/src/main/java/com/klikli_dev/occultism/client/render/entity/MaridUnboundRenderer.java b/src/main/java/com/klikli_dev/occultism/client/render/entity/MaridUnboundRenderer.java new file mode 100644 index 000000000..9b7846b91 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/client/render/entity/MaridUnboundRenderer.java @@ -0,0 +1,39 @@ +/* + * MIT License + * + * Copyright 2020 klikli-dev + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and + * associated documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT + * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.klikli_dev.occultism.client.render.entity; + +import com.klikli_dev.occultism.client.model.entity.MaridUnboundModel; +import com.klikli_dev.occultism.common.entity.spirit.MaridUnboundEntity; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import software.bernie.geckolib.renderer.GeoEntityRenderer; +import software.bernie.geckolib.renderer.layer.AutoGlowingGeoLayer; + +import java.util.Objects; + +public class MaridUnboundRenderer extends GeoEntityRenderer { + + public MaridUnboundRenderer(EntityRendererProvider.Context renderManager) { + super(renderManager, new MaridUnboundModel()); + + } +} diff --git a/src/main/java/com/klikli_dev/occultism/client/render/entity/PossessedZombiePiglinRenderer.java b/src/main/java/com/klikli_dev/occultism/client/render/entity/PossessedZombiePiglinRenderer.java new file mode 100644 index 000000000..f2f20f534 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/client/render/entity/PossessedZombiePiglinRenderer.java @@ -0,0 +1,40 @@ +package com.klikli_dev.occultism.client.render.entity; + +import com.klikli_dev.occultism.Occultism; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.model.PiglinModel; +import net.minecraft.client.model.geom.ModelLayers; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.HumanoidMobRenderer; +import net.minecraft.client.renderer.entity.ZombieRenderer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.monster.Zombie; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; + +import java.util.Map; + +@OnlyIn(Dist.CLIENT) +public class PossessedZombiePiglinRenderer extends ZombieRenderer { + private static final ResourceLocation ZOMBIE_PIGLIN_LOCATION = ResourceLocation.fromNamespaceAndPath(Occultism.MODID,"textures/entity/old_zombie_piglin.png"); + + public PossessedZombiePiglinRenderer(EntityRendererProvider.Context p_174180_) { + super(p_174180_, ModelLayers.ZOMBIE, ModelLayers.ZOMBIE_INNER_ARMOR, ModelLayers.ZOMBIE_OUTER_ARMOR); + } + + protected void scale(Zombie livingEntity, PoseStack poseStack, float partialTickTime) { + float f = 1.0625F; + poseStack.scale(1.0625F, 1.0625F, 1.0625F); + super.scale(livingEntity, poseStack, partialTickTime); + } + + /** + * Returns the location of an entity's texture. + */ + @Override + public ResourceLocation getTextureLocation(Zombie entity) { + return ZOMBIE_PIGLIN_LOCATION; + } +} + diff --git a/src/main/java/com/klikli_dev/occultism/common/block/GoldenSacrificialBowlBlock.java b/src/main/java/com/klikli_dev/occultism/common/block/GoldenSacrificialBowlBlock.java index 848ff019b..a86cc31d5 100644 --- a/src/main/java/com/klikli_dev/occultism/common/block/GoldenSacrificialBowlBlock.java +++ b/src/main/java/com/klikli_dev/occultism/common/block/GoldenSacrificialBowlBlock.java @@ -28,7 +28,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -40,7 +39,6 @@ import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @@ -97,9 +95,13 @@ public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, @SuppressWarnings("deprecation") @Override public int getSignal(BlockState pBlockState, BlockGetter pBlockAccess, BlockPos pPos, Direction pSide) { + BlockEntity blockEntityAbove = pBlockAccess.getBlockEntity(pPos.above(3)); + if (blockEntityAbove instanceof GoldenSacrificialBowlBlockEntity bowl) { + return bowl.getSignal(); + } BlockEntity blockEntity = pBlockAccess.getBlockEntity(pPos); if (blockEntity instanceof GoldenSacrificialBowlBlockEntity bowl) { - return bowl.getSignal(pBlockState, pBlockAccess, pPos, pSide); + return bowl.getSignal(); } return 0; } diff --git a/src/main/java/com/klikli_dev/occultism/common/block/LargeCandleBlock.java b/src/main/java/com/klikli_dev/occultism/common/block/LargeCandleBlock.java index 0c42c2cae..92315c141 100644 --- a/src/main/java/com/klikli_dev/occultism/common/block/LargeCandleBlock.java +++ b/src/main/java/com/klikli_dev/occultism/common/block/LargeCandleBlock.java @@ -33,7 +33,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; -import net.minecraft.tags.BlockTags; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.ItemInteractionResult; @@ -277,7 +276,6 @@ public void animateTick(BlockState state, Level level, BlockPos blockPos, Random } } - super.animateTick(state, level, blockPos, rand); } } diff --git a/src/main/java/com/klikli_dev/occultism/common/blockentity/DimensionalMineshaftBlockEntity.java b/src/main/java/com/klikli_dev/occultism/common/blockentity/DimensionalMineshaftBlockEntity.java index 95fe0b4a2..9d6469500 100644 --- a/src/main/java/com/klikli_dev/occultism/common/blockentity/DimensionalMineshaftBlockEntity.java +++ b/src/main/java/com/klikli_dev/occultism/common/blockentity/DimensionalMineshaftBlockEntity.java @@ -22,7 +22,9 @@ package com.klikli_dev.occultism.common.blockentity; +import com.klikli_dev.occultism.Occultism; import com.klikli_dev.occultism.common.container.DimensionalMineshaftContainer; +import com.klikli_dev.occultism.config.OccultismServerConfig; import com.klikli_dev.occultism.crafting.recipe.MinerRecipe; import com.klikli_dev.occultism.crafting.recipe.input.ItemHandlerRecipeInput; import com.klikli_dev.occultism.crafting.recipe.result.WeightedRecipeResult; @@ -231,8 +233,13 @@ public void mine() { // but the miner block entity simply discards the results } - //damage and eventually consume item + //damage the item and move to output before breaking ItemStack input = this.inputHandler.getStackInSlot(0); input.hurtAndBreak(1, (ServerLevel) this.level, (LivingEntity) null, (item) -> {}); + if (Occultism.SERVER_CONFIG.itemSettings.minerOutputBeforeBreak.getAsBoolean() && input.getMaxDamage()-1 == input.getDamageValue()){ + var minerCopy = input.copy(); + input.hurtAndBreak(100, (ServerLevel) this.level, (LivingEntity) null, (item) -> {}); + ItemHandlerHelper.insertItemStacked(this.outputHandler, minerCopy,false); + } } } diff --git a/src/main/java/com/klikli_dev/occultism/common/blockentity/GoldenSacrificialBowlBlockEntity.java b/src/main/java/com/klikli_dev/occultism/common/blockentity/GoldenSacrificialBowlBlockEntity.java index 46b6bd6c2..534b9bc83 100644 --- a/src/main/java/com/klikli_dev/occultism/common/blockentity/GoldenSacrificialBowlBlockEntity.java +++ b/src/main/java/com/klikli_dev/occultism/common/blockentity/GoldenSacrificialBowlBlockEntity.java @@ -55,7 +55,6 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeHolder; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Rotation; @@ -308,7 +307,7 @@ public RecipeHolder getCurrentRitualRecipe() { return this.currentRitualRecipe; } - public int getSignal(BlockState pBlockState, BlockGetter pBlockAccess, BlockPos pPos, Direction pSide) { + public int getSignal() { if(this.getCurrentRitualRecipe() == null) return 0; diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/GoatOfMercyEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/GoatOfMercyEntity.java new file mode 100644 index 000000000..212537c6a --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/GoatOfMercyEntity.java @@ -0,0 +1,49 @@ +/* + * MIT License + * + * Copyright 2020 klikli-dev + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and + * associated documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT + * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.klikli_dev.occultism.common.entity.possessed; + +import com.mojang.serialization.Dynamic; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.ai.Brain; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.animal.goat.Goat; +import net.minecraft.world.entity.animal.goat.GoatAi; +import net.minecraft.world.entity.monster.Witch; +import net.minecraft.world.level.Level; + +public class GoatOfMercyEntity extends Goat { + + public GoatOfMercyEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Goat.createAttributes() + .add(Attributes.MOVEMENT_SPEED, 0.0) + .add(Attributes.MAX_HEALTH, 1.0); + } + +} diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedBeeEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedBeeEntity.java new file mode 100644 index 000000000..be127e925 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedBeeEntity.java @@ -0,0 +1,104 @@ +/* + * MIT License + * + * Copyright 2020 klikli-dev + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and + * associated documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT + * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.klikli_dev.occultism.common.entity.possessed; + +import com.klikli_dev.occultism.registry.OccultismEntities; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.Difficulty; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.animal.Bee; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.Level; + +public class PossessedBeeEntity extends Bee { + + public PossessedBeeEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Bee.createAttributes() + .add(Attributes.MOVEMENT_SPEED, 0.4) + .add(Attributes.MAX_HEALTH, 40.0) + .add(Attributes.SPAWN_REINFORCEMENTS_CHANCE, 0.06) + .add(Attributes.ATTACK_DAMAGE, 4.0) + .add(Attributes.FOLLOW_RANGE, 48.0) + .add(Attributes.ATTACK_SPEED, 3); + } + + @Override + public boolean doHurtTarget(Entity entity) { + DamageSource damagesource = this.damageSources().sting(this); + boolean flag = entity.hurt(damagesource, (float) ((int) this.getAttributeValue(Attributes.ATTACK_DAMAGE))); + if (flag) { + if (this.level() instanceof ServerLevel serverlevel) { + EnchantmentHelper.doPostAttackEffects(serverlevel, entity, damagesource); + } + + if (entity instanceof LivingEntity livingentity) { + livingentity.setStingerCount(livingentity.getStingerCount() + 1); + int i = 10; + if (this.level().getDifficulty() == Difficulty.NORMAL) { + i = 20; + } else if (this.level().getDifficulty() == Difficulty.HARD) { + i = 30; + } + livingentity.addEffect(new MobEffectInstance(MobEffects.POISON, i * 20, 0), this); + } + + this.playSound(SoundEvents.BEE_STING, 1.0F, 1.0F); + } + + return flag; + } + @Override + public boolean hurt(DamageSource source, float amount) { + + if (this.isInvulnerableTo(source)) { + return false; + } else { + LivingEntity livingentity = this.getTarget(); + if (livingentity != null + && (double) this.random.nextFloat() < this.getAttributeValue(Attributes.SPAWN_REINFORCEMENTS_CHANCE) + && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) { + + Bee bee = OccultismEntities.POSSESSED_BEE.get().create(this.level()); + double offsetX = this.level().getRandom().nextGaussian() * (1 + this.level().getRandom().nextInt(4)); + double offsetZ = this.level().getRandom().nextGaussian() * (1 + this.level().getRandom().nextInt(4)); + bee.absMoveTo(this.getBlockX() + offsetX, this.getBlockY() + 1.5, this.getBlockZ() + offsetZ, this.level().getRandom().nextInt(360), 0); + this.level().addFreshEntity(bee); + } + return super.hurt(source, amount); + } + } +} diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedWitchEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedWitchEntity.java new file mode 100644 index 000000000..8a557c782 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedWitchEntity.java @@ -0,0 +1,56 @@ +/* + * MIT License + * + * Copyright 2020 klikli-dev + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and + * associated documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT + * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.klikli_dev.occultism.common.entity.possessed; + +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.monster.Skeleton; +import net.minecraft.world.entity.monster.Witch; +import net.minecraft.world.level.Level; + +public class PossessedWitchEntity extends Witch { + + public PossessedWitchEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Witch.createAttributes() + .add(Attributes.MOVEMENT_SPEED, 0.3) + .add(Attributes.MAX_HEALTH, 35.0); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + + @Override + protected boolean isSunBurnTick() { + return false; + } + //endregion Static Methods +} diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedZombiePiglinEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedZombiePiglinEntity.java new file mode 100644 index 000000000..69fa0d147 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedZombiePiglinEntity.java @@ -0,0 +1,90 @@ +/* + * MIT License + * + * Copyright 2020 klikli-dev + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and + * associated documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT + * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.klikli_dev.occultism.common.entity.possessed; + +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.monster.Zombie; +import net.minecraft.world.entity.monster.ZombifiedPiglin; +import net.minecraft.world.entity.monster.piglin.Piglin; +import net.minecraft.world.level.Level; + +public class PossessedZombiePiglinEntity extends Zombie { + + public PossessedZombiePiglinEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Zombie.createAttributes() + .add(Attributes.SPAWN_REINFORCEMENTS_CHANCE, 0.0) + .add(Attributes.MOVEMENT_SPEED, 0.26F) + .add(Attributes.ATTACK_DAMAGE, 6.0) + .add(Attributes.ATTACK_SPEED,7) + .add(Attributes.ARMOR,6) + .add(Attributes.MAX_HEALTH,80) + .add(Attributes.FOLLOW_RANGE, 35.0) + .add(Attributes.ARMOR_TOUGHNESS, 25.0); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + + @Override + protected boolean isSunBurnTick() { + return false; + } + + @Override + protected boolean convertsInWater() { + return false; + } + + @Override + protected void randomizeReinforcementsChance() { + this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(0.0); + } + + @Override + protected SoundEvent getAmbientSound() { + return SoundEvents.ZOMBIFIED_PIGLIN_ANGRY; + } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSource) { + return SoundEvents.ZOMBIFIED_PIGLIN_HURT; + } + + @Override + protected SoundEvent getDeathSound() { + return SoundEvents.ZOMBIFIED_PIGLIN_DEATH; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/spirit/DjinniEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/spirit/DjinniEntity.java index 923558b4a..603cddcab 100644 --- a/src/main/java/com/klikli_dev/occultism/common/entity/spirit/DjinniEntity.java +++ b/src/main/java/com/klikli_dev/occultism/common/entity/spirit/DjinniEntity.java @@ -80,7 +80,7 @@ public void onSyncedDataUpdated(EntityDataAccessor pKey) { } if (JOB_ID.equals(pKey)) { - if (Objects.equals(this.getJobID(), OccultismSpiritJobs.CRUSH_TIER2.getId().toString()) && this.getSizeState() != 1) { + if (!Objects.equals(this.getJobID(), OccultismSpiritJobs.MANAGE_MACHINE.getId().toString()) && this.getSizeState() != 1) { this.setSizeState(1); } } diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/spirit/MaridEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/spirit/MaridEntity.java index d1b61ec8b..58751f628 100644 --- a/src/main/java/com/klikli_dev/occultism/common/entity/spirit/MaridEntity.java +++ b/src/main/java/com/klikli_dev/occultism/common/entity/spirit/MaridEntity.java @@ -23,6 +23,8 @@ package com.klikli_dev.occultism.common.entity.spirit; import net.minecraft.core.BlockPos; +import net.minecraft.tags.DamageTypeTags; +import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; @@ -86,4 +88,16 @@ public AnimatableInstanceCache getAnimatableInstanceCache() { public boolean isFood(ItemStack pStack) { return false; } + + @Override + public boolean isInvulnerableTo(DamageSource source) { + if (source.is(DamageTypeTags.IS_FIRE) + || source.is(DamageTypeTags.IS_DROWNING) + || source.is(DamageTypeTags.IS_FREEZING) + || source.is(DamageTypeTags.IS_EXPLOSION) + || source.is(DamageTypeTags.WITCH_RESISTANT_TO)) + return true; + + return super.isInvulnerableTo(source); + } } diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/spirit/MaridUnboundEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/spirit/MaridUnboundEntity.java new file mode 100644 index 000000000..f5e202802 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/spirit/MaridUnboundEntity.java @@ -0,0 +1,145 @@ +/* + * MIT License + * + * Copyright 2020 klikli-dev + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and + * associated documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT + * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.klikli_dev.occultism.common.entity.spirit; + +import com.klikli_dev.occultism.registry.OccultismTags; +import net.minecraft.core.BlockPos; +import net.minecraft.tags.DamageTypeTags; +import net.minecraft.tags.TagKey; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.*; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.monster.Guardian; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.block.state.BlockState; +import net.neoforged.neoforge.event.EventHooks; +import software.bernie.geckolib.animatable.GeoAnimatable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.*; +import software.bernie.geckolib.util.GeckoLibUtil; + +import javax.annotation.Nullable; + +public class MaridUnboundEntity extends Monster implements GeoEntity { + AnimatableInstanceCache animatableInstanceCache = GeckoLibUtil.createInstanceCache(this); + + public MaridUnboundEntity(EntityType type, Level level) { + super(type, level); + } + + public static AttributeSupplier.Builder createAttributes() { + + return Monster.createMonsterAttributes() + .add(Attributes.FOLLOW_RANGE, 50.0) + .add(Attributes.ATTACK_DAMAGE, 14.0) + .add(Attributes.ATTACK_SPEED, 8.0) + .add(Attributes.MAX_HEALTH, 300.0) + .add(Attributes.MOVEMENT_SPEED, 0.41000001192092896) + .add(Attributes.ARMOR, 16.0) + .add(Attributes.ARMOR_TOUGHNESS, 50.0) + .add(Attributes.KNOCKBACK_RESISTANCE,1.0); + } + + @Override + protected void registerGoals() { + //Override all base goals + this.goalSelector.addGoal(1, new FloatGoal(this)); + this.goalSelector.addGoal(5, new MeleeAttackGoal(this, 1.0D, true)); + this.goalSelector.addGoal(8, new LookAtPlayerGoal(this, Player.class, 8.0F)); + this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); + this.goalSelector.addGoal(2, new MeleeAttackGoal(this, 1.0D, false)); + this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor level, DifficultyInstance difficultyIn, MobSpawnType reason, + @Nullable SpawnGroupData spawnDataIn) { + int maxGuardians = 3 + level.getRandom().nextInt(6); + + for (int i = 0; i < maxGuardians; i++) { + Guardian entity = EntityType.GUARDIAN.create(level.getLevel()); + + EventHooks.finalizeMobSpawn(entity, level, difficultyIn, reason, spawnDataIn); + + double offsetX = level.getRandom().nextGaussian() * (1 + level.getRandom().nextInt(4)); + double offsetZ = level.getRandom().nextGaussian() * (1 + level.getRandom().nextInt(4)); + entity.absMoveTo(this.getBlockX() + offsetX, this.getBlockY() + 1.5, this.getBlockZ() + offsetZ, + level.getRandom().nextInt(360), 0); + level.addFreshEntity(entity); + } + + return super.finalizeSpawn(level, difficultyIn, reason, spawnDataIn); + } + + @Override + protected void playStepSound(BlockPos pPos, BlockState pBlock) { + } + + @Override + public int getCurrentSwingDuration() { + return 11; //to match our attack animation speed + 1 tick + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + var mainController = new AnimationController<>(this, "mainController", 0, this::animPredicate); + controllers.add(mainController); + } + + private PlayState animPredicate(AnimationState tAnimationState) { + + if (this.swinging) { + return tAnimationState.setAndContinue(RawAnimation.begin().thenPlay("attack")); + } + + return tAnimationState.setAndContinue(tAnimationState.isMoving() ? RawAnimation.begin().thenPlay("walk") : RawAnimation.begin().thenPlay("idle")); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.animatableInstanceCache; + } + + @Override + public boolean isInvulnerableTo(DamageSource source) { + if (source.is(DamageTypeTags.IS_FIRE) + || source.is(DamageTypeTags.IS_DROWNING) + || source.is(DamageTypeTags.IS_FREEZING) + || source.is(DamageTypeTags.IS_EXPLOSION) + || source.is(DamageTypeTags.WITCH_RESISTANT_TO)) + return true; + + return super.isInvulnerableTo(source); + } +} diff --git a/src/main/java/com/klikli_dev/occultism/common/item/spirit/MinerSpiritItem.java b/src/main/java/com/klikli_dev/occultism/common/item/spirit/MinerSpiritItem.java index 1b5deb30c..26d5476f1 100644 --- a/src/main/java/com/klikli_dev/occultism/common/item/spirit/MinerSpiritItem.java +++ b/src/main/java/com/klikli_dev/occultism/common/item/spirit/MinerSpiritItem.java @@ -46,12 +46,14 @@ public class MinerSpiritItem extends Item { private final Supplier maxMiningTime; private final Supplier rollsPerOperation; private final Supplier maxDamage; + private final int enchantmentValue; public MinerSpiritItem(Properties properties, Supplier maxMiningTime, Supplier rollsPerOperation, Supplier maxDamage) { super(properties.component(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY)); this.maxMiningTime = maxMiningTime; this.rollsPerOperation = rollsPerOperation; this.maxDamage = maxDamage; + this.enchantmentValue = 9; } @Override @@ -82,4 +84,9 @@ public int getMaxStackSize(ItemStack stack) { stack.set(OccultismDataComponents.ROLLS_PER_OPERATION, this.rollsPerOperation.get()); return super.getMaxStackSize(stack); } + + @Override + public int getEnchantmentValue() { + return this.enchantmentValue; + } } diff --git a/src/main/java/com/klikli_dev/occultism/common/ritual/RepairRitual.java b/src/main/java/com/klikli_dev/occultism/common/ritual/RepairRitual.java new file mode 100644 index 000000000..260f36cdf --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/ritual/RepairRitual.java @@ -0,0 +1,55 @@ +/* + * MIT License + * + * Copyright 2020 klikli-dev + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and + * associated documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT + * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.klikli_dev.occultism.common.ritual; + +import com.klikli_dev.occultism.common.blockentity.GoldenSacrificialBowlBlockEntity; +import com.klikli_dev.occultism.crafting.recipe.RitualRecipe; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.Nullable; + +public class RepairRitual extends Ritual { + + public RepairRitual(RitualRecipe recipe) { + super(recipe); + } + + @Override + public void finish(Level level, BlockPos goldenBowlPosition, GoldenSacrificialBowlBlockEntity blockEntity, @Nullable ServerPlayer castingPlayer, ItemStack activationItem) { + super.finish(level, goldenBowlPosition, blockEntity, castingPlayer, activationItem); + + ItemStack result = activationItem.copy(); + activationItem.shrink(1); //remove activation item. + + ((ServerLevel) level).sendParticles(ParticleTypes.LARGE_SMOKE, goldenBowlPosition.getX() + 0.5, + goldenBowlPosition.getY() + 0.5, goldenBowlPosition.getZ() + 0.5, 1, 0, 0, 0, 0); + + result.setDamageValue(0); + + this.dropResult(level, goldenBowlPosition, blockEntity, castingPlayer, result); + } +} diff --git a/src/main/java/com/klikli_dev/occultism/common/ritual/SummonRitual.java b/src/main/java/com/klikli_dev/occultism/common/ritual/SummonRitual.java index 333a9dafc..71aad108e 100644 --- a/src/main/java/com/klikli_dev/occultism/common/ritual/SummonRitual.java +++ b/src/main/java/com/klikli_dev/occultism/common/ritual/SummonRitual.java @@ -66,15 +66,20 @@ public SummonRitual(RitualRecipe recipe, boolean tame) { */ public ItemStack getBookOfCallingBound(RegistryAccess registryAccess, ItemStack activationItem) { ItemStack result = this.recipe.getResultItem(registryAccess).copy(); - if (result.getItem() == OccultismItems.JEI_DUMMY_NONE.get()) + if (result.getItem() == OccultismItems.BOOK_OF_CALLING_FOLIOT_CLEANER.get() + || result.getItem() == OccultismItems.BOOK_OF_CALLING_FOLIOT_LUMBERJACK.get() + || result.getItem() == OccultismItems.BOOK_OF_CALLING_FOLIOT_TRANSPORT_ITEMS.get() + || result.getItem() == OccultismItems.BOOK_OF_CALLING_DJINNI_MANAGE_MACHINE.get()) { + //should never happen, but apparently there is a scenario where it does (item cheated in with non jei?) + //https://github.com/klikli-dev/occultism/issues/183 + + if (!activationItem.isComponentsPatchEmpty()) { + result.applyComponents(activationItem.getComponents()); + } + return result; + } else { return ItemStack.EMPTY; - - //should never happen, but apparently there is a scenario where it does (item cheated in with non jei?) - //https://github.com/klikli-dev/occultism/issues/183 - - if (!activationItem.isComponentsPatchEmpty()) - result.applyComponents(activationItem.getComponents()); - return result; + } } /** diff --git a/src/main/java/com/klikli_dev/occultism/config/OccultismClientConfig.java b/src/main/java/com/klikli_dev/occultism/config/OccultismClientConfig.java index 37eb72eaf..8a4fa93f4 100644 --- a/src/main/java/com/klikli_dev/occultism/config/OccultismClientConfig.java +++ b/src/main/java/com/klikli_dev/occultism/config/OccultismClientConfig.java @@ -46,7 +46,7 @@ public static class VisualSettings { public final BooleanValue useAlternativeDivinationRodRenderer; public final IntValue whiteChalkGlyphColor; - public final IntValue goldenChalkGlyphColor; + public final IntValue yellowChalkGlyphColor; public final IntValue purpleChalkGlyphColor; public final IntValue redChalkGlyphColor; public final IntValue lightGrayChalkGlyphColor; @@ -82,25 +82,6 @@ public VisualSettings(ModConfigSpec.Builder builder) { "For most types of color blindness it should not be necessary to change this." ).defineInRange("whiteChalkGlyphColor", 0xffffff, 0, 0xffffff); - this.goldenChalkGlyphColor = builder.comment( - "The integer code of the color of the golden chalk glyph in world.", - "This is intended to allow people with color blindness to change the color of the glyph.", - "For most types of color blindness it should not be necessary to change this." - ).defineInRange("goldenChalkGlyphColor", 0xf0d700, 0, 0xffffff); - - - this.purpleChalkGlyphColor = builder.comment( - "The integer code of the color of the purple chalk glyph in world.", - "This is intended to allow people with color blindness to change the color of the glyph.", - "For most types of color blindness it should not be necessary to change this." - ).defineInRange("purpleChalkGlyphColor", 0x9c0393,0, 0xffffff); - - this.redChalkGlyphColor = builder.comment( - "The integer code of the color of the red chalk glyph in world.", - "This is intended to allow people with color blindness to change the color of the glyph.", - "For most types of color blindness this value should be changed to a green color, we recommend 33289 (= Hex 0x008209)" - ).defineInRange("redChalkGlyphColor", 0xcc0101,0, 0xffffff); - this.lightGrayChalkGlyphColor = builder.comment( "The integer code of the color of the light gray chalk glyph in world.", "This is intended to allow people with color blindness to change the color of the glyph.", @@ -125,12 +106,24 @@ public VisualSettings(ModConfigSpec.Builder builder) { "For most types of color blindness it should not be necessary to change this." ).defineInRange("brownChalkGlyphColor", 0x835432, 0, 0xffffff); + this.redChalkGlyphColor = builder.comment( + "The integer code of the color of the red chalk glyph in world.", + "This is intended to allow people with color blindness to change the color of the glyph.", + "For most types of color blindness this value should be changed to a green color, we recommend 33289 (= Hex 0x008209)" + ).defineInRange("redChalkGlyphColor", 0xcc0101,0, 0xffffff); + this.orangeChalkGlyphColor = builder.comment( "The integer code of the color of the orange chalk glyph in world.", "This is intended to allow people with color blindness to change the color of the glyph.", "For most types of color blindness it should not be necessary to change this." ).defineInRange("orangeChalkGlyphColor", 0xf9801d, 0, 0xffffff); + this.yellowChalkGlyphColor = builder.comment( + "The integer code of the color of the yellow chalk glyph in world.", + "This is intended to allow people with color blindness to change the color of the glyph.", + "For most types of color blindness it should not be necessary to change this." + ).defineInRange("yellowChalkGlyphColor", 0xf0d700, 0, 0xffffff); + this.limeChalkGlyphColor = builder.comment( "The integer code of the color of the lime chalk glyph in world.", "This is intended to allow people with color blindness to change the color of the glyph.", @@ -161,6 +154,12 @@ public VisualSettings(ModConfigSpec.Builder builder) { "For most types of color blindness it should not be necessary to change this." ).defineInRange("blueChalkGlyphColor", 0x3c44aa, 0, 0xffffff); + this.purpleChalkGlyphColor = builder.comment( + "The integer code of the color of the purple chalk glyph in world.", + "This is intended to allow people with color blindness to change the color of the glyph.", + "For most types of color blindness it should not be necessary to change this." + ).defineInRange("purpleChalkGlyphColor", 0x9c0393,0, 0xffffff); + this.magentaChalkGlyphColor = builder.comment( "The integer code of the color of the magenta chalk glyph in world.", "This is intended to allow people with color blindness to change the color of the glyph.", diff --git a/src/main/java/com/klikli_dev/occultism/config/OccultismServerConfig.java b/src/main/java/com/klikli_dev/occultism/config/OccultismServerConfig.java index 79c4af69b..eb39a2883 100644 --- a/src/main/java/com/klikli_dev/occultism/config/OccultismServerConfig.java +++ b/src/main/java/com/klikli_dev/occultism/config/OccultismServerConfig.java @@ -45,15 +45,25 @@ public OccultismServerConfig() { public static class ItemSettings { public final BooleanValue anyOreDivinationRod; + public final BooleanValue minerOutputBeforeBreak; + public ItemSettings(ModConfigSpec.Builder builder) { builder.comment("Item Settings").push("items"); + this.anyOreDivinationRod = builder.comment( "Allow the Divining Rod to attune to any ore" ) .define("anyOreDivinationRod", false); + this.minerOutputBeforeBreak = + builder.comment( + "Miners head to the output in the Dimensional Mineshaft before it breaks" + ) + .define("minerOutputBeforeBreak", false); + builder.pop(); } + } public static class SpiritJobSettings { diff --git a/src/main/java/com/klikli_dev/occultism/config/OccultismStartupConfig.java b/src/main/java/com/klikli_dev/occultism/config/OccultismStartupConfig.java index b523b486d..14092fc0d 100644 --- a/src/main/java/com/klikli_dev/occultism/config/OccultismStartupConfig.java +++ b/src/main/java/com/klikli_dev/occultism/config/OccultismStartupConfig.java @@ -73,6 +73,7 @@ public static class DimensionalMineshaftSettings { public final MinerSpiritSettings minerDjinniOres; public final MinerSpiritSettings minerAfritDeeps; public final MinerSpiritSettings minerMaridMaster; + public final MinerSpiritSettings minerAncientEldritch; public DimensionalMineshaftSettings(ModConfigSpec.Builder builder) { builder.comment("Dimensional Mineshaft Settings").push("dimensional_mineshaft"); @@ -89,6 +90,9 @@ public DimensionalMineshaftSettings(ModConfigSpec.Builder builder) { this.minerMaridMaster = new MinerSpiritSettings("miner_marid_master", builder, 100, 1, 1600); + this.minerAncientEldritch = + new MinerSpiritSettings("miner_ancient_eldritch", builder, 15, 1, 3200); + builder.pop(); } diff --git a/src/main/java/com/klikli_dev/occultism/crafting/recipe/SpiritTradeRecipe.java b/src/main/java/com/klikli_dev/occultism/crafting/recipe/SpiritTradeRecipe.java index b61415ead..404c98b94 100644 --- a/src/main/java/com/klikli_dev/occultism/crafting/recipe/SpiritTradeRecipe.java +++ b/src/main/java/com/klikli_dev/occultism/crafting/recipe/SpiritTradeRecipe.java @@ -135,7 +135,7 @@ public boolean isValid(List input) { @Override public @NotNull ItemStack getToastSymbol() { - return new ItemStack(OccultismItems.PENTACLE.get()); + return new ItemStack(OccultismItems.PENTACLE_SUMMON.get()); } @Override diff --git a/src/main/java/com/klikli_dev/occultism/datagen/ItemModelsGenerator.java b/src/main/java/com/klikli_dev/occultism/datagen/ItemModelsGenerator.java index b883e351d..b378aa97d 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/ItemModelsGenerator.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/ItemModelsGenerator.java @@ -62,7 +62,11 @@ protected void registerModels() { this.registerItemGenerated(this.name(OccultismItems.BOOK_OF_CALLING_FOLIOT_CLEANER.get()),"book_of_calling_cleaner"); this.registerItemGenerated(this.name(OccultismItems.BOOK_OF_CALLING_FOLIOT_LUMBERJACK.get()),"book_of_calling_lumberjack"); this.registerItemGenerated(this.name(OccultismItems.BOOK_OF_CALLING_FOLIOT_TRANSPORT_ITEMS.get()),"book_of_calling_transport_items"); - this.registerItemGenerated(this.name(OccultismItems.PENTACLE.get()),"ritual_dummy"); + + this.registerItemGenerated(this.name(OccultismItems.PENTACLE_SUMMON.get()),"ritual_dummy_summon"); + this.registerItemGenerated(this.name(OccultismItems.PENTACLE_POSSESS.get()),"ritual_dummy_possess"); + this.registerItemGenerated(this.name(OccultismItems.PENTACLE_CRAFT.get()),"ritual_dummy_craft"); + this.registerItemGenerated(this.name(OccultismItems.PENTACLE_MISC.get()),"ritual_dummy_misc"); } @@ -77,7 +81,15 @@ private void registerItemGenerated(String name, String texture) { } private void registerRitualDummy(String name) { - this.getBuilder(name).parent(new ModelFile.UncheckedModelFile("occultism:item/ritual_dummy")); + if (name.contains("misc") || name.contains("contact") || name.contains("wild") || name.contains("resurrect")) { + this.getBuilder(name).parent(new ModelFile.UncheckedModelFile("occultism:item/pentacle_misc")); + } else if (name.contains("craft") || name.contains("repair")) { + this.getBuilder(name).parent(new ModelFile.UncheckedModelFile("occultism:item/pentacle_craft")); + } else if (name.contains("invoke") || name.contains("possess") || name.contains("familiar")) { + this.getBuilder(name).parent(new ModelFile.UncheckedModelFile("occultism:item/pentacle_possess")); + } else if (name.contains("summon")) { + this.getBuilder(name).parent(new ModelFile.UncheckedModelFile("occultism:item/pentacle_summon")); + } } private void registerSpawnEgg(String name) { @@ -102,6 +114,7 @@ private void registerAdvancementItem() { private void registerItemCommon() { String[] items = { this.name(OccultismItems.AFRIT_ESSENCE.get()), + this.name(OccultismItems.AMETHYST_DUST.get()), this.name(OccultismItems.AWAKENED_FEATHER.get()), this.name(OccultismItems.BEAVER_NUGGET.get()), this.name(OccultismItems.BOOK_OF_BINDING_AFRIT.get()), @@ -123,8 +136,8 @@ private void registerItemCommon() { this.name(OccultismItems.CHALK_BROWN_IMPURE.get()), this.name(OccultismItems.CHALK_CYAN.get()), this.name(OccultismItems.CHALK_CYAN_IMPURE.get()), - this.name(OccultismItems.CHALK_GOLD.get()), - this.name(OccultismItems.CHALK_GOLD_IMPURE.get()), + this.name(OccultismItems.CHALK_YELLOW.get()), + this.name(OccultismItems.CHALK_YELLOW_IMPURE.get()), this.name(OccultismItems.CHALK_GRAY.get()), this.name(OccultismItems.CHALK_GRAY_IMPURE.get()), this.name(OccultismItems.CHALK_GREEN.get()), @@ -146,32 +159,53 @@ private void registerItemCommon() { this.name(OccultismItems.CHALK_RED.get()), this.name(OccultismItems.CHALK_RED_IMPURE.get()), this.name(OccultismItems.CHALK_WHITE.get()), - this.name(OccultismItems.RITUAL_SATCHEL_T1.get()), - this.name(OccultismItems.RITUAL_SATCHEL_T2.get()), this.name(OccultismItems.CHALK_WHITE_IMPURE.get()), this.name(OccultismItems.COPPER_DUST.get()), + this.name(OccultismItems.CRUELTY_ESSENCE.get()), + this.name(OccultismItems.CRUSHED_BLACKSTONE.get()), + this.name(OccultismItems.CRUSHED_BLUE_ICE.get()), + this.name(OccultismItems.CRUSHED_CALCITE.get()), this.name(OccultismItems.CRUSHED_END_STONE.get()), + this.name(OccultismItems.CRUSHED_ICE.get()), + this.name(OccultismItems.CRUSHED_PACKED_ICE.get()), + this.name(OccultismItems.CURSED_HONEY.get()), this.name(OccultismItems.DATURA.get()), this.name(OccultismItems.DATURA_SEEDS.get()), this.name(OccultismItems.DEBUG_WAND.get()), + this.name(OccultismItems.DEMONIC_MEAT.get()), this.name(OccultismItems.DEMONS_DREAM_ESSENCE.get()), this.name(OccultismItems.DICTIONARY_OF_SPIRITS.get()), + this.name(OccultismItems.DRAGONYST_DUST.get()), + this.name(OccultismItems.ECHO_DUST.get()), + this.name(OccultismItems.EMERALD_DUST.get()), this.name(OccultismItems.FAMILIAR_RING.get()), this.name(OccultismItems.GOLD_DUST.get()), + this.name(OccultismItems.GRAY_PASTE.get()), this.name(OccultismItems.IESNIUM_DUST.get()), this.name(OccultismItems.IESNIUM_INGOT.get()), this.name(OccultismItems.IESNIUM_NUGGET.get()), this.name(OccultismItems.INFUSED_LENSES.get()), this.name(OccultismItems.IRON_DUST.get()), + this.name(OccultismItems.LAPIS_DUST.get()), this.name(OccultismItems.LENS_FRAME.get()), this.name(OccultismItems.LENSES.get()), this.name(OccultismItems.MAGIC_LAMP_EMPTY.get()), + this.name(OccultismItems.MARID_ESSENCE.get()), + this.name(OccultismItems.MINING_DIMENSION_CORE_PIECE.get()), + this.name(OccultismItems.NATURE_PASTE.get()), + this.name(OccultismItems.NETHERITE_DUST.get()), + this.name(OccultismItems.NETHERITE_SCRAP_DUST.get()), this.name(OccultismItems.OBSIDIAN_DUST.get()), this.name(OccultismItems.OTHERSTONE_FRAME.get()), this.name(OccultismItems.OTHERSTONE_TABLET.get()), this.name(OccultismItems.OTHERWORLD_ASHES.get()), this.name(OccultismItems.OTHERWORLD_ESSENCE.get()), this.name(OccultismItems.PURIFIED_INK.get()), + this.name(OccultismItems.REPAIR_ICON.get()), + this.name(OccultismItems.RESEARCH_FRAGMENT_DUST.get()), + this.name(OccultismItems.RESURRECT_ICON.get()), + this.name(OccultismItems.RITUAL_SATCHEL_T1.get()), + this.name(OccultismItems.RITUAL_SATCHEL_T2.get()), this.name(OccultismItems.RAW_IESNIUM.get()), this.name(OccultismItems.RAW_SILVER.get()), this.name(OccultismItems.SATCHEL.get()), @@ -185,7 +219,8 @@ private void registerItemCommon() { this.name(OccultismBlocks.SPIRIT_LANTERN.asItem()), this.name(OccultismItems.STORAGE_REMOTE_INERT.get()), this.name(OccultismItems.TABOO_BOOK.get()), - this.name(OccultismItems.TALLOW.get()) + this.name(OccultismItems.TALLOW.get()), + this.name(OccultismItems.WITHERITE_DUST.get()) }; for (String item : items){ this.registerItemGenerated(item, item); @@ -275,7 +310,8 @@ private void registerItemMiners() { this.name(OccultismItems.MINER_DEBUG_UNSPECIALIZED.get()), this.name(OccultismItems.MINER_DJINNI_ORES.get()), this.name(OccultismItems.MINER_FOLIOT_UNSPECIALIZED.get()), - this.name(OccultismItems.MINER_MARID_MASTER.get()) + this.name(OccultismItems.MINER_MARID_MASTER.get()), + this.name(OccultismItems.MINER_ANCIENT_ELDRITCH.get()) }; for (String item : items){ this.getBuilder(item) diff --git a/src/main/java/com/klikli_dev/occultism/datagen/OccultismAdvancementSubProvider.java b/src/main/java/com/klikli_dev/occultism/datagen/OccultismAdvancementSubProvider.java index 595aec532..1e1e6389d 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/OccultismAdvancementSubProvider.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/OccultismAdvancementSubProvider.java @@ -97,10 +97,10 @@ private void start() { .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "occultism/root"))); var familiarsRoot = this.add(Advancement.Builder.advancement() - .display(OccultismItems.JEI_DUMMY_NONE.get(), + .display(OccultismItems.PENTACLE_POSSESS.get(), title("familiars"), descr("familiars"), - ResourceLocation.parse("textures/gui/advancements/backgrounds/stone.png"), AdvancementType.TASK, true, + ResourceLocation.fromNamespaceAndPath(Occultism.MODID,"textures/block/otherplanks.png"), AdvancementType.TASK, true, true, false) .addCriterion("summon_familiar", RitualTrigger.TriggerInstance.ritualFactory(OccultismRituals.FAMILIAR.getId())) 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 23c33a373..033c6732a 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/OccultismBookProvider.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/OccultismBookProvider.java @@ -8,15 +8,14 @@ import com.klikli_dev.modonomicon.api.datagen.book.BookEntryModel; import com.klikli_dev.modonomicon.api.datagen.book.BookEntryParentModel; import com.klikli_dev.modonomicon.api.datagen.book.BookModel; -import com.klikli_dev.modonomicon.api.datagen.book.condition.BookAndConditionModel; -import com.klikli_dev.modonomicon.api.datagen.book.condition.BookEntryReadConditionModel; -import com.klikli_dev.modonomicon.api.datagen.book.condition.BookModLoadedConditionModel; -import com.klikli_dev.modonomicon.api.datagen.book.condition.BookTrueConditionModel; +import com.klikli_dev.modonomicon.api.datagen.book.condition.*; import com.klikli_dev.modonomicon.api.datagen.book.page.*; import com.klikli_dev.occultism.Occultism; import com.klikli_dev.occultism.datagen.book.BindingRitualsCategory; import com.klikli_dev.occultism.datagen.book.FamiliarRitualsCategory; import com.klikli_dev.occultism.datagen.book.GettingStartedCategory; +import com.klikli_dev.occultism.datagen.book.PentaclesCategory; +import com.klikli_dev.occultism.datagen.book.pentacles.*; import com.klikli_dev.occultism.integration.modonomicon.pages.*; import com.klikli_dev.occultism.registry.OccultismBlocks; import com.klikli_dev.occultism.registry.OccultismItems; @@ -45,28 +44,28 @@ protected void generateCategories() { int sortNum = 1; var gettingStartedCategory = this.add(new GettingStartedCategory(this).generate().withSortNumber(sortNum++)); var spiritsCategory = this.add(this.makeSpiritsSubcategory().withSortNumber(sortNum++)); - - var storageCategory = this.add(this.makeStorageCategory().withSortNumber(sortNum++)); - var ritualsCategory = this.add(this.makeRitualsCategory().withSortNumber(sortNum++)); + var pentaclesCategory = this.add(new PentaclesCategory(this).generate().withSortNumber(sortNum++)); + var summoningRitualsCategory = this.add(this.makeSummoningRitualsSubcategory().withSortNumber(sortNum++)); + summoningRitualsCategory.withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/white")); var possessionRitualsCategory = this.add(this.makePossessionRitualsSubcategory().withSortNumber(sortNum++)); - var craftingRitualsCategory = this.add(new BindingRitualsCategory(this).generate().withSortNumber(sortNum++)); + possessionRitualsCategory.withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/yellow")); var familiarRitualsCategory = this.add(new FamiliarRitualsCategory(this).generate().withSortNumber(sortNum++)); + familiarRitualsCategory.withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/yellow")); + var craftingRitualsCategory = this.add(new BindingRitualsCategory(this).generate().withSortNumber(sortNum++)); + craftingRitualsCategory.withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/purple")); - var pentaclesCategory = this.add(this.makePentaclesCategory().withSortNumber(sortNum++)); + var storageCategory = this.add(this.makeStorageCategory().withSortNumber(sortNum++)); + storageCategory.withCondition(BookEntryReadConditionModel.create().withEntry(this.modLoc("crafting_rituals/craft_storage_system"))); var introReadCondition = BookEntryReadConditionModel.create() .withEntry(this.modLoc("getting_started/intro")); - spiritsCategory.withCondition(introReadCondition); - storageCategory.withCondition(introReadCondition); ritualsCategory.withCondition(introReadCondition); - summoningRitualsCategory.withCondition(introReadCondition); - possessionRitualsCategory.withCondition(introReadCondition); - craftingRitualsCategory.withCondition(introReadCondition); - familiarRitualsCategory.withCondition(introReadCondition); + + pentaclesCategory.withCondition(introReadCondition); } @@ -435,7 +434,7 @@ private BookEntryModel makeWildHuntEntry(CategoryEntryMap entryMap, char icon) { this.lang().add(this.context().pageTitle(), "Wither Skeleton Skulls"); this.lang().add(this.context().pageText(), """ - While it is incredibly dangerous to call on the Wild Hunt, some summoners have been known to do so for quick access to the rare wither skeleton skulls they are known to leave behind. Summoning the wild hunt is described in detail on the page on obtaining [Wither Skeleton Skulls](entry://summoning_rituals/wither_skull). + While it is incredibly dangerous to call on the Wild Hunt, some summoners have been known to do so for quick access to the rare wither skeleton skulls they are known to leave behind. Summoning the wild hunt is described in detail on the page on obtaining [Wither Skeleton Skulls](entry://possession_rituals/wither_skull). """.formatted(COLOR_PURPLE)); return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) @@ -447,639 +446,6 @@ private BookEntryModel makeWildHuntEntry(CategoryEntryMap entryMap, char icon) { witherSkull ); } - - //endregion - - private BookCategoryModel makePentaclesCategory() { - this.context().category("pentacles"); - - var entryMap = ModonomiconAPI.get().getEntryMap(); - entryMap.setMap( - "____________________", - "__p_a_b_c_d_e_f_____", //paraphernalia, summon foliot, summon djinni, summon wild afrit, summon afrit, summon marid, summon wild greater spirit - "____________________", - "__o___g_h_i_________", //overview, possess foliot, possess djinni, possess afrit - "____________________", - "__u_j_k_l_m_________", //uses of chalks, craft foliot, craft djinni, craft afrit, craft marid - "____________________" - ); - - var overview = this.makePentaclesOverviewEntry(entryMap, 'o'); - var paraphernalia = this.makeParaphernaliaEntry(entryMap, 'p'); - paraphernalia.withParent(BookEntryParentModel.create(overview.getId())); - var chalkUses = this.makeChalkUsesEntry(entryMap, 'u'); - chalkUses.withParent(BookEntryParentModel.create(overview.getId())); - - var summonFoliot = this.makeSummonFoliotEntry(entryMap, 'a'); - summonFoliot.withParent(BookEntryParentModel.create(overview.getId())); - var summonDjinni = this.makeSummonDjinniEntry(entryMap, 'b'); - summonDjinni.withParent(BookEntryParentModel.create(summonFoliot.getId())); - var summonWildAfrit = this.makeSummonWildAfritEntry(entryMap, 'c'); - summonWildAfrit.withParent(BookEntryParentModel.create(summonDjinni.getId())); - var summonAfrit = this.makeSummonAfritEntry(entryMap, 'd'); - summonAfrit.withParent(BookEntryParentModel.create(summonWildAfrit.getId())); - var summonMarid = this.makeSummonMaridEntry(entryMap, 'e'); - summonMarid.withParent(BookEntryParentModel.create(summonAfrit.getId())); - var summonWildGreaterSpirit = this.makeSummonWildGreaterSpiritEntry(entryMap, 'f'); - summonWildGreaterSpirit.withParent(BookEntryParentModel.create(summonMarid.getId())); - - var possessFoliot = this.makePossessFoliotEntry(entryMap, 'g'); - possessFoliot.withParent(BookEntryParentModel.create(overview.getId())); - var possessDjinni = this.makePossessDjinniEntry(entryMap, 'h'); - possessDjinni.withParent(BookEntryParentModel.create(possessFoliot.getId())); - var possessAfrit = this.makePossessAfritEntry(entryMap, 'i'); - possessAfrit.withParent(BookEntryParentModel.create(possessDjinni.getId())); - - var craftFoliot = this.makeCraftFoliotEntry(entryMap, 'j'); - craftFoliot.withParent(BookEntryParentModel.create(overview.getId())); - var craftDjinni = this.makeCraftDjinniEntry(entryMap, 'k'); - craftDjinni.withParent(BookEntryParentModel.create(craftFoliot.getId())); - var craftAfrit = this.makeCraftAfritEntry(entryMap, 'l'); - craftAfrit.withParent(BookEntryParentModel.create(craftDjinni.getId())); - var craftMarid = this.makeCraftMaridEntry(entryMap, 'm'); - craftMarid.withParent(BookEntryParentModel.create(craftAfrit.getId())); - - //add true condition to all entries to enable them by default - overview.withCondition(BookTrueConditionModel.create()); - paraphernalia.withCondition(BookTrueConditionModel.create()); - chalkUses.withCondition(BookTrueConditionModel.create()); - summonFoliot.withCondition(BookTrueConditionModel.create()); - summonDjinni.withCondition(BookTrueConditionModel.create()); - summonWildAfrit.withCondition(BookTrueConditionModel.create()); - summonAfrit.withCondition(BookTrueConditionModel.create()); - summonMarid.withCondition(BookTrueConditionModel.create()); - summonWildGreaterSpirit.withCondition(BookTrueConditionModel.create()); - possessFoliot.withCondition(BookTrueConditionModel.create()); - possessDjinni.withCondition(BookTrueConditionModel.create()); - possessAfrit.withCondition(BookTrueConditionModel.create()); - craftFoliot.withCondition(BookTrueConditionModel.create()); - craftDjinni.withCondition(BookTrueConditionModel.create()); - craftAfrit.withCondition(BookTrueConditionModel.create()); - craftMarid.withCondition(BookTrueConditionModel.create()); - - return BookCategoryModel.create(this.modLoc(this.context().categoryId()), this.context().categoryName()) - .withIcon(OccultismItems.PENTACLE.get()) - .withEntries( - overview, - paraphernalia, - chalkUses, - - summonFoliot, - summonDjinni, - summonWildAfrit, - summonAfrit, - summonMarid, - summonWildGreaterSpirit, - - possessFoliot, - possessDjinni, - possessAfrit, - - craftFoliot, - craftDjinni, - craftAfrit, - craftMarid - ); - } - - private BookEntryModel makePentaclesOverviewEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("pentacles_overview"); - - this.context().page("intro1"); - var intro1 = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("intro2"); - var intro2 = BookTextPageModel.create() - .withText(this.context().pageText()); - - this.context().page("intro3"); - var intro3 = BookTextPageModel.create() - .withText(this.context().pageText()); - - this.context().page("intro4"); - var intro4 = BookTextPageModel.create() - .withText(this.context().pageText()); - - //exact copy found in first ritual entry - this.context().page("bowl_placement"); - var bowlPlacementImage = BookImagePageModel.create() - .withImages(this.modLoc("textures/gui/book/bowl_placement.png")) - .withBorder(true); - - //exact copy found in first ritual entry - this.context().page("bowl_text"); - var bowlText = BookTextPageModel.create() - .withText(this.context().pageText()); - - this.context().page("summoning_pentacles"); - var summoningPentacles = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("infusion_pentacles"); - var infusionPentacles = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("possession_pentacles"); - var possessionPentacles = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(OccultismBlocks.SPIRIT_ATTUNED_CRYSTAL.get()) - .withLocation(entryMap.get(icon)) - .withEntryBackground(0, 1) - .withPages( - intro1, - intro2, - intro3, - intro4, - bowlPlacementImage, - bowlText, - summoningPentacles, - infusionPentacles, - possessionPentacles - ); - } - - private BookEntryModel makeParaphernaliaEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("paraphernalia"); - - this.context().page("intro"); - var intro = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("candle"); - var candle = BookSpotlightPageModel.create() - .withText(this.context().pageText()) - .withItem(Ingredient.of(OccultismBlocks.LARGE_CANDLE.get())); - - this.context().page("crystal"); - var crystal = BookSpotlightPageModel.create() - .withText(this.context().pageText()) - .withItem(Ingredient.of(OccultismBlocks.SPIRIT_ATTUNED_CRYSTAL.get())); - - this.context().page("gem_recipe"); - var gemRecipe = BookSpiritFireRecipePageModel.create() - .withRecipeId1(this.modLoc("spirit_fire/spirit_attuned_gem")); - - this.context().page("crystal_recipe"); - var crystalRecipe = BookCraftingRecipePageModel.create() - .withRecipeId1(this.modLoc("crafting/spirit_attuned_crystal")); - - this.context().page("skeleton_skull"); - var skeletonSkull = BookSpotlightPageModel.create() - .withText(this.context().pageText()) - .withItem(Ingredient.of(Blocks.SKELETON_SKULL)); - - return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(Blocks.SKELETON_SKULL) - .withLocation(entryMap.get(icon)) - .withPages( - intro, - candle, - crystal, - gemRecipe, - crystalRecipe, - skeletonSkull - ); - } - - private BookEntryModel makeChalkUsesEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("chalk_uses"); - - this.context().page("intro"); - var intro = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("intro2"); - var intro2 = BookTextPageModel.create() - .withText(this.context().pageText()); - - this.context().page("white_chalk"); - var whiteChalk = BookSpotlightPageModel.create() - .withText(this.context().pageText()) - .withItem(Ingredient.of(OccultismItems.CHALK_WHITE.get())); - - this.context().page("white_chalk_uses"); - var whiteChalkUses = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("white_chalk_uses2"); - var whiteChalkUses2 = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("golden_chalk"); - var goldChalk = BookSpotlightPageModel.create() - .withText(this.context().pageText()) - .withItem(Ingredient.of(OccultismItems.CHALK_GOLD.get())); - - this.context().page("golden_chalk_uses"); - var goldChalkUses = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("purple_chalk"); - var purpleChalk = BookSpotlightPageModel.create() - .withText(this.context().pageText()) - .withItem(Ingredient.of(OccultismItems.CHALK_PURPLE.get())); - - this.context().page("purple_chalk_uses"); - var purpleChalkUses = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("red_chalk"); - var redChalk = BookSpotlightPageModel.create() - .withText(this.context().pageText()) - .withItem(Ingredient.of(OccultismItems.CHALK_RED.get())); - - this.context().page("red_chalk_uses"); - var redChalkUses = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(OccultismItems.CHALK_PURPLE.get()) - .withLocation(entryMap.get(icon)) - .withPages( - intro, - intro2, - whiteChalk, - whiteChalkUses, - whiteChalkUses2, - goldChalk, - goldChalkUses, - purpleChalk, - purpleChalkUses, - redChalk, - redChalkUses - ); - } - - private BookEntryModel makeSummonFoliotEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("summon_foliot"); - - this.context().page("intro"); - var intro = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("multiblock"); - var multiblock = BookMultiblockPageModel.create() - .withMultiblockId(this.modLoc("summon_foliot")); - - this.context().page("uses"); - var uses = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(OccultismItems.PENTACLE.get()) - .withLocation(entryMap.get(icon)) - .withPages( - intro, - multiblock, - uses - ); - } - - private BookEntryModel makePossessFoliotEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("possess_foliot"); - - this.context().page("intro"); - var intro = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("multiblock"); - var multiblock = BookMultiblockPageModel.create() - .withMultiblockId(this.modLoc("possess_foliot")); - - this.context().page("uses"); - var uses = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(OccultismItems.PENTACLE.get()) - .withLocation(entryMap.get(icon)) - .withPages( - intro, - multiblock, - uses - ); - } - - private BookEntryModel makeCraftFoliotEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("craft_foliot"); - - this.context().page("intro"); - var intro = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("multiblock"); - var multiblock = BookMultiblockPageModel.create() - .withMultiblockId(this.modLoc("craft_foliot")); - - this.context().page("uses"); - var uses = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(OccultismItems.PENTACLE.get()) - .withLocation(entryMap.get(icon)) - .withPages( - intro, - multiblock, - uses - ); - } - - private BookEntryModel makeSummonDjinniEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("summon_djinni"); - - this.context().page("intro"); - var intro = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("multiblock"); - var multiblock = BookMultiblockPageModel.create() - .withMultiblockId(this.modLoc("summon_djinni")); - - this.context().page("uses"); - var uses = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(OccultismItems.PENTACLE.get()) - .withLocation(entryMap.get(icon)) - .withPages( - intro, - multiblock, - uses - ); - } - - private BookEntryModel makePossessDjinniEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("possess_djinni"); - - this.context().page("intro"); - var intro = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("multiblock"); - var multiblock = BookMultiblockPageModel.create() - .withMultiblockId(this.modLoc("possess_djinni")); - - this.context().page("uses"); - var uses = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("uses2"); - var uses2 = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(OccultismItems.PENTACLE.get()) - .withLocation(entryMap.get(icon)) - .withPages( - intro, - multiblock, - uses, - uses2 - ); - } - - private BookEntryModel makeCraftDjinniEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("craft_djinni"); - - this.context().page("intro"); - var intro = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("multiblock"); - var multiblock = BookMultiblockPageModel.create() - .withMultiblockId(this.modLoc("craft_djinni")); - - this.context().page("uses"); - var uses = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(OccultismItems.PENTACLE.get()) - .withLocation(entryMap.get(icon)) - .withPages( - intro, - multiblock, - uses - ); - } - - private BookEntryModel makeSummonAfritEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("summon_afrit"); - - this.context().page("intro"); - var intro = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("multiblock"); - var multiblock = BookMultiblockPageModel.create() - .withMultiblockId(this.modLoc("summon_afrit")); - - this.context().page("uses"); - var uses = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(OccultismItems.PENTACLE.get()) - .withLocation(entryMap.get(icon)) - .withPages( - intro, - multiblock, - uses - ); - } - - private BookEntryModel makeSummonWildAfritEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("summon_wild_afrit"); - - this.context().page("intro"); - var intro = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("multiblock"); - var multiblock = BookMultiblockPageModel.create() - .withMultiblockId(this.modLoc("summon_wild_afrit")); - - this.context().page("uses"); - var uses = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(OccultismItems.PENTACLE.get()) - .withLocation(entryMap.get(icon)) - .withPages( - intro, - multiblock, - uses - ); - } - - private BookEntryModel makePossessAfritEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("possess_afrit"); - - this.context().page("intro"); - var intro = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("multiblock"); - var multiblock = BookMultiblockPageModel.create() - .withMultiblockId(this.modLoc("possess_afrit")); - - this.context().page("uses"); - var uses = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(OccultismItems.PENTACLE.get()) - .withLocation(entryMap.get(icon)) - .withPages( - intro, - multiblock, - uses - ); - } - - private BookEntryModel makeCraftAfritEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("craft_afrit"); - - this.context().page("intro"); - var intro = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("multiblock"); - var multiblock = BookMultiblockPageModel.create() - .withMultiblockId(this.modLoc("craft_afrit")); - - this.context().page("uses"); - var uses = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(OccultismItems.PENTACLE.get()) - .withLocation(entryMap.get(icon)) - .withPages( - intro, - multiblock, - uses - ); - } - - private BookEntryModel makeSummonMaridEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("summon_marid"); - - this.context().page("intro"); - var intro = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("multiblock"); - var multiblock = BookMultiblockPageModel.create() - .withMultiblockId(this.modLoc("summon_marid")); - - this.context().page("uses"); - var uses = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(OccultismItems.PENTACLE.get()) - .withLocation(entryMap.get(icon)) - .withPages( - intro, - multiblock, - uses - ); - } - - private BookEntryModel makeCraftMaridEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("craft_marid"); - - this.context().page("intro"); - var intro = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("multiblock"); - var multiblock = BookMultiblockPageModel.create() - .withMultiblockId(this.modLoc("craft_marid")); - - this.context().page("uses"); - var uses = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(OccultismItems.PENTACLE.get()) - .withLocation(entryMap.get(icon)) - .withPages( - intro, - multiblock, - uses - ); - } - - private BookEntryModel makeSummonWildGreaterSpiritEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("summon_wild_greater_spirit"); - - this.context().page("intro"); - var intro = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("multiblock"); - var multiblock = BookMultiblockPageModel.create() - .withMultiblockId(this.modLoc("summon_wild_greater_spirit")); - - this.context().page("uses"); - var uses = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(OccultismItems.PENTACLE.get()) - .withLocation(entryMap.get(icon)) - .withPages( - intro, - multiblock, - uses - ); - } //endregion private BookCategoryModel makeRitualsCategory() { @@ -1103,21 +469,21 @@ private BookCategoryModel makeRitualsCategory() { sacrifice.withParent(BookEntryParentModel.create(itemUse.getId())); var summoning = this.makeSummoningRitualsSubcategoryEntry(entryMap, 's'); - summoning.withParent(BookEntryParentModel.create(sacrifice.getId())); + summoning.withParent(BookEntryParentModel.create(sacrifice.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/white")); var possession = this.makePossessionRitualsSubcategoryEntry(entryMap, 'p'); - possession.withParent(BookEntryParentModel.create(sacrifice.getId())); + possession.withParent(BookEntryParentModel.create(sacrifice.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/yellow")); var crafting = this.makeCraftingRitualsSubcategoryEntry(entryMap, 'c'); - crafting.withParent(BookEntryParentModel.create(sacrifice.getId())); + crafting.withParent(BookEntryParentModel.create(sacrifice.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/purple")); var familiars = this.makeFamiliarRitualsSubcategoryEntry(entryMap, 'f'); - familiars.withParent(BookEntryParentModel.create(sacrifice.getId())); + familiars.withParent(BookEntryParentModel.create(sacrifice.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/yellow")); //enable all entries by default itemUse.withCondition(BookTrueConditionModel.create()); sacrifice.withCondition(BookTrueConditionModel.create()); - summoning.withCondition(BookTrueConditionModel.create()); - possession.withCondition(BookTrueConditionModel.create()); - crafting.withCondition(BookTrueConditionModel.create()); - familiars.withCondition(BookTrueConditionModel.create()); return BookCategoryModel.create(this.modLoc(this.context().categoryId()), this.context().categoryName()) .withIcon(this.modLoc("textures/gui/book/robe.png")) @@ -1227,7 +593,7 @@ private BookEntryModel makeFamiliarRitualsSubcategoryEntry(CategoryEntryMap entr this.context().entry("familiar_rituals"); return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(this.modLoc("textures/gui/book/parrot.png")) + .withIcon(this.modLoc("textures/gui/book/familiar.png")) .withCategoryToOpen(this.modLoc("familiar_rituals")) .withEntryBackground(1, 1) //silver background and wavey entry shape .withLocation(entryMap.get(icon)); @@ -1242,91 +608,83 @@ private BookCategoryModel makeSummoningRitualsSubcategory() { var entryMap = ModonomiconAPI.get().getEntryMap(); entryMap.setMap( - "___________b___l______", "______________________", - "_________c_d_h_k______", + "__________h___________", + "_______c_d_b_k_l______", "______________________", - "___r_o________________", + "__r_o_________________", "______________________", - "_________1_e_i_a_m___", + "_______1__e____a______", "______________________", - "_________2_f___I______", + "_______2___f___m______", "______________________", - "_________3_g_j________", + "_______3___g__________", "______________________", - "_________4____________" + "_______4______________" ); + String summonFoliotID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + SummonFoliotEntry.ENTRY_ID; + String summonDjinniID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + SummonDjinniEntry.ENTRY_ID; + String summonUnboundAfritID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + SummonUnboundAfritEntry.ENTRY_ID; + String summonAfritID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + SummonAfritEntry.ENTRY_ID; + String summonUnboundsMaridID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + SummonUnboundMaridEntry.ENTRY_ID; + String summonMaridID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + SummonMaridEntry.ENTRY_ID; + var overview = this.makeSummoningRitualsOverviewEntry(entryMap, 'o'); + overview.withCondition(BookEntryReadConditionModel.create().withEntry(summonFoliotID)); var returnToRituals = this.makeReturnToRitualsEntry(entryMap, 'r'); - returnToRituals.withParent(BookEntryParentModel.create(overview.getId())); - returnToRituals.withCondition(BookTrueConditionModel.create()); + returnToRituals.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(summonFoliotID)); var summonT1Crusher = this.makeSummonCrusherT1Entry(entryMap, '1'); - summonT1Crusher.withParent(BookEntryParentModel.create(overview.getId())); + summonT1Crusher.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(summonFoliotID)); var summonT2Crusher = this.makeSummonCrusherT2Entry(entryMap, '2'); - summonT2Crusher.withParent(BookEntryParentModel.create(summonT1Crusher.getId())); + summonT2Crusher.withParent(BookEntryParentModel.create(summonT1Crusher.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(summonDjinniID)); var summonT3Crusher = this.makeSummonCrusherT3Entry(entryMap, '3'); - summonT3Crusher.withParent(BookEntryParentModel.create(summonT2Crusher.getId())); + summonT3Crusher.withParent(BookEntryParentModel.create(summonT2Crusher.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(summonAfritID)); var summonT4Crusher = this.makeSummonCrusherT4Entry(entryMap, '4'); - summonT4Crusher.withParent(BookEntryParentModel.create(summonT3Crusher.getId())); + summonT4Crusher.withParent(BookEntryParentModel.create(summonT3Crusher.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(summonMaridID)); var summonLumberjack = this.makeSummonLumberjackEntry(entryMap, 'c'); - summonLumberjack.withParent(BookEntryParentModel.create(overview.getId())); + summonLumberjack.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(summonFoliotID)); var summonTransportItems = this.makeSummonTransportItemsEntry(entryMap, 'd'); - summonTransportItems.withParent(BookEntryParentModel.create(overview.getId())); + summonTransportItems.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(summonFoliotID)); var summonCleaner = this.makeSummonCleanerEntry(entryMap, 'b'); - summonCleaner.withParent(BookEntryParentModel.create(summonTransportItems.getId())); + summonCleaner.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(summonFoliotID)); var summonManageMachine = this.makeSummonManageMachineEntry(entryMap, 'h'); - summonManageMachine.withParent(BookEntryParentModel.create(summonTransportItems.getId())); + summonManageMachine.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(summonDjinniID)); var tradeSpirits = this.makeTradeSpiritsEntry(entryMap, 'e'); - tradeSpirits.withParent(BookEntryParentModel.create(overview.getId())); + tradeSpirits.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(summonFoliotID)); var summonOtherworldSaplingTrader = this.makeSummonOtherworldSaplingTraderEntry(entryMap, 'f'); - summonOtherworldSaplingTrader.withParent(BookEntryParentModel.create(tradeSpirits.getId())); + summonOtherworldSaplingTrader.withParent(BookEntryParentModel.create(tradeSpirits.getId()).withLineReversed(true)); var summonOtherstoneTrader = this.makeSummonOtherstoneTraderEntry(entryMap, 'g'); - summonOtherstoneTrader.withParent(BookEntryParentModel.create(summonOtherworldSaplingTrader.getId())); - - var summonWildParrot = this.makeSummonWildParrotEntry(entryMap, 'i'); - summonWildParrot.withParent(BookEntryParentModel.create(overview.getId())); - var summonWildOtherworldBird = this.makeSummonWildOtherworldBirdEntry(entryMap, 'j'); - summonWildOtherworldBird.withParent(BookEntryParentModel.create(summonWildParrot.getId())); - - var summonRandomAnimal = this.makeSummonRandomAnimalEntry(entryMap, 'I'); - summonRandomAnimal.withParent(BookEntryParentModel.create(summonWildParrot.getId()).withLineReversed(true)); + summonOtherstoneTrader.withParent(BookEntryParentModel.create(tradeSpirits.getId()).withLineReversed(true)); var weatherMagic = this.makeWeatherMagicEntry(entryMap, 'k'); - weatherMagic.withParent(BookEntryParentModel.create(overview.getId())); + weatherMagic.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(summonDjinniID)); var timeMagic = this.makeTimeMagicEntry(entryMap, 'l'); - timeMagic.withParent(BookEntryParentModel.create(weatherMagic.getId())); + timeMagic.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(summonDjinniID)); var afritEssence = this.makeAfritEssenceEntry(entryMap, 'a'); - afritEssence.withParent(BookEntryParentModel.create(overview.getId())); - - var witherSkull = this.makeWitherSkullEntry(entryMap, 'm'); - witherSkull.withParent(BookEntryParentModel.create(overview.getId())); - - //add true condition to all entries to enable them by default - overview.withCondition(BookTrueConditionModel.create()); - summonT1Crusher.withCondition(BookTrueConditionModel.create()); - summonT2Crusher.withCondition(BookTrueConditionModel.create()); - summonT3Crusher.withCondition(BookTrueConditionModel.create()); - summonT4Crusher.withCondition(BookTrueConditionModel.create()); - summonLumberjack.withCondition(BookTrueConditionModel.create()); - summonTransportItems.withCondition(BookTrueConditionModel.create()); - summonCleaner.withCondition(BookTrueConditionModel.create()); - summonManageMachine.withCondition(BookTrueConditionModel.create()); - tradeSpirits.withCondition(BookTrueConditionModel.create()); - summonOtherworldSaplingTrader.withCondition(BookTrueConditionModel.create()); - summonOtherstoneTrader.withCondition(BookTrueConditionModel.create()); - summonWildParrot.withCondition(BookTrueConditionModel.create()); - summonRandomAnimal.withCondition(BookTrueConditionModel.create()); - summonWildOtherworldBird.withCondition(BookTrueConditionModel.create()); - weatherMagic.withCondition(BookTrueConditionModel.create()); - timeMagic.withCondition(BookTrueConditionModel.create()); - afritEssence.withCondition(BookTrueConditionModel.create()); - witherSkull.withCondition(BookTrueConditionModel.create()); + afritEssence.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(summonUnboundAfritID)); + + var maridEssence = this.makeMaridEssenceEntry(entryMap, 'm'); + maridEssence.withParent(BookEntryParentModel.create(afritEssence.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(summonUnboundsMaridID)); return BookCategoryModel.create(this.modLoc(this.context().categoryId()), this.context().categoryName()) .withIcon(this.modLoc("textures/gui/book/summoning.png")) @@ -1346,13 +704,9 @@ private BookCategoryModel makeSummoningRitualsSubcategory() { tradeSpirits, summonOtherstoneTrader, summonOtherworldSaplingTrader, - summonWildOtherworldBird, - summonWildParrot, - summonRandomAnimal, timeMagic, weatherMagic, - witherSkull, - afritEssence + maridEssence ); } @@ -1383,7 +737,7 @@ private BookEntryModel makeAfritEssenceEntry(CategoryEntryMap entryMap, char ico this.context().page("ritual"); var ritual = BookRitualRecipePageModel.create() - .withRecipeId1(this.modLoc("ritual/summon_wild_afrit")); + .withRecipeId1(this.modLoc("ritual/summon_unbound_afrit")); return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) .withIcon(OccultismItems.AFRIT_ESSENCE.get()) @@ -1394,6 +748,27 @@ private BookEntryModel makeAfritEssenceEntry(CategoryEntryMap entryMap, char ico ); } + private BookEntryModel makeMaridEssenceEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("marid_essence"); + + this.context().page("intro"); + var intro = BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/summon_unbound_marid")); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(OccultismItems.MARID_ESSENCE.get()) + .withLocation(entryMap.get(icon)) + .withPages( + intro, + ritual + ); + } + private BookEntryModel makeSummonCrusherT1Entry(CategoryEntryMap entryMap, char icon) { this.context().entry("summon_crusher_t1"); this.lang().add(this.context().entryName(), "Summon Foliot Crusher"); @@ -1844,108 +1219,6 @@ private BookEntryModel makeSummonOtherworldSaplingTraderEntry(CategoryEntryMap e ); } - private BookEntryModel makeSummonWildParrotEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("summon_wild_parrot"); - - this.context().page("entity"); - var entity = BookEntityPageModel.create() - .withEntityId("minecraft:parrot") - .withText(this.context().pageText()); - - this.context().page("ritual"); - var ritual = BookRitualRecipePageModel.create() - .withRecipeId1(this.modLoc("ritual/summon_wild_parrot")); - - this.context().page("description"); - var description = BookTextPageModel.create() - .withText(this.context().pageText()); - - this.context().page("description2"); - var description2 = BookTextPageModel.create() - .withText(this.context().pageText()); - - - return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(this.modLoc("textures/gui/book/parrot.png")) - .withLocation(entryMap.get(icon)) - .withPages( - entity, - ritual, - description, - description2 - ); - } - - private BookEntryModel makeSummonRandomAnimalEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("summon_random_animal"); - this.add(this.context().entryName(), "Summon Random Animal"); - - this.context().page("entity"); - var entity = BookEntityPageModel.create() - .withEntityId("minecraft:cow") - .withEntityName(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.add(this.context().pageTitle(), "Summon Random Animal"); - this.add(this.context().pageText(), - """ - **Provides**: A random animal - """ - ); - - this.context().page("ritual"); - var ritual = BookRitualRecipePageModel.create() - .withRecipeId1(this.modLoc("ritual/summon_random_animal")); - //no text - - this.context().page("description"); - var description = BookTextPageModel.create() - .withText(this.context().pageText()); - this.add(this.context().pageText(), - """ - In this ritual a [#](%1$s)Foliot[#]() is summoned **as an untamed spirit** to take the shape of a random animal. - \\ - \\ - The animal can be interacted with as it's natural counterpart, including taming, breeding and loot. - """.formatted(COLOR_PURPLE)); - - - return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(Items.COW_SPAWN_EGG) - .withLocation(entryMap.get(icon)) - .withPages( - entity, - ritual, - description - ); - } - - private BookEntryModel makeSummonWildOtherworldBirdEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("summon_wild_otherworld_bird"); - - this.context().page("entity"); - var entity = BookEntityPageModel.create() - .withEntityId("occultism:otherworld_bird") - .withText(this.context().pageText()); - - this.context().page("ritual"); - var ritual = BookRitualRecipePageModel.create() - .withRecipeId1(this.modLoc("ritual/summon_wild_otherworld_bird")); - - this.context().page("description"); - var description = BookTextPageModel.create() - .withText(this.context().pageText()); - - return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(this.modLoc("textures/gui/book/otherworld_bird.png")) - .withLocation(entryMap.get(icon)) - .withPages( - entity, - ritual, - description - ); - } - private BookEntryModel makeWeatherMagicEntry(CategoryEntryMap entryMap, char icon) { this.context().entry("weather_magic"); @@ -1993,41 +1266,21 @@ private BookEntryModel makeTimeMagicEntry(CategoryEntryMap entryMap, char icon) .withRecipeId1(this.modLoc("ritual/summon_djinni_day_time")) .withAnchor("day"); - this.context().page("ritual_night"); - var ritualNight = BookRitualRecipePageModel.create() - .withRecipeId1(this.modLoc("ritual/summon_djinni_night_time")) - .withAnchor("night"); - - return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(Items.CLOCK) - .withLocation(entryMap.get(icon)) - .withPages( - intro, - ritualDay, - ritualNight - ); - } - - private BookEntryModel makeWitherSkullEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("wither_skull"); - - this.context().page("intro"); - var intro = BookTextPageModel.create() - .withTitle(this.context().pageTitle()) - .withText(this.context().pageText()); - - this.context().page("ritual"); - var ritual = BookRitualRecipePageModel.create() - .withRecipeId1(this.modLoc("ritual/summon_wild_hunt")); + this.context().page("ritual_night"); + var ritualNight = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/summon_djinni_night_time")) + .withAnchor("night"); return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(Items.WITHER_SKELETON_SKULL) + .withIcon(Items.CLOCK) .withLocation(entryMap.get(icon)) .withPages( intro, - ritual + ritualDay, + ritualNight ); } + //endregion //region Possession Rituals @@ -2036,86 +1289,115 @@ private BookCategoryModel makePossessionRitualsSubcategory() { var entryMap = ModonomiconAPI.get().getEntryMap(); entryMap.setMap( - "_________H____F_J_K_N______", - "________A__________________", - "_______D_G___I_E_L_M_______", + "________I_A_B_J_P_N_C______", //The Places follow the tier progression + "___________________________", + "_______D_G_E_F_M_L_K_______", "___________________________", "___r_o_____________________", "___________________________", - "_______V_W_Y____S__________", + "_______H_W_Y__S___p_a______", //Down part is wild "___________________________", - "__________X_Z___T__________", + "________V_X_Z_T___d________", "___________________________", - "________________U__________" + "______________U____________" ); + String possessFoliotID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + PossessFoliotEntry.ENTRY_ID; + String possessDjinniID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + PossessDjinniEntry.ENTRY_ID; + String possessUnboundAfritID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + PossessUnboundAfritEntry.ENTRY_ID; + String possessAfritID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + PossessAfritEntry.ENTRY_ID; + String possessMaridID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + PossessMaridEntry.ENTRY_ID; + String possessWildID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + ContactWildSpiritEntry.ENTRY_ID; + var overview = this.makePossessionRitualsOverviewEntry(entryMap, 'o'); + overview.withCondition(BookEntryReadConditionModel.create().withEntry(possessFoliotID)); var returnToRituals = this.makeReturnToRitualsEntry(entryMap, 'r'); - returnToRituals.withParent(BookEntryParentModel.create(overview.getId())); - returnToRituals.withCondition(BookTrueConditionModel.create()); + returnToRituals.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessFoliotID)); var possessEndermite = this.makePossessEndermiteEntry(entryMap, 'D'); - possessEndermite.withParent(BookEntryParentModel.create(overview.getId())); + possessEndermite.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessFoliotID)); + var possessPhantom = this.makePossessPhantomEntry(entryMap, 'I'); + possessPhantom.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessFoliotID)); + var possessSkeleton = this.makePossessSkeletonEntry(entryMap, 'G'); + possessSkeleton.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessFoliotID)); + var possessWitch = this.makePossessWitchEntry(entryMap, 'A'); + possessWitch.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessFoliotID)); var possessEnderman = this.makePossessEndermanEntry(entryMap, 'E'); - possessEnderman.withParent(BookEntryParentModel.create(overview.getId())); + possessEnderman.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessDjinniID)); + var possessBee = this.makePossessBeeEntry(entryMap, 'B'); + possessBee.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessDjinniID)); var possessGhast = this.makePossessGhastEntry(entryMap, 'F'); - possessGhast.withParent(BookEntryParentModel.create(overview.getId())); - var possessSkeleton = this.makePossessSkeletonEntry(entryMap, 'G'); - possessSkeleton.withParent(BookEntryParentModel.create(overview.getId())); - var possessPhantom = this.makePossessPhantomEntry(entryMap, 'I'); - possessPhantom.withParent(BookEntryParentModel.create(overview.getId())); + possessGhast.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessDjinniID)); var possessWeakShulker = this.makePossessWeakShulkerEntry(entryMap, 'J'); - possessWeakShulker.withParent(BookEntryParentModel.create(overview.getId())); - var possessShulker = this.makePossessShulkerEntry(entryMap, 'K'); - possessShulker.withParent(BookEntryParentModel.create(overview.getId())); - var possessElderGuardian = this.makePossessElderGuardianEntry(entryMap, 'L'); - possessElderGuardian.withParent(BookEntryParentModel.create(overview.getId())); + possessWeakShulker.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessDjinniID)); var possessWarden = this.makePossessWardenEntry(entryMap, 'M'); - possessWarden.withParent(BookEntryParentModel.create(overview.getId())); + possessWarden.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessDjinniID)); + var possessZombiePiglin = this.makePossessZombiePiglinEntry(entryMap, 'P'); + possessZombiePiglin.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessUnboundAfritID)); + var possessElderGuardian = this.makePossessElderGuardianEntry(entryMap, 'L'); + possessElderGuardian.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessAfritID)); var possessHoglin = this.makePossessHoglinEntry(entryMap, 'N'); - possessHoglin.withParent(BookEntryParentModel.create(overview.getId())); + possessHoglin.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessAfritID)); + var possessShulker = this.makePossessShulkerEntry(entryMap, 'K'); + possessShulker.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessAfritID)); + var mercyGoat = this.makeMercyGoatEntry(entryMap, 'C'); + mercyGoat.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessMaridID)); + + var possessWitherSkeleton = this.makeWitherSkullEntry(entryMap, 'H'); + possessWitherSkeleton.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessWildID)); + var hordeIllager = this.makeHordeIllagerEntry(entryMap, 'V'); + hordeIllager.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessWildID)); var hordeHusk = this.makeHordeHuskEntry(entryMap, 'W'); - hordeHusk.withParent(BookEntryParentModel.create(overview.getId())); + hordeHusk.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessWildID)); var hordeDrowned = this.makeHordeDrownedEntry(entryMap, 'X'); - hordeDrowned.withParent(BookEntryParentModel.create(overview.getId())); + hordeDrowned.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessWildID)); var hordeCreeper = this.makeHordeCreeperEntry(entryMap, 'Y'); - hordeCreeper.withParent(BookEntryParentModel.create(overview.getId())); + hordeCreeper.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessWildID)); var hordeSilverfish = this.makeHordeSilverfishEntry(entryMap, 'Z'); - hordeSilverfish.withParent(BookEntryParentModel.create(overview.getId())); - var hordeIllager = this.makeHordeIllagerEntry(entryMap, 'V'); - hordeIllager.withParent(BookEntryParentModel.create(overview.getId())); + hordeSilverfish.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessWildID)); var possessWeakBreeze = this.makePossessWeakBreezeEntry(entryMap, 'S'); - possessWeakBreeze.withParent(BookEntryParentModel.create(overview.getId())); + possessWeakBreeze.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessWildID)); var possessBreeze = this.makePossessBreezeEntry(entryMap, 'T'); - possessBreeze.withParent(BookEntryParentModel.create(possessWeakBreeze.getId())); + possessBreeze.withParent(BookEntryParentModel.create(possessWeakBreeze.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessWeakBreeze.getId())); var possessStrongBreeze = this.makePossessStrongBreezeEntry(entryMap, 'U'); - possessStrongBreeze.withParent(BookEntryParentModel.create(possessBreeze.getId())); + possessStrongBreeze.withParent(BookEntryParentModel.create(possessBreeze.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessBreeze.getId())); - this.context().category("summoning_rituals"); //re-use the entries from the summoning rituals category - var possessWitherSkeleton = this.makeWitherSkullEntry(entryMap, 'H'); - possessWitherSkeleton.withParent(BookEntryParentModel.create(possessSkeleton.getId())); - var afritEssence = this.makeAfritEssenceEntry(entryMap, 'A'); - afritEssence.withParent(BookEntryParentModel.create(overview.getId())); - this.context().category("possession_rituals"); + var possessUnboundParrot = this.makePossessUnboundParrotEntry(entryMap, 'p'); + possessUnboundParrot.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessFoliotID)); + var possessUnboundOtherworldBird = this.makePossessUnboundOtherworldBirdEntry(entryMap, 'd'); + possessUnboundOtherworldBird.withParent(BookEntryParentModel.create(possessUnboundParrot.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessDjinniID)); - //add true condition to all entries to enable them by default - overview.withCondition(BookTrueConditionModel.create()); - possessEnderman.withCondition(BookTrueConditionModel.create()); - possessEndermite.withCondition(BookTrueConditionModel.create()); - possessGhast.withCondition(BookTrueConditionModel.create()); - possessSkeleton.withCondition(BookTrueConditionModel.create()); - possessPhantom.withCondition(BookTrueConditionModel.create()); - possessWeakShulker.withCondition(BookTrueConditionModel.create()); - possessShulker.withCondition(BookTrueConditionModel.create()); - possessElderGuardian.withCondition(BookTrueConditionModel.create()); - possessWarden.withCondition(BookTrueConditionModel.create()); - possessHoglin.withCondition(BookTrueConditionModel.create()); - possessWitherSkeleton.withCondition(BookTrueConditionModel.create()); - afritEssence.withCondition(BookTrueConditionModel.create()); - hordeHusk.withCondition(BookTrueConditionModel.create()); - hordeDrowned.withCondition(BookTrueConditionModel.create()); - hordeCreeper.withCondition(BookTrueConditionModel.create()); - hordeSilverfish.withCondition(BookTrueConditionModel.create()); + var possessRandomAnimal = this.makePossessRandomAnimalEntry(entryMap, 'a'); + possessRandomAnimal.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessFoliotID)); + + this.context().category("possession_rituals"); return BookCategoryModel.create(this.modLoc(this.context().categoryId()), this.context().categoryName()) .withIcon(this.modLoc("textures/gui/book/possession.png")) @@ -2133,8 +1415,8 @@ private BookCategoryModel makePossessionRitualsSubcategory() { possessElderGuardian, possessWarden, possessHoglin, + possessWitch, possessWitherSkeleton, - afritEssence, hordeHusk, hordeDrowned, hordeCreeper, @@ -2142,7 +1424,13 @@ private BookCategoryModel makePossessionRitualsSubcategory() { hordeIllager, possessWeakBreeze, possessBreeze, - possessStrongBreeze + possessStrongBreeze, + mercyGoat, + possessZombiePiglin, + possessBee, + possessUnboundOtherworldBird, + possessUnboundParrot, + possessRandomAnimal ); } @@ -2163,6 +1451,27 @@ private BookEntryModel makePossessionRitualsOverviewEntry(CategoryEntryMap entry ); } + private BookEntryModel makeWitherSkullEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("wither_skull"); + + this.context().page("intro"); + var intro = BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/wild_hunt")); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(Items.WITHER_SKELETON_SKULL) + .withLocation(entryMap.get(icon)) + .withPages( + intro, + ritual + ); + } + private BookEntryModel makePossessEndermanEntry(CategoryEntryMap entryMap, char icon) { this.context().entry("possess_enderman"); @@ -2400,7 +1709,7 @@ private BookEntryModel makePossessElderGuardianEntry(CategoryEntryMap entryMap, """ **Drops**: 2-4x [](item://minecraft:nautilus_shell) and as 40% to drop a [](item://minecraft:heart_of_the_sea) - Also commom Elder Guardian loot; + Also common Elder Guardian loot; """); this.context().page("ritual"); @@ -2498,6 +1807,158 @@ private BookEntryModel makePossessHoglinEntry(CategoryEntryMap entryMap, char ic description ); } + private BookEntryModel makePossessWitchEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("possess_witch"); + this.lang().add(this.context().entryName(), "Possessed Witch"); + + this.context().page("entity"); + var entity = BookEntityPageModel.create() + .withEntityId("occultism:possessed_witch") + .withScale(0.4f).withOffset(0.8f) + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + **Drops**: Can drop: [](item://minecraft:experience_bottle) or other bottles (See next page); + """); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/possess_witch")); + + this.context().page("description"); + var description = BookTextPageModel.create() + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + In this ritual a [#](%1$s)Witch[#]() is spawned using the rage energy from the [#](%1$s)Cat[#]() death. The [#](%1$s)Possessed Witch[#]() can drop a [](item://minecraft:experience_bottle), [](item://minecraft:honey_bottle), [](item://minecraft:ominous_bottle) or a useless uncraftable potion. + """.formatted(COLOR_PURPLE)); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(Items.EXPERIENCE_BOTTLE) + .withLocation(entryMap.get(icon)) + .withPages( + entity, + ritual, + description + ); + } + + private BookEntryModel makeMercyGoatEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("possess_goat"); + this.lang().add(this.context().entryName(), "Goat of Mery"); + + this.context().page("entity"); + var entity = BookEntityPageModel.create() + .withEntityId("occultism:mercy_goat") + .withScale(0.7f) + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + **Drops**: [](item://occultism:cruelty_essence); + """); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/possess_goat")); + + this.context().page("description"); + var description = BookTextPageModel.create() + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + In this ritual, a [#](%1$s)Goat of Mercy[#]() is summoned to be sacrificed. This is the only way to obtain the [](item://occultism:cruelty_essence). + Be sure of your actions, because they will forever mark your history. + """.formatted(COLOR_PURPLE)); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(OccultismItems.CRUELTY_ESSENCE) + .withLocation(entryMap.get(icon)) + .withPages( + entity, + ritual, + description + ); + } + + private BookEntryModel makePossessZombiePiglinEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("possess_zombie_piglin"); + this.lang().add(this.context().entryName(), "Possessed Zombified Piglin"); + + this.context().page("entity"); + var entity = BookEntityPageModel.create() + .withEntityId("occultism:possessed_zombie_piglin") + .withScale(0.7f) + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + **Drops**: [](item://occultism:demonic_meat); + """); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/possess_zombie_piglin")); + + this.context().page("description"); + var description = BookTextPageModel.create() + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + In this ritual an [#](%1$s)afrit[#]() will possess an [#](%1$s)Old Zombified Piglin[#](), + unifying the energies of the [#](%1$s)nether[#](), the power of the [#](%1$s)afrit[#](), + the material [#](%1$s)pork[#]() and the concept of the color [#](%1$s)pink[#](). + This is the only known method to obtain [](item://occultism:demonic_meat), its properties + prevent cooking but grant fire resistance to whoever consumes it. + """.formatted(COLOR_PURPLE)); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(OccultismItems.DEMONIC_MEAT) + .withLocation(entryMap.get(icon)) + .withPages( + entity, + ritual, + description + ); + } + + private BookEntryModel makePossessBeeEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("possess_bee"); + this.lang().add(this.context().entryName(), "Possessed Bee"); + + this.context().page("entity"); + var entity = BookEntityPageModel.create() + .withEntityId("occultism:possessed_bee") + .withScale(1.0f) + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + **Drops**: [](item://occultism:cursed_honey); + """); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/possess_bee")); + + this.context().page("description"); + var description = BookTextPageModel.create() + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + In this ritual an [#](%1$s)djinni[#]() will possess an [#](%1$s)Bee[#](), Be careful, + a bee invoked by this way does not lose its stinger, always poison the target, + attacks faster and can summon other bees when it takes damage. + This is the only known method to obtain [](item://occultism:cursed_honey), eating will grants + a short regeneration buff. + """.formatted(COLOR_PURPLE)); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(OccultismItems.CURSED_HONEY) + .withLocation(entryMap.get(icon)) + .withPages( + entity, + ritual, + description + ); + } private BookEntryModel makeHordeHuskEntry(CategoryEntryMap entryMap, char icon) { this.context().entry("horde_husk"); @@ -2515,7 +1976,7 @@ private BookEntryModel makeHordeHuskEntry(CategoryEntryMap entryMap, char icon) this.context().page("ritual"); var ritual = BookRitualRecipePageModel.create() - .withRecipeId1(this.modLoc("ritual/summon_wild_husk")); + .withRecipeId1(this.modLoc("ritual/wild_husk")); this.context().page("description"); var description = BookTextPageModel.create() @@ -2551,7 +2012,7 @@ private BookEntryModel makeHordeDrownedEntry(CategoryEntryMap entryMap, char ico this.context().page("ritual"); var ritual = BookRitualRecipePageModel.create() - .withRecipeId1(this.modLoc("ritual/summon_wild_drowned")); + .withRecipeId1(this.modLoc("ritual/wild_drowned")); this.context().page("description"); var description = BookTextPageModel.create() @@ -2587,7 +2048,7 @@ private BookEntryModel makeHordeCreeperEntry(CategoryEntryMap entryMap, char ico this.context().page("ritual"); var ritual = BookRitualRecipePageModel.create() - .withRecipeId1(this.modLoc("ritual/summon_wild_creeper")); + .withRecipeId1(this.modLoc("ritual/wild_creeper")); this.context().page("description"); var description = BookTextPageModel.create() @@ -2623,7 +2084,7 @@ private BookEntryModel makeHordeSilverfishEntry(CategoryEntryMap entryMap, char this.context().page("ritual"); var ritual = BookRitualRecipePageModel.create() - .withRecipeId1(this.modLoc("ritual/summon_wild_silverfish")); + .withRecipeId1(this.modLoc("ritual/wild_silverfish")); this.context().page("description"); var description = BookTextPageModel.create() @@ -2659,7 +2120,7 @@ private BookEntryModel makeHordeIllagerEntry(CategoryEntryMap entryMap, char ico this.context().page("ritual"); var ritual = BookRitualRecipePageModel.create() - .withRecipeId1(this.modLoc("ritual/summon_horde_illager")); + .withRecipeId1(this.modLoc("ritual/wild_horde_illager")); this.context().page("description"); var description = BookTextPageModel.create() @@ -2695,7 +2156,7 @@ private BookEntryModel makePossessWeakBreezeEntry(CategoryEntryMap entryMap, cha this.context().page("ritual"); var ritual = BookRitualRecipePageModel.create() - .withRecipeId1(this.modLoc("ritual/possess_weak_breeze")); + .withRecipeId1(this.modLoc("ritual/wild_weak_breeze")); this.context().page("description"); var description = BookTextPageModel.create() @@ -2731,7 +2192,7 @@ private BookEntryModel makePossessBreezeEntry(CategoryEntryMap entryMap, char ic this.context().page("ritual"); var ritual = BookRitualRecipePageModel.create() - .withRecipeId1(this.modLoc("ritual/possess_breeze")); + .withRecipeId1(this.modLoc("ritual/wild_breeze")); this.context().page("description"); var description = BookTextPageModel.create() @@ -2767,7 +2228,7 @@ private BookEntryModel makePossessStrongBreezeEntry(CategoryEntryMap entryMap, c this.context().page("ritual"); var ritual = BookRitualRecipePageModel.create() - .withRecipeId1(this.modLoc("ritual/possess_strong_breeze")); + .withRecipeId1(this.modLoc("ritual/wild_strong_breeze")); this.context().page("description"); var description = BookTextPageModel.create() @@ -2786,6 +2247,108 @@ private BookEntryModel makePossessStrongBreezeEntry(CategoryEntryMap entryMap, c description ); } + + private BookEntryModel makePossessUnboundParrotEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("possess_unbound_parrot"); + + this.context().page("entity"); + var entity = BookEntityPageModel.create() + .withEntityId("minecraft:parrot") + .withText(this.context().pageText()); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/possess_unbound_parrot")); + + this.context().page("description"); + var description = BookTextPageModel.create() + .withText(this.context().pageText()); + + this.context().page("description2"); + var description2 = BookTextPageModel.create() + .withText(this.context().pageText()); + + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(this.modLoc("textures/gui/book/parrot.png")) + .withLocation(entryMap.get(icon)) + .withPages( + entity, + ritual, + description, + description2 + ); + } + + private BookEntryModel makePossessRandomAnimalEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("possess_random_animal"); + this.add(this.context().entryName(), "Possessed Random Animal"); + + this.context().page("entity"); + var entity = BookEntityPageModel.create() + .withEntityId("minecraft:cow") + .withEntityName(this.context().pageTitle()) + .withText(this.context().pageText()); + + this.add(this.context().pageTitle(), "Summon Random Animal"); + this.add(this.context().pageText(), + """ + **Provides**: A random animal + """ + ); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/possess_random_animal")); + //no text + + this.context().page("description"); + var description = BookTextPageModel.create() + .withText(this.context().pageText()); + this.add(this.context().pageText(), + """ + In this ritual a [#](%1$s)Foliot[#]() is summoned **as an untamed spirit** to take the shape of a random animal. + \\ + \\ + The animal can be interacted with as it's natural counterpart, including taming, breeding and loot. + """.formatted(COLOR_PURPLE)); + + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(Items.COW_SPAWN_EGG) + .withLocation(entryMap.get(icon)) + .withPages( + entity, + ritual, + description + ); + } + + private BookEntryModel makePossessUnboundOtherworldBirdEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("possess_unbound_otherworld_bird"); + + this.context().page("entity"); + var entity = BookEntityPageModel.create() + .withEntityId("occultism:otherworld_bird") + .withText(this.context().pageText()); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/possess_unbound_otherworld_bird")); + + this.context().page("description"); + var description = BookTextPageModel.create() + .withText(this.context().pageText()); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(this.modLoc("textures/gui/book/otherworld_bird.png")) + .withLocation(entryMap.get(icon)) + .withPages( + entity, + ritual, + description + ); + } //endregion private BookCategoryModel makeStorageCategory() { @@ -2795,11 +2358,11 @@ private BookCategoryModel makeStorageCategory() { entryMap.setMap( "_______ṡ___________________", "___________________________", - "_______ș_w_r_______________", + "_______ș_w_________________", "___________________________", - "_____0_c___s_1_2_3_4________", + "_____0_c___s_1_2_3_4_______", "___________________________", - "_________d_________________", + "_______d_r_________________", "___________________________" ); @@ -2838,24 +2401,19 @@ private BookCategoryModel makeStorageCategory() { craftStabilizerTier2.getId().getNamespace(), "storage/" + craftStabilizerTier2.getId().getPath() ) - )); + )).withCondition(BookEntryReadConditionModel.create().withEntry(this.modLoc("pentacles/craft_afrit"))); var craftStabilizerTier4 = bindingRitualsCategory.makeCraftStabilizerTier4Entry(entryMap, '4'); craftStabilizerTier4.withParent(BookEntryParentModel.create( ResourceLocation.fromNamespaceAndPath( craftStabilizerTier3.getId().getNamespace(), "storage/" + craftStabilizerTier3.getId().getPath() ) - )); + )).withCondition(BookEntryReadConditionModel.create().withEntry(this.modLoc("pentacles/craft_marid"))); var craftStableWormhole = bindingRitualsCategory.makeCraftStableWormholeEntry(entryMap, 'w'); craftStableWormhole.withParent(BookEntryParentModel.create(storageController.getId())); var craftStorageRemote = bindingRitualsCategory.makeCraftStorageRemoteEntry(entryMap, 'r'); - craftStorageRemote.withParent(BookEntryParentModel.create( - ResourceLocation.fromNamespaceAndPath( - craftStableWormhole.getId().getNamespace(), - "storage/" + craftStableWormhole.getId().getPath() - ) - )); + craftStorageRemote.withParent(BookEntryParentModel.create(storageController.getId())); this.context().category("summoning_rituals"); //re-use existing entries var summonManageMachine = this.makeSummonManageMachineEntry(entryMap, 'd'); diff --git a/src/main/java/com/klikli_dev/occultism/datagen/PentacleProvider.java b/src/main/java/com/klikli_dev/occultism/datagen/PentacleProvider.java index 8ddd0f828..8776b264d 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/PentacleProvider.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/PentacleProvider.java @@ -37,6 +37,7 @@ import net.minecraft.tags.TagKey; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; +import net.neoforged.neoforge.common.Tags; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -61,192 +62,350 @@ public PentacleProvider(DataGenerator generator) { } private void start() { - this.addPentacle("craft_afrit", + //Summon + this.addPentacle("summon_foliot", this.createPattern( - " N ", - " GGG ", - " GCPCG ", - " G WCW G ", - " GCWW WWCG ", - "ZGPC 0 CPGZ", - " GCWW WWCG ", - " G WCW G ", - " GCPCG ", - " GGG ", - " Z "), - new MappingBuilder().bowl().whiteChalk().goldChalk().purpleChalk().redChalk().candle().crystal().skeleton().wither().ground().build()); - this.addPentacle("craft_djinni", + "_________", + "___WWW___", + "__W_W_W__", + "_W_1W1_W_", + "_WWW0WWW_", + "_W_1W1_W_", + "__W_W_W__", + "___WWW___", + "_________"), + new MappingBuilder().bowl().whiteChalk().candle().ground().build()); + this.addPentacle("summon_djinni", this.createPattern( - " ", - " C WGW C ", - " P W P ", - " W SWS W ", - " GWW0WWG ", - " W SWS W ", - " P W P ", - " C WGW C ", - " "), - new MappingBuilder().bowl().whiteChalk().goldChalk().purpleChalk().candle().crystal().ground().build()); - this.addPentacle("craft_foliot", + "_____________", + "____LLLLL____", + "___L_L1L_L___", + "__L2_WWW_2L__", + "_L__W_S_W__L_", + "_LLW_1S1_WLL_", + "_L1WSS0SSW1L_", + "_LLW_1S1_WLL_", + "_L__W_S_W__L_", + "__L2_WWW_2L__", + "___L_L1L_L___", + "____LLLLL____", + "_____________"), + new MappingBuilder().bowl().whiteChalk().lightGrayChalk().limeChalk().candle().skeleton().ground().build()); + this.addPentacle("summon_unbound_afrit", this.createPattern( - " WSW ", - " G G ", - "W W W", - "C W0W C", - "W W W", - " G G ", - " WSW "), - new MappingBuilder().bowl().whiteChalk().goldChalk().candle().crystal().ground().build()); - this.addPentacle("craft_marid", + "_________________", + "______OOOOO______", + "____OO__2__OO____", + "___O__LLLLL__O___", + "__O__L_L1L_L__O__", + "__O_L2_WWW_2L_O__", + "_O_L__W_G_W__L_O_", + "_O_LLW_1G1_WLL_O_", + "_O2L1WGG0GGW1L2O_", + "_O_LLW_1G1_WLL_O_", + "_O_L__W_G_W__L_O_", + "__O_L2_WWW_2L_O__", + "__O__L_L1L_L__O__", + "___O__LLLLL__O___", + "____OO__2__OO____", + "______OOOOO______", + "_________________"), + new MappingBuilder().bowl().whiteChalk().grayChalk().limeChalk().orangeChalk().candle().skeleton().crystal().ground().build()); + this.addPentacle("summon_afrit", this.createPattern( - " Z ", - " RRR ", - " RCWCR ", - " R W R ", - " RGSWNWSGR ", - " R SGW WGS R ", - " RC WW WW CR ", - "ZRWWN 0 NWWRZ", - " RC WW WW CR ", - " R SGW WGS R ", - " RGSWNWSGR ", - " R W R ", - " RCWCR ", - " RRR ", - " Z "), - new MappingBuilder().bowl().whiteChalk().goldChalk().redChalk().candle().crystal().skeleton().wither().ground().build()); - this.addPentacle("debug", + "_________________", + "______OOOOO______", + "____OOR_2_ROO____", + "___OR_LLLLL_RO___", + "__OR3L_L1L_L3RO__", + "__O_L2_WWW_2L_O__", + "_ORL__W_G_W__LRO_", + "_O_LLW_1G1_WLL_O_", + "_O2L1WGG0GGW1L2O_", + "_O_LLW_1G1_WLL_O_", + "_ORL__W_G_W__LRO_", + "__O_L2_WWW_2L_O__", + "__OR3L_L1L_L3RO__", + "___OR_LLLLL_RO___", + "____OOR_2_ROO____", + "______OOOOO______", + "_________________"), + new MappingBuilder().bowl().whiteChalk().grayChalk().limeChalk().orangeChalk().redChalk().candle().skeleton().crystal().ground().build()); + this.addPentacle("summon_unbound_marid", this.createPattern( - " GCG ", - " G P G ", - "G P G", - "CPP0PPC", - "G P G", - " G P G ", - " GCG "), - new MappingBuilder().bowl().goldChalk().purpleChalk().candle().skeleton().ground().build()); - this.addPentacle("possess_afrit", + "_________________", + "______OOOOO______", + "__4_OOR_2_ROO_4__", + "___OR_LLLLL_RO___", + "__OR3L_L1L_L3RO__", + "__O_L2_WWW_2L_O__", + "_ORL__W_K_W__LRO_", + "_O_LLW_1K1_WLL_O_", + "_O2L1WKK0KKW1L2O_", + "_O_LLW_1K1_WLL_O_", + "_ORL__W_K_W__LRO_", + "__O_L2_WWW_2L_O__", + "__OR3L_L1L_L3RO__", + "___OR_LLLLL_RO___", + "__4_OOR_2_ROO_4__", + "______OOOOO______", + "_________________"), + new MappingBuilder().bowl().whiteChalk().blackChalk().limeChalk().orangeChalk().redChalk().candle().skeleton().crystal().wither().ground().build()); + this.addPentacle("summon_marid", + this.createPattern( + "_____________________", + "_______UUUUUUU_______", + "_____UU__U3U__UU_____", + "____U___OOOOO___U____", + "___U4_OOR_2_ROO_4U___", + "__U__OR_LLLLL_RO__U__", + "__U_OR3L_L1L_L3RO_U__", + "_U__O_L2_WWW_2L_O__U_", + "_U_ORL__W_K_W__LRO_U_", + "_UUO_LLW_1K1_WLL_OUU_", + "_U3O2L1WKK0KKW1L2O3U_", + "_UUO_LLW_1K1_WLL_OUU_", + "_U_ORL__W_K_W__LRO_U_", + "_U__O_L2_WWW_2L_O__U_", + "__U_OR3L_L1L_L3RO_U__", + "__U__OR_LLLLL_RO__U__", + "___U4_OOR_2_ROO_4U___", + "____U___OOOOO___U____", + "_____UU__U3U__UU_____", + "_______UUUUUUU_______", + "_____________________"), + new MappingBuilder().bowl().whiteChalk().blackChalk().limeChalk().orangeChalk().redChalk().blueChalk().candle().skeleton().crystal().wither().ground().build()); + //Possess + this.addPentacle("possess_foliot", this.createPattern( - " ", - " PRP ", - " GCWCG ", - " G WNW G ", - " PCWP PWCP ", - " RWZ 0 ZWR ", - " PCWP PWCP ", - " G WNW G ", - " GCWCG ", - " PRP ", - " "), - new MappingBuilder().bowl().whiteChalk().goldChalk().purpleChalk().redChalk().candle().skeleton().wither().ground().build()); + "_________", + "____W____", + "___W1W___", + "__W_Y_W__", + "_W1Y0Y1W_", + "__W_Y_W__", + "___W1W___", + "____W____", + "_________"), + new MappingBuilder().bowl().whiteChalk().yellowChalk().candle().ground().build()); this.addPentacle("possess_djinni", this.createPattern( - " GPG ", - " GC CG ", - " GZW WZG ", - "GCWP PWCG", - "P 0 P", - "GCWP PWCG", - " GZW WZG ", - " GC CG ", - " GPG "), - new MappingBuilder().bowl().whiteChalk().goldChalk().purpleChalk().candle().skeleton().ground().build()); - this.addPentacle("possess_foliot", + "_____________", + "______L______", + "_____L2L_____", + "____Y_W_Y____", + "___Y1S1S1Y___", + "__L_S_Y_S_L__", + "_L2W1Y0Y1W2L_", + "__L_S_Y_S_L__", + "___Y1S1S1Y___", + "____Y_W_Y____", + "_____L2L_____", + "______L______", + "_____________"), + new MappingBuilder().bowl().whiteChalk().lightGrayChalk().yellowChalk().limeChalk().candle().skeleton().ground().build()); + this.addPentacle("possess_unbound_afrit", this.createPattern( - " GGG ", - " GC CG ", - " GW WG ", - "GC W W CG", - "G 0 G", - "GC W W CG", - " GW WG ", - " GC CG ", - " GGG "), - new MappingBuilder().bowl().whiteChalk().goldChalk().candle().ground().build()); - this.addPentacle("summon_afrit", + "_________________", + "________Y________", + "_______Y3Y_______", + "________L________", + "_____O_L2L_O_____", + "____O2Y_W_Y2O____", + "_____Y1G1G1Y_____", + "__Y_L_G_Y_G_L_Y__", + "_Y3L2W1Y0Y1W2L3Y_", + "__Y_L_G_Y_G_L_Y__", + "_____Y1G1G1Y_____", + "____O2Y_W_Y2O____", + "_____O_L2L_O_____", + "________L________", + "_______Y3Y_______", + "________Y________", + "_________________"), + new MappingBuilder().bowl().whiteChalk().grayChalk().yellowChalk().limeChalk().orangeChalk().candle().skeleton().crystal().ground().build()); + this.addPentacle("possess_afrit", this.createPattern( - " ", - " PRP ", - " WCWCW ", - " W WNW W ", - " PCWP PWCP ", - " RWZ 0 ZWR ", - " PCWP PWCP ", - " W WNW W ", - " WCWCW ", - " PRP ", - " "), - new MappingBuilder().bowl().whiteChalk().purpleChalk().redChalk().candle().skeleton().wither().ground().build()); - this.addPentacle("summon_djinni", + "_________________", + "________Y________", + "_______Y3Y_______", + "______R_L_R______", + "_____O_L2L_O_____", + "____O2Y_W_Y2O____", + "___R_Y1G1G1Y_R___", + "__Y_L_G_Y_G_L_Y__", + "_Y3L2W1Y0Y1W2L3Y_", + "__Y_L_G_Y_G_L_Y__", + "___R_Y1G1G1Y_R___", + "____O2Y_W_Y2O____", + "_____O_L2L_O_____", + "______R_L_R______", + "_______Y3Y_______", + "________Y________", + "_________________"), + new MappingBuilder().bowl().whiteChalk().grayChalk().yellowChalk().limeChalk().orangeChalk().redChalk().candle().skeleton().crystal().ground().build()); + this.addPentacle("possess_marid", this.createPattern( - " C C ", - " PPP ", - " W Z W ", - "CP W W PC", - " PZ 0 ZP ", - "CP W W PC", - " W Z W ", - " PPP ", - " C C "), - new MappingBuilder().bowl().whiteChalk().purpleChalk().candle().skeleton().ground().build()); - this.addPentacle("summon_marid", + "_____________________", + "__________U__________", + "_________Y4Y_________", + "________U_Y_U________", + "_______Y_Y3Y_Y_______", + "______U_R_L_R_U______", + "_____U3O_L2L_O3U_____", + "____Y_O2Y_W_Y2O_Y____", + "___U_R_Y1K1K1Y_R_U___", + "__Y_Y_L_K_Y_K_L_Y_Y__", + "_U4Y3L2W1Y0Y1W2L3Y4U_", + "__Y_Y_L_K_Y_K_L_Y_Y__", + "___U_R_Y1K1K1Y_R_U___", + "____Y_O2Y_W_Y2O_Y____", + "_____U3O_L2L_O3U_____", + "______U_R_L_R_U______", + "_______Y_Y3Y_Y_______", + "________U_Y_U________", + "_________Y4Y_________", + "__________U__________", + "_____________________"), + new MappingBuilder().bowl().whiteChalk().blackChalk().yellowChalk().limeChalk().orangeChalk().redChalk().blueChalk().candle().skeleton().crystal().wither().ground().build()); + //Craft + this.addPentacle("craft_foliot", this.createPattern( - " Z ", - " RRR ", - " RCWCR ", - " R W R ", - " RG WNW GR ", - " R GW WG R ", - " RC WW WW CR ", - "ZRWWN 0 NWWRZ", - " RC WW WW CR ", - " R GW WG R ", - " RG WNW GR ", - " R W R ", - " RCWCR ", - " RRR ", - " Z "), - new MappingBuilder().bowl().whiteChalk().goldChalk().redChalk().candle().skeleton().wither().ground().build()); - this.addPentacle("summon_foliot", + "_________", + "__WXXXW__", + "_WW1_1WW_", + "_X1W_W1X_", + "_X__0__X_", + "_X1W_W1X_", + "_WW1_1WW_", + "__WXXXW__", + "_________"), + new MappingBuilder().bowl().whiteChalk().purpleChalk().candle().ground().build()); + this.addPentacle("craft_djinni", this.createPattern( - " ", - " WCW ", - " W W W ", - " W W W ", - " CWW0WWC ", - " W W W ", - " W W W ", - " WCW ", - " "), - new MappingBuilder().bowl().whiteChalk().candle().ground().build()); - this.addPentacle("summon_wild_afrit", + "_____________", + "__XLXLXLXLX__", + "_XL_2___2_LX_", + "_L__WXXXW__L_", + "_X2WS1_1SW2X_", + "_L_X1S_S1X_L_", + "_X_X__0__X_X_", + "_L_X1S_S1X_L_", + "_X2WS1_1SW2X_", + "_L__WXXXW__L_", + "_XL_2___2_LX_", + "__XLXLXLXLX__", + "_____________"), + new MappingBuilder().bowl().whiteChalk().lightGrayChalk().purpleChalk().limeChalk().candle().skeleton().ground().build()); + this.addPentacle("craft_afrit", + this.createPattern( + "_________________", + "__RXOXOXRXOXOXR__", + "_RX____3_3____XR_", + "_X__XLXLXLXLX__X_", + "_O_XL_2___2_LX_O_", + "_X_L__WXXXW__L_X_", + "_O_X2WG1_1GW2X_O_", + "_X3L_X1G_G1X_L3X_", + "_R_X_X__0__X_X_R_", + "_X3L_X1G_G1X_L3X_", + "_O_X2WG1_1GW2X_O_", + "_X_L__WXXXW__L_X_", + "_O_XL_2___2_LX_O_", + "_X__XLXLXLXLX__X_", + "_RX____3_3____XR_", + "__RXOXOXRXOXOXR__", + "_________________"), + new MappingBuilder().bowl().whiteChalk().grayChalk().purpleChalk().limeChalk().orangeChalk().redChalk().candle().skeleton().crystal().ground().build()); + this.addPentacle("craft_marid", this.createPattern( - " ", - " PPP ", - " WCWCW ", - " W WNW W ", - " PCWP PWCP ", - " PWZ 0 ZWP ", - " PCWP PWCP ", - " W WNW W ", - " WCWCW ", - " PPP ", - " "), - new MappingBuilder().bowl().whiteChalk().purpleChalk().candle().skeleton().wither().ground().build()); - this.addPentacle("summon_wild_greater_spirit", + "_____________________", + "__XXUUUXUUUUUXUUUXX__", + "_XX_______4_______XX_", + "_X__RXOXOXRXOXOXR__X_", + "_U_RX____3_3____XR_U_", + "_U_X__XLXLXLXLX__X_U_", + "_U_O_XL_2___2_LX_O_U_", + "_X_X_L__WXXXW__L_X_X_", + "_U_O_X2WK1_1KW2X_O_U_", + "_U_X3L_X1K_K1X_L3X_U_", + "_U4R_X_X__0__X_X_R4U_", + "_U_X3L_X1K_K1X_L3X_U_", + "_U_O_X2WK1_1KW2X_O_U_", + "_X_X_L__WXXXW__L_X_X_", + "_U_O_XL_2___2_LX_O_U_", + "_U_X__XLXLXLXLX__X_U_", + "_U_RX____3_3____XR_U_", + "_X__RXOXOXRXOXOXR__X_", + "_XX_______4_______XX_", + "__XXUUUXUUUUUXUUUXX__", + "_____________________"), + new MappingBuilder().bowl().whiteChalk().blackChalk().purpleChalk().limeChalk().orangeChalk().redChalk().blueChalk().candle().skeleton().crystal().wither().ground().build()); + //Others + this.addPentacle("resurrect_spirit", this.createPattern( - " ", - " PPP ", - " W W W ", - " W WZW W ", - " P WP PW P ", - " PWZ 0 ZWP ", - " P WP PW P ", - " W WZW W ", - " W W W ", - " PPP ", - " "), - new MappingBuilder().bowl().whiteChalk().purpleChalk().skeleton().ground().build()); + "___________", + "_____W_____", + "__W_____W__", + "___________", + "____WWW____", + "_W__W0W__W_", + "____WWW____", + "___________", + "__W_____W__", + "_____W_____", + "___________"), + new MappingBuilder().bowl().onlyWhiteChalk().ground().build()); + this.addPentacle("contact_wild_spirit", + this.createPattern( + "_____________", + "______P______", + "__A_AE_EA_A__", + "____PE_EP____", + "__APA_P_APA__", + "__EE_____EE__", + "_P__P_0_P__P_", + "__EE_____EE__", + "__APA_P_APA__", + "____PE_EP____", + "__A_AE_EA_A__", + "______P______", + "_____________"), + new MappingBuilder().bowl().pinkChalk().greenChalk().lightBlueChalk().ground().build()); + this.addPentacle("contact_eldritch_spirit", + this.createPattern( + "_____________________", + "__________C__________", + "_________CeC_________", + "_________CMC_________", + "____BB__CMMMC__BB____", + "____BlBBCM_MCBBfB____", + "_____B_B_____B_B_____", + "_____BB_______BB_____", + "____CC_________CC____", + "__CCMM_________MMCC__", + "_CkMM_____0_____MMgC_", + "__CCMM_________MMCC__", + "____CC_________CC____", + "_____BB_______BB_____", + "_____B_B_____B_B_____", + "____BjBBCM_MCBBhB____", + "____BB__CMMMC__BB____", + "_________CMC_________", + "_________CiC_________", + "__________C__________", + "_____________________"), + new MappingBuilder().bowl().magentaChalk().brownChalk().cyanChalk().eldritch().ground().build()); + this.addPentacle("debug", + this.createPattern( + " Y1Y ", + " Y X Y ", + "Y X Y", + "1XX0XX1", + "Y X Y", + " Y X Y ", + " Y1Y "), + new MappingBuilder().bowl().yellowChalk().purpleChalk().candle().skeleton().eldritch().ground().build()); } private List createPattern(String... rows) { @@ -340,6 +499,13 @@ private MappingBuilder block(char c, Supplier b) { json.addProperty("block", BuiltInRegistries.BLOCK.getKey(b.get()).toString()); return this.element(c, json); } + private MappingBuilder block(char c, Block b) { + + JsonObject json = new JsonObject(); + json.addProperty("type", "modonomicon:block"); + json.addProperty("block", b.toString()); + return this.element(c, json); + } private MappingBuilder blockDisplay(char c, Supplier b, Supplier display) { JsonObject json = new JsonObject(); @@ -366,42 +532,87 @@ private MappingBuilder tag(char c, TagKey tag) { private MappingBuilder bowl() { return this.block('0', OccultismBlocks.GOLDEN_SACRIFICIAL_BOWL); } - private MappingBuilder candle() { - return this.tag('C', OccultismTags.Blocks.CANDLES); + return this.tag('1', OccultismTags.Blocks.CANDLES); + } + private MappingBuilder skeleton() { + return this.block('2', () -> Blocks.SKELETON_SKULL); + } + private MappingBuilder crystal() { + return this.block('3', OccultismBlocks.SPIRIT_ATTUNED_CRYSTAL); + } + private MappingBuilder wither() { + return this.block('4', () -> Blocks.WITHER_SKELETON_SKULL); } private MappingBuilder whiteChalk() { - return this.block('W', OccultismBlocks.CHALK_GLYPH_WHITE); + return this.tag('W', OccultismTags.Blocks.FOUNDATION_GLYPHS_ANY); } - - private MappingBuilder goldChalk() { - return this.block('G', OccultismBlocks.CHALK_GLYPH_GOLD); + private MappingBuilder lightGrayChalk() { + return this.tag('S', OccultismTags.Blocks.FOUNDATION_GLYPHS_NO_WHITE); } - - private MappingBuilder purpleChalk() { - return this.block('P', OccultismBlocks.CHALK_GLYPH_PURPLE); + private MappingBuilder grayChalk() { + return this.tag('G', OccultismTags.Blocks.FOUNDATION_GLYPHS_DARK); + } + private MappingBuilder blackChalk() { + return this.block('K', OccultismBlocks.CHALK_GLYPH_BLACK); + } + private MappingBuilder brownChalk() { + return this.block('B', OccultismBlocks.CHALK_GLYPH_BROWN); } - private MappingBuilder redChalk() { return this.block('R', OccultismBlocks.CHALK_GLYPH_RED); } - - private MappingBuilder crystal() { - return this.block('S', OccultismBlocks.SPIRIT_ATTUNED_CRYSTAL); + private MappingBuilder orangeChalk() { + return this.block('O', OccultismBlocks.CHALK_GLYPH_ORANGE); + } + private MappingBuilder yellowChalk() { + return this.block('Y', OccultismBlocks.CHALK_GLYPH_YELLOW); + } + private MappingBuilder limeChalk() { + return this.block('L', OccultismBlocks.CHALK_GLYPH_LIME); + } + private MappingBuilder greenChalk() { + return this.block('E', OccultismBlocks.CHALK_GLYPH_GREEN); + } + private MappingBuilder cyanChalk() { + return this.block('C', OccultismBlocks.CHALK_GLYPH_CYAN); + } + private MappingBuilder lightBlueChalk() { + return this.block('A', OccultismBlocks.CHALK_GLYPH_LIGHT_BLUE); + } + private MappingBuilder blueChalk() { + return this.block('U', OccultismBlocks.CHALK_GLYPH_BLUE); + } + private MappingBuilder purpleChalk() { + return this.block('X', OccultismBlocks.CHALK_GLYPH_PURPLE); + } + private MappingBuilder magentaChalk() { + return this.block('M', OccultismBlocks.CHALK_GLYPH_MAGENTA); + } + private MappingBuilder pinkChalk() { + return this.block('P', OccultismBlocks.CHALK_GLYPH_PINK); + } + private MappingBuilder onlyWhiteChalk() { + return this.block('W', OccultismBlocks.CHALK_GLYPH_WHITE); } - private MappingBuilder skeleton() { - return this.block('Z', () -> Blocks.SKELETON_SKULL); + private MappingBuilder eldritch(){ + return this.block('e', () -> Blocks.LODESTONE) + .block('f', () -> Blocks.END_ROD) + .block('g', () ->Blocks.AMETHYST_CLUSTER) + .tag('h', Tags.Blocks.GLASS_PANES) + .block('i', () -> Blocks.BEACON) + .block('j', () -> Blocks.LIGHTNING_ROD) + .block('k', () -> Blocks.ENCHANTING_TABLE) + .block('l', () -> Blocks.IRON_BARS); } private MappingBuilder ground() { return this.display('*', OccultismBlocks.OTHERSTONE).display('+', () -> Blocks.STONE); } - private MappingBuilder wither() { - return this.block('N', () -> Blocks.WITHER_SKELETON_SKULL); - } + } } diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/BindingRitualsCategory.java b/src/main/java/com/klikli_dev/occultism/datagen/book/BindingRitualsCategory.java index b2a5daa02..941367636 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/book/BindingRitualsCategory.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/BindingRitualsCategory.java @@ -5,13 +5,14 @@ import com.klikli_dev.modonomicon.api.datagen.book.BookEntryModel; import com.klikli_dev.modonomicon.api.datagen.book.BookEntryParentModel; import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; -import com.klikli_dev.modonomicon.api.datagen.book.condition.BookTrueConditionModel; +import com.klikli_dev.modonomicon.api.datagen.book.condition.BookEntryReadConditionModel; import com.klikli_dev.modonomicon.api.datagen.book.page.BookCraftingRecipePageModel; import com.klikli_dev.modonomicon.api.datagen.book.page.BookSpotlightPageModel; import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; import com.klikli_dev.occultism.datagen.OccultismBookProvider; import com.klikli_dev.occultism.datagen.book.binding_rituals.ApprenticeRitualSatchelEntry; import com.klikli_dev.occultism.datagen.book.binding_rituals.ArtisanalRitualSatchelEntry; +import com.klikli_dev.occultism.datagen.book.pentacles.*; import com.klikli_dev.occultism.integration.modonomicon.pages.BookRitualRecipePageModel; import com.klikli_dev.occultism.registry.OccultismBlocks; import com.klikli_dev.occultism.registry.OccultismItems; @@ -29,15 +30,15 @@ public BindingRitualsCategory(OccultismBookProvider parent) { protected String[] generateEntryMap() { return new String[]{ "___________________________", - "_______b_e_x_p_q___________", + "_______b_e_x_p_q_r_________", "___________________________", - "_______d_h_c__w____________", + "_______d_h_c__w_v_s________", "___________________________", - "___9_0_____________________", + "___9_0______________y______", "___________________________", "_______f_z_a__g_ĝ_ğ________", "___________________________", - "___________n_m_o___________", + "_________o_n_m_____________", "___________________________", "___________i_j_k_l_________", "___________________________" @@ -46,12 +47,22 @@ protected String[] generateEntryMap() { @Override protected void generateEntries() { + String craftFoliotID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + CraftFoliotEntry.ENTRY_ID; + String craftDjinniID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + CraftDjinniEntry.ENTRY_ID; + String craftAfritID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + CraftAfritEntry.ENTRY_ID; + String craftMaridID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + CraftMaridEntry.ENTRY_ID; + String contactWildID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + ContactWildSpiritEntry.ENTRY_ID; + String contactEldritchID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + ContactEldritchSpiritEntry.ENTRY_ID; + var overview = this.add(this.makeCraftingRitualsOverviewEntry(this.entryMap, '0')); + overview.withCondition(BookEntryReadConditionModel.create().withEntry(craftFoliotID)); var returnToRituals = this.add(this.makeReturnToRitualsEntry(this.entryMap, '9')); - returnToRituals.withParent(BookEntryParentModel.create(overview.getId())); + returnToRituals.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(craftFoliotID)); var craftInfusedPickaxe = this.add(this.makeCraftInfusedPickaxeEntry(this.entryMap, 'd')); - craftInfusedPickaxe.withParent(BookEntryParentModel.create(overview.getId())); + craftInfusedPickaxe.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(craftDjinniID)); var craftDimensionalMineshaft = this.add(this.makeCraftDimensionalMineshaftEntry(this.entryMap, 'b')); craftDimensionalMineshaft.withParent(BookEntryParentModel.create(craftInfusedPickaxe.getId())); var craftFoliotMiner = this.add(this.makeCraftFoliotMinerEntry(this.entryMap, 'e')); @@ -59,12 +70,18 @@ protected void generateEntries() { var craftDjinniMiner = this.add(this.makeCraftDjinniMinerEntry(this.entryMap, 'x')); craftDjinniMiner.withParent(BookEntryParentModel.create(craftFoliotMiner.getId())); var craftAfritMiner = this.add(this.makeCraftAfritMinerEntry(this.entryMap, 'p')); - craftAfritMiner.withParent(BookEntryParentModel.create(craftDjinniMiner.getId())); + craftAfritMiner.withParent(BookEntryParentModel.create(craftDjinniMiner.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(craftAfritID)); var craftMaridMiner = this.add(this.makeCraftMaridMinerEntry(this.entryMap, 'q')); - craftMaridMiner.withParent(BookEntryParentModel.create(craftAfritMiner.getId())); + craftMaridMiner.withParent(BookEntryParentModel.create(craftAfritMiner.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(craftMaridID)); + var craftAncientMiner = this.add(this.makeCraftAncientMinerEntry(this.entryMap, 'r')); + craftAncientMiner.withParent(BookEntryParentModel.create(craftAfritMiner.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(contactEldritchID)); var craftStorageSystem = this.add(this.makeCraftStorageSystemEntry(this.entryMap, 'z')); - craftStorageSystem.withParent(BookEntryParentModel.create(overview.getId())); + craftStorageSystem.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(craftDjinniID)); var craftDimensionalMatrix = this.add(this.makeCraftDimensionalMatrixEntry(this.entryMap, 'a')); craftDimensionalMatrix.withParent(BookEntryParentModel.create(craftStorageSystem.getId())); @@ -75,37 +92,53 @@ protected void generateEntries() { var craftStabilizerTier2 = this.add(this.makeCraftStabilizerTier2Entry(this.entryMap, 'j')); craftStabilizerTier2.withParent(BookEntryParentModel.create(craftStabilizerTier1.getId())); var craftStabilizerTier3 = this.add(this.makeCraftStabilizerTier3Entry(this.entryMap, 'k')); - craftStabilizerTier3.withParent(BookEntryParentModel.create(craftStabilizerTier2.getId())); + craftStabilizerTier3.withParent(BookEntryParentModel.create(craftStabilizerTier2.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(craftAfritID)); var craftStabilizerTier4 = this.add(this.makeCraftStabilizerTier4Entry(this.entryMap, 'l')); - craftStabilizerTier4.withParent(BookEntryParentModel.create(craftStabilizerTier3.getId())); + craftStabilizerTier4.withParent(BookEntryParentModel.create(craftStabilizerTier3.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(craftMaridID)); var craftStableWormhole = this.add(this.makeCraftStableWormholeEntry(this.entryMap, 'm')); craftStableWormhole.withParent(BookEntryParentModel.create(craftStorageControllerBase.getId())); var craftStorageRemote = this.add(this.makeCraftStorageRemoteEntry(this.entryMap, 'o')); - craftStorageRemote.withParent(BookEntryParentModel.create(craftStableWormhole.getId())); + craftStorageRemote.withParent(BookEntryParentModel.create(craftStorageControllerBase.getId())); var craftOtherworldGoggles = this.add(this.makeCraftOtherworldGogglesEntry(this.entryMap, 'f')); - craftOtherworldGoggles.withParent(BookEntryParentModel.create(overview.getId())); + craftOtherworldGoggles.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(craftFoliotID)); var craftSatchel = this.add(this.makeCraftSatchelEntry(this.entryMap, 'g')); - craftSatchel.withParent(BookEntryParentModel.create(overview.getId())); + craftSatchel.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(craftFoliotID)); var apprenticeRitualSatchel = this.add(new ApprenticeRitualSatchelEntry(this).generate('ĝ')); - apprenticeRitualSatchel.withParent(craftSatchel); + apprenticeRitualSatchel.withParent(craftSatchel) + .withCondition(BookEntryReadConditionModel.create().withEntry(craftDjinniID)); var artisanalRitualSatchel = this.add(new ArtisanalRitualSatchelEntry(this).generate('ğ')); - artisanalRitualSatchel.withParent(apprenticeRitualSatchel); + artisanalRitualSatchel.withParent(apprenticeRitualSatchel) + .withCondition(BookEntryReadConditionModel.create().withEntry(craftAfritID)); var craftSoulGem = this.add(this.makeCraftSoulGemEntry(this.entryMap, 'h')); - craftSoulGem.withParent(BookEntryParentModel.create(overview.getId())); + craftSoulGem.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(craftDjinniID)); var craftFamiliarRing = this.add(this.makeCraftFamiliarRingEntry(this.entryMap, 'c')); craftFamiliarRing.withParent(BookEntryParentModel.create(craftSoulGem.getId())); var craftWildTrim = this.add(this.makeCraftWildTrimEntry(this.entryMap, 'w')); - craftWildTrim.withParent(BookEntryParentModel.create(overview.getId())); - - //Note: by default entries get an "entry read" condition for their parent entry, but we want to show all of these right away - this.category.getEntries().forEach(entry -> entry.withCondition(BookTrueConditionModel.create())); + craftWildTrim.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(contactWildID)); + var craftAmethyst = this.add(this.makeCraftAmethystEntry(this.entryMap, 'v')); + craftAmethyst.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(contactWildID)); + var craftDeepslate = this.add(this.makeCraftDeepslateEntry(this.entryMap, 's')); + craftDeepslate.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(contactEldritchID)) + .hideWhileLocked(true); + + var repairRituals = this.add(this.makeRepairEntry(this.entryMap, 'y')); + repairRituals.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(craftDjinniID)); } @Override @@ -483,6 +516,27 @@ private BookEntryModel makeCraftMaridMinerEntry(CategoryEntryMap entryMap, char ); } + private BookEntryModel makeCraftAncientMinerEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("craft_ancient_miner"); + + this.context().page("spotlight"); + var spotlight = BookSpotlightPageModel.create() + .withItem(Ingredient.of(OccultismItems.MINER_ANCIENT_ELDRITCH.get())) + .withText(this.context().pageText()); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/craft_miner_ancient_eldritch")); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(OccultismItems.MINER_ANCIENT_ELDRITCH.get()) + .withLocation(entryMap.get(icon)) + .withPages( + spotlight, + ritual + ); + } + private BookEntryModel makeCraftSatchelEntry(CategoryEntryMap entryMap, char icon) { this.context().entry("craft_satchel"); @@ -626,4 +680,83 @@ private BookEntryModel makeCraftWildTrimEntry(CategoryEntryMap entryMap, char ic ritual ); } + + private BookEntryModel makeCraftAmethystEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("craft_budding_amethyst"); + + this.context().page("spotlight"); + var spotlight = BookSpotlightPageModel.create() + .withItem(Ingredient.of(Items.BUDDING_AMETHYST)) + .withText(this.context().pageText()); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/craft_budding_amethyst")); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(Items.BUDDING_AMETHYST) + .withLocation(entryMap.get(icon)) + .withPages( + spotlight, + ritual + ); + } + + private BookEntryModel makeCraftDeepslateEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("craft_reinforced_deepslate"); + + this.context().page("spotlight"); + var spotlight = BookSpotlightPageModel.create() + .withItem(Ingredient.of(Items.REINFORCED_DEEPSLATE)) + .withText(this.context().pageText()); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/craft_reinforced_deepslate")); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(Items.REINFORCED_DEEPSLATE) + .withLocation(entryMap.get(icon)) + .withPages( + spotlight, + ritual + ); + } + + private BookEntryModel makeRepairEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("repair"); + + this.context().page("spotlight"); + var spotlight = BookSpotlightPageModel.create() + .withItem(Ingredient.of(Items.ANVIL)) + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()); + + this.context().page("ritual_chalks"); + var ritualChalks = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/repair_chalks")); + + this.context().page("ritual_chalks"); + var ritualMiners = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/repair_miners")); + + this.context().page("ritual_chalks"); + var ritualTools = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/repair_tools")); + + this.context().page("ritual_chalks"); + var ritualArmors = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/repair_armors")); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(OccultismItems.REPAIR_ICON) + .withLocation(entryMap.get(icon)) + .withPages( + spotlight, + ritualChalks, + ritualMiners, + ritualTools, + ritualArmors + ); + } } diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/FamiliarRitualsCategory.java b/src/main/java/com/klikli_dev/occultism/datagen/book/FamiliarRitualsCategory.java index 3bf622f7b..b7c2e0694 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/book/FamiliarRitualsCategory.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/FamiliarRitualsCategory.java @@ -5,12 +5,14 @@ import com.klikli_dev.modonomicon.api.datagen.book.BookEntryModel; import com.klikli_dev.modonomicon.api.datagen.book.BookEntryParentModel; import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.condition.BookEntryReadConditionModel; import com.klikli_dev.modonomicon.api.datagen.book.condition.BookTrueConditionModel; import com.klikli_dev.modonomicon.api.datagen.book.page.BookEntityPageModel; import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; import com.klikli_dev.occultism.datagen.OccultismBookProvider; import com.klikli_dev.occultism.datagen.book.familiar_rituals.DemonicPartnerEntry; import com.klikli_dev.occultism.datagen.book.familiar_rituals.ResurrectionEntry; +import com.klikli_dev.occultism.datagen.book.pentacles.*; import com.klikli_dev.occultism.integration.modonomicon.pages.BookRitualRecipePageModel; public class FamiliarRitualsCategory extends CategoryProvider { @@ -24,89 +26,93 @@ public FamiliarRitualsCategory(OccultismBookProvider parent) { @Override public String[] generateEntryMap() { return new String[]{ - "________R_T_V_X____________", + "________J_O__Y_____________", "___________________________", - "_____a_Q_S_U_W_Z___________", + "_____a_X_S_L_M_T___________", "___________________________", - "___r_o___________H_________", + "___r_o___________Z_________", "___________________________", - "_______I_K_M_O_Y___________", + "_____H_W_K_N_Q_P___________", "___________________________", - "________J_L_N_P____________" + "________R_U_V_I____________" }; } @Override protected void generateEntries() { + String possessFoliotID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + PossessFoliotEntry.ENTRY_ID; + String possessDjinniID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + PossessDjinniEntry.ENTRY_ID; + String summonDjinniID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + SummonDjinniEntry.ENTRY_ID; + String possessAfritID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + PossessAfritEntry.ENTRY_ID; + String resurrectionID = this.modId() + ":" + PentaclesCategory.CATEGORY_ID + "/" + ResurrectSpiritEntry.ENTRY_ID; + var overview = this.add(this.makeFamiliarsRitualsOverviewEntry(this.entryMap, 'o')); + overview.withCondition(BookEntryReadConditionModel.create().withEntry(possessFoliotID)); var returnToRituals = this.add(this.makeReturnToRitualsEntry(this.entryMap, 'r')); - returnToRituals.withParent(BookEntryParentModel.create(overview.getId())); - returnToRituals.withCondition(BookTrueConditionModel.create()); + returnToRituals.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessFoliotID)); var resurrection = new ResurrectionEntry(this).generate('a'); - resurrection.withParent(BookEntryParentModel.create(overview.getId())); + resurrection.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(resurrectionID)); + var resurrectAllay = this.add(this.makeResurrectAllayEntry(this.entryMap, 'H')); + resurrectAllay.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(resurrectionID)); var familiarBat = this.add(this.makeFamiliarBatEntry(this.entryMap, 'I')); - familiarBat.withParent(BookEntryParentModel.create(overview.getId())); + familiarBat.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessDjinniID)); var familiarBeaver = this.add(this.makeFamiliarBeaverEntry(this.entryMap, 'J')); - familiarBeaver.withParent(BookEntryParentModel.create(overview.getId())); + familiarBeaver.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessFoliotID)); var familiarBeholder = this.add(this.makeFamiliarBeholderEntry(this.entryMap, 'K')); - familiarBeholder.withParent(BookEntryParentModel.create(overview.getId())); + familiarBeholder.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessDjinniID)); var familiarBlacksmith = this.add(this.makeFamiliarBlacksmithEntry(this.entryMap, 'L')); - familiarBlacksmith.withParent(BookEntryParentModel.create(overview.getId())); + familiarBlacksmith.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessFoliotID)); var familiarChimera = this.add(this.makeFamiliarChimeraEntry(this.entryMap, 'M')); - familiarChimera.withParent(BookEntryParentModel.create(overview.getId())); + familiarChimera.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessDjinniID)); var familiarCthulhu = this.add(this.makeFamiliarCthulhuEntry(this.entryMap, 'N')); - familiarCthulhu.withParent(BookEntryParentModel.create(overview.getId())); + familiarCthulhu.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessDjinniID)); var familiarDeer = this.add(this.makeFamiliarDeerEntry(this.entryMap, 'O')); - familiarDeer.withParent(BookEntryParentModel.create(overview.getId())); + familiarDeer.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessFoliotID)); var familiarDevil = this.add(this.makeFamiliarDevilEntry(this.entryMap, 'P')); - familiarDevil.withParent(BookEntryParentModel.create(overview.getId())); + familiarDevil.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessDjinniID)); var familiarDragon = this.add(this.makeFamiliarDragonEntry(this.entryMap, 'Q')); - familiarDragon.withParent(BookEntryParentModel.create(overview.getId())); + familiarDragon.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessDjinniID)); var familiarFairy = this.add(this.makeFamiliarFairyEntry(this.entryMap, 'R')); - familiarFairy.withParent(BookEntryParentModel.create(overview.getId())); + familiarFairy.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessDjinniID)); var familiarGreedy = this.add(this.makeFamiliarGreedyEntry(this.entryMap, 'S')); - familiarGreedy.withParent(BookEntryParentModel.create(overview.getId())); + familiarGreedy.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessFoliotID)); var familiarGuardian = this.add(this.makeFamiliarGuardianEntry(this.entryMap, 'T')); - familiarGuardian.withParent(BookEntryParentModel.create(overview.getId())); + familiarGuardian.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessAfritID)); var familiarHeadlessRatman = this.add(this.makeFamiliarHeadlessRatmanEntry(this.entryMap, 'U')); - familiarHeadlessRatman.withParent(BookEntryParentModel.create(overview.getId())); + familiarHeadlessRatman.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessDjinniID)); var familiarMummy = this.add(this.makeFamiliarMummyEntry(this.entryMap, 'V')); - familiarMummy.withParent(BookEntryParentModel.create(overview.getId())); + familiarMummy.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessDjinniID)); var familiarOtherworldBird = this.add(this.makeFamiliarOtherworldBirdEntry(this.entryMap, 'W')); - familiarOtherworldBird.withParent(BookEntryParentModel.create(overview.getId())); + familiarOtherworldBird.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessDjinniID)); var familiarParrot = this.add(this.makeFamiliarParrotEntry(this.entryMap, 'X')); - familiarParrot.withParent(BookEntryParentModel.create(overview.getId())); + familiarParrot.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessFoliotID)); var familiarShubNiggurath = this.add(this.makeFamiliarShubNiggurathEntry(this.entryMap, 'Y')); - familiarShubNiggurath.withParent(BookEntryParentModel.create(overview.getId())); - var summonAllay = this.add(this.makeSummonAllayEntry(this.entryMap, 'H')); - summonAllay.withParent(BookEntryParentModel.create(overview.getId())); - - //add true condition to all entries to enable them by default - overview.withCondition(BookTrueConditionModel.create()); - familiarBat.withCondition(BookTrueConditionModel.create()); - familiarBeaver.withCondition(BookTrueConditionModel.create()); - familiarBeholder.withCondition(BookTrueConditionModel.create()); - familiarBlacksmith.withCondition(BookTrueConditionModel.create()); - familiarChimera.withCondition(BookTrueConditionModel.create()); - familiarCthulhu.withCondition(BookTrueConditionModel.create()); - familiarDeer.withCondition(BookTrueConditionModel.create()); - familiarDevil.withCondition(BookTrueConditionModel.create()); - familiarDragon.withCondition(BookTrueConditionModel.create()); - familiarFairy.withCondition(BookTrueConditionModel.create()); - familiarGreedy.withCondition(BookTrueConditionModel.create()); - familiarGuardian.withCondition(BookTrueConditionModel.create()); - familiarHeadlessRatman.withCondition(BookTrueConditionModel.create()); - familiarMummy.withCondition(BookTrueConditionModel.create()); - familiarOtherworldBird.withCondition(BookTrueConditionModel.create()); - familiarParrot.withCondition(BookTrueConditionModel.create()); - familiarShubNiggurath.withCondition(BookTrueConditionModel.create()); - summonAllay.withCondition(BookTrueConditionModel.create()); + familiarShubNiggurath.withParent(BookEntryParentModel.create(familiarChimera.getId())); var demonicPartner = new DemonicPartnerEntry(this).generate('Z'); - demonicPartner.withParent(BookEntryParentModel.create(overview.getId())); - demonicPartner.withCondition(BookTrueConditionModel.create()); + demonicPartner.withParent(BookEntryParentModel.create(overview.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(summonDjinniID)); } @Override @@ -116,7 +122,7 @@ protected String categoryName() { @Override protected BookIconModel categoryIcon() { - return BookIconModel.create(this.modLoc("textures/gui/book/parrot.png")); + return BookIconModel.create(this.modLoc("textures/gui/book/familiar.png")); } @Override @@ -143,7 +149,7 @@ private BookEntryModel makeFamiliarsRitualsOverviewEntry(CategoryEntryMap entryM .withText(this.context().pageText()); return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) - .withIcon(this.modLoc("textures/gui/book/parrot.png")) + .withIcon(this.modLoc("textures/gui/book/familiar.png")) .withLocation(entryMap.get(icon)) .withEntryBackground(0, 1) .withPages( @@ -656,8 +662,8 @@ private BookEntryModel makeFamiliarShubNiggurathEntry(CategoryEntryMap entryMap, ); } - private BookEntryModel makeSummonAllayEntry(CategoryEntryMap entryMap, char icon) { - this.context().entry("summon_allay"); + private BookEntryModel makeResurrectAllayEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("resurrect_allay"); this.context().page("entity"); var entity = BookEntityPageModel.create() @@ -666,7 +672,7 @@ private BookEntryModel makeSummonAllayEntry(CategoryEntryMap entryMap, char icon this.context().page("ritual"); var ritual = BookRitualRecipePageModel.create() - .withRecipeId1(this.modLoc("ritual/summon_allay")); + .withRecipeId1(this.modLoc("ritual/resurrect_allay")); this.context().page("description"); var description = BookTextPageModel.create() diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/GettingStartedCategory.java b/src/main/java/com/klikli_dev/occultism/datagen/book/GettingStartedCategory.java index 0c8c9f3cc..bd0df8a81 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/book/GettingStartedCategory.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/GettingStartedCategory.java @@ -6,6 +6,7 @@ import com.klikli_dev.modonomicon.api.datagen.book.BookEntryModel; import com.klikli_dev.modonomicon.api.datagen.book.BookEntryParentModel; import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.condition.BookAdvancementConditionModel; import com.klikli_dev.modonomicon.api.datagen.book.condition.BookAndConditionModel; import com.klikli_dev.modonomicon.api.datagen.book.condition.BookEntryReadConditionModel; import com.klikli_dev.modonomicon.api.datagen.book.condition.BookModLoadedConditionModel; @@ -119,7 +120,8 @@ protected void generateEntries() { advancedChalksEntry.withParent(BookEntryParentModel.create(ritualEntry.getId())); var ritualSatchelsEntry = this.add(new RitualSatchelsEntry(this).generate('ĝ')); - ritualSatchelsEntry.withParent(BookEntryParentModel.create(advancedChalksEntry.getId())); + ritualSatchelsEntry.withParent(BookEntryParentModel.create(advancedChalksEntry.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/purple")); var moreRitualsEntry = this.add(this.makeMoreRitualsEntry(this.entryMap, 'm')); moreRitualsEntry.withParent(BookEntryParentModel.create(advancedChalksEntry.getId())); @@ -131,7 +133,8 @@ protected void generateEntries() { spiritsSubcategory.withParent(BookEntryParentModel.create(greyParticlesEntry.getId())); var otherworldGoggles = this.add(this.makeOtherworldGogglesEntry(this.entryMap, 'g')); - otherworldGoggles.withParent(BookEntryParentModel.create(advancedChalksEntry.getId())); + otherworldGoggles.withParent(BookEntryParentModel.create(advancedChalksEntry.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/purple")); var infusedPickaxe = this.add(this.makeInfusedPickaxeEntry(this.entryMap, 'I')); infusedPickaxe.withParent(BookEntryParentModel.create(otherworldGoggles.getId())); @@ -152,19 +155,24 @@ protected void generateEntries() { mineshaftEntry.withParent(BookEntryParentModel.create(spiritMinersEntry.getId())); var storageEntry = this.add(this.makeStorageEntry(this.entryMap, 's')); - storageEntry.withParent(BookEntryParentModel.create(advancedChalksEntry.getId())); + storageEntry.withParent(BookEntryParentModel.create(advancedChalksEntry.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/purple")); var possessionRitualsEntry = this.add(this.makePossessionRitualsEntry(this.entryMap, 'w')); - possessionRitualsEntry.withParent(BookEntryParentModel.create(moreRitualsEntry.getId())); + possessionRitualsEntry.withParent(BookEntryParentModel.create(moreRitualsEntry.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/yellow")); var familiarRitualsEntry = this.add(this.makeFamiliarRitualsEntry(this.entryMap, 'x')); - familiarRitualsEntry.withParent(BookEntryParentModel.create(moreRitualsEntry.getId())); + familiarRitualsEntry.withParent(BookEntryParentModel.create(moreRitualsEntry.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/yellow")); var summoningRitualsEntry = this.add(this.makeSummoningRitualsEntry(this.entryMap, 'y')); - summoningRitualsEntry.withParent(BookEntryParentModel.create(moreRitualsEntry.getId())); + summoningRitualsEntry.withParent(BookEntryParentModel.create(moreRitualsEntry.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/white")); var craftingRitualsEntry = this.add(this.makeCraftingRitualsEntry(this.entryMap, 'z')); - craftingRitualsEntry.withParent(BookEntryParentModel.create(moreRitualsEntry.getId())); + craftingRitualsEntry.withParent(BookEntryParentModel.create(moreRitualsEntry.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/purple")); } @Override @@ -1326,13 +1334,35 @@ Now it is time to place the ingredients you see on the next page in the (regular - **0** if no ritual is active - **1** if the ritual is active, but waiting for a sacrifice - **2** if the ritual is active, but waiting for an item to be used - - **4** if the ritual is active and running + - **8** if the ritual is active and running """.formatted(COLOR_PURPLE)); + this.context().page("clone_redstone"); + var cloneRedstoneText = BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()); + this.lang().add(this.context().pageTitle(), "All sides blocked?"); + this.lang().add(this.context().pageText(), + """ + You can place another [](item://occultism:golden_sacrificial_bowl) in the third block below the + original [](item://occultism:golden_sacrificial_bowl). Every time this new bowl receives an + block update, it clones the actual signal strength of the original bowl. + """.formatted(COLOR_PURPLE)); + + this.context().page("clone_placement"); + var clonePlacementImage = BookImagePageModel.create() + .withImages(this.modLoc("textures/gui/book/redstone_clone.png")) + .withBorder(true) + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + One suggestion is to use any block that interacts with redstone and an observer. + """.formatted(COLOR_PURPLE)); + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) .withDescription(this.context().entryDescription()) - .withIcon(OccultismItems.PENTACLE.get()) + .withIcon(OccultismItems.PENTACLE_SUMMON.get()) .withLocation(entryMap.get(icon)) .withPages( intro, @@ -1344,7 +1374,9 @@ Now it is time to place the ingredients you see on the next page in the (regular pentacleLinkHint, startRitualText, automationText, - redstoneText + redstoneText, + cloneRedstoneText, + clonePlacementImage ); } @@ -1443,136 +1475,24 @@ private BookEntryModel makeChalksEntry(CategoryEntryMap entryMap, char icon) { For more advanced rituals the basic [White Chalk](entry://occultism:dictionary_of_spirits/getting_started/ritual_prep_chalk) is not sufficient. Instead chalks made from more arcane materials are required. """); - this.context().page("impure_gold_chalk_recipe"); - var impureGoldChalkRecipe = BookCraftingRecipePageModel.create() - .withRecipeId1(this.modLoc("crafting/chalk_gold_impure")); - //no text - - this.context().page("gold_chalk_recipe"); - var goldChalkRecipe = BookSpiritFireRecipePageModel.create() - .withRecipeId1(this.modLoc("spirit_fire/chalk_gold")); - //no text - - this.context().page("impure_purple_chalk_recipe"); - var impurePurpleChalkRecipe = BookCraftingRecipePageModel.create() - .withRecipeId1(this.modLoc("crafting/chalk_purple_impure")) - .withText(this.context().pageText()); - this.lang().add(this.context().pageText(), - """ - You do not need to visit the [#](%1$s)The End[#]() to obtain Endstone. You can summon a [Possessed Endermite](entry://possession_rituals/possess_endermite) which has a high chance to drop it. - """.formatted(COLOR_PURPLE)); - - this.context().page("purple_chalk_recipe"); - var purpleChalkRecipe = BookSpiritFireRecipePageModel.create() - .withRecipeId1(this.modLoc("spirit_fire/chalk_purple")); - //no text - - this.context().page("impure_red_chalk_recipe"); - var impureRedChalkRecipe = BookCraftingRecipePageModel.create() - .withRecipeId1(this.modLoc("crafting/chalk_red_impure")); - //no text - - this.context().page("red_chalk_recipe"); - var redChalkRecipe = BookSpiritFireRecipePageModel.create() - .withRecipeId1(this.modLoc("spirit_fire/chalk_red")); - //no text - - this.context().page("afrit_essence"); - var afritEssenceSpotlight = BookSpotlightPageModel.create() - .withItem(Ingredient.of(OccultismItems.AFRIT_ESSENCE.get())) - .withText(this.context().pageText()); - this.lang().add(this.context().pageText(), - """ - To obtain the essence of an [#](%1$s)Afrit[#]() for [](item://occultism:chalk_red) you need to [summon and kill an Unbound Afrit](entry://summoning_rituals/afrit_essence). - """.formatted(COLOR_PURPLE)); - - this.context().page("decoColors"); - var decoColors = BookTextPageModel.create() + this.context().page("more"); + var more = BookTextPageModel.create() .withTitle(this.context().pageTitle()) .withText(this.context().pageText()); - this.lang().add(this.context().pageTitle(), "Decorative Chalks"); + this.lang().add(this.context().pageTitle(), "Pentacle Category"); this.lang().add(this.context().pageText(), """ - Other colored chalks (for now) only have decorative purposes, you can check the recipes in next pages. All needs to be purified in spirit fire. - """); + Follow the progression in [Pentacle page](category://pentacles) to get the 16 chalks and do all pentacles, + """); - this.context().page("impure_light_gray_chalk_recipe"); - var impureLightGrayChalkRecipe = BookCraftingRecipePageModel.create() - .withRecipeId1(this.modLoc("crafting/chalk_light_gray_impure")); - //no text - - this.context().page("impure_gray_chalk_recipe"); - var impureGrayChalkRecipe = BookCraftingRecipePageModel.create() - .withRecipeId1(this.modLoc("crafting/chalk_gray_impure")); - //no text - - this.context().page("impure_Black_chalk_recipe"); - var impureBlackChalkRecipe = BookCraftingRecipePageModel.create() - .withRecipeId1(this.modLoc("crafting/chalk_black_impure")); - //no text - - this.context().page("impure_brown_chalk_recipe"); - var impureBrownChalkRecipe = BookCraftingRecipePageModel.create() - .withRecipeId1(this.modLoc("crafting/chalk_brown_impure")); - //no text - this.context().page("impure_orange_chalk_recipe"); - var impureOrangeChalkRecipe = BookCraftingRecipePageModel.create() - .withRecipeId1(this.modLoc("crafting/chalk_orange_impure")); - //no text - this.context().page("impure_lime_chalk_recipe"); - var impureLimeChalkRecipe = BookCraftingRecipePageModel.create() - .withRecipeId1(this.modLoc("crafting/chalk_lime_impure")); - //no text - this.context().page("impure_green_chalk_recipe"); - var impureGreenChalkRecipe = BookCraftingRecipePageModel.create() - .withRecipeId1(this.modLoc("crafting/chalk_green_impure")); - //no text - this.context().page("impure_cyan_chalk_recipe"); - var impureCyanChalkRecipe = BookCraftingRecipePageModel.create() - .withRecipeId1(this.modLoc("crafting/chalk_cyan_impure")); - //no text - this.context().page("impure_blue_chalk_recipe"); - var impureBlueChalkRecipe = BookCraftingRecipePageModel.create() - .withRecipeId1(this.modLoc("crafting/chalk_blue_impure")); - //no text - this.context().page("impure_light_blue_chalk_recipe"); - var impureLightBlueChalkRecipe = BookCraftingRecipePageModel.create() - .withRecipeId1(this.modLoc("crafting/chalk_light_blue_impure")); - //no text - this.context().page("impure_pink_chalk_recipe"); - var impurePinkChalkRecipe = BookCraftingRecipePageModel.create() - .withRecipeId1(this.modLoc("crafting/chalk_pink_impure")); - //no text - this.context().page("impure_magenta_chalk_recipe"); - var impureMagentaChalkRecipe = BookCraftingRecipePageModel.create() - .withRecipeId1(this.modLoc("crafting/chalk_magenta_impure")); //no text return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) .withDescription(this.context().entryDescription()) - .withIcon(OccultismItems.CHALK_GOLD.get()) + .withIcon(OccultismItems.CHALK_YELLOW.get()) .withLocation(entryMap.get(icon)) .withPages( intro, - impureGoldChalkRecipe, - goldChalkRecipe, - impurePurpleChalkRecipe, - purpleChalkRecipe, - impureRedChalkRecipe, - redChalkRecipe, - afritEssenceSpotlight, - decoColors, - impureLightGrayChalkRecipe, - impureGrayChalkRecipe, - impureBlackChalkRecipe, - impureBrownChalkRecipe, - impureOrangeChalkRecipe, - impureLimeChalkRecipe, - impureGreenChalkRecipe, - impureCyanChalkRecipe, - impureBlueChalkRecipe, - impureLightBlueChalkRecipe, - impurePinkChalkRecipe, - impureMagentaChalkRecipe + more ); } @@ -1957,7 +1877,7 @@ private BookEntryModel makeFamiliarRitualsEntry(CategoryEntryMap entryMap, char return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) .withDescription(this.context().entryDescription()) - .withIcon(this.modLoc("textures/gui/book/parrot.png")) + .withIcon(this.modLoc("textures/gui/book/familiar.png")) .withLocation(entryMap.get(icon)) .withEntryBackground(1, 1) //silver background and wavey entry shape .withPages( diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/PentaclesCategory.java b/src/main/java/com/klikli_dev/occultism/datagen/book/PentaclesCategory.java new file mode 100644 index 000000000..dd40705ac --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/PentaclesCategory.java @@ -0,0 +1,225 @@ +package com.klikli_dev.occultism.datagen.book; + +import com.klikli_dev.modonomicon.api.datagen.book.BookEntryParentModel; +import com.klikli_dev.modonomicon.api.datagen.book.condition.BookAdvancementConditionModel; +import com.klikli_dev.modonomicon.api.datagen.book.condition.BookAndConditionModel; +import com.klikli_dev.modonomicon.api.datagen.book.condition.BookEntryReadConditionModel; +import com.klikli_dev.occultism.datagen.OccultismBookProvider; +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.occultism.datagen.book.pentacles.*; + +public class PentaclesCategory extends CategoryProvider { + public static final String CATEGORY_ID = "pentacles"; + public PentaclesCategory(OccultismBookProvider parent) { + super(parent); + } + @Override + protected String categoryName() { + return "Pentacles"; + } + @Override + protected BookIconModel categoryIcon() { + return BookIconModel.create(this.modLoc("textures/gui/book/pentacle.png")); + } + @Override + public String categoryId() { + return CATEGORY_ID; + } + + @Override + public String[] generateEntryMap() { + return new String[]{ + "_______W__S__G_____K_____", + "_________________________", + "____t__a__b__c__d__u__e__", + "_r_______________________", + "____Y__f__g__h__i_____j__", + "_s_______________________", + "____X__l__m_____n_____o__", + "_________________________", + "__________L__O__R_____U__", + "_________________________", + "____________EAP______MBC_", + "_________________________", + "_______k_____p________q__" + }; + } + + @Override + protected void generateEntries(){ + //Introduction + var overviewEntry = this.add(new PentaclesOverviewEntry(this).generate( 'r')); + + var paraphernaliaEntry = this.add(new ParaphernaliaEntry(this).generate('s')); + paraphernaliaEntry.withParent(BookEntryParentModel.create(overviewEntry.getId()).withLineReversed(true)); + + var didacticsEntry = this.add(new DidacticsEntry(this).generate('t')); + didacticsEntry.withParent(BookEntryParentModel.create(overviewEntry.getId()).withLineReversed(true)); + + //Tier Foliot + var whiteChalkEntry = this.add(new WhiteChalkEntry(this).generate('W')); + whiteChalkEntry.withParent(BookEntryParentModel.create(didacticsEntry.getId()).withLineReversed(true)) + .withCondition(BookEntryReadConditionModel.create().withEntry(didacticsEntry.getId())); + + var summonFoliot = this.add(new SummonFoliotEntry(this).generate('a')); + summonFoliot.withParent(BookEntryParentModel.create(didacticsEntry.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/white")); + + var lightGrayChalkEntry = this.add(new LightGrayChalkEntry(this).generate('S')); + lightGrayChalkEntry.withParent(BookEntryParentModel.create(whiteChalkEntry.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(summonFoliot.getId())); + + var yellowChalkEntry = this.add(new YellowChalkEntry(this).generate('Y')); + yellowChalkEntry + .withParents( + BookEntryParentModel.create(didacticsEntry.getId()), + BookEntryParentModel.create(whiteChalkEntry.getId()).withLineEnabled(false)) + .withCondition(BookEntryReadConditionModel.create().withEntry(summonFoliot.getId())); + + var possessFoliot = this.add(new PossessFoliotEntry(this).generate('f')); + possessFoliot.withParent(BookEntryParentModel.create(yellowChalkEntry.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/yellow")); + + var purpleChalkEntry = this.add(new PurpleChalkEntry(this).generate('X')); + purpleChalkEntry.withParent(BookEntryParentModel.create(yellowChalkEntry.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessFoliot.getId())); + + var craftFoliot = this.add(new CraftFoliotEntry(this).generate('l')); + craftFoliot.withParent(BookEntryParentModel.create(purpleChalkEntry.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/purple")); + + var limeChalkEntry = this.add(new LimeChalkEntry(this).generate('L')); + limeChalkEntry.withParent(BookEntryParentModel.create(purpleChalkEntry.getId()).withLineReversed(true)) + .withCondition(BookEntryReadConditionModel.create().withEntry(craftFoliot.getId())); + + var greenChalkEntry = this.add(new GreenChalkEntry(this).generate('E')); + greenChalkEntry.withParent(BookEntryParentModel.create(craftFoliot.getId()).withLineEnabled(false)); + + var resurrectSpirit = this.add(new ResurrectSpiritEntry(this).generate('k')); + resurrectSpirit + .withParent(BookEntryParentModel.create(possessFoliot.getId()).withLineEnabled(false)) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessFoliot.getId())); + + //Tier Djinni + var summonDjinni = this.add(new SummonDjinniEntry(this).generate('b')); + summonDjinni.withParent(BookEntryParentModel.create(summonFoliot.getId())) + .withCondition(BookAndConditionModel.create().withChildren( + BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/light_gray"), + BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/lime"))); + + var lightBlueChalkEntry = this.add(new LightBlueChalkEntry(this).generate('A')); + lightBlueChalkEntry.withParent(BookEntryParentModel.create(summonDjinni.getId()).withLineEnabled(false)) + .withCondition(BookEntryReadConditionModel.create().withEntry(summonDjinni.getId())); + + var possessDjinni = this.add(new PossessDjinniEntry(this).generate('g')); + possessDjinni.withParent(BookEntryParentModel.create(possessFoliot.getId())) + .withCondition(BookAndConditionModel.create().withChildren( + BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/light_gray"), + BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/lime"))); + + var orangeChalkEntry = this.add(new OrangeChalkEntry(this).generate('O')); + orangeChalkEntry.withParent(BookEntryParentModel.create(limeChalkEntry.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(possessDjinni.getId())); + + var craftDjinni = this.add(new CraftDjinniEntry(this).generate('m')); + craftDjinni.withParent(BookEntryParentModel.create(craftFoliot.getId())) + .withCondition(BookAndConditionModel.create().withChildren( + BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/light_gray"), + BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/lime"))); + + var grayChalkEntry = this.add(new GrayChalkEntry(this).generate('G')); + grayChalkEntry.withParent(BookEntryParentModel.create(lightGrayChalkEntry.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(craftDjinni.getId())); + + //Tier Unbound Afrit + var summonUnboundAfrit = this.add(new SummonUnboundAfritEntry(this).generate('c')); + summonUnboundAfrit.withParent(BookEntryParentModel.create(summonDjinni.getId())) + .withCondition(BookAndConditionModel.create().withChildren( + BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/gray"), + BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/orange"))); + + var redChalkEntry = this.add(new RedChalkEntry(this).generate('R')); + redChalkEntry.withParent(BookEntryParentModel.create(orangeChalkEntry.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(summonUnboundAfrit.getId())); + + var possessUnboundAfrit = this.add(new PossessUnboundAfritEntry(this).generate('h')); + possessUnboundAfrit.withParent(BookEntryParentModel.create(possessDjinni.getId())) + .withCondition(BookAndConditionModel.create().withChildren( + BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/gray"), + BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/orange"))); + + var pinkChalkEntry = this.add(new PinkChalkEntry(this).generate('P')); + pinkChalkEntry.withParent(BookEntryParentModel.create(possessUnboundAfrit.getId()).withLineEnabled(false)); + + var contactWildSpirit = this.add(new ContactWildSpiritEntry(this).generate('p')); + contactWildSpirit + .withParents( + BookEntryParentModel.create(pinkChalkEntry.getId()).withLineReversed(true), + BookEntryParentModel.create(greenChalkEntry.getId()).withLineReversed(true), + BookEntryParentModel.create(lightBlueChalkEntry.getId())) + .withCondition(BookAndConditionModel.create().withChildren( + BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/pink"), + BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/green"), + BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/light_blue"))); + + //Tier Afrit + var summonAfrit = this.add(new SummonAfritEntry(this).generate('d')); + summonAfrit.withParent(BookEntryParentModel.create(summonUnboundAfrit.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/red")); + + var possessAfrit = this.add(new PossessAfritEntry(this).generate('i')); + possessAfrit.withParent(BookEntryParentModel.create(possessUnboundAfrit.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/red")); + + var craftAfrit = this.add(new CraftAfritEntry(this).generate('n')); + craftAfrit.withParent(BookEntryParentModel.create(craftDjinni.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/red")); + + var blackChalkEntry = this.add(new BlackChalkEntry(this).generate('K')); + blackChalkEntry.withParent(BookEntryParentModel.create(grayChalkEntry.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(craftAfrit.getId())); + + //Tier Marid + var summonUnboundMarid = this.add(new SummonUnboundMaridEntry(this).generate('u')); + summonUnboundMarid.withParent(BookEntryParentModel.create(summonAfrit.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/black")); + + var blueChalkEntry = this.add(new BlueChalkEntry(this).generate('U')); + blueChalkEntry.withParent(BookEntryParentModel.create(redChalkEntry.getId())) + .withCondition(BookEntryReadConditionModel.create().withEntry(summonUnboundMarid.getId())); + + var summonMarid = this.add(new SummonMaridEntry(this).generate('e')); + summonMarid.withParent(BookEntryParentModel.create(summonUnboundMarid.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/blue")); + + var cyanChalkEntry = this.add(new CyanChalkEntry(this).generate('C')); + cyanChalkEntry.withParent(BookEntryParentModel.create(summonMarid.getId()).withLineEnabled(false)); + + var possessMarid = this.add(new PossessMaridEntry(this).generate('j')); + possessMarid.withParent(BookEntryParentModel.create(possessAfrit.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/blue")); + + var brownChalkEntry = this.add(new BrownChalkEntry(this).generate('B')); + brownChalkEntry.withParent(BookEntryParentModel.create(possessMarid.getId()).withLineEnabled(false)); + + var craftMarid = this.add(new CraftMaridEntry(this).generate('o')); + craftMarid.withParent(BookEntryParentModel.create(craftAfrit.getId())) + .withCondition(BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/blue")); + + var magentaChalkEntry = this.add(new MagentaChalkEntry(this).generate('M')); + magentaChalkEntry.withParent(BookEntryParentModel.create(craftMarid.getId()).withLineEnabled(false)); + + var contactEldritch = this.add(new ContactEldritchSpiritEntry(this).generate('q')); + contactEldritch + .withParents( + BookEntryParentModel.create(magentaChalkEntry.getId()).withLineReversed(true), + BookEntryParentModel.create(brownChalkEntry.getId()), + BookEntryParentModel.create(cyanChalkEntry.getId()).withLineReversed(true)) + .withCondition(BookAndConditionModel.create().withChildren( + BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/magenta"), + BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/brown"), + BookAdvancementConditionModel.create().withAdvancementId("occultism:chalks/cyan"))) + .hideWhileLocked(true); + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/BlackChalkEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/BlackChalkEntry.java new file mode 100644 index 000000000..11f2aaf5b --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/BlackChalkEntry.java @@ -0,0 +1,86 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookCraftingRecipePageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookSpotlightPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookRitualRecipePageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritFireRecipePageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.world.item.crafting.Ingredient; + +public class BlackChalkEntry extends EntryProvider { + + public static final String ENTRY_ID = "black_chalk"; + + + public BlackChalkEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("lore", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Powerful"); + this.pageText(""" + The black chalk has a composition as rigid as it is supernatural. Mixing the essence of + Wither with netherite turns this chalk into an extremely valuable tool. + """ + ); + + this.page("spotlight", () -> BookSpotlightPageModel.create() + .withItem(Ingredient.of(OccultismItems.CHALK_BLACK.get())) + .withText(this.context().pageText())); + this.pageText(""" + Perfect for the foundation of any pentacle, the power of the black chalk is sufficient + to replace any other "colorless" chalk. + """ + ); + + this.page("ritual", () -> BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/craft_witherite_dust")) + ); + + this.page("recipe_impure", () -> BookCraftingRecipePageModel.create() + .withRecipeId1(this.modLoc("crafting/chalk_black_impure")) + ); + + this.page("recipe", () -> BookSpiritFireRecipePageModel.create() + .withRecipeId1(this.modLoc("spirit_fire/chalk_black")) + ); + + } + + @Override + protected String entryName() { + return "Perfect Foundation Chalk"; + } + + @Override + protected String entryDescription() { + return "Black Chalk"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.CHALK_BLACK.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/BlueChalkEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/BlueChalkEntry.java new file mode 100644 index 000000000..490adeb58 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/BlueChalkEntry.java @@ -0,0 +1,82 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookCraftingRecipePageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookSpotlightPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritFireRecipePageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.world.item.crafting.Ingredient; + +public class BlueChalkEntry extends EntryProvider { + + public static final String ENTRY_ID = "blue_chalk"; + + + public BlueChalkEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("lore", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Marid Lure"); + this.pageText(""" + Just as the red chalk is made from the essence of Afrit, the blue chalk is made + from the essence of Marid, allowing for control over these powerful spirits. + """ + ); + + this.page("spotlight", () -> BookSpotlightPageModel.create() + .withItem(Ingredient.of(OccultismItems.CHALK_BLUE.get())) + .withText(this.context().pageText())); + this.pageText(""" + The purpose of the blue chalk is to overcome the willpower of a Marid; its sometimes + excessive use serves as a guarantee that any Marid will be controlled. + Should the control fail, it would generate extreme fury in the invoked Marid. + """ + ); + + this.page("recipe_impure", () -> BookCraftingRecipePageModel.create() + .withRecipeId1(this.modLoc("crafting/chalk_blue_impure")) + ); + + this.page("recipe", () -> BookSpiritFireRecipePageModel.create() + .withRecipeId1(this.modLoc("spirit_fire/chalk_blue")) + ); + + } + + @Override + protected String entryName() { + return "The Chalk of The Seven Seas"; + } + + @Override + protected String entryDescription() { + return "Blue Chalk"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.CHALK_BLUE.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/BrownChalkEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/BrownChalkEntry.java new file mode 100644 index 000000000..28317ed70 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/BrownChalkEntry.java @@ -0,0 +1,81 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookCraftingRecipePageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookSpotlightPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritFireRecipePageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.world.item.crafting.Ingredient; + +public class BrownChalkEntry extends EntryProvider { + + public static final String ENTRY_ID = "brown_chalk"; + + + public BrownChalkEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("lore", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Very Evil"); + this.pageText(""" + The brown chalk is made with the essence of cruelty, and obtaining it certainly lives up + to its name. Do the ends justify the means? Does morality truly exist? What is your morality? + """ + ); + + this.page("spotlight", () -> BookSpotlightPageModel.create() + .withItem(Ingredient.of(OccultismItems.CHALK_BROWN.get())) + .withText(this.context().pageText())); + this.pageText(""" + This chalk is known to be part of an "Alignment Test." Anyone who possesses it is + automatically classified as "Evil." What kind of spirits will these glyphs attract? + """ + ); + + this.page("recipe_impure", () -> BookCraftingRecipePageModel.create() + .withRecipeId1(this.modLoc("crafting/chalk_brown_impure")) + ); + + this.page("recipe", () -> BookSpiritFireRecipePageModel.create() + .withRecipeId1(this.modLoc("spirit_fire/chalk_brown")) + ); + + } + + @Override + protected String entryName() { + return "The Cruelty Chalk"; + } + + @Override + protected String entryDescription() { + return "Brown Chalk"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.CHALK_BROWN.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/ContactEldritchSpiritEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/ContactEldritchSpiritEntry.java new file mode 100644 index 000000000..4b3da0617 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/ContactEldritchSpiritEntry.java @@ -0,0 +1,75 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookMultiblockPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; + +public class ContactEldritchSpiritEntry extends EntryProvider { + + public static final String ENTRY_ID = "contact_eldritch_spirit"; + + public ContactEldritchSpiritEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Ronazas Contact"); + this.pageText(""" + **Purpose:** Contact {0}\\ + \\ + This is a very strange pentacle that you dont understand for now. + """, + this.color("Eldritch", ChatFormatting.DARK_PURPLE) + ); + + this.page("multiblock", () -> BookMultiblockPageModel.create().withMultiblockId(this.modLoc(ENTRY_ID))); + + this.page("uses", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Uses"); + this.pageText(""" + - [Eldritch Ancient Miner](entry://crafting_rituals/craft_ancient_miner) + """ + ); + + } + + @Override + protected String entryName() { + return "Ronaza's Contact"; + } + + @Override + protected String entryDescription() { + return "Contact Eldritch"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.PENTACLE_MISC.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/ContactWildSpiritEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/ContactWildSpiritEntry.java new file mode 100644 index 000000000..d8f37aa47 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/ContactWildSpiritEntry.java @@ -0,0 +1,88 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookMultiblockPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; + +public class ContactWildSpiritEntry extends EntryProvider { + + public static final String ENTRY_ID = "contact_wild_spirit"; + + + public ContactWildSpiritEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Osorins Unbound Calling"); + this.pageText(""" + **Purpose:** Contact {0}\\ + \\ + **Osorins Unbound Calling** has a unique form, mixing different aspects obtained in each chalk + and none of the common stabilizing paraphernalia. Therefore, the pentacle offers no protection + to the occultist, but acts as an irresistible contact with the {1}. + """, + this.color("Wild Spirits", ChatFormatting.DARK_PURPLE), + this.color("Wild Spirits", ChatFormatting.DARK_PURPLE) + ); + + this.page("multiblock", () -> BookMultiblockPageModel.create().withMultiblockId(this.modLoc(ENTRY_ID))); + + this.page("uses", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Uses"); + this.pageText(""" + - [Wither Skeleton Skull](entry://possession_rituals/wither_skull) + - [Horde Husk](entry://possession_rituals/horde_husk) + - [Horde Drowned](entry://possession_rituals/horde_drowned) + - [Horde Creeper](entry://possession_rituals/horde_creeper) + - [Horde Silverfish](entry://possession_rituals/horde_silverfish) + - [Trial Key](entry://possession_rituals/possess_weak_breeze) + - [Ominous Trial Key](entry://possession_rituals/possess_breeze) + - [Heavy Core](entry://possession_rituals/possess_strong_breeze) + - [Small Illager Invasion](entry://possession_rituals/horde_illager) + - [Wild Armor Trim Smithing Template](entry://crafting_rituals/craft_wild_trim) + """ + ); + + } + + @Override + protected String entryName() { + return "Osorin's Unbound Calling"; + } + + @Override + protected String entryDescription() { + return "Contact Wild Spirits"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.PENTACLE_MISC.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/CraftAfritEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/CraftAfritEntry.java new file mode 100644 index 000000000..e8418d12c --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/CraftAfritEntry.java @@ -0,0 +1,81 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookMultiblockPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; + +public class CraftAfritEntry extends EntryProvider { + + public static final String ENTRY_ID = "craft_afrit"; + + + public CraftAfritEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Seviras Permanent Confinement"); + this.pageText(""" + **Purpose:** Bind {0}\\ + \\ + First discovered by Grandmistress Sevira of Emberwoods, **Seviras Permanent Confinement** is used for + binding {1} into objects. Due to the power of the spirits involved, this should be performed only by advanced summoners. + + """, + this.color("Afrit", ChatFormatting.DARK_PURPLE), + this.color("Afrit", ChatFormatting.DARK_PURPLE) + ); + + this.page("multiblock", () -> BookMultiblockPageModel.create().withMultiblockId(this.modLoc(ENTRY_ID))); + + this.page("uses", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Uses"); + this.pageText(""" + - [Storage Stabilizer Tier 3](entry://crafting_rituals/craft_stabilizer_tier3) + - [Afrit Deep Ore Miner](entry://crafting_rituals/craft_afrit_miner) + - [Artisanal Ritual Satchel](entry://crafting_rituals/artisanal_ritual_satchel) + """ + ); + + } + + @Override + protected String entryName() { + return "Sevira's Permanent Confinement"; + } + + @Override + protected String entryDescription() { + return "Afrit Infusing"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.PENTACLE_CRAFT.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/CraftDjinniEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/CraftDjinniEntry.java new file mode 100644 index 000000000..0d6a55a83 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/CraftDjinniEntry.java @@ -0,0 +1,87 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookMultiblockPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; + +public class CraftDjinniEntry extends EntryProvider { + + public static final String ENTRY_ID = "craft_djinni"; + + + public CraftDjinniEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Strigeors Higher Binding"); + this.pageText(""" + **Purpose:** Bind {0}\\ + \\ + **Strigeors Higher Binding** is a pentacle for binding {1} into objects, should not be attempted by the + novice summoner. Supported by skeleton skulls and stabilized by candles it is highly suitable for + permanent infusions of objects with spirits. + """, + this.color("Djinni", ChatFormatting.DARK_PURPLE), + this.color("Djinni", ChatFormatting.DARK_PURPLE) + ); + + this.page("multiblock", () -> BookMultiblockPageModel.create().withMultiblockId(this.modLoc(ENTRY_ID))); + + this.page("uses", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Uses"); + this.pageText(""" + - [Infused Pickaxe](entry://crafting_rituals/craft_infused_pickaxe) + - [Soul Gem](entry://crafting_rituals/craft_soul_gem) + - [Familiar Ring](entry://crafting_rituals/craft_familiar_ring) + - [Dimensional Matrix](entry://crafting_rituals/craft_dimensional_matrix) + - [Storage Accessor](entry://crafting_rituals/craft_storage_remote) + - [Storage Stabilizer Tier 2](entry://crafting_rituals/craft_stabilizer_tier2) + - [Dimensional Mineshaft](entry://crafting_rituals/craft_dimensional_mineshaft) + - [Djinni Ore Miner](entry://crafting_rituals/craft_djinni_miner) + - [Apprentice Ritual Satchel](entry://crafting_rituals/apprentice_ritual_satchel) + """ + ); + + } + + @Override + protected String entryName() { + return "Strigeor's Higher Binding"; + } + + @Override + protected String entryDescription() { + return "Djinni Infusing"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.PENTACLE_CRAFT.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/CraftFoliotEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/CraftFoliotEntry.java new file mode 100644 index 000000000..1c24d4636 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/CraftFoliotEntry.java @@ -0,0 +1,84 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookMultiblockPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; + +public class CraftFoliotEntry extends EntryProvider { + + public static final String ENTRY_ID = "craft_foliot"; + + + public CraftFoliotEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Eziveus Spectral Compulsion"); + this.pageText(""" + **Purpose:** Bind {0}\\ + \\ + As a simple binding pentacle, **Eziveus Spectral Compulsion** is a common starting point for object + infusion with lower spirits. The enchantment is made permanent by stabilizing candles. + """, + this.color("Foliot", ChatFormatting.DARK_PURPLE), + this.color("Marid", ChatFormatting.DARK_PURPLE), + this.color("Marid", ChatFormatting.DARK_PURPLE) + ); + + this.page("multiblock", () -> BookMultiblockPageModel.create().withMultiblockId(this.modLoc(ENTRY_ID))); + + this.page("uses", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Uses"); + this.pageText(""" + - [Infused Lenses](entry://crafting_rituals/craft_otherworld_goggles) + - [Surprisingsly Substantial Satchel](entry://crafting_rituals/craft_satchel) + - [Storage Actuator Base](entry://crafting_rituals/craft_storage_controller_base) + - [Stable Wormhole](entry://crafting_rituals/craft_stable_wormhole) + - [Storage Stabilizer Tier 1](entry://crafting_rituals/craft_stabilizer_tier1) + - [Foliot Miner](entry://crafting_rituals/craft_foliot_miner) + """ + ); + + } + + @Override + protected String entryName() { + return "Eziveus' Spectral Compulsion"; + } + + @Override + protected String entryDescription() { + return "Foliot Infusing"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.PENTACLE_CRAFT.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/CraftMaridEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/CraftMaridEntry.java new file mode 100644 index 000000000..f78d4e4d3 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/CraftMaridEntry.java @@ -0,0 +1,80 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookMultiblockPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; + +public class CraftMaridEntry extends EntryProvider { + + public static final String ENTRY_ID = "craft_marid"; + + + public CraftMaridEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Uphyxes Inverted Tower"); + this.pageText(""" + **Purpose:** Bind {0}\\ + \\ + **Uphyxes Inverted Tower** is one of the few pentacles capable of binding {1} into objects. + Any rituals involving {2} should be performed only by the most experienced summoners. + """, + this.color("Marid", ChatFormatting.DARK_PURPLE), + this.color("Marid", ChatFormatting.DARK_PURPLE), + this.color("Marid", ChatFormatting.DARK_PURPLE) + ); + + this.page("multiblock", () -> BookMultiblockPageModel.create().withMultiblockId(this.modLoc(ENTRY_ID))); + + this.page("uses", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Uses"); + this.pageText(""" + - [Storage Stabilizer Tier 4](entry://crafting_rituals/craft_stabilizer_tier4) + - [Marid Master Miner](entry://crafting_rituals/craft_marid_miner) + """ + ); + + } + + @Override + protected String entryName() { + return "Uphyxes Inverted Tower"; + } + + @Override + protected String entryDescription() { + return "Marid Infusing"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.PENTACLE_CRAFT.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/CyanChalkEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/CyanChalkEntry.java new file mode 100644 index 000000000..694e65028 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/CyanChalkEntry.java @@ -0,0 +1,87 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookCraftingRecipePageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookSpotlightPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritFireRecipePageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; +import net.minecraft.world.item.crafting.Ingredient; + +public class CyanChalkEntry extends EntryProvider { + + public static final String ENTRY_ID = "cyan_chalk"; + + + public CyanChalkEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("lore", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("In the Past"); + this.pageText(""" + Almost lost to time, the cyan chalk brings ancient knowledge, often even forbidden. + But who cares? After all, knowledge is knowledge, and the more, the better, right? + """ + ); + + this.page("spotlight", () -> BookSpotlightPageModel.create() + .withItem(Ingredient.of(OccultismItems.CHALK_CYAN.get())) + .withText(this.context().pageText())); + this.pageText(""" + Despite the complexity of its manufacture, this chalk is dated as one of the oldest, + perhaps even the oldest chalk ever recorded. And even after all this time, + its uses are little known, but you can see just how stable it is. + """ + ); + + this.page("recipe_impure", () -> BookCraftingRecipePageModel.create() + .withRecipeId1(this.modLoc("crafting/chalk_cyan_impure")) + .withText(this.context().pageText())); + this.pageText(""" + Pulverize the {0} keeping their properties is a job that only the best crusher can do. + """, + this.color("Echo Shard", ChatFormatting.LIGHT_PURPLE)); + + this.page("recipe", () -> BookSpiritFireRecipePageModel.create() + .withRecipeId1(this.modLoc("spirit_fire/chalk_cyan")) + ); + + } + + @Override + protected String entryName() { + return "The Chalk From Ancients"; + } + + @Override + protected String entryDescription() { + return "Cyan Chalk"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.CHALK_CYAN.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/DidacticsEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/DidacticsEntry.java new file mode 100644 index 000000000..e662697ae --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/DidacticsEntry.java @@ -0,0 +1,73 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; + +public class DidacticsEntry extends EntryProvider { + + public static final String ENTRY_ID = "didactics"; + + + public DidacticsEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText())); + this.pageTitle("About"); + this.pageText(""" + This category is a roadmap that guides you step by step, follow the unlocked entries.\\ + \\ + **Tip:** By default, to set up all pentacles, you need four 19x19 areas. + """ + ); + + this.page("table", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText())); + this.pageTitle("Types and Tier"); + this.pageText(""" + This category is organized as a table.\\ + Each line refers to a type of ritual.\\ + And each column represents a tier.\\ + By following the line you can just upgrade the pentacle you drew before, + working like the previous and the new one. + """ + ); + + } + + @Override + protected String entryName() { + return "Reading this category"; + } + + @Override + protected String entryDescription() { + return "Basic learning"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.BRUSH.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/GrayChalkEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/GrayChalkEntry.java new file mode 100644 index 000000000..184eeadf2 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/GrayChalkEntry.java @@ -0,0 +1,86 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookCraftingRecipePageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookSpotlightPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookRitualRecipePageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritFireRecipePageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.world.item.crafting.Ingredient; + +public class GrayChalkEntry extends EntryProvider { + + public static final String ENTRY_ID = "gray_chalk"; + + + public GrayChalkEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("lore", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Getting Power"); + this.pageText(""" + The gray chalk is made with one of the magical pastes, making it an intermediate-level + foundation chalk. Its magical properties can react in curious ways with the world around it. + """ + ); + + this.page("spotlight", () -> BookSpotlightPageModel.create() + .withItem(Ingredient.of(OccultismItems.CHALK_GRAY.get())) + .withText(this.context().pageText())); + this.pageText(""" + As an enhanced foundation chalk, it further strengthens the core of the pentacle and + (almost always) can replace white glyphs or light gray glyphs. + """ + ); + + this.page("ritual", () -> BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/craft_gray_paste")) + ); + + this.page("recipe_impure", () -> BookCraftingRecipePageModel.create() + .withRecipeId1(this.modLoc("crafting/chalk_gray_impure")) + ); + + this.page("recipe", () -> BookSpiritFireRecipePageModel.create() + .withRecipeId1(this.modLoc("spirit_fire/chalk_gray")) + ); + + } + + @Override + protected String entryName() { + return "Improved Foundation Chalk"; + } + + @Override + protected String entryDescription() { + return "Gray Chalk"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.CHALK_GRAY.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/GreenChalkEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/GreenChalkEntry.java new file mode 100644 index 000000000..fdceb5b8e --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/GreenChalkEntry.java @@ -0,0 +1,84 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookCraftingRecipePageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookSpotlightPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookRitualRecipePageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritFireRecipePageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.world.item.crafting.Ingredient; + +public class GreenChalkEntry extends EntryProvider { + + public static final String ENTRY_ID = "green_chalk"; + + + public GreenChalkEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("lore", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Wildness"); + this.pageText(""" + The green chalk uses herbal concentrate to bring the energies of flora into the pentacles. + """ + ); + + this.page("spotlight", () -> BookSpotlightPageModel.create() + .withItem(Ingredient.of(OccultismItems.CHALK_GREEN.get())) + .withText(this.context().pageText())); + this.pageText(""" + This connection with nature makes the green chalk ideal for attracting wild spirits. + """ + ); + + this.page("ritual", () -> BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/craft_nature_paste")) + ); + + this.page("recipe_impure", () -> BookCraftingRecipePageModel.create() + .withRecipeId1(this.modLoc("crafting/chalk_green_impure")) + ); + + this.page("recipe", () -> BookSpiritFireRecipePageModel.create() + .withRecipeId1(this.modLoc("spirit_fire/chalk_green")) + ); + + } + + @Override + protected String entryName() { + return "The Nature Chalk, specifically The Flora Chalk"; + } + + @Override + protected String entryDescription() { + return "Green Chalk"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.CHALK_GREEN.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/LightBlueChalkEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/LightBlueChalkEntry.java new file mode 100644 index 000000000..009ea8eed --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/LightBlueChalkEntry.java @@ -0,0 +1,83 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookCraftingRecipePageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookSpotlightPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritFireRecipePageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.world.item.crafting.Ingredient; + +public class LightBlueChalkEntry extends EntryProvider { + + public static final String ENTRY_ID = "light_blue_chalk"; + + + public LightBlueChalkEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("lore", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Never Melt"); + this.pageText(""" + The light blue chalk is made with such icy materials that its glyphs + are inert and impart a natural stability to the pentacles. + """ + ); + + this.page("spotlight", () -> BookSpotlightPageModel.create() + .withItem(Ingredient.of(OccultismItems.CHALK_LIGHT_BLUE.get())) + .withText(this.context().pageText())); + this.pageText(""" + Although it is basically made of ice, the magic present prevents it from melting. + """ + ); + + this.page("recipe_impure", () -> BookCraftingRecipePageModel.create() + .withRecipeId1(this.modLoc("crafting/chalk_light_blue_impure")) + .withText(this.context().pageText())); + this.pageText(""" + Crushing ice without melting it is a job a Foliot can't do, so you need a better crusher. + """); + + this.page("recipe", () -> BookSpiritFireRecipePageModel.create() + .withRecipeId1(this.modLoc("spirit_fire/chalk_light_blue")) + ); + + } + + @Override + protected String entryName() { + return "The Glaced Chalk"; + } + + @Override + protected String entryDescription() { + return "Light Blue Chalk"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.CHALK_LIGHT_BLUE.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/LightGrayChalkEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/LightGrayChalkEntry.java new file mode 100644 index 000000000..6579b36d5 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/LightGrayChalkEntry.java @@ -0,0 +1,82 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookCraftingRecipePageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookSpotlightPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritFireRecipePageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.world.item.crafting.Ingredient; + +public class LightGrayChalkEntry extends EntryProvider { + + public static final String ENTRY_ID = "light_gray_chalk"; + + + public LightGrayChalkEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("lore", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Most Common Foundation"); + this.pageText(""" + The light gray chalk uses mineral compounds to enhance the foundation of a pentacle. + The foundation is an important property, often considered the stabilization of the "core." + """ + ); + + this.page("spotlight", () -> BookSpotlightPageModel.create() + .withItem(Ingredient.of(OccultismItems.CHALK_LIGHT_GRAY.get())) + .withText(this.context().pageText())); + this.pageText(""" + Due to its relatively low cost and inherent magical properties, it is the most common + foundation option among practitioners of occultism, capable of replacing white chalk + in almost all pentacles. + """ + ); + + this.page("recipe_impure", () -> BookCraftingRecipePageModel.create() + .withRecipeId1(this.modLoc("crafting/chalk_light_gray_impure")) + ); + + this.page("recipe", () -> BookSpiritFireRecipePageModel.create() + .withRecipeId1(this.modLoc("spirit_fire/chalk_light_gray")) + ); + + } + + @Override + protected String entryName() { + return "Decent Foundation Chalk"; + } + + @Override + protected String entryDescription() { + return "Light Gray Chalk"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.CHALK_LIGHT_GRAY.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/LimeChalkEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/LimeChalkEntry.java new file mode 100644 index 000000000..a3797ae29 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/LimeChalkEntry.java @@ -0,0 +1,86 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookCraftingRecipePageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookSpotlightPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookRitualRecipePageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritFireRecipePageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.world.item.crafting.Ingredient; + +public class LimeChalkEntry extends EntryProvider { + + public static final String ENTRY_ID = "lime_chalk"; + + + public LimeChalkEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + + this.page("lore", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Getting Experience"); + this.pageText(""" + The lime chalk attracts spirits beyond Folio. + Anyone wishing to elevate the level of their rituals will need this chalk. + """ + ); + + this.page("spotlight", () -> BookSpotlightPageModel.create() + .withItem(Ingredient.of(OccultismItems.CHALK_LIME.get())) + .withText(this.context().pageText())); + this.pageText(""" + Made with valuable gems infused with experiences, lime glyphs become especially + interesting to demonstrate that yours skills have surpassed the basic level. + """ + ); + + this.page("ritual", () -> BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/craft_research_fragment_dust")) + ); + + this.page("recipe_impure", () -> BookCraftingRecipePageModel.create() + .withRecipeId1(this.modLoc("crafting/chalk_lime_impure")) + ); + + this.page("recipe", () -> BookSpiritFireRecipePageModel.create() + .withRecipeId1(this.modLoc("spirit_fire/chalk_lime")) + ); + } + + @Override + protected String entryName() { + return "First Tier Increase Chalk"; + } + + @Override + protected String entryDescription() { + return "Lime Chalk"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.CHALK_LIME.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/MagentaChalkEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/MagentaChalkEntry.java new file mode 100644 index 000000000..939dc5c69 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/MagentaChalkEntry.java @@ -0,0 +1,86 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookCraftingRecipePageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookSpotlightPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookRitualRecipePageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritFireRecipePageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.world.item.crafting.Ingredient; + +public class MagentaChalkEntry extends EntryProvider { + + public static final String ENTRY_ID = "magenta_chalk"; + + + public MagentaChalkEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("lore", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Ender Energy"); + this.pageText(""" + All the power of a dragon in a single chalk: this is the marvel of the purple chalk. + The relationship between spirits and dragons is unclear, but there may definitely be connections. + """ + ); + + this.page("spotlight", () -> BookSpotlightPageModel.create() + .withItem(Ingredient.of(OccultismItems.CHALK_MAGENTA.get())) + .withText(this.context().pageText())); + this.pageText(""" + Ah, the energy of the end. But what end? Does an end truly exist? + What concludes at the end? Will the end ever come to an end? + """ + ); + + this.page("ritual", () -> BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/craft_dragonyst_dust")) + ); + + this.page("recipe_impure", () -> BookCraftingRecipePageModel.create() + .withRecipeId1(this.modLoc("crafting/chalk_magenta_impure")) + ); + + this.page("recipe", () -> BookSpiritFireRecipePageModel.create() + .withRecipeId1(this.modLoc("spirit_fire/chalk_magenta")) + ); + + } + + @Override + protected String entryName() { + return "The Dragon Chalk"; + } + + @Override + protected String entryDescription() { + return "Magenta Chalk"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.CHALK_MAGENTA.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/OrangeChalkEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/OrangeChalkEntry.java new file mode 100644 index 000000000..f8e4ed219 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/OrangeChalkEntry.java @@ -0,0 +1,83 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookCraftingRecipePageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookSpotlightPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritFireRecipePageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.world.item.crafting.Ingredient; + +public class OrangeChalkEntry extends EntryProvider { + + public static final String ENTRY_ID = "orange_chalk"; + + + public OrangeChalkEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + + this.page("lore", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Afrit Attractive"); + this.pageText(""" + The orange chalk is a perfect bait for spirits of the Afrit class, who, + although impressed by the lime chalk, can resist its call. + """ + ); + + this.page("spotlight", () -> BookSpotlightPageModel.create() + .withItem(Ingredient.of(OccultismItems.CHALK_ORANGE.get())) + .withText(this.context().pageText())); + this.pageText(""" + Being a sweet and slightly warm chalk, it does not guarantee control over the invoked Afrit. + Commanding an Afrit requires power directly related to its class of spirits and + extreme stability in the pentacle. + """ + ); + + this.page("recipe_impure", () -> BookCraftingRecipePageModel.create() + .withRecipeId1(this.modLoc("crafting/chalk_orange_impure")) + ); + + this.page("recipe", () -> BookSpiritFireRecipePageModel.create() + .withRecipeId1(this.modLoc("spirit_fire/chalk_orange")) + ); + + } + + @Override + protected String entryName() { + return "The Little Hot Chalk"; + } + + @Override + protected String entryDescription() { + return "Orange Chalk"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.CHALK_ORANGE.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/ParaphernaliaEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/ParaphernaliaEntry.java new file mode 100644 index 000000000..e4ff9524d --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/ParaphernaliaEntry.java @@ -0,0 +1,112 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookCraftingRecipePageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookSpotlightPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritFireRecipePageModel; +import com.klikli_dev.occultism.registry.OccultismBlocks; +import com.mojang.datafixers.util.Pair; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.block.Blocks; + +public class ParaphernaliaEntry extends EntryProvider { + + public static final String ENTRY_ID = "paraphernalia"; + + + public ParaphernaliaEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText())); + this.pageTitle("Paraphernalia"); + this.pageText(""" + In addition to runes various occult paraphernalia are used to improve the intended effect of the pentacle. + """ + ); + + this.page("candle", () -> BookSpotlightPageModel.create() + .withItem(Ingredient.of(OccultismBlocks.LARGE_CANDLE.asItem())) + .withText(this.context().pageText())); + this.pageText(""" + Candles increase the stability of the pentacle, thus allowing a slowed essence decay of the summoned + spirit, leading to a longer lifetime of the spirit, or possessed object or being. + """ + ); + + this.page("skull", () -> BookSpotlightPageModel.create() + .withItem(Ingredient.of(Items.SKELETON_SKULL)) + .withText(this.context().pageText())); + this.pageText(""" + Skulls increase the calling power of the pentacle, allowing to summon more dangerous spirits.\\ + \\ + Occultists can find an easy way to obtain these skulls using basic possession rituals. + """ + ); + + this.page("crystal", () -> BookSpotlightPageModel.create() + .withItem(Ingredient.of(OccultismBlocks.SPIRIT_ATTUNED_CRYSTAL.asItem())) + .withText(this.context().pageText())); + this.pageText(""" + Crystals increase the stability of the pentacle, at levels that candles would not reach, allowing a performing more unstable rituals.\\ + \\ + Check the recipes in next page. + """ + ); + + this.page("recipe_gem", () -> BookSpiritFireRecipePageModel.create() + .withRecipeId1(this.modLoc("spirit_fire/spirit_attuned_gem")) + ); + + this.page("recipe_crystal", () -> BookCraftingRecipePageModel.create() + .withRecipeId1(this.modLoc("crafting/spirit_attuned_crystal")) + ); + + this.page("wither_skull", () -> BookSpotlightPageModel.create() + .withItem(Items.WITHER_SKELETON_SKULL) + .withText(this.context().pageText())); + this.pageText(""" + Whiter Skulls are stronger than regular Skull, and increase a lot the calling power of the pentacle, + allowing to summon more powerful class of spirits.\\ + \\ + Occultists can find an easy way to obtain these skulls using wild rituals. + """ + ); + + } + + @Override + protected String entryName() { + return "Occult Paraphernalia"; + } + + @Override + protected String entryDescription() { + return "Stability and Power"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(Blocks.SKELETON_SKULL); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PentaclesOverviewEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PentaclesOverviewEntry.java new file mode 100644 index 000000000..9d139765e --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PentaclesOverviewEntry.java @@ -0,0 +1,98 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.registry.OccultismBlocks; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; + +public class PentaclesOverviewEntry extends EntryProvider { + + public static final String ENTRY_ID = "pentacle_overview"; + + + public PentaclesOverviewEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro1", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText())); + this.pageTitle("Overview"); + this.pageText(""" + The name {0} in this context refers to ritual drawings of any shape, not just five-pointed stars. \\ + \\ + Pentacles are used to summon and bind spirits from {1}. + """, + this.color("Pentacle", ChatFormatting.DARK_PURPLE), + this.color("The Other Place", ChatFormatting.DARK_PURPLE) + ); + + this.page("intro2", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText())); + this.pageTitle(""); + this.pageText(""" + Each pentacle consists of a central golden sacrificial bowl, surrounding runes of various colors + and occult paraphernalia that improve the intended effect in various ways.\\ + \\ + They act both as a device to call on the entity, an amplifier for the summoner's commanding power + and as a protecting circle preventing attacks from within against the summoner. + """ + ); + + this.page("intro3", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText())); + this.pageTitle(""); + this.pageText(""" + The combination of chosen runes and supporting items as well as their exact spatial positioning + determines the use and effectiveness of the pentacle. + """ + ); + + this.page("intro4", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText())); + this.pageTitle(""); + this.pageText(""" + Ingredients are placed in [Sacrificial Bowls](item://occultism:sacrificial_bowl) + near the pentacle. Specifically, must be placed **anywhere** within + 8 blocks horizontally of the central [](item://occultism:golden_sacrificial_bowl). + The exact location does not matter. + """ + ); + + } + + @Override + protected String entryName() { + return "On Pentacles"; + } + + @Override + protected String entryDescription() { + return "Lets Draw"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.CATEGORY_START; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(this.modLoc("textures/gui/book/pentacle.png")); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PinkChalkEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PinkChalkEntry.java new file mode 100644 index 000000000..a929935e2 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PinkChalkEntry.java @@ -0,0 +1,82 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookCraftingRecipePageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookSpotlightPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritFireRecipePageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.world.item.crafting.Ingredient; + +public class PinkChalkEntry extends EntryProvider { + + public static final String ENTRY_ID = "pink_chalk"; + + + public PinkChalkEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("lore", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("It's Alive"); + this.pageText(""" + Made from the flesh of a pig possessed by an Afrit, this chalk possesses + both animalistic properties and part of an Afrit's power. + """ + ); + + this.page("spotlight", () -> BookSpotlightPageModel.create() + .withItem(Ingredient.of(OccultismItems.CHALK_PINK.get())) + .withText(this.context().pageText())); + this.pageText(""" + Some occultists have reported that the demonic flesh keeps the chalk alive, + resulting in strange movements. However, this has never been officially + documented or proven, remaining merely rumors that may or may not be true. + """ + ); + + this.page("recipe_impure", () -> BookCraftingRecipePageModel.create() + .withRecipeId1(this.modLoc("crafting/chalk_pink_impure")) + ); + + this.page("recipe", () -> BookSpiritFireRecipePageModel.create() + .withRecipeId1(this.modLoc("spirit_fire/chalk_pink")) + ); + + } + + @Override + protected String entryName() { + return "The Meat Chalk?"; + } + + @Override + protected String entryDescription() { + return "Pink Chalk"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.CHALK_PINK.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PossessAfritEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PossessAfritEntry.java new file mode 100644 index 000000000..90ce43c2a --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PossessAfritEntry.java @@ -0,0 +1,81 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookMultiblockPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; + +public class PossessAfritEntry extends EntryProvider { + + public static final String ENTRY_ID = "possess_afrit"; + + + public PossessAfritEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Abras Commanding Conjure"); + this.pageText(""" + **Purpose:** {0} Possession\\ + \\ + **Abras Commanding Conjure** is a modified version in the possession geometry of {1} that allows + possessing entities, and thus summoning familiars. + """, + this.color("Afrit", ChatFormatting.DARK_PURPLE), + this.color("Abras Conjure", ChatFormatting.LIGHT_PURPLE) + ); + + this.page("multiblock", () -> BookMultiblockPageModel.create().withMultiblockId(this.modLoc(ENTRY_ID))); + + this.page("uses", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Uses"); + this.pageText(""" + - [Guardian Familiar](entry://familiar_rituals/familiar_guardian) + - [Possessed Shulker](entry://possession_rituals/possess_shulker) + - [Possessed Elder Guardian](entry://possession_rituals/possess_elder_guardian) + - [Possessed Hoglin](entry://possession_rituals/possess_hoglin) + """ + ); + + } + + @Override + protected String entryName() { + return "Abras' Commanding Conjure"; + } + + @Override + protected String entryDescription() { + return "Possessing Afrit"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.PENTACLE_POSSESS.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PossessDjinniEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PossessDjinniEntry.java new file mode 100644 index 000000000..6801a3710 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PossessDjinniEntry.java @@ -0,0 +1,102 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookMultiblockPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; + +public class PossessDjinniEntry extends EntryProvider { + + public static final String ENTRY_ID = "possess_djinni"; + + + public PossessDjinniEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Ihagans Enthrallment"); + this.pageText(""" + **Purpose:** {0} Possession\\ + \\ + **Ihagans Enthrallment** forces {1} to possess a nearby creature. This pentacle is very versatile + for imprisonment, the spirit and creature possessed are diverse and have moderate power. + """, + this.color("Djinni", ChatFormatting.DARK_PURPLE), + this.color("Djinni", ChatFormatting.DARK_PURPLE) + ); + + this.page("multiblock", () -> BookMultiblockPageModel.create().withMultiblockId(this.modLoc(ENTRY_ID))); + + this.page("uses", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Uses"); + this.pageText(""" + - [Possessed Enderman](entry://possession_rituals/possess_enderman) + - [Possessed Ghast](entry://possession_rituals/possess_ghast) + - [Possessed Weak Shulker](entry://possession_rituals/possess_weak_shulker) + - [Possessed Warden](entry://possession_rituals/possess_warden) + - [Possessed Bee](entry://possession_rituals/possess_bee) + - [Unbound Drikwing](entry://possession_rituals/possess_unbound_otherworld_bird) + - [Drikwing Familiar](entry://familiar_rituals/familiar_otherworld_bird) + - [Bat Familiar](entry://familiar_rituals/familiar_bat) + - [Cthulhu Familiar](entry://familiar_rituals/familiar_cthulhu) + - [Devil Familiar](entry://familiar_rituals/familiar_devil) + - [Dragon Familiar](entry://familiar_rituals/familiar_dragon) + """ + ); + + this.page("uses2", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Uses"); + this.pageText(""" + - [Headless Ratman Familiar](entry://familiar_rituals/familiar_headless) + - [Beholder Familiar](entry://familiar_rituals/familiar_beholder) + - [Fairy Familiar](entry://familiar_rituals/familiar_fairy) + - [Chimera Familiar](entry://familiar_rituals/familiar_chimera) + - [Mummy Familiar](entry://familiar_rituals/familiar_mummy) + """ + ); + + } + + @Override + protected String entryName() { + return "Ihagan's Enthrallment"; + } + + @Override + protected String entryDescription() { + return "Possessing Djinni"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.PENTACLE_POSSESS.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PossessFoliotEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PossessFoliotEntry.java new file mode 100644 index 000000000..30c1ed404 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PossessFoliotEntry.java @@ -0,0 +1,88 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookMultiblockPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; + +public class PossessFoliotEntry extends EntryProvider { + + public static final String ENTRY_ID = "possess_foliot"; + + + public PossessFoliotEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Hedyrins Lure"); + this.pageText(""" + **Purpose:** {0} Possession\\ + \\ + **Hedyrins Lure** attracts {1} and forces them to possess a nearby creature. This pentacle can + perform basic possessions, bringing back only low-power spirits and possessed creatures. + """, + this.color("Foliot", ChatFormatting.DARK_PURPLE), + this.color("Foliot", ChatFormatting.DARK_PURPLE) + ); + + this.page("multiblock", () -> BookMultiblockPageModel.create().withMultiblockId(this.modLoc(ENTRY_ID))); + + this.page("uses", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Uses"); + this.pageText(""" + - [Possessed Endermite](entry://possession_rituals/possess_endermite) + - [Possessed Skeleton](entry://possession_rituals/possess_skeleton) + - [Possessed Witch](entry://possession_rituals/possess_witch) + - [Possessed Phantom](entry://possession_rituals/possess_phantom) + - [Unbound Parrot](entry://possession_rituals/possess_unbound_parrot) + - [Random Animal](entry://possession_rituals/possess_random_animal) + - [Parrot Familiar](entry://familiar_rituals/familiar_parrot) + - [Greedy Familiar](entry://familiar_rituals/familiar_greedy) + - [Deer Familiar](entry://familiar_rituals/familiar_deer) + - [Blacksmith Familiar](entry://familiar_rituals/familiar_blacksmith) + - [Beaver Familiar](entry://familiar_rituals/familiar_beaver) + """ + ); + + } + + @Override + protected String entryName() { + return "Hedyrin's Lure"; + } + + @Override + protected String entryDescription() { + return "Possessing Foliot"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.PENTACLE_POSSESS.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PossessMaridEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PossessMaridEntry.java new file mode 100644 index 000000000..b1149d2c4 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PossessMaridEntry.java @@ -0,0 +1,77 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookMultiblockPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; + +public class PossessMaridEntry extends EntryProvider { + + public static final String ENTRY_ID = "possess_marid"; + + + public PossessMaridEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Xeovrenth Adjure"); + this.pageText(""" + **Purpose:** {0} Possession\\ + \\ + **Xeovrenth Adjure** is a powerful pentacle, allowing to possessing {1} in extremely dangerous rituals. + """, + this.color("Marid", ChatFormatting.DARK_PURPLE), + this.color("Marid", ChatFormatting.DARK_PURPLE) + ); + + this.page("multiblock", () -> BookMultiblockPageModel.create().withMultiblockId(this.modLoc(ENTRY_ID))); + + this.page("uses", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Uses"); + this.pageText(""" + - [Cruelty Essence](entry://possession_rituals/possess_goat) + """ + ); + + } + + @Override + protected String entryName() { + return "Xeovrenth Adjure"; + } + + @Override + protected String entryDescription() { + return "Possessing Marid"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.PENTACLE_POSSESS.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PossessUnboundAfritEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PossessUnboundAfritEntry.java new file mode 100644 index 000000000..d3e68e30d --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PossessUnboundAfritEntry.java @@ -0,0 +1,79 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookMultiblockPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; + +public class PossessUnboundAfritEntry extends EntryProvider { + + public static final String ENTRY_ID = "possess_unbound_afrit"; + + + public PossessUnboundAfritEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Abras Open Commanding Conjure"); + this.pageText(""" + **Purpose:** {0} Possession\\ + \\ + **Abras Open Commanding Conjure** is a simplified version of {1}, allowing to possess {2} without red chalk. + Due to the very reduced power of the pentacle, it has limitations in its use. + """, + this.color("Unbound Afrit", ChatFormatting.DARK_PURPLE), + this.color("Abras Commanding Conjure", ChatFormatting.DARK_PURPLE), + this.color("Afrit", ChatFormatting.DARK_PURPLE) + ); + + this.page("multiblock", () -> BookMultiblockPageModel.create().withMultiblockId(this.modLoc(ENTRY_ID))); + + this.page("uses", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Uses"); + this.pageText(""" + - [Possessed Pig](entry://possession_rituals/possess_zombie_piglin) + """ + ); + + } + + @Override + protected String entryName() { + return "Abras' Open Commanding Conjure"; + } + + @Override + protected String entryDescription() { + return "Possessing Unbound Afrit"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.PENTACLE_POSSESS.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PurpleChalkEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PurpleChalkEntry.java new file mode 100644 index 000000000..c4160a181 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/PurpleChalkEntry.java @@ -0,0 +1,88 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookCraftingRecipePageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookSpotlightPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritFireRecipePageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; +import net.minecraft.world.item.crafting.Ingredient; + +public class PurpleChalkEntry extends EntryProvider { + + public static final String ENTRY_ID = "purple_chalk"; + + + public PurpleChalkEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + + this.page("lore", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Infusing"); + this.pageText(""" + The purple chalk is extremely important for those wishing to perform infusions, + serving as the main glyph in this type of ritual. + """ + ); + + this.page("spotlight", () -> BookSpotlightPageModel.create() + .withItem(Ingredient.of(OccultismItems.CHALK_PURPLE.get())) + .withText(this.context().pageText())); + this.pageText(""" + Infusions are an extremely different type of ritual, as while summoning and possession + bring living creatures into the world, infusion creates objects bound to spirits. + """ + ); + + this.page("recipe_impure", () -> BookCraftingRecipePageModel.create() + .withRecipeId1(this.modLoc("crafting/chalk_purple_impure")) + .withText(this.context.pageText())); + this.pageText(""" + You do not need to visit the {0} to obtain Endstone. You can summon a + [Possessed Endermite](entry://possession_rituals/possess_endermite) which has a high chance to drop it. + """, + this.color("The End", ChatFormatting.LIGHT_PURPLE)); + + this.page("recipe", () -> BookSpiritFireRecipePageModel.create() + .withRecipeId1(this.modLoc("spirit_fire/chalk_purple")) + ); + + } + + @Override + protected String entryName() { + return "The Chalk to Infusion"; + } + + @Override + protected String entryDescription() { + return "Purple Chalk"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.CHALK_PURPLE.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/RedChalkEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/RedChalkEntry.java new file mode 100644 index 000000000..1a4a8e796 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/RedChalkEntry.java @@ -0,0 +1,93 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookCraftingRecipePageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookSpotlightPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritFireRecipePageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; +import net.minecraft.world.item.crafting.Ingredient; + +public class RedChalkEntry extends EntryProvider { + + public static final String ENTRY_ID = "red_chalk"; + + + public RedChalkEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("lore", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Under Control"); + this.pageText(""" + The red chalk is made from the very essence of Afrit, making its glyphs directly + connected to these spirits. Additionally, it elevates the pentacles + capacity to the most demonic levels. + """ + ); + + this.page("spotlight", () -> BookSpotlightPageModel.create() + .withItem(Ingredient.of(OccultismItems.CHALK_RED.get())) + .withText(this.context().pageText())); + this.pageText(""" + These properties allow for an incredible achievement that has been sought + for ages before being attained: the summoning of an Afrit bound to the occultist. + """ + ); + + this.page("essence", () -> BookSpotlightPageModel.create() + .withItem(Ingredient.of(OccultismItems.AFRIT_ESSENCE.get())) + .withText(this.context().pageText())); + this.pageText(""" + To obtain the essence of an {0} for [](item://occultism:chalk_red) you need to + [summon and kill an Unbound Afrit](entry://summoning_rituals/afrit_essence). + """, + this.color("Afrit", ChatFormatting.DARK_PURPLE) + ); + + this.page("recipe_impure", () -> BookCraftingRecipePageModel.create() + .withRecipeId1(this.modLoc("crafting/chalk_red_impure")) + ); + + this.page("recipe", () -> BookSpiritFireRecipePageModel.create() + .withRecipeId1(this.modLoc("spirit_fire/chalk_red")) + ); + + } + + @Override + protected String entryName() { + return "The Afrit Control Chalk"; + } + + @Override + protected String entryDescription() { + return "Red Chalk"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.CHALK_RED.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/ResurrectSpiritEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/ResurrectSpiritEntry.java new file mode 100644 index 000000000..a5de9a8c6 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/ResurrectSpiritEntry.java @@ -0,0 +1,82 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookMultiblockPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; + +public class ResurrectSpiritEntry extends EntryProvider { + + public static final String ENTRY_ID = "resurrect_spirit"; + + + public ResurrectSpiritEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Susjes Simple Circle"); + this.pageText(""" + **Purpose:** Resurrect a {0}\\ + \\ + **Susjes Simple Circle** is a simple pentacle that returns the physical form of a spirit that has + been slaughtered, not needing much to do so.\\ + \\ + **Note:** This is the only pentacle where the {1} cannot be replaced with another better {2}. + """, + this.color("Familiar", ChatFormatting.DARK_PURPLE), + this.color("White Chalk", ChatFormatting.LIGHT_PURPLE), + this.color("Foundation Chalk", ChatFormatting.LIGHT_PURPLE) + ); + + this.page("multiblock", () -> BookMultiblockPageModel.create().withMultiblockId(this.modLoc(ENTRY_ID))); + + this.page("uses", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Uses"); + this.pageText(""" + - [Resurrect Familiar](entry://familiar_rituals/resurrection) + - [Purify Vex to Allay](entry://familiar_rituals/resurrect_allay) + """ + ); + + } + + @Override + protected String entryName() { + return "Susje's Simple Circle"; + } + + @Override + protected String entryDescription() { + return "Spirit Resurrection"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.PENTACLE_MISC.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonAfritEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonAfritEntry.java new file mode 100644 index 000000000..25d619be6 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonAfritEntry.java @@ -0,0 +1,82 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookMultiblockPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; + +public class SummonAfritEntry extends EntryProvider { + + public static final String ENTRY_ID = "summon_afrit"; + + + public SummonAfritEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Abras Conjure"); + this.pageText(""" + **Purpose:** Summon a {0}\\ + \\ + **Abras Conjure** is one of the few pentacles capable of (mostly) safely summoning an {1}. + While the requirement of several {2} makes it comparatively expensive, + the additional calling potential is required to reach these high-power spirits. + """, + this.color("Afrit", ChatFormatting.DARK_PURPLE), + this.color("Afrit", ChatFormatting.DARK_PURPLE), + this.color("Spirit Attuned Gems", ChatFormatting.LIGHT_PURPLE) + ); + + this.page("multiblock", () -> BookMultiblockPageModel.create().withMultiblockId(this.modLoc(ENTRY_ID))); + + this.page("uses", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Uses"); + this.pageText(""" + - [Afrit Crusher](entry://summoning_rituals/summon_crusher_t3) + - [Thunderstorm](entry://summoning_rituals/weather_magic@thunder) + - [Rainy Weather](entry://summoning_rituals/weather_magic@rain) + """ + ); + + } + + @Override + protected String entryName() { + return "Abras' Conjure"; + } + + @Override + protected String entryDescription() { + return "Afrit Summoning"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.PENTACLE_SUMMON.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonDjinniEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonDjinniEntry.java new file mode 100644 index 000000000..ac82cf667 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonDjinniEntry.java @@ -0,0 +1,87 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookMultiblockPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; + +public class SummonDjinniEntry extends EntryProvider { + + public static final String ENTRY_ID = "summon_djinni"; + + + public SummonDjinniEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Ophyx Calling"); + this.pageText(""" + **Purpose:** Summon a {0}\\ + \\ + Developed by {1} during the Third Era, the {2} is the go-to pentacle for {3} summonings ever since. + Skeleton skulls ([Obtain here](entry://possession_rituals/possess_skeleton)) + and {4} provide the calling power required to force Djinni into appearance and candles stabilize the ritual. + + """, + this.color("Djinni", ChatFormatting.DARK_PURPLE), + this.color("Ophyx", ChatFormatting.LIGHT_PURPLE), + this.color("Calling", ChatFormatting.LIGHT_PURPLE), + this.color("Djinni", ChatFormatting.DARK_PURPLE), + this.color("Lime Chalk", ChatFormatting.DARK_PURPLE) + ); + + this.page("multiblock", () -> BookMultiblockPageModel.create().withMultiblockId(this.modLoc(ENTRY_ID))); + + this.page("uses", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Uses"); + this.pageText(""" + - [Djinni Crusher](entry://summoning_rituals/summon_crusher_t2) + - [Djinni Machine Operator](entry://summoning_rituals/summon_manage_machine) + - [Clear Weather](entry://summoning_rituals/weather_magic@clear) + - [Time Magic](entry://summoning_rituals/time_magic) + - [Demonic Partner](entry://familiar_rituals/demonic_partner) + """ + ); + + } + + @Override + protected String entryName() { + return "Ophyx' Calling"; + } + + @Override + protected String entryDescription() { + return "Djinni Summoning"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.PENTACLE_SUMMON.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonFoliotEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonFoliotEntry.java new file mode 100644 index 000000000..27ded53bd --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonFoliotEntry.java @@ -0,0 +1,86 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookMultiblockPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; + +public class SummonFoliotEntry extends EntryProvider { + + public static final String ENTRY_ID = "summon_foliot"; + + + public SummonFoliotEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Aviars Circle"); + this.pageText(""" + **Purpose:** Summon a {0}\\ + \\ + Considered by most to be the simplest pentacle, {1} is easy to set up, + but provides only a minimum of binding power and protection for the summoner.\\ + \\ + Only the weakest {2} can be summoned in rituals using this pentacle. + """, + this.color("Foliot", ChatFormatting.DARK_PURPLE), + this.color("Aviars Circle", ChatFormatting.LIGHT_PURPLE), + this.color("Foliot", ChatFormatting.DARK_PURPLE) + ); + + this.page("multiblock", () -> BookMultiblockPageModel.create().withMultiblockId(this.modLoc(ENTRY_ID))); + + this.page("uses", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Uses"); + this.pageText(""" + - [Foliot Crusher](entry://summoning_rituals/summon_crusher_t1) + - [Foliot Lumberjack](entry://summoning_rituals/summon_lumberjack) + - [Foliot Transporter](entry://summoning_rituals/summon_transport_items) + - [Foliot Janitor](entry://summoning_rituals/summon_cleaner) + - [Otherstone Trader](entry://summoning_rituals/summon_otherstone_trader) + - [Otherworld Sapling Trader](entry://summoning_rituals/summon_otherworld_sapling_trader) + """ + ); + + } + + @Override + protected String entryName() { + return "Aviar's Circle"; + } + + @Override + protected String entryDescription() { + return "Foliot Summoning"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.PENTACLE_SUMMON.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonMaridEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonMaridEntry.java new file mode 100644 index 000000000..196b4541e --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonMaridEntry.java @@ -0,0 +1,78 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookMultiblockPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; + +public class SummonMaridEntry extends EntryProvider { + + public static final String ENTRY_ID = "summon_marid"; + + + public SummonMaridEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Fatmas Incentivized Attraction"); + this.pageText(""" + **Purpose:** Summon a {0}\\ + \\ + **Fatmas Incentivized Attraction** is a powerful pentacle, allowing to summon {1} + and bind them to the summoners will. + """, + this.color("Marid", ChatFormatting.DARK_PURPLE), + this.color("Marid", ChatFormatting.DARK_PURPLE) + ); + + this.page("multiblock", () -> BookMultiblockPageModel.create().withMultiblockId(this.modLoc(ENTRY_ID))); + + this.page("uses", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Uses"); + this.pageText(""" + - [Marid Crusher](entry://summoning_rituals/summon_crusher_t4) + """ + ); + + } + + @Override + protected String entryName() { + return "Fatma's Incentivized Attraction"; + } + + @Override + protected String entryDescription() { + return "Marid Summoning"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.PENTACLE_SUMMON.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonUnboundAfritEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonUnboundAfritEntry.java new file mode 100644 index 000000000..cdb8067df --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonUnboundAfritEntry.java @@ -0,0 +1,82 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookMultiblockPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; + +public class SummonUnboundAfritEntry extends EntryProvider { + + public static final String ENTRY_ID = "summon_unbound_afrit"; + + + public SummonUnboundAfritEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Abras Open Conjure"); + this.pageText(""" + **Purpose:** Summon an {0}\\ + \\ + **Abras Open Conjure** is a simplified version of {1}, allowing to summon {2} without red chalk. + Due to the much reduced power of the pentacle, it cannot be used to control {3}, + and it thus can only be used to fight and kill {4}. + """, + this.color("Unbound Afrit", ChatFormatting.DARK_PURPLE), + this.color("Abras Open Conjure", ChatFormatting.LIGHT_PURPLE), + this.color("Afrit", ChatFormatting.DARK_PURPLE), + this.color("Afrit", ChatFormatting.DARK_PURPLE), + this.color("Afrit", ChatFormatting.DARK_PURPLE) + ); + + this.page("multiblock", () -> BookMultiblockPageModel.create().withMultiblockId(this.modLoc(ENTRY_ID))); + + this.page("uses", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Uses"); + this.pageText(""" + - [Afrit Essence](entry://summoning_rituals/afrit_essence) + """ + ); + + } + + @Override + protected String entryName() { + return "Abras' Open Conjure"; + } + + @Override + protected String entryDescription() { + return "Unbound Afrit Summoning"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.PENTACLE_SUMMON.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonUnboundMaridEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonUnboundMaridEntry.java new file mode 100644 index 000000000..85f453ffa --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/SummonUnboundMaridEntry.java @@ -0,0 +1,81 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookMultiblockPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.ChatFormatting; + +public class SummonUnboundMaridEntry extends EntryProvider { + + public static final String ENTRY_ID = "summon_unbound_marid"; + + + public SummonUnboundMaridEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("intro", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Abras Fortified Conjure"); + this.pageText(""" + **Purpose:** Summon an {0}\\ + \\ + **Abras Fortified Conjure** is a improved version of {1}, allowing to summon {2}, + however without any control of the occultist. {3} summoned by this will become + aggressive due to the instability of the ritual + """, + this.color("Unbound Marid", ChatFormatting.DARK_PURPLE), + this.color("Abras Conjure", ChatFormatting.LIGHT_PURPLE), + this.color("Marid", ChatFormatting.DARK_PURPLE), + this.color("Marid", ChatFormatting.DARK_PURPLE) + ); + + this.page("multiblock", () -> BookMultiblockPageModel.create().withMultiblockId(this.modLoc(ENTRY_ID))); + + this.page("uses", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Uses"); + this.pageText(""" + - [Marid Essence](entry://summoning_rituals/marid_essence) + """ + ); + + } + + @Override + protected String entryName() { + return "Abras' Fortified Conjure"; + } + + @Override + protected String entryDescription() { + return "Unbound Marid Summoning"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.PENTACLE_SUMMON.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/WhiteChalkEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/WhiteChalkEntry.java new file mode 100644 index 000000000..8a28d5f7b --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/WhiteChalkEntry.java @@ -0,0 +1,82 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookCraftingRecipePageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookSpotlightPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritFireRecipePageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.world.item.crafting.Ingredient; + +public class WhiteChalkEntry extends EntryProvider { + + public static final String ENTRY_ID = "white_chalk"; + + + public WhiteChalkEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("lore", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("First Foundation"); + this.pageText(""" + This is the first chalk in the journey of any occultist. Due to its simplicity, it serves as a + weak foundation. Pentacles drawn only with this chalk attract only the weakest spirits, + known as Folit. + """ + ); + + this.page("spotlight", () -> BookSpotlightPageModel.create() + .withItem(Ingredient.of(OccultismItems.CHALK_WHITE.get())) + .withText(this.context().pageText())); + this.pageText(""" + In almost any pentacle where you see a white glyph, it can be replaced with another + "colorless" chalk (light gray, gray, or black). + """ + ); + + this.page("recipe_impure", () -> BookCraftingRecipePageModel.create() + .withRecipeId1(this.modLoc("crafting/chalk_white_impure")) + ); + + this.page("recipe", () -> BookSpiritFireRecipePageModel.create() + .withRecipeId1(this.modLoc("spirit_fire/chalk_white")) + ); + + } + + @Override + protected String entryName() { + return "The Most Basic Chalk"; + } + + @Override + protected String entryDescription() { + return "White Chalk"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.CHALK_WHITE.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/YellowChalkEntry.java b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/YellowChalkEntry.java new file mode 100644 index 000000000..f9f546e0f --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/book/pentacles/YellowChalkEntry.java @@ -0,0 +1,81 @@ +package com.klikli_dev.occultism.datagen.book.pentacles; + +import com.klikli_dev.modonomicon.api.datagen.CategoryProvider; +import com.klikli_dev.modonomicon.api.datagen.EntryBackground; +import com.klikli_dev.modonomicon.api.datagen.EntryProvider; +import com.klikli_dev.modonomicon.api.datagen.book.BookIconModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookCraftingRecipePageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookSpotlightPageModel; +import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; +import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritFireRecipePageModel; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.mojang.datafixers.util.Pair; +import net.minecraft.world.item.crafting.Ingredient; + +public class YellowChalkEntry extends EntryProvider { + + public static final String ENTRY_ID = "yellow_chalk"; + + + public YellowChalkEntry(CategoryProvider parent) { + super(parent); + } + + @Override + protected void generatePages() { + + this.page("lore", () -> BookTextPageModel.create() + .withTitle(this.context().pageTitle()) + .withText(this.context().pageText()) + ); + this.pageTitle("Possessing"); + this.pageText(""" + The yellow chalk, also known as golden chalk, brings a sparkle to the eyes of those who + engage in possessions, serving as the main glyph in this type of ritual. + """ + ); + + this.page("spotlight", () -> BookSpotlightPageModel.create() + .withItem(Ingredient.of(OccultismItems.CHALK_YELLOW.get())) + .withText(this.context().pageText())); + this.pageText(""" + Possessions are a variation of summoning, caused by a transformation in geometry and + the addition of yellow glyphs, allowing spirits to manifest in bodies (material prisons) + different from their usual ones. + """ + ); + + this.page("recipe_impure", () -> BookCraftingRecipePageModel.create() + .withRecipeId1(this.modLoc("crafting/chalk_yellow_impure")) + ); + + this.page("recipe", () -> BookSpiritFireRecipePageModel.create() + .withRecipeId1(this.modLoc("spirit_fire/chalk_yellow")) + ); + } + + @Override + protected String entryName() { + return "The Chalk to Possession"; + } + + @Override + protected String entryDescription() { + return "Yellow Chalk"; + } + + @Override + protected Pair entryBackground() { + return EntryBackground.DEFAULT; + } + + @Override + protected BookIconModel entryIcon() { + return BookIconModel.create(OccultismItems.CHALK_YELLOW.get()); + } + + @Override + protected String entryId() { + return ENTRY_ID; + } +} 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 9c98181b7..dcf8f2512 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 @@ -126,6 +126,7 @@ public void addItemTooltips() { this.add(OccultismItems.MINER_DEBUG_UNSPECIALIZED.get().getDescriptionId() + ".tooltip", "Debug Miner will mine random blocks in the mining dimension."); this.add(OccultismItems.MINER_AFRIT_DEEPS.get().getDescriptionId() + ".tooltip", "%s will mine random ores and deepslate ores in the mining dimension."); this.add(OccultismItems.MINER_MARID_MASTER.get().getDescriptionId() + ".tooltip", "%s will mine random ores, deepslate ores and rare ores in the mining dimension."); + this.add(OccultismItems.MINER_ANCIENT_ELDRITCH.get().getDescriptionId() + ".tooltip", "Something will mine random raw ores blocks, gems blocks and rare ores in the mining dimension."); this.add(OccultismItems.SOUL_GEM_ITEM.get().getDescriptionId() + ".tooltip_filled", "Contains a captured %s."); this.add(OccultismItems.SOUL_GEM_ITEM.get().getDescriptionId() + ".tooltip_empty", "Use on a creature to capture it."); this.add(OccultismItems.SATCHEL.get().getDescriptionId() + ".tooltip", "%s is bound to this satchel."); @@ -143,7 +144,12 @@ private void addItems() { this.add("itemGroup.occultism", "Occultism"); - this.addItem(OccultismItems.PENTACLE, "Pentacle"); + this.addItem(OccultismItems.PENTACLE_SUMMON, "Pentacle Summon"); + this.addItem(OccultismItems.PENTACLE_POSSESS, "Pentacle Possess"); + this.addItem(OccultismItems.PENTACLE_CRAFT, "Pentacle Craft"); + this.addItem(OccultismItems.PENTACLE_MISC, "Pentacle Misc"); + this.addItem(OccultismItems.REPAIR_ICON, "Repair Icon"); + this.addItem(OccultismItems.RESURRECT_ICON, "Resurrect Icon"); this.addItem(OccultismItems.DEBUG_WAND, "Debug Wand"); this.addItem(OccultismItems.DEBUG_FOLIOT_LUMBERJACK, "Summon Debug Foliot Lumberjack"); this.addItem(OccultismItems.DEBUG_FOLIOT_TRANSPORT_ITEMS, "Summon Debug Foliot Transporter"); @@ -174,7 +180,7 @@ private void addItems() { this.add(TranslationKeys.RITUAL_SATCHEL_NO_PREVIEW_BLOCK_TARGETED, "You need to aim the ritual satchel at a preview block."); this.add(TranslationKeys.RITUAL_SATCHEL_NO_VALID_ITEM_IN_SATCHEL, "There is no valid item in the satchel for this previewed block."); - this.addItem(OccultismItems.CHALK_GOLD, "Yellow Chalk"); + this.addItem(OccultismItems.CHALK_YELLOW, "Yellow Chalk"); this.addItem(OccultismItems.CHALK_PURPLE, "Purple Chalk"); this.addItem(OccultismItems.CHALK_RED, "Red Chalk"); this.addItem(OccultismItems.CHALK_WHITE, "White Chalk"); @@ -190,7 +196,7 @@ private void addItems() { this.addItem(OccultismItems.CHALK_BLUE, "Blue Chalk"); this.addItem(OccultismItems.CHALK_MAGENTA, "Magenta Chalk"); this.addItem(OccultismItems.CHALK_PINK, "Pink Chalk"); - this.addItem(OccultismItems.CHALK_GOLD_IMPURE, "Impure Yellow Chalk"); + this.addItem(OccultismItems.CHALK_YELLOW_IMPURE, "Impure Yellow Chalk"); this.addItem(OccultismItems.CHALK_PURPLE_IMPURE, "Impure Purple Chalk"); this.addItem(OccultismItems.CHALK_RED_IMPURE, "Impure Red Chalk"); this.addItem(OccultismItems.CHALK_WHITE_IMPURE, "Impure White Chalk"); @@ -273,6 +279,8 @@ private void addItems() { this.addItem(OccultismItems.MINER_DEBUG_UNSPECIALIZED, "Debug Miner"); this.addItem(OccultismItems.MINER_AFRIT_DEEPS, "Deep Ore Miner Afrit"); this.addItem(OccultismItems.MINER_MARID_MASTER, "Master Miner Marid"); + this.addItem(OccultismItems.MINER_ANCIENT_ELDRITCH, "Eldritch Ancient Miner"); + this.addItem(OccultismItems.MINING_DIMENSION_CORE_PIECE, "Mining Dimension Core Piece"); this.addItem(OccultismItems.SOUL_GEM_ITEM, "Soul Gem"); this.add(OccultismItems.SOUL_GEM_ITEM.get().getDescriptionId() + "_empty", "Empty Soul Gem"); this.addItem(OccultismItems.SOUL_SHARD_ITEM, "Soul Shard"); @@ -281,8 +289,9 @@ private void addItems() { this.addItem(OccultismItems.SPAWN_EGG_FOLIOT, "Foliot Spawn Egg"); this.addItem(OccultismItems.SPAWN_EGG_DJINNI, "Djinni Spawn Egg"); this.addItem(OccultismItems.SPAWN_EGG_AFRIT, "Afrit Spawn Egg"); - this.addItem(OccultismItems.SPAWN_EGG_AFRIT_WILD, "Unbound Afrit Spawn Egg"); + this.addItem(OccultismItems.SPAWN_EGG_AFRIT_UNBOUND, "Unbound Afrit Spawn Egg"); this.addItem(OccultismItems.SPAWN_EGG_MARID, "Marid Spawn Egg"); + this.addItem(OccultismItems.SPAWN_EGG_MARID_UNBOUND, "Unbound Marid Spawn Egg"); this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_ENDERMITE, "Possessed Endermite Spawn Egg"); this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_SKELETON, "Possessed Skeleton Spawn Egg"); this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_ENDERMAN, "Possessed Enderman Spawn Egg"); @@ -293,6 +302,10 @@ private void addItems() { this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_ELDER_GUARDIAN, "Possessed Elder Guardian Spawn Egg"); this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_WARDEN, "Possessed Warden Spawn Egg"); this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_HOGLIN, "Possessed Hoglin Spawn Egg"); + this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_WITCH, "Possessed Witch Spawn Egg"); + this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_ZOMBIE_PIGLIN, "Possessed Zombified Piglin Spawn Egg"); + this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_BEE, "Possessed Bee Spawn Egg"); + this.addItem(OccultismItems.SPAWN_EGG_GOAT_OF_MERCY, "Goat of Mercy Spawn Egg"); this.addItem(OccultismItems.SPAWN_EGG_WILD_HUNT_SKELETON, "Wild Hunt Skeleton Spawn Egg"); this.addItem(OccultismItems.SPAWN_EGG_WILD_HUNT_WITHER_SKELETON, "Wild Hunt Wither Skeleton Spawn Egg"); this.addItem(OccultismItems.SPAWN_EGG_OTHERWORLD_BIRD, "Drikwing Spawn Egg"); @@ -319,10 +332,31 @@ private void addItems() { this.addItem(OccultismItems.SPAWN_EGG_WILD_HORDE_DROWNED, "Wild Horde Drowned Spawn Egg"); this.addItem(OccultismItems.SPAWN_EGG_WILD_HORDE_CREEPER, "Wild Horde Creeper Spawn Egg"); this.addItem(OccultismItems.SPAWN_EGG_WILD_HORDE_SILVERFISH, "Wild Horde Silverfish Spawn Egg"); - this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_WEAK_BREEZE, "Possessed Weak Breeze Spawn Egg"); - this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_BREEZE, "Possessed Breeze Spawn Egg"); - this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_STRONG_BREEZE, "Possessed Strong Breeze Spawn Egg"); - this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_EVOKER, "Possessed Evoker Spawn Egg"); + this.addItem(OccultismItems.SPAWN_EGG_WILD_WEAK_BREEZE, "Wild Weak Breeze Spawn Egg"); + this.addItem(OccultismItems.SPAWN_EGG_WILD_BREEZE, "Wild Breeze Spawn Egg"); + this.addItem(OccultismItems.SPAWN_EGG_WILD_STRONG_BREEZE, "Wild Strong Breeze Spawn Egg"); + this.addItem(OccultismItems.SPAWN_EGG_WILD_EVOKER, "Wild Evoker Spawn Egg"); + //Pentacle Rework Update + this.addItem(OccultismItems.AMETHYST_DUST,"Amethyst Dust"); + this.addItem(OccultismItems.CRUELTY_ESSENCE,"Cruelty Essence"); + this.addItem(OccultismItems.CRUSHED_BLACKSTONE,"Crushed Blackstone"); + this.addItem(OccultismItems.CRUSHED_BLUE_ICE,"Crushed Blue Ice"); + this.addItem(OccultismItems.CRUSHED_CALCITE,"Crushed Calcite"); + this.addItem(OccultismItems.CRUSHED_ICE,"Crushed Ice"); + this.addItem(OccultismItems.CRUSHED_PACKED_ICE,"Crushed Packed Ice"); + this.addItem(OccultismItems.CURSED_HONEY,"Cursed Honey"); + this.addItem(OccultismItems.DEMONIC_MEAT,"Demonic Meat"); + this.addItem(OccultismItems.DRAGONYST_DUST,"Dragonyst Dust"); + this.addItem(OccultismItems.ECHO_DUST,"Echo Dust"); + this.addItem(OccultismItems.EMERALD_DUST,"Emerald Dust"); + this.addItem(OccultismItems.GRAY_PASTE,"Gray Paste"); + this.addItem(OccultismItems.LAPIS_DUST,"Lapis Dust"); + this.addItem(OccultismItems.MARID_ESSENCE,"Marid Essence"); + this.addItem(OccultismItems.NATURE_PASTE,"Nature Paste"); + this.addItem(OccultismItems.NETHERITE_DUST,"Netherite Dust"); + this.addItem(OccultismItems.NETHERITE_SCRAP_DUST,"Netherite Scrap Dust"); + this.addItem(OccultismItems.RESEARCH_FRAGMENT_DUST,"Research Fragment Dust"); + this.addItem(OccultismItems.WITHERITE_DUST,"Witherite Dust"); } private void addBlocks() { @@ -353,7 +387,7 @@ private void addBlocks() { this.addBlock(OccultismBlocks.SACRIFICIAL_BOWL, "Sacrificial Bowl"); this.addBlock(OccultismBlocks.GOLDEN_SACRIFICIAL_BOWL, "Golden Sacrificial Bowl"); this.addBlock(OccultismBlocks.CHALK_GLYPH_WHITE, "White Chalk Glyph"); - this.addBlock(OccultismBlocks.CHALK_GLYPH_GOLD, "Yellow Chalk Glyph"); + this.addBlock(OccultismBlocks.CHALK_GLYPH_YELLOW, "Yellow Chalk Glyph"); this.addBlock(OccultismBlocks.CHALK_GLYPH_PURPLE, "Purple Chalk Glyph"); this.addBlock(OccultismBlocks.CHALK_GLYPH_RED, "Red Chalk Glyph"); this.addBlock(OccultismBlocks.CHALK_GLYPH_LIGHT_GRAY, "Light Gray Chalk Glyph"); @@ -439,6 +473,7 @@ private void addEntities() { this.addEntityType(OccultismEntities.AFRIT, "Afrit"); this.addEntityType(OccultismEntities.AFRIT_WILD, "Unbound Afrit"); this.addEntityType(OccultismEntities.MARID, "Marid"); + this.addEntityType(OccultismEntities.MARID_UNBOUND, "Unbound Marid"); this.addEntityType(OccultismEntities.POSSESSED_ENDERMITE, "Possessed Endermite"); this.addEntityType(OccultismEntities.POSSESSED_SKELETON, "Possessed Skeleton"); this.addEntityType(OccultismEntities.POSSESSED_ENDERMAN, "Possessed Enderman"); @@ -449,6 +484,10 @@ private void addEntities() { this.addEntityType(OccultismEntities.POSSESSED_ELDER_GUARDIAN, "Possessed Elder Guardian"); this.addEntityType(OccultismEntities.POSSESSED_WARDEN, "Possessed Warden"); this.addEntityType(OccultismEntities.POSSESSED_HOGLIN, "Possessed Hoglin"); + this.addEntityType(OccultismEntities.POSSESSED_WITCH, "Possessed Witch"); + this.addEntityType(OccultismEntities.POSSESSED_ZOMBIE_PIGLIN, "Possessed Zombified Piglin"); + this.addEntityType(OccultismEntities.POSSESSED_BEE, "Possessed Bee"); + this.addEntityType(OccultismEntities.GOAT_OF_MERCY, "Goat of Mercy"); this.addEntityType(OccultismEntities.WILD_HUNT_SKELETON, "Wild Hunt Skeleton"); this.addEntityType(OccultismEntities.WILD_HUNT_WITHER_SKELETON, "Wild Hunt Wither Skeleton"); this.addEntityType(OccultismEntities.OTHERWORLD_BIRD, "Drikwing"); @@ -476,9 +515,9 @@ private void addEntities() { this.addEntityType(OccultismEntities.WILD_HORDE_DROWNED, "Wild Horde Drowned"); this.addEntityType(OccultismEntities.WILD_HORDE_CREEPER, "Wild Horde Creeper"); this.addEntityType(OccultismEntities.WILD_HORDE_SILVERFISH, "Wild Horde Silverfish"); - this.addEntityType(OccultismEntities.POSSESSED_WEAK_BREEZE, "Possessed Weak Breeze"); - this.addEntityType(OccultismEntities.POSSESSED_BREEZE, "Possessed Breeze"); - this.addEntityType(OccultismEntities.POSSESSED_STRONG_BREEZE, "Possessed Strong Breeze"); + this.addEntityType(OccultismEntities.POSSESSED_WEAK_BREEZE, "Wild Weak Breeze"); + this.addEntityType(OccultismEntities.POSSESSED_BREEZE, "Wild Breeze"); + this.addEntityType(OccultismEntities.POSSESSED_STRONG_BREEZE, "Wild Strong Breeze"); this.addEntityType(OccultismEntities.WILD_ZOMBIE, "Wild Zombie"); this.addEntityType(OccultismEntities.WILD_SKELETON, "Wild Skeleton"); this.addEntityType(OccultismEntities.WILD_SILVERFISH, "Wild Silverfish"); @@ -488,7 +527,7 @@ private void addEntities() { this.addEntityType(OccultismEntities.WILD_HUSK, "Wild Husk"); this.addEntityType(OccultismEntities.WILD_STRAY, "Wild Stray"); this.addEntityType(OccultismEntities.WILD_CAVE_SPIDER, "Wild Cave Spider"); - this.addEntityType(OccultismEntities.POSSESSED_EVOKER, "Possessed Evoker"); + this.addEntityType(OccultismEntities.POSSESSED_EVOKER, "Wild Evoker"); } private void addMiscTranslations() { @@ -566,7 +605,11 @@ private void addMiscTranslations() { this.add("ritual.occultism.sacrifice.dolphin", "Dolphin"); this.add("ritual.occultism.sacrifice.wolfs", "Wolf"); this.add("ritual.occultism.sacrifice.ocelot", "Ocelot"); + this.add("ritual.occultism.sacrifice.cats", "Cat"); this.add("ritual.occultism.sacrifice.vex", "Vex"); + this.add("ritual.occultism.sacrifice.tadpoles", "Tadpole"); + this.add("ritual.occultism.sacrifice.allay", "Allay"); + this.add("ritual.occultism.sacrifice.warden", "Warden"); //Network Message this.add("network.messages.occultism.request_order.order_received", "Order received!"); @@ -714,14 +757,18 @@ private void addRitualMessages() { this.add("ritual.occultism.summon_afrit_thunder_weather.started", "Started summoning afrit for a thunderstorm."); this.add("ritual.occultism.summon_afrit_thunder_weather.finished", "Summoned afrit successfully."); this.add("ritual.occultism.summon_afrit_thunder_weather.interrupted", "Summoning of afrit interrupted."); - this.add("ritual.occultism.summon_wild_afrit.conditions", "Not all requirements for this ritual are met."); - this.add("ritual.occultism.summon_wild_afrit.started", "Started summoning unbound afrit."); - this.add("ritual.occultism.summon_wild_afrit.finished", "Summoned unbound afrit successfully."); - this.add("ritual.occultism.summon_wild_afrit.interrupted", "Summoning of unbound afrit interrupted."); - this.add("ritual.occultism.summon_wild_hunt.conditions", "Not all requirements for this ritual are met."); - this.add("ritual.occultism.summon_wild_hunt.started", "Started summoning the wild hunt."); - this.add("ritual.occultism.summon_wild_hunt.finished", "Summoned the wild hunt successfully."); - this.add("ritual.occultism.summon_wild_hunt.interrupted", "Summoning of the wild hunt interrupted."); + this.add("ritual.occultism.summon_unbound_afrit.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.summon_unbound_afrit.started", "Started summoning unbound afrit."); + this.add("ritual.occultism.summon_unbound_afrit.finished", "Summoned unbound afrit successfully."); + this.add("ritual.occultism.summon_unbound_afrit.interrupted", "Summoning of unbound afrit interrupted."); + this.add("ritual.occultism.summon_unbound_marid.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.summon_unbound_marid.started", "Started summoning unbound marid."); + this.add("ritual.occultism.summon_unbound_marid.finished", "Summoned unbound marid successfully."); + this.add("ritual.occultism.summon_unbound_marid.interrupted", "Summoning of unbound marid interrupted."); + this.add("ritual.occultism.wild_hunt.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.wild_hunt.started", "Started summoning the wild hunt."); + this.add("ritual.occultism.wild_hunt.finished", "Summoned the wild hunt successfully."); + this.add("ritual.occultism.wild_hunt.interrupted", "Summoning of the wild hunt interrupted."); this.add("ritual.occultism.craft_dimensional_matrix.conditions", "Not all requirements for this ritual are met."); this.add("ritual.occultism.craft_dimensional_matrix.started", "Started binding djinni into dimensional matrix."); this.add("ritual.occultism.craft_dimensional_matrix.finished", "Successfully bound djinni into dimensional matrix."); @@ -787,6 +834,11 @@ private void addRitualMessages() { this.add("ritual.occultism.craft_miner_marid_master.finished", "Successfully summoned marid into magic lamp."); this.add("ritual.occultism.craft_miner_marid_master.interrupted", "Summoning of marid interrupted."); + this.add("ritual.occultism.craft_miner_ancient_eldritch.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.craft_miner_ancient_eldritch.started", "Started summoning something into magic lamp."); + this.add("ritual.occultism.craft_miner_ancient_eldritch.finished", "Successfully summoned something into magic lamp."); + this.add("ritual.occultism.craft_miner_ancient_eldritch.interrupted", "Summoning of something interrupted."); + this.add("ritual.occultism.craft_satchel.conditions", "Not all requirements for this ritual are met."); this.add("ritual.occultism.craft_satchel.started", "Started binding foliot into satchel."); this.add("ritual.occultism.craft_satchel.finished", "Successfully bound foliot into satchel."); @@ -800,7 +852,7 @@ private void addRitualMessages() { this.add("ritual.occultism.craft_familiar_ring.finished", "Successfully bound djinni into familiar ring."); this.add("ritual.occultism.craft_familiar_ring.interrupted", "Binding of djinni interrupted."); this.add("ritual.occultism.craft_wild_trim.conditions", "Not all requirements for this ritual are met."); - this.add("ritual.occultism.craft_wild_trim.started", "Marid has started to forge the Wild Armor Trim Smithing Template."); + this.add("ritual.occultism.craft_wild_trim.started", "Wild Spirits has started to forge the Wild Armor Trim Smithing Template."); this.add("ritual.occultism.craft_wild_trim.finished", "Successfully forged the Wild Armor Trim Smithing Template."); this.add("ritual.occultism.craft_wild_trim.interrupted", "Binding of djinni interrupted."); this.add("ritual.occultism.possess_endermite.conditions", "Not all requirements for this ritual are met."); @@ -843,6 +895,22 @@ private void addRitualMessages() { this.add("ritual.occultism.possess_hoglin.started", "Started summoning possessed hoglin."); this.add("ritual.occultism.possess_hoglin.finished", "Summoned possessed hoglin successfully."); this.add("ritual.occultism.possess_hoglin.interrupted", "Summoning of possessed hoglin interrupted."); + this.add("ritual.occultism.possess_witch.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.possess_witch.started", "Started summoning possessed witch."); + this.add("ritual.occultism.possess_witch.finished", "Summoned possessed witch successfully."); + this.add("ritual.occultism.possess_witch.interrupted", "Summoning of possessed witch interrupted."); + this.add("ritual.occultism.possess_zombie_piglin.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.possess_zombie_piglin.started", "Started summoning possessed zombie piglin."); + this.add("ritual.occultism.possess_zombie_piglin.finished", "Summoned possessed zombie piglin successfully."); + this.add("ritual.occultism.possess_zombie_piglin.interrupted", "Summoning of possessed zombie piglin interrupted."); + this.add("ritual.occultism.possess_bee.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.possess_bee.started", "Started summoning possessed bee."); + this.add("ritual.occultism.possess_bee.finished", "Summoned possessed bee successfully."); + this.add("ritual.occultism.possess_bee.interrupted", "Summoning of possessed bee interrupted."); + this.add("ritual.occultism.possess_goat.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.possess_goat.started", "Started summoning goat of mercy."); + this.add("ritual.occultism.possess_goat.finished", "Summoned goat of mercy successfully."); + this.add("ritual.occultism.possess_goat.interrupted", "Summoning of goat of mercy interrupted."); this.add("ritual.occultism.familiar_otherworld_bird.conditions", "Not all requirements for this ritual are met."); this.add("ritual.occultism.familiar_otherworld_bird.started", "Started summoning drikwing familiar."); this.add("ritual.occultism.familiar_otherworld_bird.finished", "Summoned drikwing familiar successfully."); @@ -867,28 +935,28 @@ private void addRitualMessages() { this.add("ritual.occultism.familiar_guardian.started", "Started summoning guardian familiar."); this.add("ritual.occultism.familiar_guardian.finished", "Summoned guardian familiar successfully."); this.add("ritual.occultism.familiar_guardian.interrupted", "Summoning of guardian familiar interrupted."); - this.add("ritual.occultism.summon_wild_otherworld_bird.conditions", "Not all requirements for this ritual are met."); - this.add("ritual.occultism.summon_wild_otherworld_bird.started", "Started summoning wild drikwing."); - this.add("ritual.occultism.summon_wild_otherworld_bird.finished", "Summoned wild drikwing successfully."); - this.add("ritual.occultism.summon_wild_otherworld_bird.interrupted", "Summoning of wild drikwing interrupted."); - this.add("ritual.occultism.summon_wild_parrot.conditions", "Not all requirements for this ritual are met."); - this.add("ritual.occultism.summon_wild_parrot.started", "Started summoning wild parrot."); - this.add("ritual.occultism.summon_wild_parrot.finished", "Summoned wild parrot successfully."); - this.add("ritual.occultism.summon_wild_parrot.interrupted", "Summoning of wild parrot interrupted."); - - this.add("ritual.occultism.summon_random_animal.conditions", "Not all requirements for this ritual are met."); - this.add("ritual.occultism.summon_random_animal.started", "Started summoning a random animal."); - this.add("ritual.occultism.summon_random_animal.finished", "Summoned successfully."); - this.add("ritual.occultism.summon_random_animal.interrupted", "Summoning of random animal interrupted."); + this.add("ritual.occultism.possess_unbound_otherworld_bird.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.possess_unbound_otherworld_bird.started", "Started summoning unbound drikwing."); + this.add("ritual.occultism.possess_unbound_otherworld_bird.finished", "Summoned unbound drikwing successfully."); + this.add("ritual.occultism.possess_unbound_otherworld_bird.interrupted", "Summoning of unbound drikwing interrupted."); + this.add("ritual.occultism.possess_unbound_parrot.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.possess_unbound_parrot.started", "Started summoning unbound parrot."); + this.add("ritual.occultism.possess_unbound_parrot.finished", "Summoned unbound parrot successfully."); + this.add("ritual.occultism.possess_unbound_parrot.interrupted", "Summoning of unbound parrot interrupted."); + + this.add("ritual.occultism.possess_random_animal.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.possess_random_animal.started", "Started summoning a random animal."); + this.add("ritual.occultism.possess_random_animal.finished", "Summoned successfully."); + this.add("ritual.occultism.possess_random_animal.interrupted", "Summoning of random animal interrupted."); this.add("ritual.occultism.familiar_parrot.conditions", "Not all requirements for this ritual are met."); this.add("ritual.occultism.familiar_parrot.started", "Started summoning parrot familiar."); this.add("ritual.occultism.familiar_parrot.finished", "Summoned parrot familiar successfully."); this.add("ritual.occultism.familiar_parrot.interrupted", "Summoning of parrot familiar interrupted."); - this.add("ritual.occultism.summon_allay.conditions", "Not all requirements for this ritual are met."); - this.add("ritual.occultism.summon_allay.started", "Started purifying Vex to Allay."); - this.add("ritual.occultism.summon_allay.finished", "Purified Vex to Allay successfully."); - this.add("ritual.occultism.summon_allay.interrupted", "Purifying Vex to allay interrupted."); + this.add("ritual.occultism.resurrect_allay.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.resurrect_allay.started", "Started purifying Vex to Allay."); + this.add("ritual.occultism.resurrect_allay.finished", "Purified Vex to Allay successfully."); + this.add("ritual.occultism.resurrect_allay.interrupted", "Purifying Vex to allay interrupted."); this.add("ritual.occultism.familiar_greedy.conditions", "Not all requirements for this ritual are met."); this.add("ritual.occultism.familiar_greedy.started", "Started summoning greedy familiar."); this.add("ritual.occultism.familiar_greedy.finished", "Summoned v familiar successfully."); @@ -936,39 +1004,72 @@ private void addRitualMessages() { this.add("ritual.occultism.summon_demonic_husband.finished", "Summoned successfully."); this.add("ritual.occultism.summon_demonic_husband.interrupted", "Summoning interrupted."); - this.add("ritual.occultism.summon_wild_husk.conditions", "Not all requirements for this ritual are met."); - this.add("ritual.occultism.summon_wild_husk.started", "Started summoning the wild horde husk."); - this.add("ritual.occultism.summon_wild_husk.finished", "Summoned the wild horde husk successfully."); - this.add("ritual.occultism.summon_wild_husk.interrupted", "Summoning of the wild horde husk interrupted."); - this.add("ritual.occultism.summon_wild_drowned.conditions", "Not all requirements for this ritual are met."); - this.add("ritual.occultism.summon_wild_drowned.started", "Started summoning the wild horde drowned."); - this.add("ritual.occultism.summon_wild_drowned.finished", "Summoned the wild horde drowned successfully."); - this.add("ritual.occultism.summon_wild_drowned.interrupted", "Summoning of the wild horde drowned interrupted."); - this.add("ritual.occultism.summon_wild_creeper.conditions", "Not all requirements for this ritual are met."); - this.add("ritual.occultism.summon_wild_creeper.started", "Started summoning the wild horde creeper."); - this.add("ritual.occultism.summon_wild_creeper.finished", "Summoned the wild horde creeper successfully."); - this.add("ritual.occultism.summon_wild_creeper.interrupted", "Summoning of the wild horde creeper interrupted."); - this.add("ritual.occultism.summon_wild_silverfish.conditions", "Not all requirements for this ritual are met."); - this.add("ritual.occultism.summon_wild_silverfish.started", "Started summoning the wild horde silverfish."); - this.add("ritual.occultism.summon_wild_silverfish.finished", "Summoned the wild horde silverfish successfully."); - this.add("ritual.occultism.summon_wild_silverfish.interrupted", "Summoning of the wild horde silverfish interrupted."); - this.add("ritual.occultism.possess_weak_breeze.conditions", "Not all requirements for this ritual are met."); - this.add("ritual.occultism.possess_weak_breeze.started", "Started summoning possessed weak breeze."); - this.add("ritual.occultism.possess_weak_breeze.finished", "Summoned possessed weak breeze successfully."); - this.add("ritual.occultism.possess_weak_breeze.interrupted", "Summoning of possessed weak breeze interrupted."); - this.add("ritual.occultism.possess_breeze.conditions", "Not all requirements for this ritual are met."); - this.add("ritual.occultism.possess_breeze.started", "Started summoning possessed breeze."); - this.add("ritual.occultism.possess_breeze.finished", "Summoned possessed breeze successfully."); - this.add("ritual.occultism.possess_breeze.interrupted", "Summoning of possessed breeze interrupted."); - this.add("ritual.occultism.possess_strong_breeze.conditions", "Not all requirements for this ritual are met."); - this.add("ritual.occultism.possess_strong_breeze.started", "Started summoning possessed strong breeze."); - this.add("ritual.occultism.possess_strong_breeze.finished", "Summoned possessed strong breeze successfully."); - this.add("ritual.occultism.possess_strong_breeze.interrupted", "Summoning of possessed strong breeze interrupted."); + this.add("ritual.occultism.wild_husk.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.wild_husk.started", "Started summoning the wild horde husk."); + this.add("ritual.occultism.wild_husk.finished", "Summoned the wild horde husk successfully."); + this.add("ritual.occultism.wild_husk.interrupted", "Summoning of the wild horde husk interrupted."); + this.add("ritual.occultism.wild_drowned.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.wild_drowned.started", "Started summoning the wild horde drowned."); + this.add("ritual.occultism.wild_drowned.finished", "Summoned the wild horde drowned successfully."); + this.add("ritual.occultism.wild_drowned.interrupted", "Summoning of the wild horde drowned interrupted."); + this.add("ritual.occultism.wild_creeper.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.wild_creeper.started", "Started summoning the wild horde creeper."); + this.add("ritual.occultism.wild_creeper.finished", "Summoned the wild horde creeper successfully."); + this.add("ritual.occultism.wild_creeper.interrupted", "Summoning of the wild horde creeper interrupted."); + this.add("ritual.occultism.wild_silverfish.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.wild_silverfish.started", "Started summoning the wild horde silverfish."); + this.add("ritual.occultism.wild_silverfish.finished", "Summoned the wild horde silverfish successfully."); + this.add("ritual.occultism.wild_silverfish.interrupted", "Summoning of the wild horde silverfish interrupted."); + this.add("ritual.occultism.wild_weak_breeze.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.wild_weak_breeze.started", "Started summoning wild weak breeze."); + this.add("ritual.occultism.wild_weak_breeze.finished", "Summoned wild weak breeze successfully."); + this.add("ritual.occultism.wild_weak_breeze.interrupted", "Summoning of wild weak breeze interrupted."); + this.add("ritual.occultism.wild_breeze.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.wild_breeze.started", "Started summoning wild breeze."); + this.add("ritual.occultism.wild_breeze.finished", "Summoned wild breeze successfully."); + this.add("ritual.occultism.wild_breeze.interrupted", "Summoning of wild breeze interrupted."); + this.add("ritual.occultism.wild_strong_breeze.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.wild_strong_breeze.started", "Started summoning wild strong breeze."); + this.add("ritual.occultism.wild_strong_breeze.finished", "Summoned wild strong breeze successfully."); + this.add("ritual.occultism.wild_strong_breeze.interrupted", "Summoning of wild strong breeze interrupted."); this.add("ritual.occultism.summon_horde_illager.conditions", "Not all requirements for this ritual are met."); this.add("ritual.occultism.summon_horde_illager.started", "Started summoning the small illager invasion."); this.add("ritual.occultism.summon_horde_illager.finished", "Summoned the small illager invasion successfully."); this.add("ritual.occultism.summon_horde_illager.interrupted", "Summoning of the small illager invasion interrupted."); + this.add("ritual.occultism.craft_nature_paste.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.craft_nature_paste.started", "Started infusing Nature Paste."); + this.add("ritual.occultism.craft_nature_paste.finished", "Successfully infused Nature Paste."); + this.add("ritual.occultism.craft_nature_paste.interrupted", "Craft of Nature Paste interrupted."); + this.add("ritual.occultism.craft_gray_paste.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.craft_gray_paste.started", "Started infusing Gray Paste."); + this.add("ritual.occultism.craft_gray_paste.finished", "Successfully infused Gray Paste."); + this.add("ritual.occultism.craft_gray_paste.interrupted", "Craft of Gray Paste interrupted."); + this.add("ritual.occultism.craft_research_fragment_dust.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.craft_research_fragment_dust.started", "Started infusing Research Fragment Dust."); + this.add("ritual.occultism.craft_research_fragment_dust.finished", "Successfully infused Research Fragment Dust."); + this.add("ritual.occultism.craft_research_fragment_dust.interrupted", "Craft of Research Fragment Dust interrupted."); + this.add("ritual.occultism.craft_witherite_dust.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.craft_witherite_dust.started", "Started infusing Witherite."); + this.add("ritual.occultism.craft_witherite_dust.finished", "Successfully infused Witherite."); + this.add("ritual.occultism.craft_witherite_dust.interrupted", "Craft of Witherite interrupted."); + this.add("ritual.occultism.repair_chalks.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.repair_chalks.started", "Started repairing chalk."); + this.add("ritual.occultism.repair_chalks.finished", "Successfully repaired chalk."); + this.add("ritual.occultism.repair_chalks.interrupted", "Chalk repair interrupted."); + this.add("ritual.occultism.repair_tools.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.repair_tools.started", "Started repairing tool."); + this.add("ritual.occultism.repair_tools.finished", "Successfully repaired tool."); + this.add("ritual.occultism.repair_tools.interrupted", "Tool repair interrupted."); + this.add("ritual.occultism.repair_armors.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.repair_armors.started", "Started repairing armor."); + this.add("ritual.occultism.repair_armors.finished", "Successfully repaired armor."); + this.add("ritual.occultism.repair_armors.interrupted", "Armor repair interrupted."); + this.add("ritual.occultism.repair_miners.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.repair_miners.started", "Started repairing miner."); + this.add("ritual.occultism.repair_miners.finished", "Successfully repaired miner."); + this.add("ritual.occultism.repair_miners.interrupted", "Miner repair interrupted."); + this.addRitualMessage(OccultismRituals.RESURRECT_FAMILIAR, "conditions", "Not all requirements for this ritual are met."); this.addRitualMessage(OccultismRituals.RESURRECT_FAMILIAR, "started", "Started resurrecting familiar."); this.addRitualMessage(OccultismRituals.RESURRECT_FAMILIAR, "finished", "Successfully resurrected familiar."); @@ -984,6 +1085,16 @@ private void addRitualMessages() { this.addRitualMessage(OccultismItems.RITUAL_DUMMY_CRAFT_RITUAL_SATCHEL_T2, "started", "Started binding an afrit into a ritual satchel."); this.addRitualMessage(OccultismItems.RITUAL_DUMMY_CRAFT_RITUAL_SATCHEL_T2, "finished", "Successfully bound an afrit into a ritual satchel."); this.addRitualMessage(OccultismItems.RITUAL_DUMMY_CRAFT_RITUAL_SATCHEL_T2, "interrupted", "Binding of afrit interrupted."); + + this.addRitualMessage(OccultismItems.RITUAL_DUMMY_CRAFT_BUDDING_AMETHYST, "conditions", "Not all requirements for this ritual are met."); + this.addRitualMessage(OccultismItems.RITUAL_DUMMY_CRAFT_BUDDING_AMETHYST, "started", "Started forging budding amethyst."); + this.addRitualMessage(OccultismItems.RITUAL_DUMMY_CRAFT_BUDDING_AMETHYST, "finished", "Successfully forged budding amethyst."); + this.addRitualMessage(OccultismItems.RITUAL_DUMMY_CRAFT_BUDDING_AMETHYST, "interrupted", "Forging budding amethyst interrupted."); + + this.addRitualMessage(OccultismItems.RITUAL_DUMMY_CRAFT_REINFORCED_DEEPSLATE, "conditions", "Not all requirements for this ritual are met."); + this.addRitualMessage(OccultismItems.RITUAL_DUMMY_CRAFT_REINFORCED_DEEPSLATE, "started", "Started forging reinforced deepslate."); + this.addRitualMessage(OccultismItems.RITUAL_DUMMY_CRAFT_REINFORCED_DEEPSLATE, "finished", "Successfully forged reinforced deepslate."); + this.addRitualMessage(OccultismItems.RITUAL_DUMMY_CRAFT_REINFORCED_DEEPSLATE, "interrupted", "Forging reinforced deepslate interrupted."); } public void addRitualMessage(DeferredHolder ritual, String key, String message) { @@ -1000,7 +1111,6 @@ private void addBook() { var helper = ModonomiconAPI.get().getContextHelper(Occultism.MODID); helper.book("dictionary_of_spirits"); - this.addPentaclesCategory(helper); this.addRitualsCategory(helper); this.addSummoningRitualsCategory(helper); this.addCraftingRitualsCategory(helper); @@ -1009,579 +1119,6 @@ private void addBook() { this.addStorageCategory(helper); } - private void addPentaclesCategory(BookContextHelper helper) { - helper.category("pentacles"); - this.add(helper.categoryName(), "Pentacles"); - - helper.entry("pentacles_overview"); - this.add(helper.entryName(), "On Pentacles"); - - helper.page("intro1"); - this.add(helper.pageTitle(), "On Pentacles"); - this.add(helper.pageText(), - """ - The name [#](%1$s)Pentacle[#]() in this context refers to ritual drawings of any shape, not just five-pointed stars. \\ - \\ - Pentacles are used to summon and bind spirits from [#](%1$s)The Other Place[#](). - """.formatted(COLOR_PURPLE)); - - helper.page("intro2"); - this.add(helper.pageText(), - """ - They act both as a device to call on the entity, an amplifier for the summoner's commanding power - and as a protecting circle preventing attacks from within against the summoner. - """.formatted(COLOR_PURPLE)); - - helper.page("intro3"); - this.add(helper.pageText(), - """ - Each pentacle consists of a central golden sacrificial bowl, surrounding runes of various colors and occult paraphernalia that improve the intended effect in various ways. - """.formatted(COLOR_PURPLE)); - - - helper.page("intro4"); - this.add(helper.pageText(), - """ - The combination of chosen runes and supporting items as well as their exact spatial positioning determines the use and effectiveness of the pentacle. - \\ - \\ - Ingredients are placed in [#](%1$s)Sacrifical Bowls[#]() near the pentacle. - """.formatted(COLOR_PURPLE)); - - //exact copy found in first ritual entry - helper.page("bowl_placement"); - //no text - - //exact copy found in first ritual entry - helper.page("bowl_text"); - this.add(helper.pageText(), - """ - [Sacrificial Bowls](item://occultism:sacrificial_bowl) must be placed **anywhere** within 8 blocks horizontally of the central [](item://occultism:golden_sacrificial_bowl). The exact location does not matter. - \\ - \\ - Now it is time to place the ingredients you see on the next page in the (regular, not golden) sacrificial bowls. - """); - - helper.page("summoning_pentacles"); - this.add(helper.pageTitle(), "Summoning Pentacles"); - this.add(helper.pageText(), - """ - The purpose of this type of pentacle is to summon spirits in their chosen form into the world. Spirits summoned thus suffer from strong essence decay, and only very powerful spirits can remain for extended periods of time. - """); - - helper.page("infusion_pentacles"); - this.add(helper.pageTitle(), "Infusion Pentacles"); - this.add(helper.pageText(), - """ - Infusion pentacles allow the binding of spirits into objects. While the spirits suffer from essence decay in some cases, this can often be averted with the right pentacle setup, and by embedding crystals and precious metals into the object to support the spirit. - """); - - helper.page("possession_pentacles"); - this.add(helper.pageTitle(), "Possession Pentacles"); - this.add(helper.pageText(), - """ - These pentacles force spirits to possess a living being, which, depending on the ritual context, gives the summoner control over various aspects of that being, ranging from it's strength to it what it drops when killed, and in some cases even allows total control. - """); - - helper.entry("paraphernalia"); - this.add(helper.entryName(), "Occult Paraphernalia"); - - helper.page("intro"); - this.add(helper.pageTitle(), "Occult Paraphernalia"); - this.add(helper.pageText(), - """ - In addition to runes various occult paraphernalia are used to improve the intended effect of the pentacle. - """); - - helper.page("candle"); - this.add(helper.pageText(), - """ - Candles increase the stability of the pentacle, thus allowing a slowed essence decay of the summoned spirit, leading to a longer lifetime of the spirit, or possessed object or being. - """); - - helper.page("crystal"); - this.add(helper.pageText(), - """ - Crystals increase the binding power of the pentacle, allowing a permanent binding of the spirit into an item or living being. - """); - - helper.page("gem_recipe"); - //no text - - helper.page("crystal_recipe"); - //no text - - helper.page("skeleton_skull"); - this.add(helper.pageText(), - """ - Skulls increase the calling power of the pentacle, allowing to summon more dangerous spirits. - """); - - helper.entry("chalk_uses"); - this.add(helper.entryName(), "Chalk Types"); - - helper.page("intro"); - this.add(helper.pageTitle(), "Chalk Types"); - this.add(helper.pageText(), - """ - Chalk is used to draw pentacle runes and define the pentacle shape. Different types of chalk are used for different purposes, as outlined on the next pages. - \\ - \\ - The different runes are purely decorative. - """); - - helper.page("intro2"); - this.add(helper.pageText(), - """ - **Repeatedly** use chalk on a block to switch to a different rune. - \\ - \\ - Using a [](item://occultism:brush) is the easiest way to **remove** chalk runes that have been incorrectly placed. - """); - - helper.page("white_chalk"); - this.add(helper.pageText(), - """ - White chalk is the most basic type of ritual chalk and is found in most pentacles. It has no special power beyond defining the shape of the pentacle. - """); - - - helper.page("white_chalk_uses"); - this.add(helper.pageTitle(), "White Chalk Uses"); - this.add(helper.pageText(), - """ - - [Aviar's Circle](entry://occultism:dictionary_of_spirits/pentacles/summon_foliot) - - [Eziveus' Spectral Compulsion](entry://occultism:dictionary_of_spirits/pentacles/craft_foliot) - - [Hedyrin's Lure](entry://occultism:dictionary_of_spirits/pentacles/possess_foliot) - - [Ophyx' Calling](entry://occultism:dictionary_of_spirits/pentacles/summon_djinni) - - [Strigeor's Higher Binding](entry://occultism:dictionary_of_spirits/pentacles/craft_djinni) - - [Ihagan's Enthrallment](entry://occultism:dictionary_of_spirits/pentacles/possess_djinni) - - [Abras' Conjure](entry://occultism:dictionary_of_spirits/pentacles/summon_afrit) - - [Sevira's Permanent Confinement](entry://occultism:dictionary_of_spirits/pentacles/craft_afrit) - - [Abras' Open Conjure](entry://occultism:dictionary_of_spirits/pentacles/summon_wild_afrit) - """); - - helper.page("white_chalk_uses2"); - this.add(helper.pageTitle(), "White Chalk Uses"); - this.add(helper.pageText(), - """ - - [Uphyxes Inverted Tower](entry://occultism:dictionary_of_spirits/pentacles/craft_marid) - - [Osorin' Unbound Calling](entry://occultism:dictionary_of_spirits/pentacles/summon_wild_greater_spirit) - """); - - helper.page("golden_chalk"); - this.add(helper.pageText(), - """ - Yellow chalk is used for binding runes, which allow to infuse a spirit into an item, or make it possess a living being. - """); - - - helper.page("golden_chalk_uses"); - this.add(helper.pageTitle(), "Yellow Chalk Uses"); - this.add(helper.pageText(), - """ - - [Eziveus' Spectral Compulsion](entry://occultism:dictionary_of_spirits/pentacles/craft_foliot) - - [Hedyrin's Lure](entry://occultism:dictionary_of_spirits/pentacles/possess_foliot) - - [Strigeor's Higher Binding](entry://occultism:dictionary_of_spirits/pentacles/craft_djinni) - - [Ihagan's Enthrallment](entry://occultism:dictionary_of_spirits/pentacles/possess_djinni) - - [Sevira's Permanent Confinement](entry://occultism:dictionary_of_spirits/pentacles/craft_afrit) - - [Uphyxes Inverted Tower](entry://occultism:dictionary_of_spirits/pentacles/craft_marid) - """); - - helper.page("purple_chalk"); - this.add(helper.pageText(), - """ - Purple chalk is generally used to call on higher beings such as [#](%1$s)Djinn[#]() or [#](%1$s)Afrit[#](), but also slows essence decay of summoned spirits. - """.formatted(COLOR_PURPLE)); - - helper.page("purple_chalk_uses"); - this.add(helper.pageTitle(), "Purple Chalk Uses"); - this.add(helper.pageText(), - """ - - [Ophyx' Calling](entry://occultism:dictionary_of_spirits/pentacles/summon_djinni) - - [Strigeor's Higher Binding](entry://occultism:dictionary_of_spirits/pentacles/craft_djinni) - - [Ihagan's Enthrallment](entry://occultism:dictionary_of_spirits/pentacles/possess_djinni) - - [Abras' Conjure](entry://occultism:dictionary_of_spirits/pentacles/summon_afrit) - - [Sevira's Permanent Confinement](entry://occultism:dictionary_of_spirits/pentacles/craft_afrit) - - [Abras' Open Conjure](entry://occultism:dictionary_of_spirits/pentacles/summon_wild_afrit) - - [Osorin' Unbound Calling](entry://occultism:dictionary_of_spirits/pentacles/summon_wild_greater_spirit) - """); - - helper.page("red_chalk"); - this.add(helper.pageText(), - """ - Red chalk is used to call on the most powerful and dangerous beings, such as [#](%1$s)Marid[#](). - \\ - \\ - [Afrit Essence](entry://occultism:dictionary_of_spirits/summoning_rituals/afrit_essence) is required to craft red chalk. - """.formatted(COLOR_PURPLE)); - - helper.page("red_chalk_uses"); - this.add(helper.pageTitle(), "Red Chalk Uses"); - this.add(helper.pageText(), - """ - - [Abras' Conjure](entry://occultism:dictionary_of_spirits/pentacles/summon_afrit) - - [Uphyxes Inverted Tower](entry://occultism:dictionary_of_spirits/pentacles/craft_marid) - """); - - - helper.entry("summon_foliot"); - this.add(helper.entryName(), "Aviar's Circle"); - - helper.page("intro"); - this.add(helper.pageTitle(), "Aviar's Circle"); - this.add(helper.pageText(), - """ - **Purpose:** Summon a [#](%1$s)Foliot[#]() - \\ - \\ - Considered by most to be the simplest pentacle, [#](%1$s)Aviar's Circle[#]() is easy to set up, but provides only a minimum of binding power and protection for the summoner. - \\ - \\ - Only the weakest [#](%1$s)Foliot[#]() can be summoned in rituals using this pentacle. - """.formatted(COLOR_PURPLE)); - - helper.page("multiblock"); - //no text - - helper.page("uses"); - this.add(helper.pageTitle(), "Uses"); - this.add(helper.pageText(), - """ - - [Foliot Crusher](entry://summoning_rituals/summon_crusher_t1) - - [Foliot Lumberjack](entry://summoning_rituals/summon_lumberjack) - - [Foliot Transporter](entry://summoning_rituals/summon_transport_items) - - [Foliot Janitor](entry://summoning_rituals/summon_cleaner) - - [Otherstone Trader](entry://summoning_rituals/summon_otherstone_trader) - - [Otherworld Sapling Trader](entry://summoning_rituals/summon_otherworld_sapling_trader) - - [Resurrect Familiar](entry://familiar_rituals/resurrection) - - [Purify Vex to Allay](entry://familiar_rituals/summon_allay) - """); - - - helper.entry("summon_djinni"); - this.add(helper.entryName(), "Ophyx' Calling"); - - helper.page("intro"); - this.add(helper.pageTitle(), "Ophyx' Calling"); - //Add link rituals/possession/possess_skeleton instead of [Obtain here] - this.add(helper.pageText(), - """ - **Purpose:** Summon a [#](%1$s)Djinni[#]() - \\ - \\ - Developed by [#](%1$s)Ophyx[#]() during the Third Era, the [#](%1$s)Calling[#]() is the go-to pentacle for [#](%1$s)Djinni[#]() summonings ever since. Skeleton skulls ([Obtain here](entry://possession_rituals/possess_skeleton)) and [#](%1$s)Purple Chalk[#]() provide the calling power required to force Djinni into appearance and candles stabilize the ritual. - """.formatted(COLOR_PURPLE)); - - helper.page("multiblock"); - //no text - - helper.page("uses"); - this.add(helper.pageTitle(), "Uses"); - this.add(helper.pageText(), - """ - - [Djinni Machine Operator](entry://summoning_rituals/summon_manage_machine) - - [Djinni Crusher](entry://summoning_rituals/summon_crusher_t2) - - [Clear Weather](entry://summoning_rituals/weather_magic@clear) - - [Time Magic](entry://summoning_rituals/time_magic) - """.formatted(COLOR_PURPLE)); - - helper.entry("summon_afrit"); - this.add(helper.entryName(), "Abras' Conjure"); - helper.page("intro"); - this.add(helper.pageTitle(), "Abras' Conjure"); - this.add(helper.pageText(), - """ - **Purpose:** Summon an [#](%1$s)Afrit[#]() - \\ - \\ - **Abras' Conjure** is one of the few pentacles capable of (mostly) safely summoning an [#](%1$s)Afrit[#](). While the requirement of a wither skeleton skull makes it comparatively expensive, the additional calling potential is required to reach these high-power spirits. - """.formatted(COLOR_PURPLE)); - - helper.page("multiblock"); - //no text - - helper.page("uses"); - this.add(helper.pageTitle(), "Uses"); - this.add(helper.pageText(), - """ - - [Thunderstorm](entry://summoning_rituals/weather_magic@thunder) - - [Rainy Weather](entry://summoning_rituals/weather_magic@rain) - - [Afrit Crusher](entry://summoning_rituals/summon_crusher_t3) - """.formatted(COLOR_PURPLE)); - - helper.entry("summon_marid"); - this.add(helper.entryName(), "Fatma's Incentivized Attraction"); - helper.page("intro"); - this.add(helper.pageTitle(), "Fatma's Incentivized Attraction"); - this.add(helper.pageText(), - """ - **Purpose:** Summon a [#](%1$s)Marid[#]() - \\ - \\ - **Fatma's Incentivized Attraction** is a powerful pentacle, allowing to summon [#](%1$s)Marid[#]() and bind them to the summoner's will. - """.formatted(COLOR_PURPLE)); - - helper.page("multiblock"); - //no text - - helper.page("uses"); - this.add(helper.pageTitle(), "Uses"); - this.add(helper.pageText(), - """ - - [Marid Crusher](entry://summoning_rituals/summon_crusher_t4) - """.formatted(COLOR_PURPLE)); - - helper.entry("summon_wild_afrit"); - this.add(helper.entryName(), "Abras' Open Conjure"); - helper.page("intro"); - this.add(helper.pageTitle(), "Abras' Open Conjure"); - this.add(helper.pageText(), - """ - **Purpose:** Summon an unbound [#](%1$s)Afrit[#]() - \\ - \\ - **Abras' Open Conjure** is a simplified version of [#](%1$s)Abras' Conjure[#](), allowing to summon [#](%1$s)Afrit[#]() without red chalk. Due to the much reduced power of the pentacle, it cannot be used to control [#](%1$s)Afrit[#](), and it thus can only be used to fight and kill [#](%1$s)Afrit[#](). - """.formatted(COLOR_PURPLE)); - - helper.page("multiblock"); - //no text - - helper.page("uses"); - this.add(helper.pageTitle(), "Uses"); - this.add(helper.pageText(), - """ - - [Afrit Essence](entry://summoning_rituals/afrit_essence) - """.formatted(COLOR_PURPLE)); - - helper.entry("summon_wild_greater_spirit"); - this.add(helper.entryName(), "Osorin's Unbound Calling"); - helper.page("intro"); - this.add(helper.pageTitle(), "Osorin's Unbound Calling"); - this.add(helper.pageText(), - """ - **Purpose:** Summon an unbound [#](%1$s)Greater Spirit[#]() - \\ - \\ - **Osorin's Unbound Calling** is based on [#](%1$s)Abras' Open Conjure[#](), but features none of the stabilizing paraphernalia. The pentacle offers no protection whatsoever to the summoner, but acts as an irresistible call to [#](%1$s)Greater Spirits[#](). - """.formatted(COLOR_PURPLE)); - - helper.page("multiblock"); - //no text - - helper.page("uses"); - this.add(helper.pageTitle(), "Uses"); - this.add(helper.pageText(), - """ - - [Wither Skeleton Skull](entry://summoning_rituals/wither_skull) - - [Horde Husk](entry://possession_rituals/horde_husk) - - [Horde Drowned](entry://possession_rituals/horde_drowned) - - [Horde Creeper](entry://possession_rituals/horde_creeper) - - [Horde Silverfish](entry://possession_rituals/horde_silverfish) - - [Trial Key](entry://possession_rituals/possess_weak_breeze) - - [Ominous Trial Key](entry://possession_rituals/possess_breeze) - - [Heavy Core](entry://possession_rituals/possess_strong_breeze) - - [Small Illager Invasion](entry://possession_rituals/horde_illager) - """.formatted(COLOR_PURPLE)); - - helper.entry("possess_foliot"); - this.add(helper.entryName(), "Hedyrin's Lure"); - helper.page("intro"); - this.add(helper.pageTitle(), "Hedyrin's Lure"); - this.add(helper.pageText(), - """ - **Purpose:** Foliot Possession - \\ - \\ - **Hedyrin's Lure** attracts [#](%1$s)Foliot[#]() and forces them to possess a nearby creature. This pentacle does not lead to permanent imprisonment, the spirit and possessed creature will perish within a short period of time. - """.formatted(COLOR_PURPLE)); - - helper.page("multiblock"); - //no text - - helper.page("uses"); - this.add(helper.pageTitle(), "Uses"); - this.add(helper.pageText(), - """ - - [Possessed Endermite](entry://possession_rituals/possess_endermite) - - [Possessed Skeleton](entry://possession_rituals/possess_skeleton) - - [Possessed Phantom](entry://possession_rituals/possess_phantom) - - [Parrot Familiar](entry://familiar_rituals/familiar_parrot) - - [Greedy Familiar](entry://familiar_rituals/familiar_greedy) - - [Deer Familiar](entry://familiar_rituals/familiar_deer) - - [Blacksmith Familiar](entry://familiar_rituals/familiar_blacksmith) - - [Beaver Familiar](entry://familiar_rituals/familiar_beaver) - """.formatted(COLOR_PURPLE)); - - helper.entry("possess_djinni"); - this.add(helper.entryName(), "Ihagan's Enthrallment"); - helper.page("intro"); - this.add(helper.pageTitle(), "Ihagan's Enthrallment"); - this.add(helper.pageText(), - """ - **Purpose:** Djinni Possession - \\ - \\ - **Ihagan's Enthrallment** forces [#](%1$s)Djinn[#]() to possess a nearby creature. This pentacle does not lead to permanent imprisonment, the spirit and possessed creature will perish within a short period of time. - """.formatted(COLOR_PURPLE)); - - helper.page("multiblock"); - //no text - - helper.page("uses"); - this.add(helper.pageTitle(), "Uses"); - this.add(helper.pageText(), - """ - - [Possessed Enderman](entry://possession_rituals/possess_enderman) - - [Possessed Ghast](entry://possession_rituals/possess_ghast) - - [Possessed Weak Shulker](entry://possession_rituals/possess_weak_shulker) - - [Possessed Warden](entry://possession_rituals/possess_warden) - - [Drikwing Familiar](entry://familiar_rituals/familiar_otherworld_bird) - - [Bat Familiar](entry://familiar_rituals/familiar_bat) - - [Cthulhu Familiar](entry://familiar_rituals/familiar_cthulhu) - - [Devil Familiar](entry://familiar_rituals/familiar_devil) - - [Dragon Familiar](entry://familiar_rituals/familiar_dragon) - - [Headless Ratman Familiar](entry://familiar_rituals/familiar_headless) - - [Chimera Familiar](entry://familiar_rituals/familiar_chimera) - """.formatted(COLOR_PURPLE)); - - helper.page("uses2"); - this.add(helper.pageTitle(), "Uses"); - this.add(helper.pageText(), - """ - - [Beholder Familiar](entry://familiar_rituals/familiar_beholder) - - [Fairy Familiar](entry://familiar_rituals/familiar_fairy) - """.formatted(COLOR_PURPLE)); - - helper.entry("possess_afrit"); - this.add(helper.entryName(), "Abras' Commanding Conjure"); - helper.page("intro"); - this.add(helper.pageTitle(), "Abras' Commanding Conjure"); - this.add(helper.pageText(), - """ - **Purpose:** Afrit Possession - \\ - \\ - **Abras' Commanding Conjure** is a modified version of [#](%1$s)Abras' Conjure[#]() that allows possessing entities, and thus summoning familiars. - """.formatted(COLOR_PURPLE)); - - helper.page("multiblock"); - //no text - - helper.page("uses"); - this.add(helper.pageTitle(), "Uses"); - this.add(helper.pageText(), - """ - - [Guardian Familiar](entry://familiar_rituals/familiar_guardian) - - [Possessed Shulker](entry://possession_rituals/possess_shulker) - - [Possessed Elder Guardian](entry://possession_rituals/possess_elder_guardian) - - [Possessed Hoglin](entry://possession_rituals/possess_hoglin) - """.formatted(COLOR_PURPLE)); - - helper.entry("craft_foliot"); - this.add(helper.entryName(), "Eziveus' Spectral Compulsion"); - helper.page("intro"); - this.add(helper.pageTitle(), "Eziveus' Spectral Compulsion"); - this.add(helper.pageText(), - """ - **Purpose:** Bind Foliot - \\ - \\ - As a simple binding pentacle, **Eziveus' Spectral Compulsion** is a common starting point for object infusion with lower spirits. The enchantment is made permanent by stabilizing candles and spirit attuned crystals. - """.formatted(COLOR_PURPLE)); - - helper.page("multiblock"); - //no text - - helper.page("uses"); - this.add(helper.pageTitle(), "Uses"); - this.add(helper.pageText(), - """ - - [Infused Lenses](entry://crafting_rituals/craft_otherworld_goggles) - - [Surprisingsly Substantial Satchel](entry://crafting_rituals/craft_satchel) - - [Storage Actuator Base](entry://crafting_rituals/craft_storage_controller_base) - - [Stable Wormhole](entry://crafting_rituals/craft_stable_wormhole) - - [Storage Stabilizer Tier 1](entry://crafting_rituals/craft_stabilizer_tier1) - - [Foliot Miner](entry://crafting_rituals/craft_foliot_miner) - """.formatted(COLOR_PURPLE)); - - helper.entry("craft_djinni"); - this.add(helper.entryName(), "Strigeor's Higher Binding"); - helper.page("intro"); - this.add(helper.pageTitle(), "Strigeor's Higher Binding"); - this.add(helper.pageText(), - """ - **Purpose:** Bind Djinni - \\ - \\ - **Strigeor's Higher Binding** is a pentacle for binding [#](%1$s)Djinn[#]() into objects, should not be attempted by the novice summoner. Supported by spirit attuned crystals and stabilized by candles it is highly suitable for permanent infusions of objects with spirits. - """.formatted(COLOR_PURPLE)); - - helper.page("multiblock"); - //no text - - helper.page("uses"); - this.add(helper.pageTitle(), "Uses"); - this.add(helper.pageText(), - """ - - [Infused Pickaxe](entry://crafting_rituals/craft_infused_pickaxe) - - [Soul Gem](entry://crafting_rituals/craft_soul_gem) - - [Familiar Ring](entry://crafting_rituals/craft_familiar_ring) - - [Dimensional Matrix](entry://crafting_rituals/craft_dimensional_matrix) - - [Storage Accessor](entry://crafting_rituals/craft_storage_remote) - - [Storage Stabilizer Tier 2](entry://crafting_rituals/craft_stabilizer_tier2) - - [Dimensional Mineshaft](entry://crafting_rituals/craft_dimensional_mineshaft) - - [Djinni Ore Miner](entry://crafting_rituals/craft_djinni_miner) - """.formatted(COLOR_PURPLE)); - - helper.entry("craft_afrit"); - this.add(helper.entryName(), "Sevira's Permanent Confinement"); - helper.page("intro"); - this.add(helper.pageTitle(), "Sevira's Permanent Confinement"); - this.add(helper.pageText(), - """ - **Purpose:** Bind Afrit - \\ - \\ - First discovered by Grandmistress Sevira of Emberwoods, **Sevira's Permanent Confinement** is used for binding [#](%1$s)Afrit[#]() into objects. Due to the power of the spirits involved, this should be performed only by advanced summoners. - """.formatted(COLOR_PURPLE)); - - helper.page("multiblock"); - //no text - - helper.page("uses"); - this.add(helper.pageTitle(), "Uses"); - this.add(helper.pageText(), - """ - - [Storage Stabilizer Tier 3](entry://crafting_rituals/craft_stabilizer_tier3) - - [Afrit Deep Ore Miner](entry://crafting_rituals/craft_afrit_miner) - """.formatted(COLOR_PURPLE)); - - helper.entry("craft_marid"); - this.add(helper.entryName(), "Uphyxes Inverted Tower"); - helper.page("intro"); - this.add(helper.pageTitle(), "Uphyxes Inverted Tower"); - this.add(helper.pageText(), - """ - **Purpose:** Bind Marid - \\ - \\ - **Uphyxes Inverted Tower** is one of the few pentacles capable of binding [#](%1$s)Marid[#]() into objects. Any rituals involving [#](%1$s)Marid[#]() should be performed only by the most experienced summoners. - """.formatted(COLOR_PURPLE)); - - helper.page("multiblock"); - //no text - - helper.page("uses"); - this.add(helper.pageTitle(), "Uses"); - this.add(helper.pageText(), - """ - - [Storage Stabilizer Tier 4](entry://crafting_rituals/craft_stabilizer_tier4) - - [Marid Master Miner](entry://crafting_rituals/craft_marid_miner) - - [Wild Armor Trim Smithing Template](entry://crafting_rituals/craft_wild_trim) - """.formatted(COLOR_PURPLE)); - } - private void addRitualsCategory(BookContextHelper helper) { helper.category("rituals"); this.add(helper.categoryName(), "Rituals"); @@ -1819,51 +1356,6 @@ Please note that setting a new machine (or configuring it with the book of calli helper.page("ritual"); //no text - helper.entry("summon_wild_parrot"); - this.add(helper.entryName(), "Summon Wild Parrot"); - - helper.page("entity"); - this.add(helper.pageText(), - """ - **Provides**: A tameable Parrot - """); - - helper.page("ritual"); - //no text - - helper.page("description"); - this.add(helper.pageText(), - """ - In this ritual a [#](%1$s)Foliot[#]() is summoned **as an untamed spirit**. - \\ - \\ - The slaughter of a [#](%1$s)Chicken[#]() and the offering of dyes are intended to entice the Foliot to take the shape of a parrot. As [#](%1$s)Foliot[#]() are not among the smartest spirits, they sometimes misunderstand the instructions ... - """.formatted(COLOR_PURPLE)); - - helper.page("description2"); - this.add(helper.pageText(), - """ - *This means, if a [#](%1$s)Chicken[#]() is spawned, that's not a bug, just bad luck!* - """.formatted(COLOR_PURPLE)); - - helper.entry("summon_wild_otherworld_bird"); - this.add(helper.entryName(), "Summon Wild Drikwing"); - - helper.page("entity"); - this.add(helper.pageText(), - """ - **Provides**: A tameable Drikwing - """); - - helper.page("ritual"); - //no text - - helper.page("description"); - this.add(helper.pageText(), - """ - See [Drikwing Familiar](entry://familiar_rituals/familiar_otherworld_bird) for more information. - """); - helper.entry("weather_magic"); this.add(helper.entryName(), "Weather Magic"); @@ -1905,27 +1397,27 @@ Please note that setting a new machine (or configuring it with the book of calli helper.page("ritual_night"); //no text - helper.entry("wither_skull"); - this.add(helper.entryName(), "Wither Skeleton Skull"); + helper.entry("afrit_essence"); + this.add(helper.entryName(), "Afrit Essence"); helper.page("intro"); - this.add(helper.pageTitle(), "Wither Skeleton Skull"); + this.add(helper.pageTitle(), "Afrit Essence"); this.add(helper.pageText(), """ - Besides venturing into nether dungeons, there is one more way to get these skulls. The legendary [#](%1$s)Wild Hunt[#]() consists of [#](%1$s)Greater Spirits[#]() taking the form of wither skeletons. While summoning the Wild Hunt is incredibly dangerous, it is the fastest way to get wither skeleton skulls. + [](item://occultism:afrit_essence) is required to safely call on the more powerful spirits, commonly used in the form of red chalk. To obtain the essence, an [#](%1$s)Afrit[#]() needs to be summoned unbound into this plane, and killed. Be warned that this is no simple endeavour, and unbound spirit presents great danger to all nearby. """.formatted(COLOR_PURPLE)); helper.page("ritual"); //no text - helper.entry("afrit_essence"); - this.add(helper.entryName(), "Afrit Essence"); + helper.entry("marid_essence"); + this.add(helper.entryName(), "Marid Essence"); helper.page("intro"); - this.add(helper.pageTitle(), "Afrit Essence"); + this.add(helper.pageTitle(), "Marid Essence"); this.add(helper.pageText(), """ - [](item://occultism:afrit_essence) is required to safely call on the more powerful spirits, commonly used in the form of red chalk. To obtain the essence, an [#](%1$s)Afrit[#]() needs to be summoned unbound into this plane, and killed. Be warned that this is no simple endeavour, and unbound spirit presents great danger to all nearby. + [](item://occultism:marid_essence) is required to safely control the most powerful spirits, commonly used in the form of blue chalk. To obtain the essence, an [#](%1$s)Marid[#]() needs to be summoned unbound into this plane, and killed. Be warned that this is no simple endeavour, and unbound spirit presents great danger to all nearby. """.formatted(COLOR_PURPLE)); helper.page("ritual"); @@ -1970,6 +1462,19 @@ private void addPossessionRitualsCategory(BookContextHelper helper) { In this ritual an [#](%1$s)Enderman[#]() is spawned using the life energy of a [#](%1$s)Pig[#]() and immediately possessed by the summoned [#](%1$s)Djinni[#](). The [#](%1$s)Possessed Enderman[#]() will always drop at least one [](item://minecraft:ender_pearl) when killed. """.formatted(COLOR_PURPLE)); + helper.entry("wither_skull"); + this.add(helper.entryName(), "Wither Skeleton Skull"); + + helper.page("intro"); + this.add(helper.pageTitle(), "Wither Skeleton Skull"); + this.add(helper.pageText(), + """ + Besides venturing into nether dungeons, there is one more way to get these skulls. The legendary [#](%1$s)Wild Hunt[#]() consists of [#](%1$s)Greater Spirits[#]() taking the form of wither skeletons. While summoning the Wild Hunt is incredibly dangerous, it is the fastest way to get wither skeleton skulls. + """.formatted(COLOR_PURPLE)); + + helper.page("ritual"); + //no text + helper.entry("possess_endermite"); this.add(helper.entryName(), "Possessed Endermite"); @@ -2008,6 +1513,51 @@ private void addPossessionRitualsCategory(BookContextHelper helper) { """ In this ritual an [#](%1$s)Skeleton[#]() is spawned using the life energy of a [#](%1$s)Chicken[#]() and possessed by a [#](%1$s)Foliot[#](). The [#](%1$s)Possessed Skeleton[#]() will be immune to daylight and always drop at least one [](item://minecraft:skeleton_skull) when killed. """.formatted(COLOR_PURPLE)); + + helper.entry("possess_unbound_parrot"); + this.add(helper.entryName(), "Unbound Parrot"); + + helper.page("entity"); + this.add(helper.pageText(), + """ + **Provides**: A tameable Parrot + """); + + helper.page("ritual"); + //no text + + helper.page("description"); + this.add(helper.pageText(), + """ + In this ritual a [#](%1$s)Foliot[#]() is summoned **as an untamed spirit**. + \\ + \\ + The slaughter of a [#](%1$s)Chicken[#]() and the offering of dyes are intended to entice the Foliot to take the shape of a parrot. As [#](%1$s)Foliot[#]() are not among the smartest spirits, they sometimes misunderstand the instructions ... + """.formatted(COLOR_PURPLE)); + + helper.page("description2"); + this.add(helper.pageText(), + """ + *This means, if a [#](%1$s)Chicken[#]() is spawned, that's not a bug, just bad luck!* + """.formatted(COLOR_PURPLE)); + + helper.entry("possess_unbound_otherworld_bird"); + this.add(helper.entryName(), "Unbound Drikwing"); + + helper.page("entity"); + this.add(helper.pageText(), + """ + **Provides**: A tameable Drikwing + """); + + helper.page("ritual"); + //no text + + helper.page("description"); + this.add(helper.pageText(), + """ + See [Drikwing Familiar](entry://familiar_rituals/familiar_otherworld_bird) for more information. + """); } private void addCraftingRitualsCategory(BookContextHelper helper) { @@ -2284,6 +1834,18 @@ private void addCraftingRitualsCategory(BookContextHelper helper) { helper.page("ritual"); //no text + helper.entry("craft_ancient_miner"); + this.add(helper.entryName(), "Ancient Miner"); + + helper.page("spotlight"); + this.add(helper.pageText(), + """ + By compressing MMM you get an extremely powerful miner, but something starts watching you. [](item://occultism:mining_dim_core) are a extremely rarely mined by a Marid. + """.formatted(COLOR_PURPLE)); + + helper.page("ritual"); + //no text + helper.entry("craft_satchel"); this.add(helper.entryName(), "Surprisingly Substantial Satchel"); @@ -2341,16 +1903,61 @@ private void addCraftingRitualsCategory(BookContextHelper helper) { helper.page("ritual"); //no text + helper.entry("craft_wild_trim"); this.add(helper.entryName(), "Forge Wild Trim"); helper.page("spotlight"); this.add(helper.pageText(), """ - Unlike other rituals, creating a [](item://minecraft:wild_armor_trim_smithing_template) is a service provided by a Marid that is not bound to the final object. You sacrifice the items and the Marid uses his power to forge that item for you. + Unlike other rituals, creating a [](item://minecraft:wild_armor_trim_smithing_template) is a service provided by Wild Spirits and not bound any spirit to the final object. You sacrifice the items and the Wild Spirits uses his power to forge that item for you. + """.formatted(COLOR_PURPLE)); + + helper.page("ritual"); + //no text + + helper.entry("craft_budding_amethyst"); + this.add(helper.entryName(), "Forge Budding Amethyst"); + + helper.page("spotlight"); + this.add(helper.pageText(), + """ + Unlike other rituals, creating a [](item://minecraft:budding_amethyst) is a service provided by Wild Spirits and not bound any spirit to the final object. You sacrifice the items and the Wild Spirits uses his power to forge that item for you. """.formatted(COLOR_PURPLE)); helper.page("ritual"); + //no text + + helper.entry("craft_reinforced_deepslate"); + this.add(helper.entryName(), "Forge Reinforced Deepslate"); + + helper.page("spotlight"); + this.add(helper.pageText(), + """ + Unlike other rituals, creating a [](item://minecraft:reinforced deepslate) is a service provided by Ancient Spirits and not bound any spirit to the final object. You sacrifice the items and the Ancient Spirits uses his power to forge that item for you. + """.formatted(COLOR_PURPLE)); + + helper.page("ritual"); + //no text + + helper.entry("repair"); + this.add(helper.entryName(), "Repair Rituals"); + + helper.page("spotlight"); + this.add(helper.pageTitle(), "Repairing"); + this.add(helper.pageText(), + """ + With simple materials, a Djinni can repair any chalk for you. By evolving in the occult path, an Afrit can repair miners, tools and armors. Any item repaired in this way retains its properties. + """.formatted(COLOR_PURPLE)); + + helper.page("ritual_chalks"); + //no text + helper.page("ritual_miners"); + //no text + helper.page("ritual_tools"); + //no text + helper.page("ritual_armors"); + //no text } private void addFamiliarRitualsCategory(BookContextHelper helper) { @@ -2769,7 +2376,7 @@ When upgraded by a blacksmith familiar, it regains a limb (can only be done once helper.page("description2"); this.add(helper.pageText(), """ - To obtain the parrot or parrot familiar for the sacrifice, consider summoning them using either the [Wild Parrot Ritual](entry://summoning_rituals/summon_wild_parrot) or [Parrot Familiar Ritual](entry://familiar_rituals/familiar_parrot) + To obtain the parrot or parrot familiar for the sacrifice, consider summoning them using either the [Wild Parrot Ritual](entry://possession_rituals/possess_unbound_parrot) or [Parrot Familiar Ritual](entry://familiar_rituals/familiar_parrot) \\ \\ **Hint:** If you use mods that protect pets from death, use the wild parrot ritual! @@ -2808,7 +2415,7 @@ When upgraded by a blacksmith familiar, it regains a limb (can only be done once """.formatted(COLOR_PURPLE)); //no text - helper.entry("summon_allay"); + helper.entry("resurrect_allay"); this.add(helper.entryName(), "Purify Vex to Allay"); helper.page("entity"); @@ -3024,6 +2631,40 @@ private void addAdvancements() { this.advancementDescr("familiar.mummy_dodge", "Dodge an attack with the Mummy familiar dodge effect"); this.advancementTitle("familiar.beaver_woodchop", "Woodchopper"); this.advancementDescr("familiar.beaver_woodchop", "Let your Beaver familiar chop down a tree"); + this.advancementTitle("chalks.root", "Occultism: Chalks"); + this.advancementDescr("chalks.root", "Colorful"); + this.advancementTitle("chalks.white", "White Chalk"); + this.advancementDescr("chalks.white", "First Foundation"); + this.advancementTitle("chalks.light_gray", "Light Gray Chalk"); + this.advancementDescr("chalks.light_gray", "Second Foundation"); + this.advancementTitle("chalks.gray", "Gray Chalk"); + this.advancementDescr("chalks.gray", "Third Foundation"); + this.advancementTitle("chalks.black", "Black Chalk"); + this.advancementDescr("chalks.black", "Fourth Foundation"); + this.advancementTitle("chalks.brown", "Brown Chalk"); + this.advancementDescr("chalks.brown", "Bait for what?"); + this.advancementTitle("chalks.red", "Red Chalk"); + this.advancementDescr("chalks.red", "Third Tier!"); + this.advancementTitle("chalks.orange", "Orange Chalk"); + this.advancementDescr("chalks.orange", "Third Tier?"); + this.advancementTitle("chalks.yellow", "Yellow Chalk"); + this.advancementDescr("chalks.yellow", "Possession"); + this.advancementTitle("chalks.lime", "Lime Chalk"); + this.advancementDescr("chalks.lime", "Second Tier"); + this.advancementTitle("chalks.green", "Green Chalk"); + this.advancementDescr("chalks.green", "Wild Attraction"); + this.advancementTitle("chalks.cyan", "Cyan Chalk"); + this.advancementDescr("chalks.cyan", "Ancient Knowledge"); + this.advancementTitle("chalks.light_blue", "Light Blue Chalk"); + this.advancementDescr("chalks.light_blue", "Wild Stabilizer"); + this.advancementTitle("chalks.blue", "Blue Chalk"); + this.advancementDescr("chalks.blue", "Fourth Tier"); + this.advancementTitle("chalks.purple", "Purple Chalk"); + this.advancementDescr("chalks.purple", "Infusion"); + this.advancementTitle("chalks.magenta", "Magenta Chalk"); + this.advancementDescr("chalks.magenta", "Dragon Power"); + this.advancementTitle("chalks.pink", "Pink Chalk"); + this.advancementDescr("chalks.pink", "Wild Power"); } private void addKeybinds() { @@ -3128,19 +2769,24 @@ private void addFamiliarSettingsMessages() { private void addPentacles() { this.addPentacle("otherworld_bird", "Otherworld Bird"); - this.addPentacle("craft_afrit", "Sevira's Permanent Confinement"); - this.addPentacle("craft_djinni", "Strigeor's Higher Binding"); - this.addPentacle("craft_foliot", "Eziveus' Spectral Compulsion"); - this.addPentacle("craft_marid", "Uphyxes Inverted Tower"); - this.addPentacle("possess_afrit", "Abras' Commanding Conjure"); - this.addPentacle("possess_djinni", "Ihagan's Enthrallment"); - this.addPentacle("possess_foliot", "Hedyrin's Lure"); - this.addPentacle("summon_afrit", "Abras' Conjure"); - this.addPentacle("summon_djinni", "Ophyx' Calling"); this.addPentacle("summon_foliot", "Aviar's Circle"); - this.addPentacle("summon_wild_afrit", "Abras' Open Conjure"); + this.addPentacle("summon_djinni", "Ophyx' Calling"); + this.addPentacle("summon_unbound_afrit", "Abras' Open Conjure"); + this.addPentacle("summon_afrit", "Abras' Conjure"); + this.addPentacle("summon_unbound_marid", "Abras' Fortified Conjure"); this.addPentacle("summon_marid", "Fatma's Incentivized Attraction"); - this.addPentacle("summon_wild_greater_spirit", "Osorin's Unbound Calling"); + this.addPentacle("possess_foliot", "Hedyrin's Lure"); + this.addPentacle("possess_djinni", "Ihagan's Enthrallment"); + this.addPentacle("possess_unbound_afrit", "Abras' Open Commanding Conjure"); + this.addPentacle("possess_afrit", "Abras' Commanding Conjure"); + this.addPentacle("possess_marid", "Xeovrenth Adjure"); + this.addPentacle("craft_foliot", "Eziveus' Spectral Compulsion"); + this.addPentacle("craft_djinni", "Strigeor's Higher Binding"); + this.addPentacle("craft_afrit", "Sevira's Permanent Confinement"); + this.addPentacle("craft_marid", "Uphyxes Inverted Tower"); + this.addPentacle("resurrect_spirit", "Susje's Simple Circle"); + this.addPentacle("contact_wild_spirit", "Osorin's Wild Calling"); + this.addPentacle("contact_eldritch_spirit", "Ronaza's Contact"); } private void addPentacle(String id, String name) { @@ -3148,10 +2794,16 @@ private void addPentacle(String id, String name) { } private void addRitualDummies() { - this.add("item.occultism.ritual_dummy.custom_ritual", "Custom Ritual Dummy"); - this.add("item.occultism.ritual_dummy.custom_ritual.tooltip", "Used for modpacks as a fallback for custom rituals that do not have their own ritual item."); + this.add("item.occultism.ritual_dummy.custom_ritual_summon", "Custom Ritual Dummy"); + this.add("item.occultism.ritual_dummy.custom_ritual_summon.tooltip", "Used for modpacks as a fallback for custom rituals that do not have their own ritual item."); + this.add("item.occultism.ritual_dummy.custom_ritual_possess", "Custom Ritual Dummy"); + this.add("item.occultism.ritual_dummy.custom_ritual_possess.tooltip", "Used for modpacks as a fallback for custom rituals that do not have their own ritual item."); + this.add("item.occultism.ritual_dummy.custom_ritual_craft", "Custom Ritual Dummy"); + this.add("item.occultism.ritual_dummy.custom_ritual_craft.tooltip", "Used for modpacks as a fallback for custom rituals that do not have their own ritual item."); + this.add("item.occultism.ritual_dummy.custom_ritual_misc", "Custom Ritual Dummy"); + this.add("item.occultism.ritual_dummy.custom_ritual_misc.tooltip", "Used for modpacks as a fallback for custom rituals that do not have their own ritual item."); this.add("item.occultism.ritual_dummy.craft_wild_trim", "Ritual: Forge Wild Armor Trim Smithing Template"); - this.add("item.occultism.ritual_dummy.craft_wild_trim.tooltip", "Marid will forge a Wild Armor Trim Smithing Template."); + this.add("item.occultism.ritual_dummy.craft_wild_trim.tooltip", "Wild Spirits will forge a Wild Armor Trim Smithing Template."); this.add("item.occultism.ritual_dummy.craft_dimensional_matrix", "Ritual: Craft Dimensional Matrix"); this.add("item.occultism.ritual_dummy.craft_dimensional_matrix.tooltip", "The dimensional matrix is the entry point to a small dimension used for storing items."); this.add("item.occultism.ritual_dummy.craft_dimensional_mineshaft", "Ritual: Craft Dimensional Mineshaft"); @@ -3169,6 +2821,8 @@ private void addRitualDummies() { this.add("item.occultism.ritual_dummy.craft_miner_afrit_deeps.tooltip", "Summon Afrit Deep Ore Miner into a magic lamp."); this.add("item.occultism.ritual_dummy.craft_miner_marid_master", "Ritual: Summon Marid Master Miner"); this.add("item.occultism.ritual_dummy.craft_miner_marid_master.tooltip", "Summon Marid Master Miner into a magic lamp."); + this.add("item.occultism.ritual_dummy.craft_miner_ancient_eldritch", "Ritual: Summon Eldritch Ancient Miner"); + this.add("item.occultism.ritual_dummy.craft_miner_ancient_eldritch.tooltip", "Summon Eldritch Ancient Miner into a magic lamp."); this.add("item.occultism.ritual_dummy.craft_satchel", "Ritual: Craft Surprisingly Substantial Satchel"); this.add("item.occultism.ritual_dummy.craft_satchel.tooltip", "This satchels allows to store more items than it's size would indicate, making it a practical traveller's companion."); @@ -3242,6 +2896,14 @@ private void addRitualDummies() { this.add("item.occultism.ritual_dummy.possess_warden.tooltip", "The possessed Warden will always drop at least six echo shard and can drop anothers ancient stuff (smithing templates and discs) when killed."); this.add("item.occultism.ritual_dummy.possess_hoglin", "Ritual: Summon Possessed Hoglin"); this.add("item.occultism.ritual_dummy.possess_hoglin.tooltip", "The possessed Hoglin has a chance to drop smithing template of netherite upgrade when killed."); + this.add("item.occultism.ritual_dummy.possess_witch", "Ritual: Summon Possessed Witch"); + this.add("item.occultism.ritual_dummy.possess_witch.tooltip", "The possessed Witch will drop a special filled bottle."); + this.add("item.occultism.ritual_dummy.possess_zombie_piglin", "Ritual: Summon Possessed Zombie Piglin"); + this.add("item.occultism.ritual_dummy.possess_zombie_piglin.tooltip", "The possessed Zombie Piglin will drop demonic meat."); + this.add("item.occultism.ritual_dummy.possess_bee", "Ritual: Summon Possessed Bee"); + this.add("item.occultism.ritual_dummy.possess_bee.tooltip", "The possessed Bee will drop cursed honey."); + this.add("item.occultism.ritual_dummy.possess_goat", "Ritual: Summon Goat of Mercy"); + this.add("item.occultism.ritual_dummy.possess_goat.tooltip", "The Goat of Mercy will drop the Cruelty Essence."); this.add("item.occultism.ritual_dummy.summon_afrit_rain_weather", "Ritual: Rainy Weather"); this.add("item.occultism.ritual_dummy.summon_afrit_rain_weather.tooltip", "Summons an bound Afrit that creates rain."); this.add("item.occultism.ritual_dummy.summon_afrit_thunder_weather", "Ritual: Thunderstorm"); @@ -3272,33 +2934,56 @@ private void addRitualDummies() { this.add("item.occultism.ritual_dummy.summon_foliot_transport_items.tooltip", "The transporter will move all items it can access from one inventory to another, including machines."); this.add("item.occultism.ritual_dummy.summon_foliot_cleaner", "Ritual: Summon Foliot Janitor"); this.add("item.occultism.ritual_dummy.summon_foliot_cleaner.tooltip", "The janitor will pick up dropped items and deposit them into a target inventory."); - this.add("item.occultism.ritual_dummy.summon_wild_afrit", "Ritual: Summon Unbound Afrit"); - this.add("item.occultism.ritual_dummy.summon_wild_afrit.tooltip", "Summons an unbound Afrit that can be killed to obtain Afrit Essence"); - this.add("item.occultism.ritual_dummy.summon_wild_hunt", "Ritual: Summon The Wild Hunt"); - this.add("item.occultism.ritual_dummy.summon_wild_hunt.tooltip", "The Wild Hunt consists of Wither Skeletons that as a big chance to drop Wither Skeleton Skulls, and their minions."); - this.add("item.occultism.ritual_dummy.summon_wild_otherworld_bird", "Ritual: Summon Wild Drikwing"); - this.add("item.occultism.ritual_dummy.summon_wild_otherworld_bird.tooltip", "Summons a Drikwing Familiar that can be tamed by anyone, not just the summoner."); - this.add("item.occultism.ritual_dummy.summon_wild_parrot", "Ritual: Summon Wild Parrot"); - this.add("item.occultism.ritual_dummy.summon_wild_parrot.tooltip", "Summons a Parrot that can be tamed by anyone, not just the summoner."); - this.add("item.occultism.ritual_dummy.summon_allay", "Ritual: Purify Vex to Allay"); - this.add("item.occultism.ritual_dummy.summon_allay.tooltip", "Purify a Vex to a Allay on a resurrection process."); - - this.add("item.occultism.ritual_dummy.summon_wild_husk", "Ritual: Summon The Wild Horde Husk"); - this.add("item.occultism.ritual_dummy.summon_wild_husk.tooltip", "The Wild Horde Husk consists of a few Husks that drop items related to desert trails."); - this.add("item.occultism.ritual_dummy.summon_wild_drowned", "Ritual: Summon The Wild Horde Drowned"); - this.add("item.occultism.ritual_dummy.summon_wild_drowned.tooltip", "The Wild Horde Drowned consists of a few Drowneds that drop items related to ocean trails."); - this.add("item.occultism.ritual_dummy.summon_wild_creeper", "Ritual: Summon The Wild Horde Creeper"); - this.add("item.occultism.ritual_dummy.summon_wild_creeper.tooltip", "The Wild Horde Creeper consists of a few charged Creepers that drop many disks."); - this.add("item.occultism.ritual_dummy.summon_wild_silverfish", "Ritual: Summon The Wild Horde Silverfish"); - this.add("item.occultism.ritual_dummy.summon_wild_silverfish.tooltip", "The Wild Horde Silverfish consists of a few Silverfishs that drop items related to ruins trails."); - this.add("item.occultism.ritual_dummy.possess_weak_breeze", "Ritual: Summon Possessed Weak Breeze"); - this.add("item.occultism.ritual_dummy.possess_weak_breeze.tooltip", "The possessed Weak Breeze will drop a Trial Key and trial chamber related items."); - this.add("item.occultism.ritual_dummy.possess_breeze", "Ritual: Summon Possessed Breeze"); - this.add("item.occultism.ritual_dummy.possess_breeze.tooltip", "The possessed Breeze will drop a Ominous Trial Key and trial chamber related items."); - this.add("item.occultism.ritual_dummy.possess_strong_breeze", "Ritual: Summon Possessed Strong Breeze"); - this.add("item.occultism.ritual_dummy.possess_strong_breeze.tooltip", "The possessed Strong Breeze will drop a Heavy Core and trial chamber related items."); - this.add("item.occultism.ritual_dummy.summon_horde_illager", "Ritual: Summon Possessed Evoker"); - this.add("item.occultism.ritual_dummy.summon_horde_illager.tooltip", "Summon a possessed Evoker and his henchmen."); + this.add("item.occultism.ritual_dummy.summon_unbound_afrit", "Ritual: Summon Unbound Afrit"); + this.add("item.occultism.ritual_dummy.summon_unbound_afrit.tooltip", "Summons an unbound Afrit that can be killed to obtain Afrit Essence"); + this.add("item.occultism.ritual_dummy.summon_unbound_marid", "Ritual: Summon Unbound Marid"); + this.add("item.occultism.ritual_dummy.summon_unbound_marid.tooltip", "Summons an unbound Marid that can be killed to obtain Marid Essence"); + this.add("item.occultism.ritual_dummy.wild_hunt", "Ritual: Summon The Wild Hunt"); + this.add("item.occultism.ritual_dummy.wild_hunt.tooltip", "The Wild Hunt consists of Wither Skeletons that as a big chance to drop Wither Skeleton Skulls, and their minions."); + this.add("item.occultism.ritual_dummy.possess_unbound_otherworld_bird", "Ritual: Possess Unbound Drikwing"); + this.add("item.occultism.ritual_dummy.possess_unbound_otherworld_bird.tooltip", "Possess a Drikwing Familiar that can be tamed by anyone, not just the summoner."); + this.add("item.occultism.ritual_dummy.possess_unbound_parrot", "Ritual: Possess Unbound Parrot"); + this.add("item.occultism.ritual_dummy.possess_unbound_parrot.tooltip", "Possess a Parrot that can be tamed by anyone, not just the summoner."); + this.add("item.occultism.ritual_dummy.resurrect_allay", "Ritual: Purify Vex to Allay"); + this.add("item.occultism.ritual_dummy.resurrect_allay.tooltip", "Purify a Vex to a Allay on a resurrection process."); + + this.add("item.occultism.ritual_dummy.wild_husk", "Ritual: Summon The Wild Horde Husk"); + this.add("item.occultism.ritual_dummy.wild_husk.tooltip", "The Wild Horde Husk consists of a few Husks that drop items related to desert trails."); + this.add("item.occultism.ritual_dummy.wild_drowned", "Ritual: Summon The Wild Horde Drowned"); + this.add("item.occultism.ritual_dummy.wild_drowned.tooltip", "The Wild Horde Drowned consists of a few Drowneds that drop items related to ocean trails."); + this.add("item.occultism.ritual_dummy.wild_creeper", "Ritual: Summon The Wild Horde Creeper"); + this.add("item.occultism.ritual_dummy.wild_creeper.tooltip", "The Wild Horde Creeper consists of a few charged Creepers that drop many disks."); + this.add("item.occultism.ritual_dummy.wild_silverfish", "Ritual: Summon The Wild Horde Silverfish"); + this.add("item.occultism.ritual_dummy.wild_silverfish.tooltip", "The Wild Horde Silverfish consists of a few Silverfishs that drop items related to ruins trails."); + this.add("item.occultism.ritual_dummy.wild_weak_breeze", "Ritual: Summon Possessed Weak Breeze"); + this.add("item.occultism.ritual_dummy.wild_weak_breeze.tooltip", "The possessed Weak Breeze will drop a Trial Key and trial chamber related items."); + this.add("item.occultism.ritual_dummy.wild_breeze", "Ritual: Summon Possessed Breeze"); + this.add("item.occultism.ritual_dummy.wild_breeze.tooltip", "The possessed Breeze will drop a Ominous Trial Key and trial chamber related items."); + this.add("item.occultism.ritual_dummy.wild_strong_breeze", "Ritual: Summon Possessed Strong Breeze"); + this.add("item.occultism.ritual_dummy.wild_strong_breeze.tooltip", "The possessed Strong Breeze will drop a Heavy Core and trial chamber related items."); + this.add("item.occultism.ritual_dummy.wild_horde_illager", "Ritual: Summon Possessed Evoker"); + this.add("item.occultism.ritual_dummy.wild_horde_illager.tooltip", "Summon a possessed Evoker and his henchmen."); + + this.add("item.occultism.ritual_dummy.craft_nature_paste", "Ritual: Craft Nature Paste"); + this.add("item.occultism.ritual_dummy.craft_nature_paste.tooltip", "A foliot will craft the nature paste mixing ingredients."); + this.add("item.occultism.ritual_dummy.craft_gray_paste", "Ritual: Craft Gray Paste"); + this.add("item.occultism.ritual_dummy.craft_gray_paste.tooltip", "A djinni will craft the gray paste mixing ingredients."); + this.add("item.occultism.ritual_dummy.craft_research_fragment_dust", "Ritual: Craft Research Fragment Dust"); + this.add("item.occultism.ritual_dummy.craft_research_fragment_dust.tooltip", "A foliot will infuse experience in the emerald dust."); + this.add("item.occultism.ritual_dummy.craft_witherite_dust", "Ritual: Craft Witherite Dust"); + this.add("item.occultism.ritual_dummy.craft_witherite_dust.tooltip", "A afrit will infuse wither essence in the netherite dust."); + this.add("item.occultism.ritual_dummy.craft_dragonyst_dust", "Ritual: Craft Dragonyst Dust"); + this.add("item.occultism.ritual_dummy.craft_dragonyst_dust.tooltip", "A marid will infuse ender dragon essence in the amethyst dust."); + + + this.add("item.occultism.ritual_dummy.repair_chalks", "Ritual: Repair Chalk"); + this.add("item.occultism.ritual_dummy.repair_chalks.tooltip", "A djinni will repair your chalk."); + this.add("item.occultism.ritual_dummy.repair_tools", "Ritual: Repair Tool"); + this.add("item.occultism.ritual_dummy.repair_tools.tooltip", "A afrit will repair your tool."); + this.add("item.occultism.ritual_dummy.repair_armors", "Ritual: Repair Armor"); + this.add("item.occultism.ritual_dummy.repair_armors.tooltip", "A afrit will repair your armor."); + this.add("item.occultism.ritual_dummy.repair_miners", "Ritual: Repair Miner"); + this.add("item.occultism.ritual_dummy.repair_miners.tooltip", "A afrit will extend your miner contract."); this.add(OccultismItems.RITUAL_DUMMY_SUMMON_DEMONIC_WIFE.get(), "Ritual: Summon Demonic Wife"); this.addTooltip(OccultismItems.RITUAL_DUMMY_SUMMON_DEMONIC_WIFE.get(), "Summons a Demonic Wife to support you: She will fight for you, help with cooking, and extend potion durations."); @@ -3310,14 +2995,21 @@ private void addRitualDummies() { this.add(OccultismItems.RITUAL_DUMMY_RESURRECT_FAMILIAR.get(), "Ritual: Resurrect Familiar"); this.addTooltip(OccultismItems.RITUAL_DUMMY_RESURRECT_FAMILIAR.get(), "Resurrects a Familiar from a Soul Shard."); - this.add(OccultismItems.RITUAL_DUMMY_SUMMON_RANDOM_ANIMAL.get(), "Ritual: Summon Random Animal"); - this.addTooltip(OccultismItems.RITUAL_DUMMY_SUMMON_RANDOM_ANIMAL.get(), "Summons a random passive animal."); + this.add(OccultismItems.RITUAL_DUMMY_POSSESS_RANDOM_ANIMAL.get(), "Ritual: Summon Random Animal"); + this.addTooltip(OccultismItems.RITUAL_DUMMY_POSSESS_RANDOM_ANIMAL.get(), "Summons a random passive animal."); this.add(OccultismItems.RITUAL_DUMMY_CRAFT_RITUAL_SATCHEL_T1.get(), "Ritual: Craft Apprentice Ritual Satchel"); this.addTooltip(OccultismItems.RITUAL_DUMMY_CRAFT_RITUAL_SATCHEL_T1.get(), "Binds a Djinni into a satchel to build pentacles step-by-step for the summoner."); this.add(OccultismItems.RITUAL_DUMMY_CRAFT_RITUAL_SATCHEL_T2.get(), "Ritual: Craft Artisanal Ritual Satchel"); this.addTooltip(OccultismItems.RITUAL_DUMMY_CRAFT_RITUAL_SATCHEL_T2.get(), "Binds an Afrit into a satchel to build pentacles all at once for the summoner."); + + this.add(OccultismItems.RITUAL_DUMMY_CRAFT_BUDDING_AMETHYST.get(), "Ritual: Forge Budding Amethyst"); + this.addTooltip(OccultismItems.RITUAL_DUMMY_CRAFT_BUDDING_AMETHYST.get(), "Wild Spirits will forge a Budding Amethyst."); + + this.add(OccultismItems.RITUAL_DUMMY_CRAFT_REINFORCED_DEEPSLATE.get(), "Ritual: Forge Reinforced Deepslate"); + this.addTooltip(OccultismItems.RITUAL_DUMMY_CRAFT_REINFORCED_DEEPSLATE.get(), "Ancient Spirits will forge a Reinforced Deepslate."); + } public void addTooltip(ItemLike key, String value) { @@ -3354,6 +3046,7 @@ private void advancementDescr(String name, String s) { private void addTags() { // Block tags this.addBlockTag(OccultismTags.Blocks.OTHERWORLD_SAPLINGS, "Otherworld Saplings"); + this.addBlockTag(OccultismTags.Blocks.OTHERWORLD_SAPLINGS_NATURAL, "Otherworld Saplings_NATURAL"); this.addBlockTag(OccultismTags.Blocks.CANDLES, "Candles"); this.addBlockTag(OccultismTags.Blocks.CAVE_WALL_BLOCKS, "Cave Wall Blocks"); this.addBlockTag(OccultismTags.Blocks.NETHERRACK, "Netherrack"); @@ -3370,12 +3063,14 @@ private void addTags() { // Item tags this.addItemTag(OccultismTags.Items.OTHERWORLD_SAPLINGS, "Otherworld Saplings"); + this.addItemTag(OccultismTags.Items.OTHERWORLD_SAPLINGS_NATURAL, "Otherworld Saplings Natural"); this.addItemTag(OccultismTags.Items.BOOK_OF_CALLING_DJINNI, "Book of Calling Djinni"); this.addItemTag(OccultismTags.Items.BOOK_OF_CALLING_FOLIOT, "Book of Calling Foliot"); this.addItemTag(OccultismTags.Items.BOOKS_OF_BINDING, "Books of Binding"); this.addItemTag(OccultismTags.Items.Miners.BASIC_RESOURCES, "Basic Resource Miners"); this.addItemTag(OccultismTags.Items.Miners.DEEPS, "Deepslate Miners"); this.addItemTag(OccultismTags.Items.Miners.MASTER, "Rare Resource Miners"); + this.addItemTag(OccultismTags.Items.Miners.ELDRITCH, "Eldritch Miners"); this.addItemTag(OccultismTags.Items.Miners.ORES, "General Miners"); this.addItemTag(OccultismTags.Items.ELYTRA, "Elytras"); this.addItemTag(OccultismTags.Items.OTHERWORLD_GOGGLES, "Otherworld Goggles"); @@ -3405,7 +3100,25 @@ private void addTags() { this.addItemTag(OccultismTags.Items.MAGMA, "Magma"); this.addItemTag(OccultismTags.Items.BOOKS, "Books"); this.addItemTag(OccultismTags.Items.FRUITS, "Fruits"); - + this.addItemTag(OccultismTags.Items.AMETHYST_DUST,"Amethyst Dust"); + this.addItemTag(OccultismTags.Items.BLACKSTONE_DUST,"Blackstone Dust"); + this.addItemTag(OccultismTags.Items.BLUE_ICE_DUST,"Blue Ice Dust"); + this.addItemTag(OccultismTags.Items.CALCITE_DUST,"Calcite Dust"); + this.addItemTag(OccultismTags.Items.ICE_DUST,"Ice Dust"); + this.addItemTag(OccultismTags.Items.PACKED_ICE_DUST,"Packed Ice Dust"); + this.addItemTag(OccultismTags.Items.DRAGONYST_DUST,"Dragonyst Dust"); + this.addItemTag(OccultismTags.Items.ECHO_DUST,"Echo Dust"); + this.addItemTag(OccultismTags.Items.EMERALD_DUST,"Emerald Dust"); + this.addItemTag(OccultismTags.Items.LAPIS_DUST,"Lapis Dust"); + this.addItemTag(OccultismTags.Items.NETHERITE_DUST,"Netherite Dust"); + this.addItemTag(OccultismTags.Items.NETHERITE_SCRAP_DUST,"Netherite Scrap Dust"); + this.addItemTag(OccultismTags.Items.RESEARCH_DUST,"Research Dust"); + this.addItemTag(OccultismTags.Items.WITHERITE_DUST,"Witherite Dust"); + this.addItemTag(OccultismTags.Items.OTHERSTONE_DUST,"Otherstone Dust"); + this.addItemTag(OccultismTags.Items.OTHERWORLD_WOOD_DUST,"Otherworld Wood Dust"); + this.addItemTag(OccultismTags.Items.OCCULTISM_CANDLES,"Occultism Candles"); + this.addItemTag(OccultismTags.Items.Miners.MINERS,"Dimensional Miners"); + this.addItemTag(OccultismTags.Items.SCUTESHELL,"Scute or Shell"); this.addItemTag(OccultismTags.Items.BLAZE_DUST, "Blaze Dust"); this.addItemTag(OccultismTags.Items.MANUALS, "Manuals"); this.addItemTag(OccultismTags.Items.TOOLS_KNIFE, "Knives"); @@ -3413,9 +3126,7 @@ private void addTags() { this.addItemTag(ResourceLocation.fromNamespaceAndPath("curios", "hands"), "Hands"); this.addItemTag(ResourceLocation.fromNamespaceAndPath("curios", "heads"), "Heads"); this.addItemTag(ResourceLocation.fromNamespaceAndPath("curios", "ring"), "Ring"); - this.addItemTag(OccultismTags.Items.OCCULTISM_CANDLES, "Candles"); this.addItemTag(OccultismTags.Items.DEMONIC_PARTNER_FOOD, "Demonic Partner Food"); - this.addItemTag(OccultismTags.Items.Miners.MINERS, "Miners"); this.addItemTag(OccultismTags.Items.OTHERCOBBLESTONE, "Other Cobblestone"); this.addItemTag(OccultismTags.Items.OTHERSTONE, "Otherstone"); this.addItemTag(OccultismTags.Items.OTHERWORLD_LOGS, "Otherworld Logs"); @@ -3495,7 +3206,7 @@ private void addConfigurationTranslations() { this.addConfig("disableHolidayTheming", "Disable Otherworld Goggles Shaders"); this.addConfig("useAlternativeDivinationRodRenderer", "Use Alternative Divination Rod Renderer"); this.addConfig("whiteChalkGlyphColor", "White Chalk Glyph Color"); - this.addConfig("goldenChalkGlyphColor", "Yellow Chalk Glyph Color"); + this.addConfig("yellowChalkGlyphColor", "Yellow Chalk Glyph Color"); this.addConfig("purpleChalkGlyphColor", "Purple Chalk Glyph Color"); this.addConfig("redChalkGlyphColor", "Red Chalk Glyph Color"); this.addConfig("lightGrayChalkGlyphColor", "Light Gray Chalk Glyph Color"); @@ -3560,6 +3271,7 @@ private void addConfigurationTranslations() { this.addConfig("miner_djinni_ores", "Djinni Ore Miner"); this.addConfig("miner_afrit_deeps", "Afrit Deep Ore Miner"); this.addConfig("miner_marid_master", "Marid Master Miner"); + this.addConfig("miner_ancient_eldritch", "Eldritch Ancient Miner"); this.addConfig("maxMiningTime", "Max Mining Time"); this.addConfig("rollsPerOperation", "Rolls Per Operation"); @@ -3567,6 +3279,7 @@ private void addConfigurationTranslations() { this.addConfig("items", "Items"); this.addConfig("anyOreDivinationRod", "Divination c:ores"); + this.addConfig("minerOutputBeforeBreak", "Save miners before breaking"); } private void addConfig(String key, String name) { diff --git a/src/main/java/com/klikli_dev/occultism/datagen/loot/OccultismEntityLoot.java b/src/main/java/com/klikli_dev/occultism/datagen/loot/OccultismEntityLoot.java index ca199cb92..1ee7b930b 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/loot/OccultismEntityLoot.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/loot/OccultismEntityLoot.java @@ -41,20 +41,21 @@ public void generate(BiConsumer, LootTable.Builder> pGene @Override public void generate() { - this.add(OccultismEntities.POSSESSED_SHULKER.get(), this.shulkerLootTable()); - this.add(OccultismEntities.POSSESSED_WARDEN.get(), this.wardenLootTable()); - this.add(OccultismEntities.POSSESSED_HOGLIN.get(), this.hoglinLootTable()); - this.add(OccultismEntities.POSSESSED_WEAK_SHULKER.get(), this.weakShulkerTable()); + this.add(OccultismEntities.POSSESSED_SHULKER_TYPE.get(), this.shulkerLootTable()); + this.add(OccultismEntities.POSSESSED_WARDEN_TYPE.get(), this.wardenLootTable()); + this.add(OccultismEntities.POSSESSED_HOGLIN_TYPE.get(), this.hoglinLootTable()); + this.add(OccultismEntities.POSSESSED_WITCH_TYPE.get(), this.witchLootTable()); + this.add(OccultismEntities.POSSESSED_WEAK_SHULKER_TYPE.get(), this.weakShulkerTable()); this.add(OccultismEntities.POSSESSED_GHAST_TYPE.get(), this.ghastLootTable()); this.add(OccultismEntities.POSSESSED_ELDER_GUARDIAN_TYPE.get(), this.elderGuardianLootTable()); this.add(OccultismEntities.WILD_HORDE_HUSK_TYPE.get(), this.huskLootTable()); this.add(OccultismEntities.WILD_HORDE_DROWNED_TYPE.get(), this.drownedLootTable()); this.add(OccultismEntities.WILD_HORDE_CREEPER_TYPE.get(), this.creeperLootTable()); this.add(OccultismEntities.WILD_HORDE_SILVERFISH_TYPE.get(), this.silverfishLootTable()); - this.add(OccultismEntities.POSSESSED_WEAK_BREEZE.get(), this.weakBreezeTable()); - this.add(OccultismEntities.POSSESSED_BREEZE.get(), this.breezeTable()); - this.add(OccultismEntities.POSSESSED_STRONG_BREEZE.get(), this.strongBreezeTable()); - this.add(OccultismEntities.POSSESSED_EVOKER.get(), this.evokerTable()); + this.add(OccultismEntities.POSSESSED_WEAK_BREEZE_TYPE.get(), this.weakBreezeTable()); + this.add(OccultismEntities.POSSESSED_BREEZE_TYPE.get(), this.breezeTable()); + this.add(OccultismEntities.POSSESSED_STRONG_BREEZE_TYPE.get(), this.strongBreezeTable()); + this.add(OccultismEntities.POSSESSED_EVOKER_TYPE.get(), this.evokerTable()); this.add(OccultismEntities.POSSESSED_ENDERMITE_TYPE.get(), LootTable.lootTable().withPool( LootPool.lootPool().setRolls(ConstantValue.exactly(1)) @@ -108,6 +109,14 @@ public void generate() { .apply(SetItemCountFunction.setCount(UniformGenerator.between(0.7f, 1.0F))) .apply(EnchantedCountIncreaseFunction.lootingMultiplier(this.registries, UniformGenerator.between(0.0F, 1.0F)))))); + //Essence drop from unbound marid + this.add(OccultismEntities.MARID_UNBOUND_TYPE.get(), + LootTable.lootTable().withPool( + LootPool.lootPool().setRolls(ConstantValue.exactly(1)) + .add(LootItem.lootTableItem(OccultismItems.MARID_ESSENCE.get()) + .apply(SetItemCountFunction.setCount(UniformGenerator.between(0.9f, 1.0F))) + .apply(EnchantedCountIncreaseFunction.lootingMultiplier(this.registries, UniformGenerator.between(0.0F, 1.0F)))))); + //increased wither skull drop from wild hunt this.add(OccultismEntities.WILD_HUNT_WITHER_SKELETON_TYPE.get(), LootTable.lootTable() .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1)) @@ -138,6 +147,26 @@ public void generate() { .add(LootItem.lootTableItem(Items.BONE) .apply(SetItemCountFunction.setCount(UniformGenerator.between(0.0F, 2.0F))) .apply(EnchantedCountIncreaseFunction.lootingMultiplier(this.registries, UniformGenerator.between(0.0F, 1.0F)))))); + + this.add(OccultismEntities.GOAT_OF_MERCY_TYPE.get(), + LootTable.lootTable().withPool( + LootPool.lootPool().setRolls(ConstantValue.exactly(1)) + .add(LootItem.lootTableItem(OccultismItems.CRUELTY_ESSENCE) + .apply(EnchantedCountIncreaseFunction.lootingMultiplier(this.registries, UniformGenerator.between(0.0F, 1.0F)))))); + + this.add(OccultismEntities.POSSESSED_ZOMBIE_PIGLIN_TYPE.get(), + LootTable.lootTable().withPool( + LootPool.lootPool().setRolls(ConstantValue.exactly(1)) + .add(LootItem.lootTableItem(OccultismItems.DEMONIC_MEAT) + .apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 4.0F))) + .apply(EnchantedCountIncreaseFunction.lootingMultiplier(this.registries, UniformGenerator.between(0.0F, 1.0F)))))); + + this.add(OccultismEntities.POSSESSED_BEE_TYPE.get(), + LootTable.lootTable().withPool( + LootPool.lootPool().setRolls(ConstantValue.exactly(1)) + .add(LootItem.lootTableItem(OccultismItems.CURSED_HONEY) + .apply(SetItemCountFunction.setCount(UniformGenerator.between(0.5F, 1.0F))) + .apply(EnchantedCountIncreaseFunction.lootingMultiplier(this.registries, UniformGenerator.between(0.3F, 1.0F)))))); } /** @@ -349,8 +378,8 @@ public LootTable.Builder drownedLootTable(){ .withPool( LootPool.lootPool() .setRolls(ConstantValue.exactly(1.0F)) - .add(EmptyLootItem.emptyItem().setWeight(3)) - .add(LootItem.lootTableItem(Items.SNIFFER_EGG).setWeight(1)) + .add(EmptyLootItem.emptyItem().setWeight(2)) + .add(LootItem.lootTableItem(Items.SNIFFER_EGG).setWeight(2)) .add(LootItem.lootTableItem(Items.TURTLE_EGG).setWeight(3)) .add(LootItem.lootTableItem(Items.TRIDENT).setWeight(3)) ) @@ -501,4 +530,15 @@ public LootTable.Builder evokerTable(){ .apply(SetItemCountFunction.setCount(UniformGenerator.between(0.5F, 2.0F))) ); } + public LootTable.Builder witchLootTable(){ + return LootTable.lootTable() + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(LootItem.lootTableItem(Items.EXPERIENCE_BOTTLE).setWeight(8)) + .add(LootItem.lootTableItem(Items.HONEY_BOTTLE).setWeight(4)) + .add(LootItem.lootTableItem(Items.OMINOUS_BOTTLE).setWeight(2)) + .add(LootItem.lootTableItem(Items.POTION).setWeight(1)) + ).apply(EnchantedCountIncreaseFunction.lootingMultiplier(this.registries,UniformGenerator.between(0,2))); + } } diff --git a/src/main/java/com/klikli_dev/occultism/datagen/recipe/MinerRecipes.java b/src/main/java/com/klikli_dev/occultism/datagen/recipe/MinerRecipes.java index ce50bc0d2..043f16304 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/recipe/MinerRecipes.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/recipe/MinerRecipes.java @@ -15,6 +15,7 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; +import net.neoforged.neoforge.common.Tags; import java.util.concurrent.CompletableFuture; @@ -69,11 +70,13 @@ public static void ores(RecipeOutput recipeOutput) { makeOreRecipe("malachite", 200, recipeOutput); makeOreRecipe("mithril", 169, recipeOutput); makeOreRecipe("morganite", 200, recipeOutput); + makeVanillaItemRecipe(Items.GILDED_BLACKSTONE, 373, recipeOutput); makeVanillaItemRecipe(Items.NETHER_GOLD_ORE, 373, recipeOutput); makeVanillaItemRecipe(Items.NETHER_QUARTZ_ORE, 560, recipeOutput); makeOreRecipe("nickel", 232, recipeOutput); makeOreRecipe("niter", 244, recipeOutput); makeVanillaItemRecipe(Items.OBSIDIAN, 300, recipeOutput); + makeVanillaItemRecipe(Items.CRYING_OBSIDIAN, 50, recipeOutput); makeOreRecipe("onyx", 200, recipeOutput); makeOreRecipe("opal", 200, recipeOutput); makeOreRecipe("osmium", 203, recipeOutput); @@ -125,7 +128,6 @@ public static void ores(RecipeOutput recipeOutput) { makeOreRecipe("white_gemstone", 300, recipeOutput); makeOreRecipe("yellow_gemstone", 300, recipeOutput); - MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.ORES, OccultismTags.makeItemTag(ResourceLocation.fromNamespaceAndPath("c", "ores/" + "xpetrified_ore")), 200) .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/ores/" + "xpetrified_ore")); @@ -134,7 +136,136 @@ public static void ores(RecipeOutput recipeOutput) { .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/ores/runic_stone")); + } + + public static void eldritch(RecipeOutput recipeOutput) { + //Raw + makeStorageRecipe("raw_aethersent", 90, recipeOutput); + makeStorageRecipe("raw_allthemodium", 30, recipeOutput); + makeStorageRecipe("raw_aluminium", 90, recipeOutput); + makeStorageRecipe("raw_azure_silver", 90, recipeOutput); + makeStorageRecipe("raw_antimony", 90, recipeOutput); + makeStorageRecipe("raw_cloggrum", 90, recipeOutput); + makeStorageRecipe("raw_copper", 90, recipeOutput); + makeStorageRecipe("raw_crimson_iron", 90, recipeOutput); + makeStorageRecipe("raw_froststeel", 90, recipeOutput); + makeStorageRecipe("raw_gold", 90, recipeOutput); + makeStorageRecipe("raw_iesnium", 90, recipeOutput); + makeStorageRecipe("raw_iridium", 90, recipeOutput); + makeStorageRecipe("raw_iron", 90, recipeOutput); + makeStorageRecipe("raw_lead", 90, recipeOutput); + makeStorageRecipe("raw_nickel", 90, recipeOutput); + makeStorageRecipe("raw_osmium", 90, recipeOutput); + makeStorageRecipe("raw_platinum", 90, recipeOutput); + makeStorageRecipe("raw_silver", 90, recipeOutput); + makeStorageRecipe("raw_tin", 90, recipeOutput); + makeStorageRecipe("raw_tungsten", 90, recipeOutput); + makeStorageRecipe("raw_titanium", 90, recipeOutput); + makeStorageRecipe("raw_unobtainium", 10, recipeOutput); + makeStorageRecipe("raw_uranium", 90, recipeOutput); + makeStorageRecipe("raw_vibranium", 20, recipeOutput); + makeStorageRecipe("raw_yellorium", 90, recipeOutput); + makeStorageRecipe("raw_zinc", 90, recipeOutput); + //Others + makeStorageRecipe("arcane_crystal", 90, recipeOutput); + makeStorageRecipe("coal", 90, recipeOutput); + makeStorageRecipe("dark", 90, recipeOutput); + makeStorageRecipe("diamond", 90, recipeOutput); + makeStorageRecipe("emerald", 90, recipeOutput); + makeStorageRecipe("fluorite", 90, recipeOutput); + makeStorageRecipe("inferium_essence", 90, recipeOutput); + makeStorageRecipe("lapis", 90, recipeOutput); + makeStorageRecipe("lignite_coal", 90, recipeOutput); + makeStorageRecipe("monazite", 90, recipeOutput); + makeStorageRecipe("peridot", 90, recipeOutput); + makeStorageRecipe("prosperity_shard", 90, recipeOutput); + makeStorageRecipe("redstone", 90, recipeOutput); + makeStorageRecipe("ruby", 90, recipeOutput); + makeStorageRecipe("rune", 90, recipeOutput); + makeStorageRecipe("salt", 90, recipeOutput); + makeStorageRecipe("sapphire", 90, recipeOutput); + makeStorageRecipe("sulfur", 90, recipeOutput); + makeStorageRecipe("soulium_dust", 90, recipeOutput); + makeStorageRecipe("stellarite", 90, recipeOutput); + makeStorageRecipe("uraninite", 90, recipeOutput); + //Don't found in 1.21 + /* + makeStorageRecipe("agate", 90, recipeOutput); + makeStorageRecipe("amber", 90, recipeOutput); + makeStorageRecipe("aquamarine", 90, recipeOutput); + makeStorageRecipe("ardite", 90, recipeOutput); + makeStorageRecipe("beryl", 90, recipeOutput); + makeStorageRecipe("boron", 90, recipeOutput); + makeStorageRecipe("cinnabar", 90, recipeOutput); + makeStorageRecipe("cobalt", 90, recipeOutput); + makeStorageRecipe("dimensional_shard",90,recipeOutput); + makeStorageRecipe("electrotine", 90, recipeOutput); + makeStorageRecipe("garnet", 90, recipeOutput); + makeStorageRecipe("heliodor", 90, recipeOutput); + makeStorageRecipe("indicolite", 90, recipeOutput); + makeStorageRecipe("iolite", 90, recipeOutput); + makeStorageRecipe("lithium", 90, recipeOutput); + makeStorageRecipe("magnesium", 90, recipeOutput); + makeStorageRecipe("malachite", 90, recipeOutput); + makeStorageRecipe("mithril", 90, recipeOutput); + makeStorageRecipe("morganite", 90, recipeOutput); + makeStorageRecipe("niter", 90, recipeOutput); + makeStorageRecipe("onyx", 90, recipeOutput); + makeStorageRecipe("opal", 90, recipeOutput); + makeStorageRecipe("tanzanite", 90, recipeOutput); + makeStorageRecipe("thorium", 90, recipeOutput); + makeStorageRecipe("topaz", 90, recipeOutput); + makeStorageRecipe("dimensional_shard", 90, recipeOutput); + makeStorageRecipe("draconium", 90, recipeOutput); + makeStorageRecipe("bone_fragments", 90, recipeOutput); + makeStorageRecipe("baronyte", 90, recipeOutput); + makeStorageRecipe("blazium", 90, recipeOutput); + makeStorageRecipe("bloodstone", 90, recipeOutput); + makeStorageRecipe("blue_gemstone", 90, recipeOutput); + makeStorageRecipe("charged_runium", 90, recipeOutput); + makeStorageRecipe("crystallite", 90, recipeOutput); + makeStorageRecipe("elecanium", 90, recipeOutput); + makeStorageRecipe("emberstone", 90, recipeOutput); + makeStorageRecipe("gemenyte", 90, recipeOutput); + makeStorageRecipe("ghastly", 90, recipeOutput); + makeStorageRecipe("ghoulish", 90, recipeOutput); + makeStorageRecipe("green_gemstone", 90, recipeOutput); + makeStorageRecipe("jade", 90, recipeOutput); + makeStorageRecipe("jewelyte", 90, recipeOutput); + makeStorageRecipe("limonite", 90, recipeOutput); + makeStorageRecipe("lyon", 90, recipeOutput); + makeStorageRecipe("mystite", 90, recipeOutput); + makeStorageRecipe("ornamyte", 90, recipeOutput); + makeStorageRecipe("purple_gemstone", 90, recipeOutput); + makeStorageRecipe("red_gemstone", 90, recipeOutput); + makeStorageRecipe("runium", 90, recipeOutput); + makeStorageRecipe("shyregem", 90, recipeOutput); + makeStorageRecipe("shyrestone", 90, recipeOutput); + makeStorageRecipe("varsium", 90, recipeOutput); + makeStorageRecipe("white_gemstone", 90, recipeOutput); + makeStorageRecipe("yellow_gemstone", 90, recipeOutput); + */ + MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.ELDRITCH, Tags.Items.ORES_NETHERITE_SCRAP, 90, 9) + .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) + .allowEmpty() + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/eldritch/ancient_debris")); + MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.ELDRITCH, OccultismTags.makeItemTag(ResourceLocation.fromNamespaceAndPath("c", "gems/sal_ammoniac")), 90, 9) + .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/eldritch/sal_ammoniac")); + MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.ELDRITCH, OccultismTags.makeItemTag(ResourceLocation.fromNamespaceAndPath("c", "gems/amethyst")), 90, 9) + .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/eldritch/amethyst")); + MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.ELDRITCH, OccultismTags.makeItemTag(ResourceLocation.fromNamespaceAndPath("c", "dusts/glowstone")), 90, 9) + .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/eldritch/glowstone_dust")); + MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.ELDRITCH, OccultismTags.makeItemTag(ResourceLocation.fromNamespaceAndPath("c", "gems/quartz")), 90, 9) + .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/eldritch/quartz")); + MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.ELDRITCH, OccultismItems.MINING_DIMENSION_CORE_PIECE, 1) + .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) + .allowEmpty() + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/eldritch/mining_dim_core")); } // Item-based recipes where the item is not available in our dev env are not great because they would need a separate handling @@ -166,6 +297,12 @@ public static void makeOreRecipe(String type, int weight, RecipeOutput consumer) .save(consumer, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/ores/" + type + "_ore")); } + public static void makeStorageRecipe(String type, int weight, RecipeOutput consumer) { + MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.ELDRITCH, OccultismTags.makeItemTag(ResourceLocation.fromNamespaceAndPath("c", "storage_blocks/" + type)), weight) + .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) + .save(consumer, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/eldritch/" + type)); + } + public static void deeps(RecipeOutput consumer) { MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.DEEPS, Items.DEEPSLATE_COAL_ORE, 1000) .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) @@ -216,31 +353,39 @@ public static void master_resources(RecipeOutput consumer) { .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) .allowEmpty() .save(consumer, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/master/iesnium_ore")); + MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.MASTER, OccultismItems.MINING_DIMENSION_CORE_PIECE, 1) + .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) + .allowEmpty() + .save(consumer, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/master/mining_dim_core")); } public static void basic_resources(RecipeOutput consumer) { - MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.BASIC_RESOURCES, Items.ANDESITE, 10000) + MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.BASIC_RESOURCES, Items.STONE, 10000) + .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) + .allowEmpty() + .save(consumer, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/basic_resources/stone")); + MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.BASIC_RESOURCES, Items.ANDESITE, 7000) .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) .allowEmpty() .save(consumer, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/basic_resources/andesite")); - MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.BASIC_RESOURCES, Items.DIORITE, 10000) + MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.BASIC_RESOURCES, Items.DIORITE, 7000) .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) .allowEmpty() .save(consumer, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/basic_resources/diorite")); - MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.BASIC_RESOURCES, Items.END_STONE, 30) + MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.BASIC_RESOURCES, Items.GRANITE, 7000) .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) .allowEmpty() - .save(consumer, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/basic_resources/end_stone")); - MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.BASIC_RESOURCES, Items.GRANITE, 10000) + .save(consumer, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/basic_resources/granite")); + MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.BASIC_RESOURCES, Items.DEEPSLATE, 5000) .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) .allowEmpty() - .save(consumer, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/basic_resources/granite")); - MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.BASIC_RESOURCES, Items.MOSSY_COBBLESTONE, 200) + .save(consumer, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/basic_resources/deepslate")); + MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.BASIC_RESOURCES, Items.MOSSY_COBBLESTONE, 3000) .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) .allowEmpty() .save(consumer, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/basic_resources/mossy_cobblestone")); - MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.BASIC_RESOURCES, Items.MOSSY_STONE_BRICKS, 10000) + MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.BASIC_RESOURCES, Items.MOSSY_STONE_BRICKS, 3000) .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) .allowEmpty() .save(consumer, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/basic_resources/mossy_stone_bricks")); @@ -248,10 +393,18 @@ public static void basic_resources(RecipeOutput consumer) { .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) .allowEmpty() .save(consumer, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/basic_resources/netherrack")); - MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.BASIC_RESOURCES, Items.STONE, 10000) + MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.BASIC_RESOURCES, Items.BASALT, 1000) .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) .allowEmpty() - .save(consumer, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/basic_resources/stone")); + .save(consumer, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/basic_resources/basalt")); + MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.BASIC_RESOURCES, Items.BLACKSTONE, 1000) + .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) + .allowEmpty() + .save(consumer, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/basic_resources/blackstone")); + MinerRecipeBuilder.minerRecipe(OccultismTags.Items.Miners.BASIC_RESOURCES, Items.END_STONE, 30) + .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) + .allowEmpty() + .save(consumer, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miner/basic_resources/end_stone")); } public static TagKey tag(String tag) { diff --git a/src/main/java/com/klikli_dev/occultism/datagen/recipe/OccultismRecipeProvider.java b/src/main/java/com/klikli_dev/occultism/datagen/recipe/OccultismRecipeProvider.java index 0bd233709..a9a07779d 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/recipe/OccultismRecipeProvider.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/recipe/OccultismRecipeProvider.java @@ -14,6 +14,7 @@ import net.minecraft.data.recipes.*; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; @@ -64,6 +65,17 @@ private static void metalRecipes(RecipeOutput pRecipeOutput) { .requires(OccultismTags.Items.STORAGE_BLOCK_RAW_IESNIUM) .unlockedBy("has_raw_iesnium_block", has(OccultismTags.Items.STORAGE_BLOCK_RAW_IESNIUM)) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/raw_iesnium_ingot_from_block")); + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, OccultismItems.NETHERITE_DUST.get()) + .requires(OccultismTags.Items.NETHERITE_SCRAP_DUST) + .requires(OccultismTags.Items.NETHERITE_SCRAP_DUST) + .requires(OccultismTags.Items.NETHERITE_SCRAP_DUST) + .requires(OccultismTags.Items.NETHERITE_SCRAP_DUST) + .requires(OccultismTags.Items.GOLD_DUST) + .requires(OccultismTags.Items.GOLD_DUST) + .requires(OccultismTags.Items.GOLD_DUST) + .requires(OccultismTags.Items.GOLD_DUST) + .unlockedBy("has_netherite_scrap_dust", has(OccultismTags.Items.NETHERITE_SCRAP_DUST)) + .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/netherite_dust")); // Silver metal ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, OccultismBlocks.SILVER_BLOCK.get()) @@ -139,6 +151,11 @@ private static void blastingRecipes(RecipeOutput pRecipeOutput) { .blasting(Ingredient.of(OccultismTags.Items.RAW_SILVER), RecipeCategory.MISC, OccultismItems.SILVER_INGOT.get(), 0.7f, 100) .unlockedBy("has_raw_silver", has(OccultismTags.Items.RAW_SILVER)) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "blasting/silver_ingot_from_raw")); + SimpleCookingRecipeBuilder + .blasting(Ingredient.of(OccultismTags.Items.NETHERITE_DUST), RecipeCategory.MISC, Items.NETHERITE_INGOT, 0.7f, 100) + .unlockedBy("has_netherite_dust", has(OccultismTags.Items.NETHERITE_DUST)) + .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "blasting/netherite_ingot_from_dust")); + } protected static void otherStonecutter(RecipeOutput recipeOutput, ItemLike result, ItemLike material, int resultCount, boolean source) { @@ -183,8 +200,8 @@ private void ritualRecipes(RecipeOutput recipeOutput, HolderLookup.Provider regi } private void spiritTradeRecipes(RecipeOutput pRecipeOutput) { - SpiritTradeRecipeBuilder.spiritTradeRecipe(Ingredient.of(OccultismItems.OTHERWORLD_SAPLING_NATURAL.get()), new ItemStack(OccultismBlocks.OTHERWORLD_SAPLING.get())) - .unlockedBy("has_otherworld_sapling_natural", has(OccultismItems.OTHERWORLD_SAPLING_NATURAL.get())) + SpiritTradeRecipeBuilder.spiritTradeRecipe(Ingredient.of(OccultismTags.Items.OTHERWORLD_SAPLINGS_NATURAL), new ItemStack(OccultismBlocks.OTHERWORLD_SAPLING)) + .unlockedBy("has_otherworld_sapling_natural", has(OccultismBlocks.OTHERWORLD_SAPLING_NATURAL.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "spirit_trade/otherworld_sapling")); SpiritTradeRecipeBuilder.spiritTradeRecipe(Ingredient.of(Tags.Items.STONES), new ItemStack(OccultismBlocks.OTHERSTONE.get(), 2)) .unlockedBy("has_stone", has(Tags.Items.STONES)) @@ -202,9 +219,9 @@ private void spiritFireRecipes(RecipeOutput pRecipeOutput) { SpiritFireRecipeBuilder.spiritFireRecipe(Ingredient.of(Items.WRITABLE_BOOK), new ItemStack(OccultismItems.BOOK_OF_BINDING_EMPTY.get())) .unlockedBy("has_writable_book", has(Items.WRITABLE_BOOK)) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "spirit_fire/book_of_binding_empty")); - SpiritFireRecipeBuilder.spiritFireRecipe(Ingredient.of(OccultismItems.CHALK_GOLD_IMPURE.get()), new ItemStack(OccultismItems.CHALK_GOLD.get())) - .unlockedBy("has_chalk_gold_impure", has(OccultismItems.CHALK_GOLD_IMPURE.get())) - .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "spirit_fire/chalk_gold")); + SpiritFireRecipeBuilder.spiritFireRecipe(Ingredient.of(OccultismItems.CHALK_YELLOW_IMPURE.get()), new ItemStack(OccultismItems.CHALK_YELLOW.get())) + .unlockedBy("has_chalk_yellow_impure", has(OccultismItems.CHALK_YELLOW_IMPURE.get())) + .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "spirit_fire/chalk_yellow")); SpiritFireRecipeBuilder.spiritFireRecipe(Ingredient.of(OccultismItems.CHALK_PURPLE_IMPURE.get()), new ItemStack(OccultismItems.CHALK_PURPLE.get())) .unlockedBy("has_chalk_purple_impure", has(OccultismItems.CHALK_PURPLE_IMPURE.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "spirit_fire/chalk_purple")); @@ -214,7 +231,6 @@ private void spiritFireRecipes(RecipeOutput pRecipeOutput) { SpiritFireRecipeBuilder.spiritFireRecipe(Ingredient.of(OccultismItems.CHALK_WHITE_IMPURE.get()), new ItemStack(OccultismItems.CHALK_WHITE.get())) .unlockedBy("has_chalk_white_impure", has(OccultismItems.CHALK_WHITE_IMPURE.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "spirit_fire/chalk_white")); - SpiritFireRecipeBuilder.spiritFireRecipe(Ingredient.of(OccultismItems.CHALK_LIGHT_GRAY_IMPURE.get()), new ItemStack(OccultismItems.CHALK_LIGHT_GRAY.get())) .unlockedBy("has_chalk_light_gray_impure", has(OccultismItems.CHALK_LIGHT_GRAY_IMPURE.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "spirit_fire/chalk_light_gray")); @@ -261,7 +277,7 @@ private void spiritFireRecipes(RecipeOutput pRecipeOutput) { SpiritFireRecipeBuilder.spiritFireRecipe(Ingredient.of(OccultismItems.DEMONS_DREAM_ESSENCE.get()), new ItemStack(OccultismItems.OTHERWORLD_ESSENCE.get())) .unlockedBy("has_demons_dream_essence", has(OccultismItems.DEMONS_DREAM_ESSENCE.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "spirit_fire/otherworld_essence")); - SpiritFireRecipeBuilder.spiritFireRecipe(Ingredient.of(Items.OAK_SAPLING), new ItemStack(OccultismItems.OTHERWORLD_SAPLING_NATURAL.get())) + SpiritFireRecipeBuilder.spiritFireRecipe(Ingredient.of(Items.OAK_SAPLING), new ItemStack(OccultismBlocks.OTHERWORLD_SAPLING_NATURAL)) .unlockedBy("has_oak_sapling", has(Items.OAK_SAPLING)) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "spirit_fire/otherworld_sapling_natural")); SpiritFireRecipeBuilder.spiritFireRecipe(Ingredient.of(Items.BLACK_DYE), new ItemStack(OccultismItems.PURIFIED_INK.get())) @@ -283,6 +299,7 @@ private void miningRecipes(RecipeOutput pRecipeOutput) { MinerRecipes.deeps(pRecipeOutput); MinerRecipes.master_resources(pRecipeOutput); MinerRecipes.ores(pRecipeOutput); + MinerRecipes.eldritch(pRecipeOutput); MinerRecipeBuilder.minerRecipe(OccultismItems.DEBUG_WAND.get(), OccultismBlocks.OTHERSTONE.get(), 200) .unlockedBy("has_miner", has(OccultismItems.MAGIC_LAMP_EMPTY.get())) .allowEmpty() @@ -353,12 +370,18 @@ private void crushingRecipes(RecipeOutput pRecipeOutput) { this.crushingGemRecipe("sapphire", pRecipeOutput); this.crushingGemRecipe("topaz", pRecipeOutput); this.crushingGemRecipe("arcane_crystal", pRecipeOutput); + this.crushingGemRecipe("amethyst", pRecipeOutput); CrushingRecipeBuilder.crushingRecipe(Tags.Items.RODS_BLAZE, Items.BLAZE_POWDER, 200) .allowEmpty() .setResultAmount(4) .unlockedBy("has_blaze_rod", has(Tags.Items.RODS_BLAZE)) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crushing/blaze_powder_from_rod")); + CrushingRecipeBuilder.crushingRecipe(Tags.Items.ORES_NETHERITE_SCRAP, OccultismTags.Items.NETHERITE_SCRAP_DUST, 200) + .allowEmpty() + .setResultAmount(2) + .unlockedBy("has_ancient_debris", has(Tags.Items.ORES_NETHERITE_SCRAP)) + .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID,"crushing/netherite_scrap_dust")); CrushingRecipeBuilder.crushingRecipe(Tags.Items.OBSIDIANS, OccultismTags.Items.OBSIDIAN_DUST, 200) .allowEmpty() @@ -376,6 +399,47 @@ private void crushingRecipes(RecipeOutput pRecipeOutput) { .setIgnoreCrushingMultiplier(true) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crushing/othercobblestone")); + CrushingRecipeBuilder.crushingRecipe(Items.CALCITE, OccultismTags.Items.CALCITE_DUST, 200) + .allowEmpty() + .unlockedBy("has_calcite", has(Items.CALCITE)) + .setResultAmount(1) + .setIgnoreCrushingMultiplier(true) + .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crushing/calcite_dust")); + CrushingRecipeBuilder.crushingRecipe(Items.BLACKSTONE, OccultismTags.Items.BLACKSTONE_DUST, 200) + .allowEmpty() + .unlockedBy("has_blackstone", has(Items.BLACKSTONE)) + .setResultAmount(1) + .setIgnoreCrushingMultiplier(true) + .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crushing/blackstone_dust")); + CrushingRecipeBuilder.crushingRecipe(Items.ICE, OccultismTags.Items.ICE_DUST, 200) + .allowEmpty() + .unlockedBy("has_ice", has(Items.ICE)) + .setResultAmount(1) + .setIgnoreCrushingMultiplier(true) + .setMinTier(2) + .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crushing/ice_dust")); + CrushingRecipeBuilder.crushingRecipe(Items.PACKED_ICE, OccultismTags.Items.PACKED_ICE_DUST, 200) + .allowEmpty() + .unlockedBy("has_packed_ice", has(Items.PACKED_ICE)) + .setResultAmount(1) + .setIgnoreCrushingMultiplier(true) + .setMinTier(2) + .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crushing/packed_ice_dust")); + CrushingRecipeBuilder.crushingRecipe(Items.BLUE_ICE, OccultismTags.Items.BLUE_ICE_DUST, 200) + .allowEmpty() + .unlockedBy("has_blue_ice", has(Items.BLUE_ICE)) + .setResultAmount(1) + .setIgnoreCrushingMultiplier(true) + .setMinTier(2) + .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crushing/blue_ice_dust")); + CrushingRecipeBuilder.crushingRecipe(Items.ECHO_SHARD, OccultismTags.Items.ECHO_DUST, 200) + .allowEmpty() + .unlockedBy("has_echo_shard", has(Items.ECHO_SHARD)) + .setResultAmount(1) + .setIgnoreCrushingMultiplier(true) + .setMinTier(4) + .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crushing/echo_dust")); + } private void crushingGemRecipe(String gemName, RecipeOutput recipeOutput) { @@ -677,119 +741,114 @@ private void craftingRecipes(RecipeOutput pRecipeOutput) { .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/large_candle_purple")); // Chalks - ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, OccultismItems.CHALK_GOLD_IMPURE.get()) + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, OccultismItems.CHALK_YELLOW_IMPURE.get()) .requires(OccultismItems.CHALK_WHITE_IMPURE.get()) .requires(Tags.Items.DUSTS_GLOWSTONE) .requires(OccultismTags.Items.GOLD_DUST) .requires(OccultismTags.Items.GOLD_DUST) - .unlockedBy("has_chalk_white", has(OccultismItems.CHALK_WHITE_IMPURE.get())) - .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/chalk_gold_impure")); + .unlockedBy("has_chalk_white_impure", has(OccultismItems.CHALK_WHITE_IMPURE.get())) + .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/chalk_yellow_impure")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, OccultismItems.CHALK_PURPLE_IMPURE.get()) .requires(OccultismItems.CHALK_WHITE_IMPURE.get()) .requires(OccultismTags.Items.END_STONE_DUST) .requires(OccultismTags.Items.OBSIDIAN_DUST) .requires(OccultismTags.Items.OBSIDIAN_DUST) - .unlockedBy("has_chalk_white", has(OccultismItems.CHALK_WHITE_IMPURE.get())) + .unlockedBy("has_chalk_white_impure", has(OccultismItems.CHALK_WHITE_IMPURE.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/chalk_purple_impure")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, OccultismItems.CHALK_RED_IMPURE.get()) .requires(OccultismItems.CHALK_WHITE_IMPURE.get()) .requires(OccultismItems.AFRIT_ESSENCE.get()) - .requires(Items.BLAZE_POWDER) + .requires(Items.TORCHFLOWER) .requires(Tags.Items.DUSTS_REDSTONE) - .unlockedBy("has_chalk_white", has(OccultismItems.CHALK_WHITE_IMPURE.get())) + .unlockedBy("has_chalk_white_impure", has(OccultismItems.CHALK_WHITE_IMPURE.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/chalk_red_impure")); - ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, OccultismItems.CHALK_LIGHT_GRAY_IMPURE.get()) .requires(OccultismItems.CHALK_WHITE_IMPURE.get()) .requires(OccultismTags.Items.SILVER_DUST) .requires(OccultismTags.Items.IRON_DUST) - .requires(Items.CALCITE) - .unlockedBy("has_chalk_white", has(OccultismItems.CHALK_WHITE_IMPURE.get())) + .requires(OccultismTags.Items.CALCITE_DUST) + .unlockedBy("has_chalk_white_impure", has(OccultismItems.CHALK_WHITE_IMPURE.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/chalk_light_gray_impure")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, OccultismItems.CHALK_GRAY_IMPURE.get()) .requires(OccultismItems.CHALK_WHITE_IMPURE.get()) - .requires(Tags.Items.GUNPOWDERS) - .requires(Items.WIND_CHARGE) - .requires(Items.CLAY_BALL) - .unlockedBy("has_chalk_white", has(OccultismItems.CHALK_WHITE_IMPURE.get())) + .requires(OccultismItems.GRAY_PASTE) + .unlockedBy("has_chalk_white_impure", has(OccultismItems.CHALK_WHITE_IMPURE.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/chalk_gray_impure")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, OccultismItems.CHALK_BLACK_IMPURE.get()) .requires(OccultismItems.CHALK_WHITE_IMPURE.get()) - .requires(Items.NETHERITE_INGOT) - .requires(Items.WITHER_ROSE) - .requires(Items.BLACKSTONE) - .unlockedBy("has_chalk_white", has(OccultismItems.CHALK_WHITE_IMPURE.get())) + .requires(OccultismTags.Items.WITHERITE_DUST) + .requires(OccultismTags.Items.WITHERITE_DUST) + .requires(OccultismTags.Items.WITHERITE_DUST) + .unlockedBy("has_chalk_white_impure", has(OccultismItems.CHALK_WHITE_IMPURE.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/chalk_black_impure")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, OccultismItems.CHALK_BROWN_IMPURE.get()) .requires(OccultismItems.CHALK_WHITE_IMPURE.get()) - .requires(Items.POINTED_DRIPSTONE) - .requires(Items.ARMADILLO_SCUTE) - .requires(Items.RABBIT_FOOT) - .unlockedBy("has_chalk_white", has(OccultismItems.CHALK_WHITE_IMPURE.get())) + .requires(OccultismItems.CRUELTY_ESSENCE) + .requires(Items.COCOA_BEANS) + .requires(Items.COCOA_BEANS) + .unlockedBy("has_chalk_white_impure", has(OccultismItems.CHALK_WHITE_IMPURE.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/chalk_brown_impure")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, OccultismItems.CHALK_ORANGE_IMPURE.get()) .requires(OccultismItems.CHALK_WHITE_IMPURE.get()) - .requires(Items.TORCHFLOWER) + .requires(OccultismItems.CURSED_HONEY) .requires(Items.GLOW_BERRIES) - .requires(Items.HONEYCOMB) - .unlockedBy("has_chalk_white", has(OccultismItems.CHALK_WHITE_IMPURE.get())) + .requires(OccultismTags.Items.BLAZE_DUST) + .unlockedBy("has_chalk_white_impure", has(OccultismItems.CHALK_WHITE_IMPURE.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/chalk_orange_impure")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, OccultismItems.CHALK_LIME_IMPURE.get()) .requires(OccultismItems.CHALK_WHITE_IMPURE.get()) + .requires(OccultismTags.Items.RESEARCH_DUST) + .requires(OccultismTags.Items.EMERALD_DUST) .requires(Tags.Items.SLIME_BALLS) - .requires(Items.EMERALD) - .requires(Items.EXPERIENCE_BOTTLE) - .unlockedBy("has_chalk_white", has(OccultismItems.CHALK_WHITE_IMPURE.get())) + .unlockedBy("has_chalk_white_impure", has(OccultismItems.CHALK_WHITE_IMPURE.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/chalk_lime_impure")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, OccultismItems.CHALK_GREEN_IMPURE.get()) .requires(OccultismItems.CHALK_WHITE_IMPURE.get()) - .requires(Tags.Items.SEEDS) - .requires(ItemTags.SAPLINGS) - .requires(ItemTags.LEAVES) - .unlockedBy("has_chalk_white", has(OccultismItems.CHALK_WHITE_IMPURE.get())) + .requires(OccultismItems.NATURE_PASTE) + .unlockedBy("has_chalk_white_impure", has(OccultismItems.CHALK_WHITE_IMPURE.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/chalk_green_impure")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, OccultismItems.CHALK_CYAN_IMPURE.get()) .requires(OccultismItems.CHALK_WHITE_IMPURE.get()) .requires(OccultismTags.Items.IESNIUM_DUST) + .requires(OccultismTags.Items.ECHO_DUST) .requires(Items.GLOW_INK_SAC) - .requires(Items.ECHO_SHARD) - .unlockedBy("has_chalk_white", has(OccultismItems.CHALK_WHITE_IMPURE.get())) + .unlockedBy("has_chalk_white_impure", has(OccultismItems.CHALK_WHITE_IMPURE.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/chalk_cyan_impure")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, OccultismItems.CHALK_LIGHT_BLUE_IMPURE.get()) .requires(OccultismItems.CHALK_WHITE_IMPURE.get()) - .requires(Items.ICE) - .requires(Items.PACKED_ICE) - .requires(Items.BLUE_ICE) - .unlockedBy("has_chalk_white", has(OccultismItems.CHALK_WHITE_IMPURE.get())) + .requires(OccultismTags.Items.ICE_DUST) + .requires(OccultismTags.Items.PACKED_ICE_DUST) + .requires(OccultismTags.Items.BLUE_ICE_DUST) + .unlockedBy("has_chalk_white_impure", has(OccultismItems.CHALK_WHITE_IMPURE.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/chalk_light_blue_impure")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, OccultismItems.CHALK_BLUE_IMPURE.get()) .requires(OccultismItems.CHALK_WHITE_IMPURE.get()) - .requires(Items.HEART_OF_THE_SEA) - .requires(Tags.Items.GEMS_LAPIS) - .requires(Items.TUBE_CORAL) - .unlockedBy("has_chalk_white", has(OccultismItems.CHALK_WHITE_IMPURE.get())) + .requires(OccultismItems.MARID_ESSENCE) + .requires(OccultismTags.Items.LAPIS_DUST) + .requires(OccultismTags.Items.LAPIS_DUST) + .unlockedBy("has_chalk_white_impure", has(OccultismItems.CHALK_WHITE_IMPURE.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/chalk_blue_impure")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, OccultismItems.CHALK_MAGENTA_IMPURE.get()) .requires(OccultismItems.CHALK_WHITE_IMPURE.get()) - .requires(Items.DRAGON_BREATH) - .requires(Tags.Items.GEMS_AMETHYST) - .requires(Items.END_CRYSTAL) - .unlockedBy("has_chalk_white", has(OccultismItems.CHALK_WHITE_IMPURE.get())) + .requires(OccultismTags.Items.DRAGONYST_DUST) + .requires(OccultismTags.Items.AMETHYST_DUST) + .requires(OccultismTags.Items.AMETHYST_DUST) + .unlockedBy("has_chalk_white_impure", has(OccultismItems.CHALK_WHITE_IMPURE.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/chalk_magenta_impure")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, OccultismItems.CHALK_PINK_IMPURE.get()) .requires(OccultismItems.CHALK_WHITE_IMPURE.get()) - .requires(Items.PINK_PETALS) - .requires(Items.PORKCHOP) - .requires(Items.CHERRY_LEAVES) - .unlockedBy("has_chalk_white", has(OccultismItems.CHALK_WHITE_IMPURE.get())) + .requires(OccultismItems.DEMONIC_MEAT) + .requires(OccultismItems.DEMONIC_MEAT) + .requires(OccultismItems.DEMONIC_MEAT) + .unlockedBy("has_chalk_white_impure", has(OccultismItems.CHALK_WHITE_IMPURE.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/chalk_pink_impure")); ShapedRecipeBuilder.shaped(RecipeCategory.MISC, OccultismItems.CHALK_WHITE_IMPURE.get()) .pattern("xy") .pattern("xy") .pattern("xy") - .define('x', OccultismItems.BURNT_OTHERSTONE.get()) - .define('y', OccultismItems.OTHERWORLD_ASHES.get()) + .define('x', OccultismTags.Items.OTHERSTONE_DUST) + .define('y', OccultismTags.Items.OTHERWORLD_WOOD_DUST) .unlockedBy("has_ashes", has(OccultismItems.OTHERWORLD_ASHES.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/chalk_white_impure")); @@ -872,7 +931,7 @@ private void craftingRecipes(RecipeOutput pRecipeOutput) { .pattern("sis") .pattern(" ss") .define('s', OccultismTags.Items.SILVER_INGOT) - .define('i', OccultismTags.Items.IESNIUM_INGOT) + .define('i', OccultismTags.Items.RAW_IESNIUM) .unlockedBy("has_silver_ingot", has(OccultismTags.Items.SILVER_INGOT)) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "crafting/magic_lamp_empty")); @@ -1140,6 +1199,10 @@ private void smeltingRecipes(RecipeOutput pRecipeOutput) { .smelting(Ingredient.of(OccultismBlocks.OTHERSTONE_BRICKS.asItem()), RecipeCategory.MISC, OccultismBlocks.CRACKED_OTHERSTONE_BRICKS.asItem(), 0.3f, 200) .unlockedBy("has_otherstone_bricks", has(OccultismBlocks.OTHERSTONE_BRICKS.get())) .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "smelting/cracked_otherstone_bricks")); + SimpleCookingRecipeBuilder + .smelting(Ingredient.of(OccultismTags.Items.NETHERITE_DUST), RecipeCategory.MISC, Items.NETHERITE_INGOT, 0.7f, 200) + .unlockedBy("has_netherite_dust", has(OccultismTags.Items.NETHERITE_DUST)) + .save(pRecipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "smelting/netherite_ingot_from_dust")); } diff --git a/src/main/java/com/klikli_dev/occultism/datagen/recipe/RitualRecipes.java b/src/main/java/com/klikli_dev/occultism/datagen/recipe/RitualRecipes.java index e9f1be5dc..f2312fdf2 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/recipe/RitualRecipes.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/recipe/RitualRecipes.java @@ -17,6 +17,7 @@ import net.minecraft.tags.BiomeTags; import net.minecraft.tags.ItemTags; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.monster.warden.Warden; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -33,31 +34,35 @@ public abstract class RitualRecipes extends RecipeProvider { - + // Ritual Types private static final ResourceLocation RITUAL_SUMMON = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "summon"); private static final ResourceLocation RITUAL_SUMMON_WILD = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "summon_wild"); private static final ResourceLocation RITUAL_SUMMON_JOB = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "summon_spirit_with_job"); private static final ResourceLocation RITUAL_RESURRECT_FAMILIAR = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "resurrect_familiar"); - private static final ResourceLocation PENTACLE_SUMMON_FOLIOT = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "summon_foliot"); - private static final ResourceLocation PENTACLE_SUMMON_DJINNI = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "summon_djinni"); - private static final ResourceLocation PENTACLE_SUMMON_AFRIT = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "summon_afrit"); - private static final ResourceLocation PENTACLE_SUMMON_WILD_AFRIT = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "summon_wild_afrit"); - private static final ResourceLocation PENTACLE_SUMMON_MARID = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "summon_marid"); - - private static final ResourceLocation PENTACLE_SUMMON_WILD_GREATER_SPIRIT = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "summon_wild_greater_spirit"); - // Ritual Types private static final ResourceLocation RITUAL_FAMILIAR = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "familiar"); private static final ResourceLocation RITUAL_CRAFT_WITH_SPIRIT_NAME = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "craft_with_spirit_name"); private static final ResourceLocation RITUAL_CRAFT = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "craft"); private static final ResourceLocation RITUAL_CRAFT_MINER_SPIRIT = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "craft_miner_spirit"); + private static final ResourceLocation RITUAL_REPAIR = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "repair"); // Pentacle IDs - private static final ResourceLocation PENTACLE_POSSESS_DJINNI = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "possess_djinni"); + private static final ResourceLocation PENTACLE_SUMMON_FOLIOT = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "summon_foliot"); + private static final ResourceLocation PENTACLE_SUMMON_DJINNI = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "summon_djinni"); + private static final ResourceLocation PENTACLE_SUMMON_UNBOUND_AFRIT = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "summon_unbound_afrit"); + private static final ResourceLocation PENTACLE_SUMMON_AFRIT = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "summon_afrit"); + private static final ResourceLocation PENTACLE_SUMMON_UNBOUND_MARID = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "summon_unbound_marid"); + private static final ResourceLocation PENTACLE_SUMMON_MARID = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "summon_marid"); private static final ResourceLocation PENTACLE_POSSESS_FOLIOT = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "possess_foliot"); + private static final ResourceLocation PENTACLE_POSSESS_DJINNI = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "possess_djinni"); + private static final ResourceLocation PENTACLE_POSSESS_UNBOUND_AFRIT = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "possess_unbound_afrit"); private static final ResourceLocation PENTACLE_POSSESS_AFRIT = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "possess_afrit"); - private static final ResourceLocation PENTACLE_CRAFT_DJINNI = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "craft_djinni"); + private static final ResourceLocation PENTACLE_POSSESS_MARID = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "possess_marid"); private static final ResourceLocation PENTACLE_CRAFT_FOLIOT = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "craft_foliot"); + private static final ResourceLocation PENTACLE_CRAFT_DJINNI = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "craft_djinni"); private static final ResourceLocation PENTACLE_CRAFT_AFRIT = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "craft_afrit"); private static final ResourceLocation PENTACLE_CRAFT_MARID = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "craft_marid"); + private static final ResourceLocation PENTACLE_RESURRECT_SPIRIT = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "resurrect_spirit"); + private static final ResourceLocation PENTACLE_CONTACT_WILD_SPIRIT = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "contact_wild_spirit"); + private static final ResourceLocation PENTACLE_CONTACT_ELDRITCH_SPIRIT = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "contact_eldritch_spirit"); public RitualRecipes(PackOutput p_248933_, CompletableFuture lookupProvider) { @@ -91,24 +96,14 @@ public static void ritualRecipes(RecipeOutput recipeOutput, HolderLookup.Provide craftingRituals(recipeOutput); familiarRituals(recipeOutput); possessRituals(recipeOutput); - RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.SOUL_SHARD_ITEM.get()), - makeJeiNoneDummy(), - makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/resurrect_familiar")), - 15, - RITUAL_RESURRECT_FAMILIAR, - PENTACLE_SUMMON_FOLIOT, - Ingredient.of(OccultismItems.OTHERWORLD_ESSENCE.get()), - Ingredient.of(OccultismItems.OTHERWORLD_ESSENCE.get()), - Ingredient.of(OccultismItems.OTHERWORLD_ESSENCE.get()), - Ingredient.of(OccultismItems.OTHERWORLD_ESSENCE.get())) - .unlockedBy("has_otherworld_essence", has(OccultismItems.OTHERWORLD_ESSENCE.get())) - .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/resurrect_familiar")); summonRituals(recipeOutput, registries); + resurrectRituals(recipeOutput); + repairRituals(recipeOutput); } private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provider registries) { RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT.get()), - makeJeiNoneDummy(), + makeLoreSpawnEgg(OccultismItems.SPAWN_EGG_AFRIT.get(), "item.occultism.ritual_dummy.summon_afrit_crusher"), makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_afrit_crusher")), 120, RITUAL_SUMMON_JOB, @@ -123,7 +118,7 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .entityToSummon(OccultismEntities.AFRIT_TYPE.get()) .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_afrit_crusher")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT.get()), - makeJeiNoneDummy(), + makeLoreSpawnEgg(OccultismItems.SPAWN_EGG_AFRIT.get(), "item.occultism.ritual_dummy.summon_afrit_rain_weather"), makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_afrit_rain_weather")), 60, RITUAL_SUMMON_JOB, @@ -141,7 +136,7 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_afrit_rain_weather")); //summon_afrit_thunder_weather RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT.get()), - makeJeiNoneDummy(), + makeLoreSpawnEgg(OccultismItems.SPAWN_EGG_AFRIT.get(), "item.occultism.ritual_dummy.summon_afrit_thunder_weather"), makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_afrit_thunder_weather")), 60, RITUAL_SUMMON_JOB, @@ -159,7 +154,7 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_afrit_thunder_weather")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_DJINNI.get()), - makeLoreSpawnEgg(OccultismItems.RITUAL_DUMMY_SUMMON_DEMONIC_HUSBAND.get(), "item.occultism.ritual_dummy.summon_demonic_husband"), + makeLoreSpawnEgg(OccultismItems.SPAWN_EGG_DEMONIC_HUSBAND.get(), "item.occultism.ritual_dummy.summon_demonic_husband"), makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_demonic_husband")), 60, OccultismRituals.SUMMON_TAMED.getId(), @@ -178,7 +173,7 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_demonic_husband")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_DJINNI.get()), - makeLoreSpawnEgg(OccultismItems.RITUAL_DUMMY_SUMMON_DEMONIC_WIFE.get(), "item.occultism.ritual_dummy.summon_demonic_wife"), + makeLoreSpawnEgg(OccultismItems.SPAWN_EGG_DEMONIC_WIFE.get(), "item.occultism.ritual_dummy.summon_demonic_wife"), makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_demonic_wife")), 60, OccultismRituals.SUMMON_TAMED.getId(), @@ -197,7 +192,7 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_demonic_wife")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_DJINNI.get()), - makeJeiNoneDummy(), + makeLoreSpawnEgg(OccultismItems.SPAWN_EGG_DJINNI.get(), "item.occultism.ritual_dummy.summon_djinni_clear_weather"), makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_djinni_clear_weather")), 60, RITUAL_SUMMON_JOB, @@ -213,7 +208,7 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_djinni_clear_weather")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_DJINNI.get()), - makeJeiNoneDummy(), + makeLoreSpawnEgg(OccultismItems.SPAWN_EGG_DJINNI.get(), "item.occultism.ritual_dummy.summon_djinni_crusher"), makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_djinni_crusher")), 90, RITUAL_SUMMON_JOB, @@ -229,7 +224,7 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_djinni_crusher")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_DJINNI.get()), - makeJeiNoneDummy(), + makeLoreSpawnEgg(OccultismItems.SPAWN_EGG_MARID.get(), "item.occultism.ritual_dummy.summon_djinni_day_time"), makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_djinni_day_time")), 60, RITUAL_SUMMON_JOB, @@ -261,7 +256,7 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_djinni_manage_machine")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_DJINNI.get()), - makeJeiNoneDummy(), + makeLoreSpawnEgg(OccultismItems.SPAWN_EGG_DJINNI.get(), "item.occultism.ritual_dummy.summon_djinni_night_time"), makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_djinni_night_time")), 60, RITUAL_SUMMON_JOB, @@ -294,7 +289,7 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_FOLIOT.get()), - makeJeiNoneDummy(), + makeLoreSpawnEgg(OccultismItems.SPAWN_EGG_FOLIOT.get(), "item.occultism.ritual_dummy.summon_foliot_crusher"), makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_foliot_crusher")), 60, RITUAL_SUMMON_JOB, @@ -334,7 +329,7 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_foliot_lumberjack")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_FOLIOT.get()), - makeJeiNoneDummy(), + makeLoreSpawnEgg(OccultismItems.SPAWN_EGG_FOLIOT.get(), "item.occultism.ritual_dummy.summon_foliot_otherstone_trader"), makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_foliot_otherstone_trader")), 30, RITUAL_SUMMON_JOB, @@ -350,7 +345,7 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_foliot_otherstone_trader")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_FOLIOT.get()), - makeJeiNoneDummy(), + makeLoreSpawnEgg(OccultismItems.SPAWN_EGG_FOLIOT.get(), "item.occultism.ritual_dummy.summon_foliot_sapling_trader"), makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_foliot_sapling_trader")), 30, RITUAL_SUMMON_JOB, @@ -382,7 +377,7 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_foliot_transport_items")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_MARID.get()), - makeJeiNoneDummy(), + makeLoreSpawnEgg(OccultismItems.SPAWN_EGG_MARID.get(), "item.occultism.ritual_dummy.summon_marid_crusher"), makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_marid_crusher")), 150, RITUAL_SUMMON_JOB, @@ -398,27 +393,42 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_marid_crusher")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT.get()), - makeLoreSpawnEgg(OccultismItems.AFRIT_ESSENCE.get(), "item.occultism.ritual_dummy.summon_wild_afrit"), - makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_wild_afrit")), + makeLoreSpawnEgg(OccultismItems.AFRIT_ESSENCE.get(), "item.occultism.ritual_dummy.summon_unbound_afrit"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_unbound_afrit")), 60, RITUAL_SUMMON, - PENTACLE_SUMMON_WILD_AFRIT, + PENTACLE_SUMMON_UNBOUND_AFRIT, Ingredient.of(Tags.Items.NETHERRACKS), Ingredient.of(Tags.Items.GEMS_QUARTZ), Ingredient.of(Items.FLINT_AND_STEEL), - Ingredient.of(Items.GUNPOWDER)) + Ingredient.of(Tags.Items.GUNPOWDERS)) .unlockedBy("has_bound_afrit", has(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT.get())) .entityToSummon(OccultismEntities.AFRIT_WILD.get()) .entityToSacrificeDisplayName("ritual.occultism.sacrifice.cows") .entityToSacrifice(OccultismTags.Entities.COWS) - .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_wild_afrit")); + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_unbound_afrit")); + + RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_MARID.get()), + makeLoreSpawnEgg(OccultismItems.MARID_ESSENCE.get(), "item.occultism.ritual_dummy.summon_unbound_marid"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_unbound_marid")), + 90, + RITUAL_SUMMON, + PENTACLE_SUMMON_UNBOUND_MARID, + Ingredient.of(Items.CONDUIT), + Ingredient.of(Tags.Items.GEMS_PRISMARINE), + Ingredient.of(Items.PRISMARINE_SHARD), + Ingredient.of(Items.GHAST_TEAR)) + .unlockedBy("has_bound_marid", has(OccultismItems.BOOK_OF_BINDING_BOUND_MARID.get())) + .entityToSummon(OccultismEntities.MARID_UNBOUND.get()) + .itemToUse(Ingredient.of(Items.TRIDENT)) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_unbound_marid")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(Items.SKELETON_SKULL), - makeLoreSpawnEgg(Items.WITHER_SKELETON_SKULL, "item.occultism.ritual_dummy.summon_wild_hunt"), - makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_wild_hunt")), + makeLoreSpawnEgg(Items.WITHER_SKELETON_SKULL, "item.occultism.ritual_dummy.wild_hunt"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/wild_hunt")), 30, RITUAL_SUMMON_WILD, - PENTACLE_SUMMON_WILD_GREATER_SPIRIT, + PENTACLE_CONTACT_WILD_SPIRIT, Ingredient.of(Tags.Items.STORAGE_BLOCKS_COPPER), Ingredient.of(OccultismTags.Items.STORAGE_BLOCK_SILVER), Ingredient.of(Tags.Items.STORAGE_BLOCKS_GOLD), @@ -429,14 +439,14 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .entityToSummon(OccultismEntities.WILD_HUNT_WITHER_SKELETON.get()) .entityToSacrificeDisplayName("ritual.occultism.sacrifice.humans") .entityToSacrifice(OccultismTags.Entities.HUMANS) - .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_wild_hunt")); + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/wild_hunt")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(Items.RAW_GOLD), - makeLoreSpawnEgg(Items.DUNE_ARMOR_TRIM_SMITHING_TEMPLATE, "item.occultism.ritual_dummy.summon_wild_husk"), - makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_wild_husk")), + makeLoreSpawnEgg(Items.DUNE_ARMOR_TRIM_SMITHING_TEMPLATE, "item.occultism.ritual_dummy.wild_husk"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/wild_husk")), 30, RITUAL_SUMMON_WILD, - PENTACLE_SUMMON_WILD_GREATER_SPIRIT, + PENTACLE_CONTACT_WILD_SPIRIT, Ingredient.of(Items.SAND), Ingredient.of(Items.SANDSTONE), Ingredient.of(Items.CHISELED_SANDSTONE), @@ -454,31 +464,31 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .summonNumber(5) .entityToSacrificeDisplayName("ritual.occultism.sacrifice.camel") .entityToSacrifice(OccultismTags.Entities.CAMEL) - .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_wild_husk")); + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/wild_husk")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(Items.HEART_OF_THE_SEA), - makeLoreSpawnEgg(Items.SNIFFER_EGG, "item.occultism.ritual_dummy.summon_wild_drowned"), - makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_wild_drowned")), + makeLoreSpawnEgg(Items.SNIFFER_EGG, "item.occultism.ritual_dummy.wild_drowned"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/wild_drowned")), 30, RITUAL_SUMMON_WILD, - PENTACLE_SUMMON_WILD_GREATER_SPIRIT, - Ingredient.of(Items.DEAD_BRAIN_CORAL), - Ingredient.of(Items.DEAD_BUBBLE_CORAL), - Ingredient.of(Items.DEAD_FIRE_CORAL), - Ingredient.of(Items.DEAD_HORN_CORAL), - Ingredient.of(Items.DEAD_TUBE_CORAL), + PENTACLE_CONTACT_WILD_SPIRIT, + Ingredient.of(Items.DEAD_BRAIN_CORAL_BLOCK), + Ingredient.of(Items.DEAD_BUBBLE_CORAL_BLOCK), + Ingredient.of(Items.DEAD_FIRE_CORAL_BLOCK), + Ingredient.of(Items.DEAD_HORN_CORAL_BLOCK), + Ingredient.of(Items.DEAD_TUBE_CORAL_BLOCK), Ingredient.of(Items.DRIED_KELP_BLOCK)) .unlockedBy("has_bound_afrit", has(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT.get())) .entityToSummon(OccultismEntities.WILD_HORDE_DROWNED.get()) .summonNumber(5) .entityToSacrificeDisplayName("ritual.occultism.sacrifice.dolphin") .entityToSacrifice(OccultismTags.Entities.DOLPHIN) - .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_wild_drowned")); + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/wild_drowned")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(Items.TNT), - makeLoreSpawnEgg(Items.MUSIC_DISC_CAT, "item.occultism.ritual_dummy.summon_wild_creeper"), - makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_wild_creeper")), + makeLoreSpawnEgg(Items.MUSIC_DISC_CAT, "item.occultism.ritual_dummy.wild_creeper"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/wild_creeper")), 30, RITUAL_SUMMON_WILD, - PENTACLE_SUMMON_WILD_GREATER_SPIRIT, + PENTACLE_CONTACT_WILD_SPIRIT, Ingredient.of(Items.TNT), Ingredient.of(Items.OAK_LEAVES), Ingredient.of(Items.MOSS_BLOCK), @@ -496,13 +506,13 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .summonNumber(5) .entityToSacrificeDisplayName("ritual.occultism.sacrifice.pigs") .entityToSacrifice(OccultismTags.Entities.PIGS) - .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_wild_creeper")); + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/wild_creeper")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(Items.BRUSH), - makeLoreSpawnEgg(Items.MUSIC_DISC_RELIC, "item.occultism.ritual_dummy.summon_wild_silverfish"), - makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_wild_silverfish")), + makeLoreSpawnEgg(Items.MUSIC_DISC_RELIC, "item.occultism.ritual_dummy.wild_silverfish"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/wild_silverfish")), 30, RITUAL_SUMMON_WILD, - PENTACLE_SUMMON_WILD_GREATER_SPIRIT, + PENTACLE_CONTACT_WILD_SPIRIT, Ingredient.of(Items.SAND), Ingredient.of(Items.GRAVEL), Ingredient.of(Items.BRICKS), @@ -514,14 +524,14 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .entityToSummon(OccultismEntities.WILD_HORDE_SILVERFISH.get()) .summonNumber(7) .itemToUse(Ingredient.of(Items.EGG)) - .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_wild_silverfish")); + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/wild_silverfish")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(Items.HONEYCOMB), - makeLoreSpawnEgg(Items.TRIAL_KEY, "item.occultism.ritual_dummy.possess_weak_breeze"), - makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/possess_weak_breeze")), + makeLoreSpawnEgg(Items.TRIAL_KEY, "item.occultism.ritual_dummy.wild_weak_breeze"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/wild_weak_breeze")), 30, RITUAL_SUMMON_WILD, - PENTACLE_SUMMON_WILD_GREATER_SPIRIT, + PENTACLE_CONTACT_WILD_SPIRIT, Ingredient.of(Items.OXIDIZED_COPPER), Ingredient.of(Items.WEATHERED_CHISELED_COPPER), Ingredient.of(Items.EXPOSED_COPPER_GRATE), @@ -534,13 +544,13 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .entityToSummon(OccultismEntities.POSSESSED_WEAK_BREEZE.get()) .entityToSacrificeDisplayName("ritual.occultism.sacrifice.snow_golem") .entityToSacrifice(OccultismTags.Entities.SNOW_GOLEM) - .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/possess_weak_breeze")); + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/wild_weak_breeze")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(Items.TRIAL_KEY), - makeLoreSpawnEgg(Items.OMINOUS_TRIAL_KEY, "item.occultism.ritual_dummy.possess_breeze"), - makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/possess_breeze")), + makeLoreSpawnEgg(Items.OMINOUS_TRIAL_KEY, "item.occultism.ritual_dummy.wild_breeze"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/wild_breeze")), 30, RITUAL_SUMMON_WILD, - PENTACLE_SUMMON_WILD_GREATER_SPIRIT, + PENTACLE_CONTACT_WILD_SPIRIT, Ingredient.of(Items.LIGHTNING_ROD), Ingredient.of(Items.COPPER_DOOR), Ingredient.of(Items.COPPER_TRAPDOOR), @@ -551,13 +561,13 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .entityToSummon(OccultismEntities.POSSESSED_BREEZE.get()) .entityToSacrificeDisplayName("ritual.occultism.sacrifice.wolfs") .entityToSacrifice(OccultismTags.Entities.WOLFS) - .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/possess_breeze")); + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/wild_breeze")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(Items.OMINOUS_TRIAL_KEY), - makeLoreSpawnEgg(Items.HEAVY_CORE, "item.occultism.ritual_dummy.possess_strong_breeze"), - makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/possess_strong_breeze")), + makeLoreSpawnEgg(Items.HEAVY_CORE, "item.occultism.ritual_dummy.wild_strong_breeze"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/wild_strong_breeze")), 30, RITUAL_SUMMON_WILD, - PENTACLE_SUMMON_WILD_GREATER_SPIRIT, + PENTACLE_CONTACT_WILD_SPIRIT, Ingredient.of(Items.CHISELED_TUFF), Ingredient.of(Items.CHISELED_TUFF), Ingredient.of(Items.CHISELED_TUFF), @@ -573,29 +583,29 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .entityToSummon(OccultismEntities.POSSESSED_STRONG_BREEZE.get()) .entityToSacrificeDisplayName("ritual.occultism.sacrifice.iron_golem") .entityToSacrifice(OccultismTags.Entities.IRON_GOLEM) - .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/possess_strong_breeze")); + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/wild_strong_breeze")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(Items.GOLDEN_APPLE), - makeLoreSpawnEgg(Items.TOTEM_OF_UNDYING, "item.occultism.ritual_dummy.summon_horde_illager"), - makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_horde_illager")), + makeLoreSpawnEgg(Items.TOTEM_OF_UNDYING, "item.occultism.ritual_dummy.wild_horde_illager"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/wild_horde_illager")), 30, RITUAL_SUMMON_WILD, - PENTACLE_SUMMON_WILD_GREATER_SPIRIT, - Ingredient.of(Items.OMINOUS_BOTTLE), + PENTACLE_CONTACT_WILD_SPIRIT, Ingredient.of(Items.DARK_OAK_LOG), Ingredient.of(Items.DARK_OAK_LOG), Ingredient.of(Items.DARK_OAK_LOG), - Ingredient.of(Items.END_CRYSTAL), - Ingredient.of(Items.EMERALD_BLOCK)) + Ingredient.of(OccultismTags.Items.EMERALD_DUST), + Ingredient.of(OccultismTags.Items.EMERALD_DUST), + Ingredient.of(OccultismTags.Items.EMERALD_DUST)) .unlockedBy("has_bound_afrit", has(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT.get())) .entityToSummon(OccultismEntities.POSSESSED_EVOKER.get()) .entityToSacrificeDisplayName("ritual.occultism.sacrifice.humans") .entityToSacrifice(OccultismTags.Entities.HUMANS) - .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_horde_illager")); + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/wild_horde_illager")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_DJINNI.get()), - makeLoreSpawnEgg(OccultismItems.SPAWN_EGG_OTHERWORLD_BIRD.get(), "item.occultism.ritual_dummy.summon_wild_otherworld_bird"), - makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_wild_otherworld_bird")), + makeLoreSpawnEgg(OccultismItems.SPAWN_EGG_OTHERWORLD_BIRD.get(), "item.occultism.ritual_dummy.possess_unbound_otherworld_bird"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/possess_unbound_otherworld_bird")), 30, RITUAL_SUMMON, PENTACLE_POSSESS_DJINNI, @@ -608,14 +618,14 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .entityToSummon(OccultismEntities.OTHERWORLD_BIRD.get()) .entityToSacrificeDisplayName("ritual.occultism.sacrifice.parrots") .entityToSacrifice(OccultismTags.Entities.PARROTS) - .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_wild_otherworld_bird")); + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/possess_unbound_otherworld_bird")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_FOLIOT.get()), - makeLoreSpawnEgg(Items.PARROT_SPAWN_EGG, "item.occultism.ritual_dummy.summon_wild_parrot"), - makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_wild_parrot")), + makeLoreSpawnEgg(Items.PARROT_SPAWN_EGG, "item.occultism.ritual_dummy.possess_unbound_parrot"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/possess_unbound_parrot")), 30, RITUAL_SUMMON, - PENTACLE_SUMMON_FOLIOT, + PENTACLE_POSSESS_FOLIOT, Ingredient.of(Tags.Items.FEATHERS), Ingredient.of(Tags.Items.DYES_GREEN), Ingredient.of(Tags.Items.DYES_YELLOW), @@ -625,14 +635,14 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid .entityToSummon(EntityType.PARROT) .entityToSacrificeDisplayName("ritual.occultism.sacrifice.chicken") .entityToSacrifice(OccultismTags.Entities.CHICKEN) - .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_wild_parrot")); + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/possess_unbound_parrot")); RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_FOLIOT.get()), - makeLoreSpawnEgg(Items.SHEEP_SPAWN_EGG, "item.occultism.ritual_dummy.summon_random_animal"), - makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_random_animal")), + makeLoreSpawnEgg(Items.SHEEP_SPAWN_EGG, "item.occultism.ritual_dummy.possess_random_animal"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/possess_random_animal")), 30, - OccultismRituals.SUMMON.getId(), - PENTACLE_SUMMON_FOLIOT, + RITUAL_SUMMON, + PENTACLE_POSSESS_FOLIOT, Ingredient.of(Tags.Items.CROPS), Ingredient.of(Tags.Items.CROPS), Ingredient.of(Tags.Items.CROPS), @@ -644,23 +654,7 @@ private static void summonRituals(RecipeOutput recipeOutput, HolderLookup.Provid Ingredient.of(Items.EGG)) .entityTagToSummon(OccultismTags.Entities.RANDOM_ANIMALS_TO_SUMMON_LIST) .unlockedBy("has_bound_foliot", has(OccultismItems.BOOK_OF_BINDING_BOUND_FOLIOT.get())) - .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_random_animal")); - - RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(Items.SUGAR), - makeLoreSpawnEgg(Items.ALLAY_SPAWN_EGG, "item.occultism.ritual_dummy.summon_allay"), - makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/summon_allay")), - 30, - RITUAL_SUMMON, - PENTACLE_SUMMON_FOLIOT, - Ingredient.of(Tags.Items.DUSTS_REDSTONE), - Ingredient.of(Tags.Items.DUSTS_GLOWSTONE), - Ingredient.of(OccultismTags.Items.SILVER_DUST), - Ingredient.of(OccultismTags.Items.GOLD_DUST)) - .unlockedBy("has_bound_foliot", has(OccultismItems.BOOK_OF_BINDING_BOUND_FOLIOT.get())) - .entityToSummon(EntityType.ALLAY) - .entityToSacrificeDisplayName("ritual.occultism.sacrifice.vex") - .entityToSacrifice(OccultismTags.Entities.VEX) - .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_allay")); + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/possess_random_animal")); } private static void possessRituals(RecipeOutput recipeOutput) { @@ -674,7 +668,7 @@ private static void possessRituals(RecipeOutput recipeOutput) { Ingredient.of(Items.PRISMARINE), Ingredient.of(Items.PRISMARINE_BRICKS), Ingredient.of(Items.DARK_PRISMARINE), - Ingredient.of(Items.WET_SPONGE), + Ingredient.of(Items.YELLOW_WOOL), Ingredient.of(Items.SEA_LANTERN), Ingredient.of(Items.WATER_BUCKET), Ingredient.of(Items.WATER_BUCKET), @@ -795,7 +789,7 @@ private static void possessRituals(RecipeOutput recipeOutput) { RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_FOLIOT.get()), makeLoreSpawnEgg(Items.SKELETON_SKULL, "item.occultism.ritual_dummy.possess_skeleton"), makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/possess_skeleton")), - 30, + 15, RITUAL_SUMMON, PENTACLE_POSSESS_FOLIOT, Ingredient.of(Tags.Items.BONES), @@ -818,11 +812,9 @@ private static void possessRituals(RecipeOutput recipeOutput) { Ingredient.of(Items.SCULK_SENSOR), Ingredient.of(Items.SCULK), Ingredient.of(Items.SCULK), - Ingredient.of(Items.SCULK_SHRIEKER), Ingredient.of(Items.SCULK_SENSOR), Ingredient.of(Items.SCULK), Ingredient.of(Items.SCULK), - Ingredient.of(Items.SCULK_SHRIEKER), Ingredient.of(Items.SCULK_SENSOR), Ingredient.of(Items.SCULK), Ingredient.of(Items.SCULK)) @@ -848,7 +840,77 @@ private static void possessRituals(RecipeOutput recipeOutput) { .entityToSummon(OccultismEntities.POSSESSED_WEAK_SHULKER_TYPE.get()) .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/possess_weak_shulker")); + RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_FOLIOT.get()), + makeLoreSpawnEgg(Items.EXPERIENCE_BOTTLE, "item.occultism.ritual_dummy.possess_witch"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/possess_witch")), + 30, + RITUAL_SUMMON, + PENTACLE_POSSESS_FOLIOT, + Ingredient.of(Items.GLASS_BOTTLE), + Ingredient.of(Tags.Items.DUSTS_REDSTONE), + Ingredient.of(Items.BROWN_MUSHROOM), + Ingredient.of(Items.RED_MUSHROOM)) + .unlockedBy("has_bound_foliot", has(OccultismItems.BOOK_OF_BINDING_BOUND_FOLIOT.get())) + .entityToSummon(OccultismEntities.POSSESSED_WITCH_TYPE.get()) + .entityToSacrificeDisplayName("ritual.occultism.sacrifice.cats") + .entityToSacrifice(OccultismTags.Entities.CATS) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/possess_witch")); + + RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT.get()), + makeLoreSpawnEgg(OccultismItems.DEMONIC_MEAT.get(), "item.occultism.ritual_dummy.possess_zombie_piglin"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/possess_zombie_piglin")), + 90, + RITUAL_SUMMON, + PENTACLE_POSSESS_UNBOUND_AFRIT, + Ingredient.of(Items.CHERRY_LEAVES), + Ingredient.of(Items.PINK_PETALS), + Ingredient.of(OccultismItems.TALLOW), + Ingredient.of(Items.QUARTZ)) + .unlockedBy("has_bound_afrit", has(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT.get())) + .entityToSummon(OccultismEntities.POSSESSED_ZOMBIE_PIGLIN_TYPE.get()) + .entityToSacrificeDisplayName("ritual.occultism.sacrifice.pigs") + .entityToSacrifice(OccultismTags.Entities.PIGS) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/possess_zombie_piglin")); + + RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_DJINNI.get()), + makeLoreSpawnEgg(OccultismItems.CURSED_HONEY.get(), "item.occultism.ritual_dummy.possess_bee"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/possess_bee")), + 60, + RITUAL_SUMMON, + PENTACLE_POSSESS_DJINNI, + Ingredient.of(Items.HONEYCOMB), + Ingredient.of(Items.HONEY_BLOCK), + Ingredient.of(Items.HONEY_BOTTLE), + Ingredient.of(Items.HONEYCOMB_BLOCK)) + .unlockedBy("has_bound_djinni", has(OccultismItems.BOOK_OF_BINDING_BOUND_DJINNI.get())) + .entityToSummon(OccultismEntities.POSSESSED_BEE_TYPE.get()) + .entityToSacrificeDisplayName("ritual.occultism.sacrifice.bats") + .entityToSacrifice(OccultismTags.Entities.BATS) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/possess_bee")); + RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_MARID.get()), + makeLoreSpawnEgg(OccultismItems.CRUELTY_ESSENCE.get(), "item.occultism.ritual_dummy.possess_goat"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/possess_goat")), + 240, + RITUAL_SUMMON, + PENTACLE_POSSESS_MARID, + Ingredient.of(Items.POINTED_DRIPSTONE), + Ingredient.of(Items.POINTED_DRIPSTONE), + Ingredient.of(Items.RABBIT_FOOT), + Ingredient.of(Items.RABBIT_FOOT), + Ingredient.of(Items.RABBIT_FOOT), + Ingredient.of(Items.RABBIT_FOOT), + Ingredient.of(Items.ARMADILLO_SCUTE), + Ingredient.of(Items.ARMADILLO_SCUTE), + Ingredient.of(Items.ARMADILLO_SCUTE), + Ingredient.of(Items.ARMADILLO_SCUTE), + Ingredient.of(ItemTags.WOOL), + Ingredient.of(ItemTags.WOOL)) + .unlockedBy("has_bound_marid", has(OccultismItems.BOOK_OF_BINDING_BOUND_MARID.get())) + .entityToSummon(OccultismEntities.GOAT_OF_MERCY_TYPE.get()) + .entityToSacrificeDisplayName("ritual.occultism.sacrifice.tadpoles") + .entityToSacrifice(OccultismTags.Entities.TADPOLES) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/possess_goat")); } private static void familiarRituals(RecipeOutput recipeOutput) { @@ -1107,8 +1169,8 @@ private static void familiarRituals(RecipeOutput recipeOutput) { 30, RITUAL_FAMILIAR, PENTACLE_POSSESS_DJINNI, - Ingredient.of(Tags.Items.SLIMEBALLS), - Ingredient.of(Tags.Items.SLIMEBALLS), + Ingredient.of(Tags.Items.SLIME_BALLS), + Ingredient.of(Tags.Items.SLIME_BALLS), Ingredient.of(Items.PAPER), Ingredient.of(Items.PAPER), Ingredient.of(ItemTags.WOOL), @@ -1270,7 +1332,7 @@ private static void craftingRituals(RecipeOutput recipeOutput) { makeRitualDummy(OccultismItems.RITUAL_DUMMY_CRAFT_RITUAL_SATCHEL_T2.get()), 240, RITUAL_CRAFT_WITH_SPIRIT_NAME, - PENTACLE_CRAFT_DJINNI, + PENTACLE_CRAFT_AFRIT, Ingredient.of(Items.HOPPER), Ingredient.of(Items.DISPENSER), Ingredient.of(ItemTags.WOOL), @@ -1400,7 +1462,7 @@ private static void craftingRituals(RecipeOutput recipeOutput) { makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/craft_wild_trim")), 240, RITUAL_CRAFT, - PENTACLE_CRAFT_MARID, + PENTACLE_CONTACT_WILD_SPIRIT, Ingredient.of(Items.MOSSY_COBBLESTONE), Ingredient.of(Items.JUNGLE_SAPLING), Ingredient.of(Items.BAMBOO), @@ -1413,10 +1475,129 @@ private static void craftingRituals(RecipeOutput recipeOutput) { Ingredient.of(Items.JUNGLE_SAPLING), Ingredient.of(Items.BAMBOO), Ingredient.of(Items.GLISTERING_MELON_SLICE)) - .unlockedBy("has_bound_marid", has(OccultismItems.BOOK_OF_BINDING_BOUND_MARID.get())) + .unlockedBy("has_bound_afrit", has(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT.get())) .entityToSacrifice(OccultismTags.Entities.OCELOT) .entityToSacrificeDisplayName("ritual.occultism.sacrifice.ocelot") .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/craft_wild_trim")); + + RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_FOLIOT.get()), + new ItemStack(OccultismItems.RESEARCH_FRAGMENT_DUST.get()), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/craft_research_fragment_dust")), + 60, + RITUAL_CRAFT, + PENTACLE_CRAFT_FOLIOT, + Ingredient.of(OccultismTags.Items.EMERALD_DUST), + Ingredient.of(Items.EXPERIENCE_BOTTLE), + Ingredient.of(Items.EXPERIENCE_BOTTLE)) + .unlockedBy("has_bound_foliot", has(OccultismItems.BOOK_OF_BINDING_BOUND_FOLIOT.get())) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/craft_research_fragment_dust")); + RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_FOLIOT.get()), + new ItemStack(OccultismItems.NATURE_PASTE.get()), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/craft_nature_paste")), + 30, + RITUAL_CRAFT, + PENTACLE_CRAFT_FOLIOT, + Ingredient.of(ItemTags.LEAVES), + Ingredient.of(ItemTags.SAPLINGS), + Ingredient.of(Tags.Items.SEEDS), + Ingredient.of(ItemTags.LEAVES), + Ingredient.of(ItemTags.SAPLINGS), + Ingredient.of(Tags.Items.SEEDS), + Ingredient.of(ItemTags.LEAVES), + Ingredient.of(ItemTags.SAPLINGS), + Ingredient.of(Tags.Items.SEEDS)) + .unlockedBy("has_bound_foliot", has(OccultismItems.BOOK_OF_BINDING_BOUND_FOLIOT.get())) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/craft_nature_paste")); + RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_DJINNI.get()), + new ItemStack(OccultismItems.GRAY_PASTE.get()), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/craft_gray_paste")), + 90, + RITUAL_CRAFT, + PENTACLE_CRAFT_DJINNI, + Ingredient.of(Tags.Items.GUNPOWDERS), + Ingredient.of(Items.CLAY_BALL), + Ingredient.of(Items.WIND_CHARGE)) + .unlockedBy("has_bound_djinni", has(OccultismItems.BOOK_OF_BINDING_BOUND_DJINNI.get())) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/craft_gray_paste")); + RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT.get()), + new ItemStack(OccultismItems.WITHERITE_DUST.get(), 3), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/craft_witherite_dust")), + 150, + RITUAL_CRAFT, + PENTACLE_CRAFT_AFRIT, + Ingredient.of(OccultismTags.Items.NETHERITE_DUST), + Ingredient.of(OccultismTags.Items.BLACKSTONE_DUST), + Ingredient.of(OccultismTags.Items.BLACKSTONE_DUST), + Ingredient.of(Items.WITHER_ROSE), + Ingredient.of(Items.WITHER_ROSE), + Ingredient.of(Items.WITHER_ROSE)) + .unlockedBy("has_bound_afrit", has(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT.get())) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/craft_witherite_dust")); + RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_MARID.get()), + new ItemStack(OccultismItems.DRAGONYST_DUST.get()), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/craft_dragonyst_dust")), + 300, + RITUAL_CRAFT, + PENTACLE_CRAFT_MARID, + Ingredient.of(OccultismTags.Items.AMETHYST_DUST), + Ingredient.of(OccultismTags.Items.AMETHYST_DUST), + Ingredient.of(OccultismTags.Items.END_STONE_DUST), + Ingredient.of(Items.END_CRYSTAL), + Ingredient.of(Items.END_CRYSTAL), + Ingredient.of(Items.END_CRYSTAL), + Ingredient.of(Items.END_CRYSTAL), + Ingredient.of(Items.DRAGON_BREATH), + Ingredient.of(Items.DRAGON_BREATH), + Ingredient.of(Items.DRAGON_BREATH)) + .unlockedBy("has_bound_marid", has(OccultismItems.BOOK_OF_BINDING_BOUND_MARID.get())) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/craft_dragonyst_dust")); + + RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(Items.AMETHYST_BLOCK), + new ItemStack(Items.BUDDING_AMETHYST), + makeRitualDummy(OccultismItems.RITUAL_DUMMY_CRAFT_BUDDING_AMETHYST.get()), + 180, + RITUAL_CRAFT, + PENTACLE_CONTACT_WILD_SPIRIT, + Ingredient.of(Items.SMALL_AMETHYST_BUD), + Ingredient.of(Items.MEDIUM_AMETHYST_BUD), + Ingredient.of(Items.LARGE_AMETHYST_BUD), + Ingredient.of(Items.AMETHYST_CLUSTER), + Ingredient.of(Items.AMETHYST_SHARD), + Ingredient.of(OccultismTags.Items.AMETHYST_DUST), + Ingredient.of(Items.SMALL_AMETHYST_BUD), + Ingredient.of(Items.MEDIUM_AMETHYST_BUD), + Ingredient.of(Items.LARGE_AMETHYST_BUD), + Ingredient.of(Items.AMETHYST_CLUSTER), + Ingredient.of(Items.AMETHYST_SHARD), + Ingredient.of(OccultismTags.Items.AMETHYST_DUST)) + .unlockedBy("has_bound_afrit", has(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT.get())) + .entityToSacrificeDisplayName("ritual.occultism.sacrifice.allay") + .entityToSacrifice(OccultismTags.Entities.ALLAY) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/craft_budding_amethyst")); + + RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(Items.DEEPSLATE), + new ItemStack(Items.REINFORCED_DEEPSLATE), + makeRitualDummy(OccultismItems.RITUAL_DUMMY_CRAFT_REINFORCED_DEEPSLATE.get()), + 360, + RITUAL_CRAFT, + PENTACLE_CONTACT_ELDRITCH_SPIRIT, + Ingredient.of(Tags.Items.NETHER_STARS), + Ingredient.of(Items.SHULKER_SHELL), + Ingredient.of(Items.ARMADILLO_SCUTE), + Ingredient.of(Items.TURTLE_SCUTE), + Ingredient.of(Items.ECHO_SHARD), + Ingredient.of(Items.ANVIL), + Ingredient.of(Tags.Items.STORAGE_BLOCKS_NETHERITE), + Ingredient.of(Tags.Items.OBSIDIANS), + Ingredient.of(Tags.Items.OBSIDIANS_CRYING), + Ingredient.of(Items.END_STONE_BRICKS), + Ingredient.of(Items.SCULK_CATALYST), + Ingredient.of(OccultismTags.Items.STORAGE_BLOCK_IESNIUM)) + .unlockedBy("has_bound_marid", has(OccultismItems.BOOK_OF_BINDING_BOUND_MARID.get())) + .entityToSacrificeDisplayName("ritual.occultism.sacrifice.warden") + .entityToSacrifice(OccultismTags.Entities.WARDEN) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/craft_reinforced_deepslate")); + } private static void minerRecipes(RecipeOutput recipeOutput) { @@ -1478,5 +1659,99 @@ private static void minerRecipes(RecipeOutput recipeOutput) { Ingredient.of(Items.NETHER_STAR)) .unlockedBy("has_bound_marid", has(OccultismItems.BOOK_OF_BINDING_BOUND_MARID.get())) .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/craft_miner_marid_master")); + + RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.MINING_DIMENSION_CORE_PIECE.get()), + new ItemStack(OccultismItems.MINER_ANCIENT_ELDRITCH.get()), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/craft_miner_ancient_eldritch")), + 360, + RITUAL_CRAFT_MINER_SPIRIT, + PENTACLE_CONTACT_ELDRITCH_SPIRIT, + Ingredient.of(OccultismItems.MINER_MARID_MASTER.get()), + Ingredient.of(OccultismItems.MINER_MARID_MASTER.get()), + Ingredient.of(OccultismItems.MINER_MARID_MASTER.get()), + Ingredient.of(OccultismItems.MINER_MARID_MASTER.get()), + Ingredient.of(OccultismItems.MINER_MARID_MASTER.get()), + Ingredient.of(OccultismItems.MINER_MARID_MASTER.get()), + Ingredient.of(OccultismItems.MINER_MARID_MASTER.get()), + Ingredient.of(OccultismItems.MINER_MARID_MASTER.get())) + .unlockedBy("has_mining_dimension_core", has(OccultismItems.MINING_DIMENSION_CORE_PIECE.get())) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/craft_miner_ancient_eldritch")); + } + private static void resurrectRituals(RecipeOutput recipeOutput) { + RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.SOUL_SHARD_ITEM.get()), + makeLoreSpawnEgg(OccultismItems.RESURRECT_ICON.get(), "item.occultism.ritual_dummy.resurrect_familiar"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/resurrect_familiar")), + 15, + RITUAL_RESURRECT_FAMILIAR, + PENTACLE_RESURRECT_SPIRIT, + Ingredient.of(OccultismItems.OTHERWORLD_ESSENCE.get()), + Ingredient.of(OccultismItems.OTHERWORLD_ESSENCE.get()), + Ingredient.of(OccultismItems.OTHERWORLD_ESSENCE.get()), + Ingredient.of(OccultismItems.OTHERWORLD_ESSENCE.get())) + .unlockedBy("has_otherworld_essence", has(OccultismItems.OTHERWORLD_ESSENCE.get())) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/resurrect_familiar")); + + RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(Items.SUGAR), + makeLoreSpawnEgg(Items.ALLAY_SPAWN_EGG, "item.occultism.ritual_dummy.resurrect_allay"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/resurrect_allay")), + 30, + RITUAL_SUMMON, + PENTACLE_RESURRECT_SPIRIT, + Ingredient.of(Tags.Items.DUSTS_REDSTONE), + Ingredient.of(Tags.Items.DUSTS_GLOWSTONE), + Ingredient.of(OccultismTags.Items.SILVER_DUST), + Ingredient.of(OccultismTags.Items.GOLD_DUST)) + .unlockedBy("has_bound_foliot", has(OccultismItems.BOOK_OF_BINDING_BOUND_FOLIOT.get())) + .entityToSummon(EntityType.ALLAY) + .entityToSacrificeDisplayName("ritual.occultism.sacrifice.vex") + .entityToSacrifice(OccultismTags.Entities.VEX) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/resurrect_allay")); + } + private static void repairRituals(RecipeOutput recipeOutput) { + RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismTags.Items.TOOLS_CHALK), + makeLoreSpawnEgg(OccultismItems.REPAIR_ICON.get(), "item.occultism.ritual_dummy.repair_chalks"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID,"ritual_dummy/repair_chalks")), + 5, + RITUAL_REPAIR, + PENTACLE_CRAFT_DJINNI, + Ingredient.of(OccultismTags.Items.COPPER_DUST), + Ingredient.of(OccultismTags.Items.OTHERWORLD_WOOD_DUST), + Ingredient.of(OccultismTags.Items.OTHERSTONE_DUST)) + .unlockedBy("has_white_chalk", has(OccultismItems.CHALK_WHITE)) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID,"ritual/repair_chalks")); + RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(Tags.Items.TOOLS), + makeLoreSpawnEgg(OccultismItems.REPAIR_ICON.get(), "item.occultism.ritual_dummy.repair_tools"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID,"ritual_dummy/repair_tools")), + 60, + RITUAL_REPAIR, + PENTACLE_CRAFT_AFRIT, + Ingredient.of(OccultismTags.Items.IESNIUM_INGOT), + Ingredient.of(OccultismTags.Items.IESNIUM_INGOT), + Ingredient.of(OccultismItems.SPIRIT_ATTUNED_GEM)) + .unlockedBy("has_bound_afrit", has(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT)) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID,"ritual/repair_tools")); + RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(Tags.Items.ARMORS), + makeLoreSpawnEgg(OccultismItems.REPAIR_ICON.get(), "item.occultism.ritual_dummy.repair_armors"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID,"ritual_dummy/repair_armors")), + 60, + RITUAL_REPAIR, + PENTACLE_CRAFT_AFRIT, + Ingredient.of(OccultismTags.Items.IESNIUM_INGOT), + Ingredient.of(OccultismTags.Items.IESNIUM_INGOT), + Ingredient.of(OccultismTags.Items.SCUTESHELL), + Ingredient.of(OccultismItems.SPIRIT_ATTUNED_GEM)) + .unlockedBy("has_bound_afrit", has(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT)) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID,"ritual/repair_armors")); + RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismTags.Items.Miners.MINERS), + makeLoreSpawnEgg(OccultismItems.REPAIR_ICON.get(), "item.occultism.ritual_dummy.repair_miners"), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID,"ritual_dummy/repair_miners")), + 60, + RITUAL_REPAIR, + PENTACLE_CRAFT_AFRIT, + Ingredient.of(OccultismTags.Items.STORAGE_BLOCK_IESNIUM), + Ingredient.of(OccultismBlocks.SPIRIT_ATTUNED_CRYSTAL), + Ingredient.of(OccultismItems.OTHERWORLD_ESSENCE)) + .unlockedBy("has_bound_afrit", has(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT)) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID,"ritual/repair_miners")); } } diff --git a/src/main/java/com/klikli_dev/occultism/datagen/recipe/builders/CrushingRecipeBuilder.java b/src/main/java/com/klikli_dev/occultism/datagen/recipe/builders/CrushingRecipeBuilder.java index 62194fe24..d65863301 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/recipe/builders/CrushingRecipeBuilder.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/recipe/builders/CrushingRecipeBuilder.java @@ -63,6 +63,14 @@ public static CrushingRecipeBuilder crushingRecipe(Ingredient ingredient, ItemLi return new CrushingRecipeBuilder(ingredient, RecipeResult.of(new ItemStack(result)), crushingTime); } + public static CrushingRecipeBuilder crushingRecipe(Item item, TagKey result, int crushingTime) { + return new CrushingRecipeBuilder(Ingredient.of(item), TagRecipeResult.of(result), crushingTime); + } + + public static CrushingRecipeBuilder crushingRecipe(Item item, ItemLike result, int crushingTime) { + return new CrushingRecipeBuilder(Ingredient.of(item), RecipeResult.of(new ItemStack(result)), crushingTime); + } + public static CrushingRecipeBuilder crushingRecipe(TagKey ingredient, TagKey result, int crushingTime) { return new CrushingRecipeBuilder(Ingredient.of(ingredient), TagRecipeResult.of(result), crushingTime); } diff --git a/src/main/java/com/klikli_dev/occultism/datagen/recipe/builders/MinerRecipeBuilder.java b/src/main/java/com/klikli_dev/occultism/datagen/recipe/builders/MinerRecipeBuilder.java index 1f88b3de4..7d3f6114b 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/recipe/builders/MinerRecipeBuilder.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/recipe/builders/MinerRecipeBuilder.java @@ -59,11 +59,19 @@ public static MinerRecipeBuilder minerRecipe(TagKey ingredient, ItemLike o public static MinerRecipeBuilder minerRecipe(Ingredient ingredient, TagKey output, int weight) { return new MinerRecipeBuilder(ingredient, WeightedTagRecipeResult.of(output, 1, weight)); } + public static MinerRecipeBuilder minerRecipe(Ingredient ingredient, TagKey output, int weight, int count) { + return new MinerRecipeBuilder(ingredient, WeightedTagRecipeResult.of(output, count, weight)); + } public static MinerRecipeBuilder minerRecipe(TagKey ingredient, TagKey output, int weight) { return minerRecipe(Ingredient.of(ingredient), output, weight); } + public static MinerRecipeBuilder minerRecipe(TagKey ingredient, TagKey output, int weight, int count) { + return minerRecipe(Ingredient.of(ingredient), output, weight, count); + } + + @Override public MinerRecipeBuilder unlockedBy(String s, Criterion criterionTriggerInstance) { this.criteria.put(s, criterionTriggerInstance); diff --git a/src/main/java/com/klikli_dev/occultism/datagen/tags/OccultismBlockTagProvider.java b/src/main/java/com/klikli_dev/occultism/datagen/tags/OccultismBlockTagProvider.java index 8669dbe1d..9fd395929 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/tags/OccultismBlockTagProvider.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/tags/OccultismBlockTagProvider.java @@ -108,6 +108,7 @@ public void addMinecraftTags(HolderLookup.Provider provider) { this.tag(BlockTags.WALL_HANGING_SIGNS).add(OccultismBlocks.OTHERPLANKS_WALL_HANGING_SIGN.get()).replace(false); this.tag(BlockTags.PIGLIN_REPELLENTS).add(OccultismBlocks.SPIRIT_CAMPFIRE.get()).replace(false); this.tag(BlockTags.SAPLINGS).addTags(OccultismTags.Blocks.OTHERWORLD_SAPLINGS).replace(false); + this.tag(BlockTags.SAPLINGS).addTags(OccultismTags.Blocks.OTHERWORLD_SAPLINGS_NATURAL).replace(false); } @Override @@ -128,6 +129,8 @@ private void addOccultismTags(HolderLookup.Provider provider) { this.tag(OccultismTags.Blocks.OTHERWORLD_SAPLINGS) .add(OccultismBlocks.OTHERWORLD_SAPLING.get(), OccultismBlocks.OTHERWORLD_SAPLING_NATURAL.get()).replace(false); + this.tag(OccultismTags.Blocks.OTHERWORLD_SAPLINGS_NATURAL) + .add(OccultismBlocks.OTHERWORLD_SAPLING_NATURAL.get()).replace(false); this.tag(OccultismTags.Blocks.OCCULTISM_CANDLES).add( OccultismBlocks.LARGE_CANDLE.get(), OccultismBlocks.LARGE_CANDLE_WHITE.get(), @@ -150,7 +153,7 @@ private void addOccultismTags(HolderLookup.Provider provider) { this.tag(OccultismTags.Blocks.CHALK_GLYPHS) .add(OccultismBlocks.CHALK_GLYPH_WHITE.get()) - .add(OccultismBlocks.CHALK_GLYPH_GOLD.get()) + .add(OccultismBlocks.CHALK_GLYPH_YELLOW.get()) .add(OccultismBlocks.CHALK_GLYPH_PURPLE.get()) .add(OccultismBlocks.CHALK_GLYPH_RED.get()) .add(OccultismBlocks.CHALK_GLYPH_LIGHT_GRAY.get()) @@ -166,6 +169,19 @@ private void addOccultismTags(HolderLookup.Provider provider) { .add(OccultismBlocks.CHALK_GLYPH_MAGENTA.get()) .add(OccultismBlocks.CHALK_GLYPH_PINK.get()).replace(false); + this.tag(OccultismTags.Blocks.FOUNDATION_GLYPHS_ANY) + .add(OccultismBlocks.CHALK_GLYPH_WHITE.get()) + .add(OccultismBlocks.CHALK_GLYPH_LIGHT_GRAY.get()) + .add(OccultismBlocks.CHALK_GLYPH_GRAY.get()) + .add(OccultismBlocks.CHALK_GLYPH_BLACK.get()).replace(false); + this.tag(OccultismTags.Blocks.FOUNDATION_GLYPHS_NO_WHITE) + .add(OccultismBlocks.CHALK_GLYPH_LIGHT_GRAY.get()) + .add(OccultismBlocks.CHALK_GLYPH_GRAY.get()) + .add(OccultismBlocks.CHALK_GLYPH_BLACK.get()).replace(false); + this.tag(OccultismTags.Blocks.FOUNDATION_GLYPHS_DARK) + .add(OccultismBlocks.CHALK_GLYPH_GRAY.get()) + .add(OccultismBlocks.CHALK_GLYPH_BLACK.get()).replace(false); + this.tag(OccultismTags.Blocks.CAVE_WALL_BLOCKS).add(Blocks.STONE, Blocks.GRANITE, Blocks.DIORITE, Blocks.ANDESITE).replace(false); this.tag(OccultismTags.Blocks.NETHERRACK).add(Blocks.NETHERRACK).replace(false); this.tag(OccultismTags.Blocks.STORAGE_STABILIZER) diff --git a/src/main/java/com/klikli_dev/occultism/datagen/tags/OccultismEntityTypeTagProvider.java b/src/main/java/com/klikli_dev/occultism/datagen/tags/OccultismEntityTypeTagProvider.java index 320dde58f..620e4bab4 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/tags/OccultismEntityTypeTagProvider.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/tags/OccultismEntityTypeTagProvider.java @@ -67,9 +67,20 @@ private void addOccultismTags(HolderLookup.Provider pProvider) { .add(OccultismEntities.AFRIT_TYPE.get()) .add(OccultismEntities.AFRIT_WILD_TYPE.get()) .add(OccultismEntities.MARID_TYPE.get()) + .add(OccultismEntities.MARID_UNBOUND_TYPE.get()) .add(OccultismEntities.POSSESSED_ENDERMITE_TYPE.get()) + .add(OccultismEntities.POSSESSED_SKELETON_TYPE.get()) .add(OccultismEntities.POSSESSED_ENDERMAN_TYPE.get()) .add(OccultismEntities.POSSESSED_GHAST_TYPE.get()) + .add(OccultismEntities.POSSESSED_PHANTOM_TYPE.get()) + .add(OccultismEntities.POSSESSED_WEAK_SHULKER_TYPE.get()) + .add(OccultismEntities.POSSESSED_SHULKER_TYPE.get()) + .add(OccultismEntities.POSSESSED_ELDER_GUARDIAN_TYPE.get()) + .add(OccultismEntities.POSSESSED_WARDEN_TYPE.get()) + .add(OccultismEntities.POSSESSED_HOGLIN_TYPE.get()) + .add(OccultismEntities.POSSESSED_WITCH_TYPE.get()) + .add(OccultismEntities.POSSESSED_ZOMBIE_PIGLIN_TYPE.get()) + .add(OccultismEntities.POSSESSED_BEE_TYPE.get()) .add(OccultismEntities.WILD_HUNT_SKELETON_TYPE.get()) .add(OccultismEntities.WILD_HUNT_WITHER_SKELETON_TYPE.get()) .add(OccultismEntities.OTHERWORLD_BIRD_TYPE.get()) @@ -163,7 +174,7 @@ private void addCommonTags() { this.tag(OccultismTags.Entities.COWS).add(EntityType.COW).replace(false); this.tag(OccultismTags.Entities.DONKEYS).add(EntityType.DONKEY).replace(false); this.tag(OccultismTags.Entities.FISH).add(EntityType.COD).add(EntityType.SALMON).add(EntityType.TROPICAL_FISH).add(EntityType.PUFFERFISH).replace(false); - this.tag(OccultismTags.Entities.GOATS).add(EntityType.GOAT).replace(false); + this.tag(OccultismTags.Entities.GOATS).add(EntityType.GOAT).add(OccultismEntities.GOAT_OF_MERCY_TYPE.get()).replace(false); this.tag(OccultismTags.Entities.HOGLINS).add(EntityType.HOGLIN).replace(false); this.tag(OccultismTags.Entities.HORSES).add(EntityType.HORSE).replace(false); this.tag(OccultismTags.Entities.LLAMAS).add(EntityType.LLAMA).add(EntityType.TRADER_LLAMA).replace(false); @@ -180,6 +191,10 @@ private void addCommonTags() { this.tag(OccultismTags.Entities.DOLPHIN).add(EntityType.DOLPHIN).replace(false); this.tag(OccultismTags.Entities.WOLFS).add(EntityType.WOLF).replace(false); this.tag(OccultismTags.Entities.OCELOT).add(EntityType.OCELOT).replace(false); + this.tag(OccultismTags.Entities.CATS).add(EntityType.CAT).add(EntityType.OCELOT).replace(false); this.tag(OccultismTags.Entities.VEX).add(EntityType.VEX).replace(false); + this.tag(OccultismTags.Entities.TADPOLES).add(EntityType.TADPOLE).replace(false); + this.tag(OccultismTags.Entities.ALLAY).add(EntityType.ALLAY).replace(false); + this.tag(OccultismTags.Entities.WARDEN).add(EntityType.WARDEN).add(OccultismEntities.POSSESSED_WARDEN_TYPE.get()).replace(false); } } diff --git a/src/main/java/com/klikli_dev/occultism/datagen/tags/OccultismItemTagProvider.java b/src/main/java/com/klikli_dev/occultism/datagen/tags/OccultismItemTagProvider.java index 13fea1df6..a663b4c6d 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/tags/OccultismItemTagProvider.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/tags/OccultismItemTagProvider.java @@ -88,6 +88,13 @@ private void addOccultismTags(HolderLookup.Provider provider) { .add(Items.WITHER_SKELETON_SKULL) .replace(false); + this.tag(OccultismTags.Items.SCUTESHELL) + .add(Items.ARMADILLO_SCUTE) + .add(Items.TURTLE_SCUTE) + .add(Items.SHULKER_SHELL) + .add(Items.NAUTILUS_SHELL) + .replace(false); + this.copy(OccultismTags.Blocks.PENTACLE_MATERIALS, OccultismTags.Items.PENTACLE_MATERIALS); this.tag(OccultismTags.Items.PENTACLE_MATERIALS) .addOptionalTag(OccultismTags.Items.TOOLS_CHALK) @@ -116,15 +123,17 @@ private void addOccultismTags(HolderLookup.Provider provider) { this.tag(OccultismTags.Items.Miners.MASTER).add(OccultismItems.MINER_MARID_MASTER.get()).replace(false); this.tag(OccultismTags.Items.Miners.ORES).add(OccultismItems.MINER_FOLIOT_UNSPECIALIZED.get(), OccultismItems.MINER_DEBUG_UNSPECIALIZED.get(), OccultismItems.MINER_AFRIT_DEEPS.get(), OccultismItems.MINER_MARID_MASTER.get(), OccultismItems.MINER_DJINNI_ORES.get()).replace(false); + this.tag(OccultismTags.Items.Miners.ELDRITCH).add(OccultismItems.MINER_ANCIENT_ELDRITCH.get()).replace(false); this.tag(OccultismTags.Items.Miners.MINERS) .addTag(OccultismTags.Items.Miners.BASIC_RESOURCES) .addTag(OccultismTags.Items.Miners.DEEPS) .addTag(OccultismTags.Items.Miners.MASTER) - .addTag(OccultismTags.Items.Miners.ORES).replace(false); + .addTag(OccultismTags.Items.Miners.ORES) + .addTag(OccultismTags.Items.Miners.ELDRITCH).replace(false); this.tag(OccultismTags.Items.TOOLS_CHALK) - .add(OccultismItems.CHALK_GOLD.get()) + .add(OccultismItems.CHALK_YELLOW.get()) .add(OccultismItems.CHALK_WHITE.get()) .add(OccultismItems.CHALK_RED.get()) .add(OccultismItems.CHALK_PURPLE.get()) @@ -143,7 +152,9 @@ private void addOccultismTags(HolderLookup.Provider provider) { .replace(false); this.copy(OccultismTags.Blocks.OTHERWORLD_SAPLINGS, OccultismTags.Items.OTHERWORLD_SAPLINGS); + this.copy(OccultismTags.Blocks.OTHERWORLD_SAPLINGS_NATURAL, OccultismTags.Items.OTHERWORLD_SAPLINGS_NATURAL); this.tag(OccultismTags.Items.TOOLS_KNIFE).add(OccultismItems.BUTCHER_KNIFE.get()).replace(false); + this.tag(Tags.Items.TOOLS).addOptionalTag(OccultismTags.Items.TOOLS_KNIFE).replace(false); //Don't place chalks this.tag(OccultismTags.Items.ELYTRA).add(Items.ELYTRA).addOptional(ResourceLocation.fromNamespaceAndPath("mana-and-artifice", "spectral_elytra")).replace(false); this.tag(OccultismTags.Items.OTHERWORLD_GOGGLES).add(OccultismItems.OTHERWORLD_GOGGLES.get()).replace(false); this.tag(OccultismTags.Items.OTHERSTONE).add(OccultismBlocks.OTHERSTONE.asItem()); @@ -319,12 +330,46 @@ private void addDusts(HolderLookup.Provider provider) { this.tag(OccultismTags.Items.IESNIUM_DUST).add(OccultismItems.IESNIUM_DUST.get()).replace(false); this.tag(OccultismTags.Items.SILVER_DUST).add(OccultismItems.SILVER_DUST.get()).replace(false); this.tag(OccultismTags.Items.OBSIDIAN_DUST).add(OccultismItems.OBSIDIAN_DUST.get()).replace(false); - this.tag(Tags.Items.DUSTS) - .addTags(OccultismTags.Items.COPPER_DUST, OccultismTags.Items.END_STONE_DUST, - OccultismTags.Items.GOLD_DUST, OccultismTags.Items.IRON_DUST, OccultismTags.Items.IESNIUM_DUST, - OccultismTags.Items.SILVER_DUST, OccultismTags.Items.OBSIDIAN_DUST) - .add(OccultismItems.BURNT_OTHERSTONE.get(), OccultismItems.OTHERWORLD_ASHES.get()).replace(false); - + this.tag(OccultismTags.Items.AMETHYST_DUST).add(OccultismItems.AMETHYST_DUST.get()).replace(false); + this.tag(OccultismTags.Items.BLACKSTONE_DUST).add(OccultismItems.CRUSHED_BLACKSTONE.get()).replace(false); + this.tag(OccultismTags.Items.BLUE_ICE_DUST).add(OccultismItems.CRUSHED_BLUE_ICE.get()).replace(false); + this.tag(OccultismTags.Items.CALCITE_DUST).add(OccultismItems.CRUSHED_CALCITE.get()).replace(false); + this.tag(OccultismTags.Items.ICE_DUST).add(OccultismItems.CRUSHED_ICE.get()).replace(false); + this.tag(OccultismTags.Items.PACKED_ICE_DUST).add(OccultismItems.CRUSHED_PACKED_ICE.get()).replace(false); + this.tag(OccultismTags.Items.DRAGONYST_DUST).add(OccultismItems.DRAGONYST_DUST.get()).replace(false); + this.tag(OccultismTags.Items.ECHO_DUST).add(OccultismItems.ECHO_DUST.get()).replace(false); + this.tag(OccultismTags.Items.EMERALD_DUST).add(OccultismItems.EMERALD_DUST.get()).replace(false); + this.tag(OccultismTags.Items.LAPIS_DUST).add(OccultismItems.LAPIS_DUST.get()).replace(false); + this.tag(OccultismTags.Items.NETHERITE_DUST).add(OccultismItems.NETHERITE_DUST.get()).replace(false); + this.tag(OccultismTags.Items.NETHERITE_SCRAP_DUST).add(OccultismItems.NETHERITE_SCRAP_DUST.get()).replace(false); + this.tag(OccultismTags.Items.RESEARCH_DUST).add(OccultismItems.RESEARCH_FRAGMENT_DUST.get()).replace(false); + this.tag(OccultismTags.Items.WITHERITE_DUST).add(OccultismItems.WITHERITE_DUST.get()).replace(false); + this.tag(OccultismTags.Items.OTHERSTONE_DUST).add(OccultismItems.BURNT_OTHERSTONE.get()).replace(false); + this.tag(OccultismTags.Items.OTHERWORLD_WOOD_DUST).add(OccultismItems.OTHERWORLD_ASHES.get()).replace(false); + this.tag(Tags.Items.DUSTS).addTags( + OccultismTags.Items.COPPER_DUST, + OccultismTags.Items.END_STONE_DUST, + OccultismTags.Items.GOLD_DUST, + OccultismTags.Items.IRON_DUST, + OccultismTags.Items.IESNIUM_DUST, + OccultismTags.Items.SILVER_DUST, + OccultismTags.Items.OBSIDIAN_DUST, + OccultismTags.Items.AMETHYST_DUST, + OccultismTags.Items.BLACKSTONE_DUST, + OccultismTags.Items.BLUE_ICE_DUST, + OccultismTags.Items.CALCITE_DUST, + OccultismTags.Items.ICE_DUST, + OccultismTags.Items.PACKED_ICE_DUST, + OccultismTags.Items.DRAGONYST_DUST, + OccultismTags.Items.ECHO_DUST, + OccultismTags.Items.EMERALD_DUST, + OccultismTags.Items.LAPIS_DUST, + OccultismTags.Items.NETHERITE_DUST, + OccultismTags.Items.NETHERITE_SCRAP_DUST, + OccultismTags.Items.RESEARCH_DUST, + OccultismTags.Items.WITHERITE_DUST, + OccultismTags.Items.OTHERSTONE_DUST, + OccultismTags.Items.OTHERWORLD_WOOD_DUST); } private TagKey cTag(String path) { diff --git a/src/main/java/com/klikli_dev/occultism/handlers/ClientSetupEventHandler.java b/src/main/java/com/klikli_dev/occultism/handlers/ClientSetupEventHandler.java index 9077d352f..493b936ea 100644 --- a/src/main/java/com/klikli_dev/occultism/handlers/ClientSetupEventHandler.java +++ b/src/main/java/com/klikli_dev/occultism/handlers/ClientSetupEventHandler.java @@ -51,6 +51,7 @@ import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.inventory.EffectRenderingInventoryScreen; +import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRenderers; import net.minecraft.client.renderer.blockentity.HangingSignRenderer; @@ -61,6 +62,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.monster.ZombifiedPiglin; import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.ModContainer; @@ -127,6 +129,7 @@ public static void onRegisterEntityRenderers(EntityRenderersEvent.RegisterRender event.registerEntityRenderer(OccultismEntities.AFRIT.get(), AfritRenderer::new); event.registerEntityRenderer(OccultismEntities.AFRIT_WILD.get(), AfritWildRenderer::new); event.registerEntityRenderer(OccultismEntities.MARID.get(), MaridRenderer::new); + event.registerEntityRenderer(OccultismEntities.MARID_UNBOUND.get(), MaridUnboundRenderer::new); event.registerEntityRenderer(OccultismEntities.GREEDY_FAMILIAR.get(), GreedyFamiliarRenderer::new); event.registerEntityRenderer(OccultismEntities.BAT_FAMILIAR.get(), BatFamiliarRenderer::new); event.registerEntityRenderer(OccultismEntities.DEER_FAMILIAR.get(), DeerFamiliarRenderer::new); @@ -155,6 +158,10 @@ public static void onRegisterEntityRenderers(EntityRenderersEvent.RegisterRender event.registerEntityRenderer(OccultismEntities.POSSESSED_ELDER_GUARDIAN.get(), ElderGuardianRenderer::new); event.registerEntityRenderer(OccultismEntities.POSSESSED_WARDEN.get(), WardenRenderer::new); event.registerEntityRenderer(OccultismEntities.POSSESSED_HOGLIN.get(), HoglinRenderer::new); + event.registerEntityRenderer(OccultismEntities.POSSESSED_WITCH.get(), WitchRenderer::new); + event.registerEntityRenderer(OccultismEntities.POSSESSED_ZOMBIE_PIGLIN.get(), PossessedZombiePiglinRenderer::new); + event.registerEntityRenderer(OccultismEntities.POSSESSED_BEE.get(), BeeRenderer::new); + event.registerEntityRenderer(OccultismEntities.GOAT_OF_MERCY.get(), GoatRenderer::new); event.registerEntityRenderer(OccultismEntities.WILD_HUNT_SKELETON.get(), SkeletonRenderer::new); event.registerEntityRenderer(OccultismEntities.WILD_HUNT_WITHER_SKELETON.get(), WitherSkeletonRenderer::new); event.registerEntityRenderer(OccultismEntities.OTHERWORLD_BIRD.get(), OtherworldBirdRenderer::new); @@ -270,8 +277,8 @@ public static void registerItemModelProperties(FMLClientSetupEvent event) { ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "has_entity"), new SoulGemItemPropertyGetter()); ItemProperties.register(OccultismItems.DIVINATION_ROD.get(), ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "distance"), new DivinationRodItemPropertyGetter()); - ItemProperties.register(OccultismItems.OTHERWORLD_SAPLING_NATURAL.get(), - ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "simulated"), new OtherworldBlockItemPropertyGetter()); + //ItemProperties.register(OccultismBlocks.OTHERWORLD_SAPLING_NATURAL.asItem(), + // ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "simulated"), new OtherworldBlockItemPropertyGetter()); ItemProperties.register(OccultismItems.STORAGE_REMOTE.get(), ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "linked"), new StorageRemoteItemPropertyGetter()); ItemProperties.register(OccultismItems.STABLE_WORMHOLE.get(), diff --git a/src/main/java/com/klikli_dev/occultism/handlers/ColorEventHandler.java b/src/main/java/com/klikli_dev/occultism/handlers/ColorEventHandler.java index 826cb0c4c..2c6ee7a1d 100644 --- a/src/main/java/com/klikli_dev/occultism/handlers/ColorEventHandler.java +++ b/src/main/java/com/klikli_dev/occultism/handlers/ColorEventHandler.java @@ -46,8 +46,8 @@ public static void onRegisterBlockColorHandlers(RegisterColorHandlersEvent.Block .register((state, light, pos, tintIndex) -> OccultismBlocks.CHALK_GLYPH_WHITE.get().getColor(), OccultismBlocks.CHALK_GLYPH_WHITE.get()); event.getBlockColors() - .register((state, light, pos, tintIndex) -> OccultismBlocks.CHALK_GLYPH_GOLD.get().getColor(), - OccultismBlocks.CHALK_GLYPH_GOLD.get()); + .register((state, light, pos, tintIndex) -> OccultismBlocks.CHALK_GLYPH_YELLOW.get().getColor(), + OccultismBlocks.CHALK_GLYPH_YELLOW.get()); event.getBlockColors() .register((state, light, pos, tintIndex) -> OccultismBlocks.CHALK_GLYPH_PURPLE.get().getColor(), OccultismBlocks.CHALK_GLYPH_PURPLE.get()); diff --git a/src/main/java/com/klikli_dev/occultism/registry/OccultismBlocks.java b/src/main/java/com/klikli_dev/occultism/registry/OccultismBlocks.java index eada9c15b..aa8b81abf 100644 --- a/src/main/java/com/klikli_dev/occultism/registry/OccultismBlocks.java +++ b/src/main/java/com/klikli_dev/occultism/registry/OccultismBlocks.java @@ -97,8 +97,8 @@ public void tick(BlockState pState, ServerLevel pLevel, BlockPos pPos, RandomSou public static final DeferredBlock CHALK_GLYPH_WHITE = register("chalk_glyph_white", () -> new ChalkGlyphBlock(GLYPH_PROPERTIES, Occultism.CLIENT_CONFIG.visuals.whiteChalkGlyphColor, () -> OccultismItems.CHALK_WHITE.get()), false, LootTableType.EMPTY); - public static final DeferredBlock CHALK_GLYPH_GOLD = register("chalk_glyph_gold", - () -> new ChalkGlyphBlock(GLYPH_PROPERTIES, Occultism.CLIENT_CONFIG.visuals.goldenChalkGlyphColor, () -> OccultismItems.CHALK_GOLD.get()), false, + public static final DeferredBlock CHALK_GLYPH_YELLOW = register("chalk_glyph_gold", + () -> new ChalkGlyphBlock(GLYPH_PROPERTIES, Occultism.CLIENT_CONFIG.visuals.yellowChalkGlyphColor, () -> OccultismItems.CHALK_YELLOW.get()), false, LootTableType.EMPTY); public static final DeferredBlock CHALK_GLYPH_PURPLE = register("chalk_glyph_purple", () -> new ChalkGlyphBlock(GLYPH_PROPERTIES, Occultism.CLIENT_CONFIG.visuals.purpleChalkGlyphColor, () -> OccultismItems.CHALK_PURPLE.get()), @@ -209,7 +209,7 @@ public void tick(BlockState pState, ServerLevel pLevel, BlockPos pPos, RandomSou Block.Properties.of() .mapColor(MapColor.PLANT) .sound(SoundType.GRASS) - .strength(0.0f).randomTicks().noCollission()), false, LootTableType.OTHERWORLD_BLOCK); + .strength(0.0f).randomTicks().noCollission()), true, LootTableType.OTHERWORLD_BLOCK); public static final DeferredBlock OTHERWORLD_LEAVES = register("otherworld_leaves", () -> new LeavesBlock( Block.Properties.of() @@ -334,25 +334,25 @@ public void tick(BlockState pState, ServerLevel pLevel, BlockPos pPos, RandomSou () -> new LargeCandleBlock(Block.Properties.of() .mapColor(MapColor.COLOR_CYAN).sound(SoundType.CANDLE).noCollission().strength(0.1f, 0) .lightLevel(LargeCandleBlock.LIGHT_EMISSION))); - public static final DeferredBlock LARGE_CANDLE_BLUE = register("large_candle_blue", - () -> new LargeCandleBlock(Block.Properties.of() - .mapColor(MapColor.COLOR_BLUE).sound(SoundType.CANDLE).noCollission().strength(0.1f, 0) - .lightLevel(LargeCandleBlock.LIGHT_EMISSION))); public static final DeferredBlock LARGE_CANDLE_LIGHT_BLUE = register("large_candle_light_blue", () -> new LargeCandleBlock(Block.Properties.of() .mapColor(MapColor.COLOR_LIGHT_BLUE).sound(SoundType.CANDLE).noCollission().strength(0.1f, 0) .lightLevel(LargeCandleBlock.LIGHT_EMISSION))); - public static final DeferredBlock LARGE_CANDLE_PINK = register("large_candle_pink", + public static final DeferredBlock LARGE_CANDLE_BLUE = register("large_candle_blue", () -> new LargeCandleBlock(Block.Properties.of() - .mapColor(MapColor.COLOR_PINK).sound(SoundType.CANDLE).noCollission().strength(0.1f, 0) + .mapColor(MapColor.COLOR_BLUE).sound(SoundType.CANDLE).noCollission().strength(0.1f, 0) + .lightLevel(LargeCandleBlock.LIGHT_EMISSION))); + public static final DeferredBlock LARGE_CANDLE_PURPLE = register("large_candle_purple", + () -> new LargeCandleBlock(Block.Properties.of() + .mapColor(MapColor.COLOR_PURPLE).sound(SoundType.CANDLE).noCollission().strength(0.1f, 0) .lightLevel(LargeCandleBlock.LIGHT_EMISSION))); public static final DeferredBlock LARGE_CANDLE_MAGENTA = register("large_candle_magenta", () -> new LargeCandleBlock(Block.Properties.of() .mapColor(MapColor.COLOR_MAGENTA).sound(SoundType.CANDLE).noCollission().strength(0.1f, 0) .lightLevel(LargeCandleBlock.LIGHT_EMISSION))); - public static final DeferredBlock LARGE_CANDLE_PURPLE = register("large_candle_purple", + public static final DeferredBlock LARGE_CANDLE_PINK = register("large_candle_pink", () -> new LargeCandleBlock(Block.Properties.of() - .mapColor(MapColor.COLOR_PURPLE).sound(SoundType.CANDLE).noCollission().strength(0.1f, 0) + .mapColor(MapColor.COLOR_PINK).sound(SoundType.CANDLE).noCollission().strength(0.1f, 0) .lightLevel(LargeCandleBlock.LIGHT_EMISSION))); public static final DeferredBlock SPIRIT_ATTUNED_CRYSTAL = diff --git a/src/main/java/com/klikli_dev/occultism/registry/OccultismCreativeModeTabs.java b/src/main/java/com/klikli_dev/occultism/registry/OccultismCreativeModeTabs.java index 1387334cc..0ef672b78 100644 --- a/src/main/java/com/klikli_dev/occultism/registry/OccultismCreativeModeTabs.java +++ b/src/main/java/com/klikli_dev/occultism/registry/OccultismCreativeModeTabs.java @@ -9,33 +9,39 @@ import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; +import java.util.function.Supplier; + public class OccultismCreativeModeTabs { public static final DeferredRegister CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, Occultism.MODID); - public static final DeferredHolder OCCULTISM = CREATIVE_MODE_TABS.register("occultism", () -> CreativeModeTab.builder() .title(Component.translatable("itemGroup.occultism")) .withTabsBefore(CreativeModeTabs.SPAWN_EGGS) - .icon(() -> OccultismItems.PENTACLE.get().getDefaultInstance()) + .icon(() -> OccultismItems.PENTACLE_SUMMON.get().getDefaultInstance()) .displayItems((parameters, output) -> { + //General items and blocks OccultismItems.ITEMS.getEntries().forEach(i -> { - - - if (OccultismItems.shouldSkipCreativeModTab(i.get())) + if (OccultismItems.shouldSkipCreativeModTab(i.get()) || OccultismItems.laterCreativeModTab(i.get())) return; - var stack = new ItemStack(i.get()); - if (OccultismItems.shouldPregenerateSpiritName(i.get())) { stack.set(OccultismDataComponents.SPIRIT_NAME, "(Not yet known)"); } - output.accept(stack); + }); + // Spawn eggs, ritual dummy and debug items + OccultismItems.ITEMS.getEntries().forEach(i -> { + if (OccultismItems.laterCreativeModTab(i.get()) && !OccultismItems.shouldSkipCreativeModTab(i.get())) { + var stack = new ItemStack(i.get()); + if (OccultismItems.shouldPregenerateSpiritName(i.get())) { + stack.set(OccultismDataComponents.SPIRIT_NAME, "(Not yet known)"); + } + output.accept(stack); + } }); - output.accept(OccultismItems.DICTIONARY_OF_SPIRITS.get().getCreativeModeTabDisplayStack()); }).build()); } \ No newline at end of file diff --git a/src/main/java/com/klikli_dev/occultism/registry/OccultismEntities.java b/src/main/java/com/klikli_dev/occultism/registry/OccultismEntities.java index 7001fc00d..bc858ab98 100644 --- a/src/main/java/com/klikli_dev/occultism/registry/OccultismEntities.java +++ b/src/main/java/com/klikli_dev/occultism/registry/OccultismEntities.java @@ -72,6 +72,12 @@ public class OccultismEntities { .clientTrackingRange(8) .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "marid").toString())); + public static final Lazy> MARID_UNBOUND_TYPE = + Lazy.of(() -> EntityType.Builder.of((EntityType t, Level l) -> new MaridUnboundEntity(t, l), MobCategory.CREATURE) + .sized(1.2f, 2.4f) + .clientTrackingRange(16) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "marid_unbound").toString())); + public static final Lazy> POSSESSED_ENDERMITE_TYPE = Lazy.of(() -> EntityType.Builder.of(PossessedEndermiteEntity::new, MobCategory.MONSTER) .sized(0.4F, 0.3F) @@ -123,14 +129,34 @@ public class OccultismEntities { .fireImmune() .clientTrackingRange(48) .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "possessed_warden").toString())); - public static final Lazy> POSSESSED_HOGLIN_TYPE = Lazy.of(() -> EntityType.Builder.of(PossessedHoglinEntity::new, MobCategory.MONSTER) .sized(1.88F, 1.88F) - .fireImmune() .clientTrackingRange(24) .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "possessed_hoglin").toString())); + public static final Lazy> POSSESSED_WITCH_TYPE = + Lazy.of(() -> EntityType.Builder.of(PossessedWitchEntity::new, MobCategory.MONSTER) + .sized(0.9F, 1.95F) + .fireImmune() + .clientTrackingRange(16) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "possessed_witch").toString())); + public static final Lazy> POSSESSED_ZOMBIE_PIGLIN_TYPE = + Lazy.of(() -> EntityType.Builder.of(PossessedZombiePiglinEntity::new, MobCategory.MONSTER) + .sized(0.6F, 1.95F) + .fireImmune() + .clientTrackingRange(32) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "possessed_zombie_piglin").toString())); + public static final Lazy> POSSESSED_BEE_TYPE = + Lazy.of(() -> EntityType.Builder.of(PossessedBeeEntity::new, MobCategory.MONSTER) + .sized(0.7F, 0.6F) + .clientTrackingRange(48) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "possessed_bee").toString())); + public static final Lazy> GOAT_OF_MERCY_TYPE = + Lazy.of(() -> EntityType.Builder.of(GoatOfMercyEntity::new, MobCategory.CREATURE) + .sized(0.9F, 1.3F) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "mercy_goat").toString())); + public static final Lazy> WILD_HUNT_SKELETON_TYPE = Lazy.of(() -> EntityType.Builder.of(WildHuntSkeletonEntity::new, MobCategory.MONSTER) .sized(0.6F, 2.9F) @@ -341,6 +367,7 @@ public class OccultismEntities { public static final Supplier> AFRIT = ENTITIES.register("afrit", AFRIT_TYPE::get); public static final Supplier> AFRIT_WILD = ENTITIES.register("afrit_wild", AFRIT_WILD_TYPE::get); public static final Supplier> MARID = ENTITIES.register("marid", MARID_TYPE::get); + public static final Supplier> MARID_UNBOUND = ENTITIES.register("marid_unbound", MARID_UNBOUND_TYPE::get); public static final Supplier> POSSESSED_ENDERMITE = @@ -365,6 +392,14 @@ public class OccultismEntities { ENTITIES.register("possessed_warden", POSSESSED_WARDEN_TYPE::get); public static final Supplier> POSSESSED_HOGLIN = ENTITIES.register("possessed_hoglin", POSSESSED_HOGLIN_TYPE::get); + public static final Supplier> POSSESSED_WITCH = + ENTITIES.register("possessed_witch", POSSESSED_WITCH_TYPE::get); + public static final Supplier> POSSESSED_ZOMBIE_PIGLIN = + ENTITIES.register("possessed_zombie_piglin", POSSESSED_ZOMBIE_PIGLIN_TYPE::get); + public static final Supplier> POSSESSED_BEE = + ENTITIES.register("possessed_bee", POSSESSED_BEE_TYPE::get); + public static final Supplier> GOAT_OF_MERCY = + ENTITIES.register("mercy_goat", GOAT_OF_MERCY_TYPE::get); public static final Supplier> WILD_HUNT_WITHER_SKELETON = ENTITIES.register("wild_hunt_wither_skeleton", WILD_HUNT_WITHER_SKELETON_TYPE::get); public static final Supplier> OTHERWORLD_BIRD = diff --git a/src/main/java/com/klikli_dev/occultism/registry/OccultismFoods.java b/src/main/java/com/klikli_dev/occultism/registry/OccultismFoods.java index fbc3e616d..e09e2cf26 100644 --- a/src/main/java/com/klikli_dev/occultism/registry/OccultismFoods.java +++ b/src/main/java/com/klikli_dev/occultism/registry/OccultismFoods.java @@ -55,4 +55,10 @@ public class OccultismFoods { public static final Lazy BEAVER_NUGGET = Lazy.of( () -> new FoodProperties.Builder().nutrition(8).saturationModifier(0.8F).build()); + public static final Lazy CURSED_HONEY = Lazy.of( + () -> new FoodProperties.Builder().nutrition(2).saturationModifier(1F) + .effect(() -> new MobEffectInstance(MobEffects.REGENERATION, 5 * 20, 1), 1.0f).build()); + public static final Lazy DEMONIC_MEAT = Lazy.of( + () -> new FoodProperties.Builder().nutrition(11).saturationModifier(0.1F) + .effect(() -> new MobEffectInstance(MobEffects.FIRE_RESISTANCE, 3 * 60 * 20, 1), 1.0f).build()); } 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 415efd258..5a1aafdaf 100644 --- a/src/main/java/com/klikli_dev/occultism/registry/OccultismItems.java +++ b/src/main/java/com/klikli_dev/occultism/registry/OccultismItems.java @@ -27,7 +27,6 @@ import com.klikli_dev.occultism.common.item.DummyTooltipItem; import com.klikli_dev.occultism.common.item.armor.OtherworldGogglesItem; import com.klikli_dev.occultism.common.item.debug.*; -import com.klikli_dev.occultism.common.item.otherworld.OtherworldBlockItem; import com.klikli_dev.occultism.common.item.spirit.*; import com.klikli_dev.occultism.common.item.storage.*; import com.klikli_dev.occultism.common.item.tool.BrushItem; @@ -48,75 +47,140 @@ public class OccultismItems { public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(Occultism.MODID); - //Debug and placeholder items - public static final DeferredItem DICTIONARY_OF_SPIRITS_ICON = - ITEMS.register("dictionary_of_spirits_icon", () -> new Item(new Item.Properties())); - + //Dictionary public static final DeferredItem DICTIONARY_OF_SPIRITS = ITEMS.register("dictionary_of_spirits", () -> new GuideBookItem(defaultProperties().stacksTo(1))); - public static final DeferredItem PENTACLE = ITEMS.register("pentacle", - () -> new Item(new Item.Properties())); - public static final DeferredItem DEBUG_WAND = ITEMS.register("debug_wand", - () -> new DebugWandItem(defaultProperties().stacksTo(1))); - public static final DeferredItem DEBUG_FOLIOT_LUMBERJACK = ITEMS.register("debug_foliot_lumberjack", - () -> new SummonFoliotLumberjackItem(defaultProperties().stacksTo(1))); - public static final DeferredItem DEBUG_FOLIOT_TRANSPORT_ITEMS = - ITEMS.register("debug_foliot_transport_items", - () -> new SummonFoliotTransportItemsItem(defaultProperties().stacksTo(1))); - public static final DeferredItem DEBUG_FOLIOT_CLEANER = - ITEMS.register("debug_foliot_cleaner", - () -> new SummonFoliotCleanerItem(defaultProperties().stacksTo(1))); - public static final DeferredItem DEBUG_FOLIOT_TRADER_ITEM = ITEMS.register("debug_foliot_trader", - () -> new SummonFoliotTraderItem(defaultProperties().stacksTo(1))); - public static final DeferredItem DEBUG_DJINNI_MANAGE_MACHINE = ITEMS.register("debug_djinni_manage_machine", - () -> new SummonDjinniManageMachineItem(defaultProperties().stacksTo(1))); - public static final DeferredItem DEBUG_DJINNI_TEST = ITEMS.register("debug_djinni_test", - () -> new SummonDjinniTest(defaultProperties().stacksTo(1))); - - public static final DeferredItem SPIRIT_FIRE = - ITEMS.register("spirit_fire", () -> new BlockItem(OccultismBlocks.SPIRIT_FIRE.get(), defaultProperties())); - - public static final DeferredItem ADVANCEMENT_ICON = - ITEMS.register("advancement_icon", () -> new Item(new Item.Properties())); - - //Resources - public static final DeferredItem OTHERWORLD_SAPLING_NATURAL = - ITEMS.register("otherworld_sapling_natural", - () -> new OtherworldBlockItem(OccultismBlocks.OTHERWORLD_SAPLING_NATURAL.get(), - defaultProperties())); - public static final DeferredItem TALLOW = ITEMS.register("tallow", - () -> new Item(defaultProperties())); - public static final DeferredItem AFRIT_ESSENCE = ITEMS.register("afrit_essence", - () -> new Item(defaultProperties())); - - //Components - public static final DeferredItem DIMENSIONAL_MATRIX = ITEMS.register("dimensional_matrix", - () -> new DimensionalMatrixItem(defaultProperties().component(OccultismDataComponents.SPIRIT_NAME, "(Not yet known)"))); - public static final DeferredItem SPIRIT_ATTUNED_GEM = ITEMS.register("spirit_attuned_gem", - () -> new Item(defaultProperties())); - public static final DeferredItem OTHERWORLD_ASHES = ITEMS.register("otherworld_ashes", - () -> new Item(defaultProperties())); - public static final DeferredItem BURNT_OTHERSTONE = ITEMS.register("burnt_otherstone", - () -> new Item(defaultProperties())); + //Tools and equipable + public static final DeferredItem DIVINATION_ROD = ITEMS.register("divination_rod", + () -> new DivinationRodItem(defaultProperties().stacksTo(1))); + public static final DeferredItem BUTCHER_KNIFE = ITEMS.register("butcher_knife", + () -> new SwordItem(Tiers.IRON, defaultProperties().attributes(SwordItem.createAttributes(Tiers.IRON, 3, -2.4F)))); + public static final DeferredItem INFUSED_PICKAXE = ITEMS.register("infused_pickaxe", + () -> new InfusedPickaxeItem(OccultismTiers.SPIRIT_ATTUNED, defaultProperties() + .component(OccultismDataComponents.SPIRIT_NAME, "(Not yet known)") + .attributes(PickaxeItem.createAttributes(Tiers.DIAMOND, 1.0F, -2.8F)))); + public static final DeferredItem IESNIUM_PICKAXE = ITEMS.register("iesnium_pickaxe", + () -> new OtherworldPickaxeItem(OccultismTiers.IESNIUM, defaultProperties().attributes(PickaxeItem.createAttributes(Tiers.DIAMOND, 1.0F, -2.8F)))); + public static final DeferredItem OTHERWORLD_GOGGLES = ITEMS.register("otherworld_goggles", + () -> new OtherworldGogglesItem(ArmorMaterials.IRON, + ArmorItem.Type.HELMET, defaultProperties().stacksTo(1))); + public static final DeferredItem SATCHEL = ITEMS.register("satchel", + () -> new SatchelItem(defaultProperties().stacksTo(1).rarity(Rarity.RARE) + .component(DataComponents.CONTAINER, ItemContainerContents.EMPTY) + .component(OccultismDataComponents.SPIRIT_NAME, "(Not yet known)") + )); + public static final DeferredItem RITUAL_SATCHEL_T1 = ITEMS.register("ritual_satchel_t1", + () -> new SingleBlockRitualSatchelItem(defaultProperties() + .stacksTo(1).rarity(Rarity.RARE) + .component(DataComponents.CONTAINER, ItemContainerContents.EMPTY) + .component(OccultismDataComponents.SPIRIT_NAME, "(Not yet known)") + )); + public static final DeferredItem RITUAL_SATCHEL_T2 = ITEMS.register("ritual_satchel_t2", + () -> new MultiBlockRitualSatchelItem(defaultProperties() + .stacksTo(1).rarity(Rarity.RARE) + .component(DataComponents.CONTAINER, ItemContainerContents.EMPTY) + .component(OccultismDataComponents.SPIRIT_NAME, "(Not yet known)") + )); + public static final DeferredItem STORAGE_REMOTE = ITEMS.register("storage_remote", + () -> new StorageRemoteItem(defaultProperties().stacksTo(1))); + public static final DeferredItem SOUL_GEM_ITEM = ITEMS.register("soul_gem", + () -> new SoulGemItem(defaultProperties().stacksTo(1))); + public static final DeferredItem FAMILIAR_RING = ITEMS.register("familiar_ring", + () -> new FamiliarRingItem(defaultProperties().stacksTo(1).component(OccultismDataComponents.SPIRIT_NAME, "(Not yet known)"))); - public static final DeferredItem OTHERSTONE_FRAME = ITEMS.register("otherstone_frame", - () -> new Item(defaultProperties())); - public static final DeferredItem WORMHOLE_FRAME = ITEMS.register("wormhole_frame", - () -> new Item(defaultProperties())); - public static final DeferredItem OTHERSTONE_TABLET = ITEMS.register("otherstone_tablet", - () -> new Item(defaultProperties())); - public static final DeferredItem STORAGE_REMOTE_INERT = ITEMS.register("storage_remote_inert", - () -> new Item(defaultProperties())); + //Books of Binding + public static final DeferredItem BOOK_OF_BINDING_EMPTY = ITEMS.register( + "book_of_binding_empty", () -> new BookOfBindingItem(defaultProperties().stacksTo(1))); + public static final DeferredItem BOOK_OF_BINDING_FOLIOT = ITEMS.register( + "book_of_binding_foliot", () -> new BookOfBindingItem(defaultProperties().stacksTo(1))); + public static final DeferredItem BOOK_OF_BINDING_BOUND_FOLIOT = ITEMS.register( + "book_of_binding_bound_foliot", () -> new BookOfBindingBoundItem(defaultProperties().stacksTo(1).component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN))); + public static final DeferredItem BOOK_OF_BINDING_DJINNI = ITEMS.register( + "book_of_binding_djinni", () -> new BookOfBindingItem(defaultProperties().stacksTo(1))); + public static final DeferredItem BOOK_OF_BINDING_BOUND_DJINNI = ITEMS.register( + "book_of_binding_bound_djinni", () -> new BookOfBindingBoundItem(defaultProperties().stacksTo(1).component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN))); + public static final DeferredItem BOOK_OF_BINDING_AFRIT = ITEMS.register( + "book_of_binding_afrit", () -> new BookOfBindingItem(defaultProperties().stacksTo(1))); + public static final DeferredItem BOOK_OF_BINDING_BOUND_AFRIT = ITEMS.register( + "book_of_binding_bound_afrit", () -> new BookOfBindingBoundItem(defaultProperties().stacksTo(1).component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN))); + public static final DeferredItem BOOK_OF_BINDING_MARID = ITEMS.register( + "book_of_binding_marid", () -> new BookOfBindingItem(defaultProperties().stacksTo(1))); + public static final DeferredItem BOOK_OF_BINDING_BOUND_MARID = ITEMS.register( + "book_of_binding_bound_marid", () -> new BookOfBindingBoundItem(defaultProperties().stacksTo(1).component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN))); + //Books of Calling + //Foliot + public static final DeferredItem BOOK_OF_CALLING_FOLIOT_LUMBERJACK = + ITEMS.register("book_of_calling_foliot_lumberjack", + () -> new BookOfCallingLumberjackItem(defaultProperties().stacksTo(1).component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN), + TranslationKeys.BOOK_OF_CALLING_GENERIC + "_foliot")); + public static final DeferredItem BOOK_OF_CALLING_FOLIOT_TRANSPORT_ITEMS = + ITEMS.register("book_of_calling_foliot_transport_items", + () -> new BookOfCallingTransportItems(defaultProperties().stacksTo(1).component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN), + TranslationKeys.BOOK_OF_CALLING_GENERIC + "_foliot")); + public static final DeferredItem BOOK_OF_CALLING_FOLIOT_CLEANER = + ITEMS.register("book_of_calling_foliot_cleaner", + () -> new BookOfCallingCleanerItem(defaultProperties().stacksTo(1).component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN), + TranslationKeys.BOOK_OF_CALLING_GENERIC + "_foliot")); + //Djinn + public static final DeferredItem BOOK_OF_CALLING_DJINNI_MANAGE_MACHINE = + ITEMS.register("book_of_calling_djinni_manage_machine", + () -> new BookOfCallingManageMachineItem(defaultProperties().stacksTo(1).component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN), + TranslationKeys.BOOK_OF_CALLING_GENERIC + "_djinni")); + //Brush. Chalks and Impure Chalks + public static final DeferredItem BRUSH = ITEMS.register("brush", + () -> new BrushItem(defaultProperties().stacksTo(1))); + public static final DeferredItem CHALK_WHITE = ITEMS.register("chalk_white", + () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), + OccultismBlocks.CHALK_GLYPH_WHITE)); + public static final DeferredItem CHALK_LIGHT_GRAY = ITEMS.register("chalk_light_gray", + () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), + OccultismBlocks.CHALK_GLYPH_LIGHT_GRAY)); + public static final DeferredItem CHALK_GRAY = ITEMS.register("chalk_gray", + () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), + OccultismBlocks.CHALK_GLYPH_GRAY)); + public static final DeferredItem CHALK_BLACK = ITEMS.register("chalk_black", + () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), + OccultismBlocks.CHALK_GLYPH_BLACK)); + public static final DeferredItem CHALK_BROWN = ITEMS.register("chalk_brown", + () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), + OccultismBlocks.CHALK_GLYPH_BROWN)); + public static final DeferredItem CHALK_RED = ITEMS.register("chalk_red", + () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), + OccultismBlocks.CHALK_GLYPH_RED)); + public static final DeferredItem CHALK_ORANGE = ITEMS.register("chalk_orange", + () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), + OccultismBlocks.CHALK_GLYPH_ORANGE)); + public static final DeferredItem CHALK_YELLOW = ITEMS.register("chalk_gold", + () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), + OccultismBlocks.CHALK_GLYPH_YELLOW)); + public static final DeferredItem CHALK_LIME = ITEMS.register("chalk_lime", + () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), + OccultismBlocks.CHALK_GLYPH_LIME)); + public static final DeferredItem CHALK_GREEN = ITEMS.register("chalk_green", + () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), + OccultismBlocks.CHALK_GLYPH_GREEN)); + public static final DeferredItem CHALK_CYAN = ITEMS.register("chalk_cyan", + () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), + OccultismBlocks.CHALK_GLYPH_CYAN)); + public static final DeferredItem CHALK_LIGHT_BLUE = ITEMS.register("chalk_light_blue", + () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), + OccultismBlocks.CHALK_GLYPH_LIGHT_BLUE)); + public static final DeferredItem CHALK_BLUE = ITEMS.register("chalk_blue", + () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), + OccultismBlocks.CHALK_GLYPH_BLUE)); + public static final DeferredItem CHALK_PURPLE = ITEMS.register("chalk_purple", + () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), + OccultismBlocks.CHALK_GLYPH_PURPLE)); + public static final DeferredItem CHALK_MAGENTA = ITEMS.register("chalk_magenta", + () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), + OccultismBlocks.CHALK_GLYPH_MAGENTA)); + public static final DeferredItem CHALK_PINK = ITEMS.register("chalk_pink", + () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), + OccultismBlocks.CHALK_GLYPH_PINK)); public static final DeferredItem CHALK_WHITE_IMPURE = ITEMS.register("chalk_white_impure", () -> new Item(defaultProperties())); - public static final DeferredItem CHALK_RED_IMPURE = ITEMS.register("chalk_red_impure", - () -> new Item(defaultProperties())); - public static final DeferredItem CHALK_GOLD_IMPURE = ITEMS.register("chalk_gold_impure", - () -> new Item(defaultProperties())); - public static final DeferredItem CHALK_PURPLE_IMPURE = ITEMS.register("chalk_purple_impure", - () -> new Item(defaultProperties())); public static final DeferredItem CHALK_LIGHT_GRAY_IMPURE = ITEMS.register("chalk_light_gray_impure", () -> new Item(defaultProperties())); public static final DeferredItem CHALK_GRAY_IMPURE = ITEMS.register("chalk_gray_impure", @@ -125,8 +189,12 @@ public class OccultismItems { () -> new Item(defaultProperties())); public static final DeferredItem CHALK_BROWN_IMPURE = ITEMS.register("chalk_brown_impure", () -> new Item(defaultProperties())); + public static final DeferredItem CHALK_RED_IMPURE = ITEMS.register("chalk_red_impure", + () -> new Item(defaultProperties())); public static final DeferredItem CHALK_ORANGE_IMPURE = ITEMS.register("chalk_orange_impure", () -> new Item(defaultProperties())); + public static final DeferredItem CHALK_YELLOW_IMPURE = ITEMS.register("chalk_yellow_impure", + () -> new Item(defaultProperties())); public static final DeferredItem CHALK_LIME_IMPURE = ITEMS.register("chalk_lime_impure", () -> new Item(defaultProperties())); public static final DeferredItem CHALK_GREEN_IMPURE = ITEMS.register("chalk_green_impure", @@ -137,11 +205,79 @@ public class OccultismItems { () -> new Item(defaultProperties())); public static final DeferredItem CHALK_BLUE_IMPURE = ITEMS.register("chalk_blue_impure", () -> new Item(defaultProperties())); + public static final DeferredItem CHALK_PURPLE_IMPURE = ITEMS.register("chalk_purple_impure", + () -> new Item(defaultProperties())); public static final DeferredItem CHALK_MAGENTA_IMPURE = ITEMS.register("chalk_magenta_impure", () -> new Item(defaultProperties())); public static final DeferredItem CHALK_PINK_IMPURE = ITEMS.register("chalk_pink_impure", () -> new Item(defaultProperties())); + + //Miner Spirits + public static final DeferredItem MAGIC_LAMP_EMPTY = ITEMS.register("magic_lamp_empty", + () -> new Item(defaultProperties())); + + public static final DeferredItem MINER_FOLIOT_UNSPECIALIZED = ITEMS.register("miner_foliot_unspecialized", + () -> new MinerSpiritItem(defaultProperties() + .component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN) + .durability(1000), + Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerFoliotUnspecialized.maxMiningTime, + Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerFoliotUnspecialized.rollsPerOperation, + Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerFoliotUnspecialized.durability)); + public static final DeferredItem MINER_DJINNI_ORES = ITEMS.register("miner_djinni_ores", + () -> new MinerSpiritItem(defaultProperties().durability(400) + .component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN), + Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerDjinniOres.maxMiningTime, + Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerDjinniOres.rollsPerOperation, + Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerDjinniOres.durability)); + public static final DeferredItem MINER_AFRIT_DEEPS = ITEMS.register("miner_afrit_deeps", + () -> new MinerSpiritItem(defaultProperties().durability(800) + .component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN), + Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerAfritDeeps.maxMiningTime, + Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerAfritDeeps.rollsPerOperation, + Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerAfritDeeps.durability)); + public static final DeferredItem MINER_MARID_MASTER = ITEMS.register("miner_marid_master", + () -> new MinerSpiritItem(defaultProperties().durability(1600) + .component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN), + Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerMaridMaster.maxMiningTime, + Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerMaridMaster.rollsPerOperation, + Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerMaridMaster.durability)); + + public static final DeferredItem MINER_ANCIENT_ELDRITCH = ITEMS.register("miner_ancient_eldritch", + () -> new MinerSpiritItem(defaultProperties().durability(3200) + .component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN), + Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerAncientEldritch.maxMiningTime, + Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerAncientEldritch.rollsPerOperation, + Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerAncientEldritch.durability)); + + //Crops and food + public static final DeferredItem DATURA_SEEDS = + ITEMS.register("datura_seeds", () -> new ItemNameBlockItem(OccultismBlocks.DATURA.get(), defaultProperties())); + public static final DeferredItem DATURA = ITEMS.register("datura", + () -> new SpiritHealingItem(defaultProperties().food(OccultismFoods.DATURA.get()))); + public static final DeferredItem DEMONS_DREAM_ESSENCE = ITEMS.register("demons_dream_essence", + () -> new SpiritHealingItem(defaultProperties().food(OccultismFoods.DEMONS_DREAM_ESSENCE.get()))); + + public static final DeferredItem OTHERWORLD_ESSENCE = ITEMS.register("otherworld_essence", + () -> new SpiritHealingItem(defaultProperties().food(OccultismFoods.OTHERWORLD_ESSENCE.get()))); + public static final DeferredItem BEAVER_NUGGET = ITEMS.register("beaver_nugget", + () -> new Item(defaultProperties().food(OccultismFoods.BEAVER_NUGGET.get()))); + public static final DeferredItem CURSED_HONEY = ITEMS.register("cursed_honey", + () -> new Item(defaultProperties().food(OccultismFoods.CURSED_HONEY.get()))); + public static final DeferredItem DEMONIC_MEAT = ITEMS.register("demonic_meat", + () -> new Item(defaultProperties().food(OccultismFoods.DEMONIC_MEAT.get()))); + + //Resources and materials + public static final DeferredItem TALLOW = ITEMS.register("tallow", + () -> new Item(defaultProperties())); + public static final DeferredItem AFRIT_ESSENCE = ITEMS.register("afrit_essence", + () -> new Item(defaultProperties())); + public static final DeferredItem MARID_ESSENCE = ITEMS.register("marid_essence", + () -> new Item(defaultProperties())); + public static final DeferredItem CRUELTY_ESSENCE = ITEMS.register("cruelty_essence", + () -> new Item(defaultProperties())); + public static final DeferredItem SPIRIT_ATTUNED_GEM = ITEMS.register("spirit_attuned_gem", + () -> new Item(defaultProperties())); public static final DeferredItem RAW_SILVER = ITEMS.register("raw_silver", () -> new Item(defaultProperties())); public static final DeferredItem RAW_IESNIUM = ITEMS.register("raw_iesnium", @@ -156,245 +292,98 @@ public class OccultismItems { () -> new Item(defaultProperties())); public static final DeferredItem IESNIUM_NUGGET = ITEMS.register("iesnium_nugget", () -> new Item(defaultProperties())); - - public static final DeferredItem OBSIDIAN_DUST = ITEMS.register("obsidian_dust", + //Dusts + public static final DeferredItem SILVER_DUST = ITEMS.register("silver_dust", + () -> new Item(defaultProperties())); + public static final DeferredItem IESNIUM_DUST = ITEMS.register("iesnium_dust", + () -> new Item(defaultProperties())); + public static final DeferredItem COPPER_DUST = ITEMS.register("copper_dust", () -> new Item(defaultProperties())); public static final DeferredItem IRON_DUST = ITEMS.register("iron_dust", () -> new Item(defaultProperties())); public static final DeferredItem GOLD_DUST = ITEMS.register("gold_dust", () -> new Item(defaultProperties())); - public static final DeferredItem COPPER_DUST = ITEMS.register("copper_dust", + public static final DeferredItem NETHERITE_SCRAP_DUST = ITEMS.register("netherite_scrap_dust", () -> new Item(defaultProperties())); - public static final DeferredItem SILVER_DUST = ITEMS.register("silver_dust", + public static final DeferredItem NETHERITE_DUST = ITEMS.register("netherite_dust", () -> new Item(defaultProperties())); - public static final DeferredItem IESNIUM_DUST = ITEMS.register("iesnium_dust", + public static final DeferredItem OBSIDIAN_DUST = ITEMS.register("obsidian_dust", + () -> new Item(defaultProperties())); + public static final DeferredItem LAPIS_DUST = ITEMS.register("lapis_dust", + () -> new Item(defaultProperties())); + public static final DeferredItem AMETHYST_DUST = ITEMS.register("amethyst_dust", + () -> new Item(defaultProperties())); + public static final DeferredItem EMERALD_DUST = ITEMS.register("emerald_dust", + () -> new Item(defaultProperties())); + public static final DeferredItem ECHO_DUST = ITEMS.register("echo_dust", + () -> new Item(defaultProperties())); + public static final DeferredItem RESEARCH_FRAGMENT_DUST = ITEMS.register("research_fragment_dust", + () -> new Item(defaultProperties())); + public static final DeferredItem WITHERITE_DUST = ITEMS.register("witherite_dust", + () -> new Item(defaultProperties())); + public static final DeferredItem DRAGONYST_DUST = ITEMS.register("dragonyst_dust", () -> new Item(defaultProperties())); - public static final DeferredItem CRUSHED_END_STONE = ITEMS.register("crushed_end_stone", () -> new Item(defaultProperties())); + public static final DeferredItem CRUSHED_CALCITE = ITEMS.register("crushed_calcite", + () -> new Item(defaultProperties())); + public static final DeferredItem CRUSHED_BLACKSTONE = ITEMS.register("crushed_blackstone", + () -> new Item(defaultProperties())); + public static final DeferredItem CRUSHED_ICE = ITEMS.register("crushed_ice", + () -> new Item(defaultProperties())); + public static final DeferredItem CRUSHED_PACKED_ICE = ITEMS.register("crushed_packed_ice", + () -> new Item(defaultProperties())); + public static final DeferredItem CRUSHED_BLUE_ICE = ITEMS.register("crushed_blue_ice", + () -> new Item(defaultProperties())); + public static final DeferredItem BURNT_OTHERSTONE = ITEMS.register("burnt_otherstone", + () -> new Item(defaultProperties())); + public static final DeferredItem OTHERWORLD_ASHES = ITEMS.register("otherworld_ashes", + () -> new Item(defaultProperties())); + public static final DeferredItem GRAY_PASTE = ITEMS.register("gray_paste", + () -> new Item(defaultProperties())); + public static final DeferredItem NATURE_PASTE = ITEMS.register("nature_paste", + () -> new Item(defaultProperties())); + //Components + public static final DeferredItem PURIFIED_INK = ITEMS.register("purified_ink", + () -> new Item(defaultProperties())); + public static final DeferredItem AWAKENED_FEATHER = ITEMS.register("awakened_feather", + () -> new Item(defaultProperties())); + public static final DeferredItem TABOO_BOOK = ITEMS.register("taboo_book", + () -> new Item(defaultProperties())); + public static final DeferredItem SPIRIT_ATTUNED_PICKAXE_HEAD = ITEMS.register("spirit_attuned_pickaxe_head", + () -> new Item(defaultProperties())); public static final DeferredItem LENSES = ITEMS.register("lenses", () -> new Item(defaultProperties())); public static final DeferredItem INFUSED_LENSES = ITEMS.register("infused_lenses", () -> new Item(defaultProperties())); public static final DeferredItem LENS_FRAME = ITEMS.register("lens_frame", () -> new Item(defaultProperties())); - - public static final DeferredItem STORAGE_REMOTE = ITEMS.register("storage_remote", - () -> new StorageRemoteItem(defaultProperties().stacksTo(1))); - - - public static final DeferredItem RITUAL_SATCHEL_T1 = ITEMS.register("ritual_satchel_t1", - () -> new SingleBlockRitualSatchelItem(defaultProperties() - .stacksTo(1).rarity(Rarity.RARE) - .component(DataComponents.CONTAINER, ItemContainerContents.EMPTY) - .component(OccultismDataComponents.SPIRIT_NAME, "(Not yet known)") - )); - - public static final DeferredItem RITUAL_SATCHEL_T2 = ITEMS.register("ritual_satchel_t2", - () -> new MultiBlockRitualSatchelItem(defaultProperties() - .stacksTo(1).rarity(Rarity.RARE) - .component(DataComponents.CONTAINER, ItemContainerContents.EMPTY) - .component(OccultismDataComponents.SPIRIT_NAME, "(Not yet known)") - )); - - public static final DeferredItem CHALK_WHITE = ITEMS.register("chalk_white", - () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), - () -> OccultismBlocks.CHALK_GLYPH_WHITE.get())); - public static final DeferredItem CHALK_GOLD = ITEMS.register("chalk_gold", - () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), - () -> OccultismBlocks.CHALK_GLYPH_GOLD.get())); - public static final DeferredItem CHALK_PURPLE = ITEMS.register("chalk_purple", - () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), - () -> OccultismBlocks.CHALK_GLYPH_PURPLE.get())); - public static final DeferredItem CHALK_RED = ITEMS.register("chalk_red", - () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), - () -> OccultismBlocks.CHALK_GLYPH_RED.get())); - public static final DeferredItem CHALK_LIGHT_GRAY = ITEMS.register("chalk_light_gray", - () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), - () -> OccultismBlocks.CHALK_GLYPH_LIGHT_GRAY.get())); - public static final DeferredItem CHALK_GRAY = ITEMS.register("chalk_gray", - () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), - () -> OccultismBlocks.CHALK_GLYPH_GRAY.get())); - public static final DeferredItem CHALK_BLACK = ITEMS.register("chalk_black", - () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), - () -> OccultismBlocks.CHALK_GLYPH_BLACK.get())); - public static final DeferredItem CHALK_BROWN = ITEMS.register("chalk_brown", - () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), - () -> OccultismBlocks.CHALK_GLYPH_BROWN.get())); - public static final DeferredItem CHALK_ORANGE = ITEMS.register("chalk_orange", - () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), - () -> OccultismBlocks.CHALK_GLYPH_ORANGE.get())); - public static final DeferredItem CHALK_LIME = ITEMS.register("chalk_lime", - () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), - () -> OccultismBlocks.CHALK_GLYPH_LIME.get())); - public static final DeferredItem CHALK_GREEN = ITEMS.register("chalk_green", - () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), - () -> OccultismBlocks.CHALK_GLYPH_GREEN.get())); - public static final DeferredItem CHALK_CYAN = ITEMS.register("chalk_cyan", - () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), - () -> OccultismBlocks.CHALK_GLYPH_CYAN.get())); - public static final DeferredItem CHALK_LIGHT_BLUE = ITEMS.register("chalk_light_blue", - () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), - () -> OccultismBlocks.CHALK_GLYPH_LIGHT_BLUE.get())); - public static final DeferredItem CHALK_BLUE = ITEMS.register("chalk_blue", - () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), - () -> OccultismBlocks.CHALK_GLYPH_BLUE.get())); - public static final DeferredItem CHALK_MAGENTA = ITEMS.register("chalk_magenta", - () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), - () -> OccultismBlocks.CHALK_GLYPH_MAGENTA.get())); - public static final DeferredItem CHALK_PINK = ITEMS.register("chalk_pink", - () -> new ChalkItem(defaultProperties().setNoRepair().durability(256), - () -> OccultismBlocks.CHALK_GLYPH_PINK.get())); - - public static final DeferredItem DIVINATION_ROD = ITEMS.register("divination_rod", - () -> new DivinationRodItem(defaultProperties().stacksTo(1))); - public static final DeferredItem BRUSH = ITEMS.register("brush", - () -> new BrushItem(defaultProperties().stacksTo(1))); - public static final DeferredItem BUTCHER_KNIFE = ITEMS.register("butcher_knife", - () -> new SwordItem(Tiers.IRON, defaultProperties().attributes(SwordItem.createAttributes(Tiers.IRON, 3, -2.4F)))); - - public static final DeferredItem SPIRIT_ATTUNED_PICKAXE_HEAD = ITEMS.register("spirit_attuned_pickaxe_head", + public static final DeferredItem OTHERSTONE_FRAME = ITEMS.register("otherstone_frame", () -> new Item(defaultProperties())); - public static final DeferredItem INFUSED_PICKAXE = ITEMS.register("infused_pickaxe", - () -> new InfusedPickaxeItem(OccultismTiers.SPIRIT_ATTUNED, defaultProperties() - .component(OccultismDataComponents.SPIRIT_NAME, "(Not yet known)") - .attributes(PickaxeItem.createAttributes(Tiers.DIAMOND, 1.0F, -2.8F)))); - public static final DeferredItem IESNIUM_PICKAXE = ITEMS.register("iesnium_pickaxe", - () -> new OtherworldPickaxeItem(OccultismTiers.IESNIUM, defaultProperties().attributes(PickaxeItem.createAttributes(Tiers.DIAMOND, 1.0F, -2.8F)))); - - public static final DeferredItem SOUL_GEM_ITEM = ITEMS.register("soul_gem", - () -> new SoulGemItem(defaultProperties().stacksTo(1))); - - public static final DeferredItem SOUL_SHARD_ITEM = ITEMS.register("soul_shard", - () -> new SoulShardItem(defaultProperties().stacksTo(1))); - - public static final DeferredItem SATCHEL = ITEMS.register("satchel", - () -> new SatchelItem(defaultProperties().stacksTo(1).rarity(Rarity.RARE) - .component(DataComponents.CONTAINER, ItemContainerContents.EMPTY) - .component(OccultismDataComponents.SPIRIT_NAME, "(Not yet known)") - )); - - public static final DeferredItem FAMILIAR_RING = ITEMS.register("familiar_ring", - () -> new FamiliarRingItem(defaultProperties().stacksTo(1).component(OccultismDataComponents.SPIRIT_NAME, "(Not yet known)"))); - - public static final DeferredItem PURIFIED_INK = ITEMS.register("purified_ink", + public static final DeferredItem WORMHOLE_FRAME = ITEMS.register("wormhole_frame", () -> new Item(defaultProperties())); - public static final DeferredItem AWAKENED_FEATHER = ITEMS.register("awakened_feather", + public static final DeferredItem OTHERSTONE_TABLET = ITEMS.register("otherstone_tablet", + () -> new Item(defaultProperties())); + public static final DeferredItem STORAGE_REMOTE_INERT = ITEMS.register("storage_remote_inert", () -> new Item(defaultProperties())); - public static final DeferredItem TABOO_BOOK = ITEMS.register("taboo_book", + public static final DeferredItem DIMENSIONAL_MATRIX = ITEMS.register("dimensional_matrix", + () -> new DimensionalMatrixItem(defaultProperties().component(OccultismDataComponents.SPIRIT_NAME, "(Not yet known)"))); + public static final DeferredItem MINING_DIMENSION_CORE_PIECE = ITEMS.register("mining_dim_core", () -> new Item(defaultProperties())); - //Books of Binding - public static final DeferredItem BOOK_OF_BINDING_EMPTY = ITEMS.register( - "book_of_binding_empty", () -> new BookOfBindingItem(defaultProperties().stacksTo(1))); - public static final DeferredItem BOOK_OF_BINDING_FOLIOT = ITEMS.register( - "book_of_binding_foliot", () -> new BookOfBindingItem(defaultProperties().stacksTo(1))); - public static final DeferredItem BOOK_OF_BINDING_BOUND_FOLIOT = ITEMS.register( - "book_of_binding_bound_foliot", () -> new BookOfBindingBoundItem(defaultProperties().stacksTo(1).component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN))); - public static final DeferredItem BOOK_OF_BINDING_DJINNI = ITEMS.register( - "book_of_binding_djinni", () -> new BookOfBindingItem(defaultProperties().stacksTo(1))); - public static final DeferredItem BOOK_OF_BINDING_BOUND_DJINNI = ITEMS.register( - "book_of_binding_bound_djinni", () -> new BookOfBindingBoundItem(defaultProperties().stacksTo(1).component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN))); - public static final DeferredItem BOOK_OF_BINDING_AFRIT = ITEMS.register( - "book_of_binding_afrit", () -> new BookOfBindingItem(defaultProperties().stacksTo(1))); - public static final DeferredItem BOOK_OF_BINDING_BOUND_AFRIT = ITEMS.register( - "book_of_binding_bound_afrit", () -> new BookOfBindingBoundItem(defaultProperties().stacksTo(1).component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN))); - public static final DeferredItem BOOK_OF_BINDING_MARID = ITEMS.register( - "book_of_binding_marid", () -> new BookOfBindingItem(defaultProperties().stacksTo(1))); - public static final DeferredItem BOOK_OF_BINDING_BOUND_MARID = ITEMS.register( - "book_of_binding_bound_marid", () -> new BookOfBindingBoundItem(defaultProperties().stacksTo(1).component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN))); - //Books of Calling - //Foliot - public static final DeferredItem BOOK_OF_CALLING_FOLIOT_LUMBERJACK = - ITEMS.register("book_of_calling_foliot_lumberjack", - () -> new BookOfCallingLumberjackItem(defaultProperties().stacksTo(1).component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN), - TranslationKeys.BOOK_OF_CALLING_GENERIC + "_foliot")); - public static final DeferredItem BOOK_OF_CALLING_FOLIOT_TRANSPORT_ITEMS = - ITEMS.register("book_of_calling_foliot_transport_items", - () -> new BookOfCallingTransportItems(defaultProperties().stacksTo(1).component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN), - TranslationKeys.BOOK_OF_CALLING_GENERIC + "_foliot")); - public static final DeferredItem BOOK_OF_CALLING_FOLIOT_CLEANER = - ITEMS.register("book_of_calling_foliot_cleaner", - () -> new BookOfCallingCleanerItem(defaultProperties().stacksTo(1).component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN), - TranslationKeys.BOOK_OF_CALLING_GENERIC + "_foliot")); - //Djinn - public static final DeferredItem BOOK_OF_CALLING_DJINNI_MANAGE_MACHINE = - ITEMS.register("book_of_calling_djinni_manage_machine", - () -> new BookOfCallingManageMachineItem(defaultProperties().stacksTo(1).component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN), - TranslationKeys.BOOK_OF_CALLING_GENERIC + "_djinni")); - - //Armor - public static final DeferredItem OTHERWORLD_GOGGLES = ITEMS.register("otherworld_goggles", - () -> new OtherworldGogglesItem(ArmorMaterials.IRON, - ArmorItem.Type.HELMET, defaultProperties().stacksTo(1))); + //Others + public static final DeferredItem SOUL_SHARD_ITEM = ITEMS.register("soul_shard", + () -> new SoulShardItem(defaultProperties().stacksTo(1))); //Machines + public static final DeferredItem SPIRIT_FIRE = + ITEMS.register("spirit_fire", () -> new BlockItem(OccultismBlocks.SPIRIT_FIRE.get(), defaultProperties())); public static final DeferredItem STABLE_WORMHOLE = ITEMS.register("stable_wormhole", () -> new StableWormholeBlockItem(OccultismBlocks.STABLE_WORMHOLE.get(), defaultProperties())); public static final DeferredItem STORAGE_CONTROLLER = ITEMS.register("storage_controller", () -> new StorageControllerBlockItem(OccultismBlocks.STORAGE_CONTROLLER.get(), defaultProperties())); - - //Crops - public static final DeferredItem DATURA_SEEDS = - ITEMS.register("datura_seeds", () -> new ItemNameBlockItem(OccultismBlocks.DATURA.get(), defaultProperties())); - - //Foods - public static final DeferredItem DATURA = ITEMS.register("datura", - () -> new SpiritHealingItem(defaultProperties().food(OccultismFoods.DATURA.get()))); - - public static final DeferredItem DEMONS_DREAM_ESSENCE = ITEMS.register("demons_dream_essence", - () -> new SpiritHealingItem(defaultProperties().food(OccultismFoods.DEMONS_DREAM_ESSENCE.get()))); - - public static final DeferredItem OTHERWORLD_ESSENCE = ITEMS.register("otherworld_essence", - () -> new SpiritHealingItem(defaultProperties().food(OccultismFoods.OTHERWORLD_ESSENCE.get()))); - - public static final DeferredItem BEAVER_NUGGET = ITEMS.register("beaver_nugget", - () -> new Item(defaultProperties().food(OccultismFoods.BEAVER_NUGGET.get()))); - - //Miner Spirits - public static final DeferredItem MAGIC_LAMP_EMPTY = ITEMS.register("magic_lamp_empty", - () -> new Item(defaultProperties())); - public static final DeferredItem MINER_DEBUG_UNSPECIALIZED = - ITEMS.register("miner_debug_unspecialized", - () -> new MinerSpiritItem(defaultProperties() - .component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN) - .durability(10000), () -> 100, () -> 10, () -> 10000)); - public static final DeferredItem MINER_FOLIOT_UNSPECIALIZED = ITEMS.register("miner_foliot_unspecialized", - () -> new MinerSpiritItem(defaultProperties() - .component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN) - .durability(1000), - Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerFoliotUnspecialized.maxMiningTime, - Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerFoliotUnspecialized.rollsPerOperation, - Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerFoliotUnspecialized.durability)); - public static final DeferredItem MINER_DJINNI_ORES = ITEMS.register("miner_djinni_ores", - () -> new MinerSpiritItem(defaultProperties().durability(400) - .component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN), - Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerDjinniOres.maxMiningTime, - Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerDjinniOres.rollsPerOperation, - Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerDjinniOres.durability)); - public static final DeferredItem MINER_AFRIT_DEEPS = ITEMS.register("miner_afrit_deeps", - () -> new MinerSpiritItem(defaultProperties().durability(800) - .component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN), - Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerAfritDeeps.maxMiningTime, - Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerAfritDeeps.rollsPerOperation, - Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerAfritDeeps.durability)); - public static final DeferredItem MINER_MARID_MASTER = ITEMS.register("miner_marid_master", - () -> new MinerSpiritItem(defaultProperties().durability(1600) - .component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN), - Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerMaridMaster.maxMiningTime, - Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerMaridMaster.rollsPerOperation, - Occultism.STARTUP_CONFIG.dimensionalMineshaft.minerMaridMaster.durability)); - - //JEI Dummy Items - public static final DeferredItem JEI_DUMMY_NONE = ITEMS.register( - "jei_dummy/none", () -> new DummyTooltipItem(new Item.Properties())); - public static final DeferredItem JEI_DUMMY_REQUIRE_SACRIFICE = ITEMS.register( - "jei_dummy/require_sacrifice", () -> new DummyTooltipItem(new Item.Properties())); - public static final DeferredItem JEI_DUMMY_REQUIRE_ITEM_USE = ITEMS.register( - "jei_dummy/require_item_use", () -> new DummyTooltipItem(new Item.Properties())); - //Deco Block Items public static final DeferredItem SPIRIT_TORCH = ITEMS.register("spirit_torch", () -> new StandingAndWallBlockItem(OccultismBlocks.SPIRIT_TORCH.get(), OccultismBlocks.SPIRIT_WALL_TORCH.get(), @@ -404,113 +393,183 @@ public class OccultismItems { public static final DeferredItem OTHERPLANKS_HANGING_SIGN = ITEMS.register("otherplanks_hanging_sign", () -> new HangingSignItem(OccultismBlocks.OTHERPLANKS_HANGING_SIGN.get(), OccultismBlocks.OTHERPLANKS_WALL_HANGING_SIGN.get(), new Item.Properties().stacksTo(16))); + //Spawn Eggs public static final DeferredItem SPAWN_EGG_FOLIOT = ITEMS.register("spawn_egg/foliot", - () -> new DeferredSpawnEggItem(OccultismEntities.FOLIOT_TYPE::get, 0xaa728d, 0x37222c, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.FOLIOT_TYPE, 0x8d5454, 0x1f1f1f, defaultProperties())); public static final DeferredItem SPAWN_EGG_DJINNI = ITEMS.register("spawn_egg/djinni", - () -> new DeferredSpawnEggItem(OccultismEntities.DJINNI_TYPE::get, 0xaa728d, 0x37222c, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.DJINNI_TYPE, 0x073f7c, 0xc9d631, defaultProperties())); public static final DeferredItem SPAWN_EGG_AFRIT = ITEMS.register("spawn_egg/afrit", - () -> new DeferredSpawnEggItem(OccultismEntities.AFRIT_TYPE::get, 0xaa728d, 0x37222c, defaultProperties())); - public static final DeferredItem SPAWN_EGG_AFRIT_WILD = ITEMS.register("spawn_egg/afrit_wild", - () -> new DeferredSpawnEggItem(OccultismEntities.AFRIT_WILD_TYPE::get, 0xaa728d, 0x37222c, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.AFRIT_TYPE, 0x5d241a, 0x946510, defaultProperties())); + public static final DeferredItem SPAWN_EGG_AFRIT_UNBOUND = ITEMS.register("spawn_egg/afrit_unbound", + () -> new DeferredSpawnEggItem(OccultismEntities.AFRIT_WILD_TYPE, 0x4d140a, 0x744500, defaultProperties())); public static final DeferredItem SPAWN_EGG_MARID = ITEMS.register("spawn_egg/marid", - () -> new DeferredSpawnEggItem(OccultismEntities.MARID_TYPE::get, 0xaa728d, 0x37222c, defaultProperties())); - + () -> new DeferredSpawnEggItem(OccultismEntities.MARID_TYPE, 0x396265, 0x57c786, defaultProperties())); + public static final DeferredItem SPAWN_EGG_MARID_UNBOUND = ITEMS.register("spawn_egg/marid_unbound", + () -> new DeferredSpawnEggItem(OccultismEntities.MARID_UNBOUND_TYPE, 0x394245, 0x57a766, defaultProperties())); public static final DeferredItem SPAWN_EGG_POSSESSED_ENDERMITE = ITEMS.register("spawn_egg/possessed_endermite", - () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_ENDERMITE_TYPE::get, 0x161616, 0x6E6E6E, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_ENDERMITE_TYPE, 0x161616, 0x6E6E6E, defaultProperties())); public static final DeferredItem SPAWN_EGG_POSSESSED_SKELETON = ITEMS.register("spawn_egg/possessed_skeleton", - () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_SKELETON_TYPE::get, 0xC1C1C1, 0x494949, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_SKELETON_TYPE, 0xC1C1C1, 0x494949, defaultProperties())); public static final DeferredItem SPAWN_EGG_POSSESSED_ENDERMAN = ITEMS.register("spawn_egg/possessed_enderman", - () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_ENDERMAN_TYPE::get, 0x161616, 0x0, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_ENDERMAN_TYPE, 0x161616, 0x0, defaultProperties())); public static final DeferredItem SPAWN_EGG_POSSESSED_GHAST = ITEMS.register("spawn_egg/possessed_ghast", - () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_GHAST_TYPE::get, 0xe2e2e2, 0xC1C1C1, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_GHAST_TYPE, 0xe2e2e2, 0xC1C1C1, defaultProperties())); public static final DeferredItem SPAWN_EGG_POSSESSED_PHANTOM = ITEMS.register("spawn_egg/possessed_phantom", - () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_PHANTOM_TYPE::get, 0x3f4c81, 0x6ccc00, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_PHANTOM_TYPE, 0x3f4c81, 0x6ccc00, defaultProperties())); public static final DeferredItem SPAWN_EGG_POSSESSED_WEAK_SHULKER = ITEMS.register("spawn_egg/possessed_weak_shulker", - () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_WEAK_SHULKER_TYPE::get, 0x8c628c, 0x342638, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_WEAK_SHULKER_TYPE, 0x8c628c, 0x342638, defaultProperties())); public static final DeferredItem SPAWN_EGG_POSSESSED_SHULKER = ITEMS.register("spawn_egg/possessed_shulker", - () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_SHULKER_TYPE::get, 0x8c628c, 0x342638, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_SHULKER_TYPE, 0x8c628c, 0x342638, defaultProperties())); public static final DeferredItem SPAWN_EGG_POSSESSED_ELDER_GUARDIAN = ITEMS.register("spawn_egg/possessed_elder_guardian", - () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_ELDER_GUARDIAN_TYPE::get, 0xb5b3a3, 0x4b4d60, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_ELDER_GUARDIAN_TYPE, 0xb5b3a3, 0x4b4d60, defaultProperties())); + public static final DeferredItem SPAWN_EGG_POSSESSED_WITCH = ITEMS.register("spawn_egg/possessed_witch", + () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_WITCH_TYPE, 0x280000, 0x346828, defaultProperties())); + public static final DeferredItem SPAWN_EGG_POSSESSED_ZOMBIE_PIGLIN = ITEMS.register("spawn_egg/possessed_zombie_piglin", + () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_ZOMBIE_PIGLIN_TYPE, 0xdb8a8a, 0x6a8c46, defaultProperties())); + public static final DeferredItem SPAWN_EGG_POSSESSED_BEE = ITEMS.register("spawn_egg/possessed_bee", + () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_BEE_TYPE, 0xd6b03c, 0x060606, defaultProperties())); + public static final DeferredItem SPAWN_EGG_GOAT_OF_MERCY = ITEMS.register("spawn_egg/possessed_goat", + () -> new DeferredSpawnEggItem(OccultismEntities.GOAT_OF_MERCY_TYPE, 0xa0a0a0, 0x835432, defaultProperties())); public static final DeferredItem SPAWN_EGG_WILD_HUNT_SKELETON = ITEMS.register("spawn_egg/wild_hunt_skeleton", - () -> new DeferredSpawnEggItem(OccultismEntities.WILD_HUNT_SKELETON_TYPE::get, 12698049, 4802889, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.WILD_HUNT_SKELETON_TYPE, 12698049, 4802889, defaultProperties())); public static final DeferredItem SPAWN_EGG_WILD_HUNT_WITHER_SKELETON = ITEMS.register("spawn_egg/wild_hunt_wither_skeleton", - () -> new DeferredSpawnEggItem(OccultismEntities.WILD_HUNT_WITHER_SKELETON_TYPE::get, 1315860, 4672845, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.WILD_HUNT_WITHER_SKELETON_TYPE, 1315860, 4672845, defaultProperties())); public static final DeferredItem SPAWN_EGG_POSSESSED_WARDEN = ITEMS.register("spawn_egg/possessed_warden", - () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_WARDEN_TYPE::get, 0x0f4649, 0x39d6e0, defaultProperties())); - + () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_WARDEN_TYPE, 0x0f4649, 0x39d6e0, defaultProperties())); public static final DeferredItem SPAWN_EGG_POSSESSED_HOGLIN = ITEMS.register("spawn_egg/possessed_hoglin", - () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_HOGLIN_TYPE::get, 0x592a10, 0xf9f3a4, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_HOGLIN_TYPE, 0x592a10, 0xf9f3a4, defaultProperties())); public static final DeferredItem SPAWN_EGG_WILD_HORDE_HUSK = ITEMS.register("spawn_egg/wild_horde_husk", - () -> new DeferredSpawnEggItem(OccultismEntities.WILD_HORDE_HUSK_TYPE::get, 0x5f584c, 0x92815e, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.WILD_HORDE_HUSK_TYPE, 0x5f584c, 0x92815e, defaultProperties())); public static final DeferredItem SPAWN_EGG_WILD_HORDE_DROWNED = ITEMS.register("spawn_egg/wild_horde_drowned", - () -> new DeferredSpawnEggItem(OccultismEntities.WILD_HORDE_DROWNED_TYPE::get, 0x7bcfb9, 0x577148, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.WILD_HORDE_DROWNED_TYPE, 0x7bcfb9, 0x577148, defaultProperties())); public static final DeferredItem SPAWN_EGG_WILD_HORDE_CREEPER = ITEMS.register("spawn_egg/wild_horde_creeper", - () -> new DeferredSpawnEggItem(OccultismEntities.WILD_HORDE_CREEPER_TYPE::get, 0x577148, 0x111111, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.WILD_HORDE_CREEPER_TYPE, 0x577148, 0x111111, defaultProperties())); public static final DeferredItem SPAWN_EGG_WILD_HORDE_SILVERFISH = ITEMS.register("spawn_egg/wild_horde_silverfish", - () -> new DeferredSpawnEggItem(OccultismEntities.WILD_HORDE_SILVERFISH_TYPE::get, 0x666666, 0x262626, defaultProperties())); - public static final DeferredItem SPAWN_EGG_POSSESSED_WEAK_BREEZE = ITEMS.register("spawn_egg/possessed_weak_breeze", - () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_WEAK_BREEZE_TYPE::get, 0xa289cf, 0x5d428f, defaultProperties())); - public static final DeferredItem SPAWN_EGG_POSSESSED_BREEZE = ITEMS.register("spawn_egg/possessed_breeze", - () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_BREEZE_TYPE::get, 0x9279bf, 0x4d327f, defaultProperties())); - public static final DeferredItem SPAWN_EGG_POSSESSED_STRONG_BREEZE = ITEMS.register("spawn_egg/possessed_strong_breeze", - () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_STRONG_BREEZE_TYPE::get, 0x8269af, 0x3d226f, defaultProperties())); - public static final DeferredItem SPAWN_EGG_POSSESSED_EVOKER = ITEMS.register("spawn_egg/possessed_evoker", - () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_EVOKER_TYPE::get, 0x8e9494, 0xcbc786, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.WILD_HORDE_SILVERFISH_TYPE, 0x666666, 0x262626, defaultProperties())); + public static final DeferredItem SPAWN_EGG_WILD_WEAK_BREEZE = ITEMS.register("spawn_egg/wild_weak_breeze", + () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_WEAK_BREEZE_TYPE, 0xa289cf, 0x5d428f, defaultProperties())); + public static final DeferredItem SPAWN_EGG_WILD_BREEZE = ITEMS.register("spawn_egg/wild_breeze", + () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_BREEZE_TYPE, 0x9279bf, 0x4d327f, defaultProperties())); + public static final DeferredItem SPAWN_EGG_WILD_STRONG_BREEZE = ITEMS.register("spawn_egg/wild_strong_breeze", + () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_STRONG_BREEZE_TYPE, 0x8269af, 0x3d226f, defaultProperties())); + public static final DeferredItem SPAWN_EGG_WILD_EVOKER = ITEMS.register("spawn_egg/wild_evoker", + () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_EVOKER_TYPE, 0x8e9494, 0xcbc786, defaultProperties())); public static final DeferredItem SPAWN_EGG_OTHERWORLD_BIRD = ITEMS.register("spawn_egg/otherworld_bird", - () -> new DeferredSpawnEggItem(OccultismEntities.OTHERWORLD_BIRD_TYPE::get, 0x221269, 0x6b56c4, defaultProperties())); - + () -> new DeferredSpawnEggItem(OccultismEntities.OTHERWORLD_BIRD_TYPE, 0x221269, 0x6b56c4, defaultProperties())); public static final DeferredItem SPAWN_EGG_GREEDY_FAMILIAR = ITEMS.register("spawn_egg/familiar_greedy", - () -> new DeferredSpawnEggItem(OccultismEntities.GREEDY_FAMILIAR_TYPE::get, 0x54990f, 0x725025, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.GREEDY_FAMILIAR_TYPE, 0x54990f, 0x725025, defaultProperties())); public static final DeferredItem SPAWN_EGG_BAT_FAMILIAR = ITEMS.register("spawn_egg/familiar_bat", - () -> new DeferredSpawnEggItem(OccultismEntities.BAT_FAMILIAR_TYPE::get, 0x434343, 0xda95de, defaultProperties())); - + () -> new DeferredSpawnEggItem(OccultismEntities.BAT_FAMILIAR_TYPE, 0x434343, 0xda95de, defaultProperties())); public static final DeferredItem SPAWN_EGG_DEER_FAMILIAR = ITEMS.register("spawn_egg/familiar_deer", - () -> new DeferredSpawnEggItem(OccultismEntities.DEER_FAMILIAR_TYPE::get, 0xc9833e, 0xfffdf2, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.DEER_FAMILIAR_TYPE, 0xc9833e, 0xfffdf2, defaultProperties())); public static final DeferredItem SPAWN_EGG_CTHULHU_FAMILIAR = ITEMS.register("spawn_egg/familiar_cthulhu", - () -> new DeferredSpawnEggItem(OccultismEntities.CTHULHU_FAMILIAR_TYPE::get, 0x00cdc2, 0x4ae7c0, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.CTHULHU_FAMILIAR_TYPE, 0x00cdc2, 0x4ae7c0, defaultProperties())); public static final DeferredItem SPAWN_EGG_DEVIL_FAMILIAR = ITEMS.register("spawn_egg/familiar_devil", - () -> new DeferredSpawnEggItem(OccultismEntities.DEVIL_FAMILIAR_TYPE::get, 0xf2f0d7, 0xa01d1d, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.DEVIL_FAMILIAR_TYPE, 0xf2f0d7, 0xa01d1d, defaultProperties())); public static final DeferredItem SPAWN_EGG_DRAGON_FAMILIAR = ITEMS.register("spawn_egg/familiar_dragon", - () -> new DeferredSpawnEggItem(OccultismEntities.DRAGON_FAMILIAR_TYPE::get, 0x18780f, 0x76c47b, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.DRAGON_FAMILIAR_TYPE, 0x18780f, 0x76c47b, defaultProperties())); public static final DeferredItem SPAWN_EGG_BLACKSMITH_FAMILIAR = ITEMS.register("spawn_egg/familiar_blacksmith", - () -> new DeferredSpawnEggItem(OccultismEntities.BLACKSMITH_FAMILIAR_TYPE::get, 0x06bc64, 0x2b2b2b, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.BLACKSMITH_FAMILIAR_TYPE, 0x06bc64, 0x2b2b2b, defaultProperties())); public static final DeferredItem SPAWN_EGG_GUARDIAN_FAMILIAR = ITEMS.register("spawn_egg/familiar_guardian", - () -> new DeferredSpawnEggItem(OccultismEntities.GUARDIAN_FAMILIAR_TYPE::get, 0x787878, 0x515151, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.GUARDIAN_FAMILIAR_TYPE, 0x787878, 0x515151, defaultProperties())); public static final DeferredItem SPAWN_EGG_HEADLESS_FAMILIAR = ITEMS.register("spawn_egg/familiar_headless", - () -> new DeferredSpawnEggItem(OccultismEntities.HEADLESS_FAMILIAR_TYPE::get, 0x0c0606, 0xde7900, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.HEADLESS_FAMILIAR_TYPE, 0x0c0606, 0xde7900, defaultProperties())); public static final DeferredItem SPAWN_EGG_CHIMERA_FAMILIAR = ITEMS.register("spawn_egg/familiar_chimera", - () -> new DeferredSpawnEggItem(OccultismEntities.CHIMERA_FAMILIAR_TYPE::get, 0xcf8441, 0x3e7922, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.CHIMERA_FAMILIAR_TYPE, 0xcf8441, 0x3e7922, defaultProperties())); public static final DeferredItem SPAWN_EGG_GOAT_FAMILIAR = ITEMS.register("spawn_egg/familiar_goat", - () -> new DeferredSpawnEggItem(OccultismEntities.GOAT_FAMILIAR_TYPE::get, 0xe2e2e2, 0x0f0f0e, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.GOAT_FAMILIAR_TYPE, 0xe2e2e2, 0x0f0f0e, defaultProperties())); public static final DeferredItem SPAWN_EGG_SHUB_NIGGURATH_FAMILIAR = ITEMS.register("spawn_egg/familiar_shub_niggurath", - () -> new DeferredSpawnEggItem(OccultismEntities.SHUB_NIGGURATH_FAMILIAR_TYPE::get, 0x362836, 0x594a3a, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.SHUB_NIGGURATH_FAMILIAR_TYPE, 0x362836, 0x594a3a, defaultProperties())); public static final DeferredItem SPAWN_EGG_BEHOLDER_FAMILIAR = ITEMS.register("spawn_egg/familiar_beholder", - () -> new DeferredSpawnEggItem(OccultismEntities.BEHOLDER_FAMILIAR_TYPE::get, 0x340a09, 0xfffbff, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.BEHOLDER_FAMILIAR_TYPE, 0x340a09, 0xfffbff, defaultProperties())); public static final DeferredItem SPAWN_EGG_FAIRY_FAMILIAR = ITEMS.register("spawn_egg/familiar_fairy", - () -> new DeferredSpawnEggItem(OccultismEntities.FAIRY_FAMILIAR_TYPE::get, 0xbd674c, 0xcca896, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.FAIRY_FAMILIAR_TYPE, 0xbd674c, 0xcca896, defaultProperties())); public static final DeferredItem SPAWN_EGG_MUMMY_FAMILIAR = ITEMS.register("spawn_egg/familiar_mummy", - () -> new DeferredSpawnEggItem(OccultismEntities.MUMMY_FAMILIAR_TYPE::get, 0xcbb76a, 0xe0d4a3, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.MUMMY_FAMILIAR_TYPE, 0xcbb76a, 0xe0d4a3, defaultProperties())); public static final DeferredItem SPAWN_EGG_BEAVER_FAMILIAR = ITEMS.register("spawn_egg/familiar_beaver", - () -> new DeferredSpawnEggItem(OccultismEntities.BEAVER_FAMILIAR_TYPE::get, 0x824a2b, 0xdd9973, defaultProperties())); + () -> new DeferredSpawnEggItem(OccultismEntities.BEAVER_FAMILIAR_TYPE, 0x824a2b, 0xdd9973, defaultProperties())); public static final DeferredItem SPAWN_EGG_PARROT_FAMILIAR = ITEMS.register("spawn_egg/familiar_parrot", () -> new DeferredSpawnEggItem(() -> EntityType.PARROT, 894731, 16711680, defaultProperties())); + public static final DeferredItem SPAWN_EGG_DEMONIC_WIFE = ITEMS.register("spawn_egg/demonic_wife", + () -> new DeferredSpawnEggItem(OccultismEntities.DEMONIC_WIFE, 0xf2f0d7, 0xa01d1d, defaultProperties())); + public static final DeferredItem SPAWN_EGG_DEMONIC_HUSBAND = ITEMS.register("spawn_egg/demonic_husband", + () -> new DeferredSpawnEggItem(OccultismEntities.DEMONIC_HUSBAND, 0xf2f0d7, 0xa01d1d, defaultProperties())); - public static final DeferredItem SPAWN_EGG_DEMONIC_WIFE = ITEMS.register("spawn_egg/demonic_wife", () -> new DeferredSpawnEggItem(OccultismEntities.DEMONIC_WIFE::get, 0xf2f0d7, 0xa01d1d, defaultProperties())); - public static final DeferredItem SPAWN_EGG_DEMONIC_HUSBAND = ITEMS.register("spawn_egg/demonic_husband", () -> new DeferredSpawnEggItem(OccultismEntities.DEMONIC_HUSBAND::get, 0xf2f0d7, 0xa01d1d, defaultProperties())); - + // TO DO: make all public static final + //Ritual Dummy Items + static { + // SUMMON + // Foliot + ITEMS.register("ritual_dummy/summon_foliot_crusher", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/summon_foliot_lumberjack", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/summon_foliot_otherstone_trader", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/summon_foliot_sapling_trader", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/summon_foliot_transport_items", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/summon_foliot_cleaner", () -> new DummyTooltipItem(defaultProperties())); + } public static final DeferredItem RITUAL_DUMMY_SUMMON_DEMONIC_WIFE = ITEMS.register("ritual_dummy/summon_demonic_wife", () -> new DummyTooltipItem(defaultProperties())); public static final DeferredItem RITUAL_DUMMY_SUMMON_DEMONIC_HUSBAND = ITEMS.register("ritual_dummy/summon_demonic_husband", () -> new DummyTooltipItem(defaultProperties())); + static { + //Djinni + ITEMS.register("ritual_dummy/summon_djinni_crusher", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/summon_djinni_clear_weather", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/summon_djinni_day_time", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/summon_djinni_manage_machine", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/summon_djinni_night_time", () -> new DummyTooltipItem(defaultProperties())); - public static final DeferredItem RITUAL_DUMMY_RESURRECT_FAMILIAR = ITEMS.register("ritual_dummy/resurrect_familiar", () -> new DummyTooltipItem(defaultProperties())); - public static final DeferredItem RITUAL_DUMMY_SUMMON_RANDOM_ANIMAL = ITEMS.register("ritual_dummy/summon_random_animal", () -> new DummyTooltipItem(defaultProperties())); - public static final DeferredItem RITUAL_DUMMY_CRAFT_RITUAL_SATCHEL_T1 = ITEMS.register("ritual_dummy/craft_ritual_satchel_t1", () -> new DummyTooltipItem(defaultProperties())); - public static final DeferredItem RITUAL_DUMMY_CRAFT_RITUAL_SATCHEL_T2 = ITEMS.register("ritual_dummy/craft_ritual_satchel_t2", () -> new DummyTooltipItem(defaultProperties())); + //Afrit + ITEMS.register("ritual_dummy/summon_unbound_afrit", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/summon_afrit_crusher", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/summon_afrit_rain_weather", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/summon_afrit_thunder_weather", () -> new DummyTooltipItem(defaultProperties())); + + //Marid + ITEMS.register("ritual_dummy/summon_unbound_marid", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/summon_marid_crusher", () -> new DummyTooltipItem(defaultProperties())); + + //POSSESS + //Familiar + ITEMS.register("ritual_dummy/familiar_beaver", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/familiar_blacksmith", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/familiar_deer", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/familiar_greedy", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/familiar_parrot", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/possess_unbound_parrot", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/familiar_bat", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/familiar_beholder", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/familiar_chimera", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/familiar_cthulhu", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/familiar_devil", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/familiar_dragon", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/familiar_fairy", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/familiar_headless", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/familiar_mummy", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/familiar_otherworld_bird", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/possess_unbound_otherworld_bird", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/familiar_guardian", () -> new DummyTooltipItem(defaultProperties())); + + //Possessed + ITEMS.register("ritual_dummy/possess_endermite", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/possess_skeleton", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/possess_phantom", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/possess_enderman", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/possess_ghast", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/possess_warden", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/possess_weak_shulker", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/possess_elder_guardian", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/possess_hoglin", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/possess_shulker", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/possess_witch", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/possess_zombie_piglin", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/possess_bee", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/possess_goat", () -> new DummyTooltipItem(defaultProperties())); + } + + public static final DeferredItem RITUAL_DUMMY_POSSESS_RANDOM_ANIMAL = ITEMS.register("ritual_dummy/possess_random_animal", () -> new DummyTooltipItem(defaultProperties())); - //Ritual Dummy Items static { - ITEMS.register("ritual_dummy/custom_ritual", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/craft_wild_trim", () -> new DummyTooltipItem(defaultProperties())); + // CRAFT ITEMS.register("ritual_dummy/craft_dimensional_matrix", () -> new DummyTooltipItem(defaultProperties())); ITEMS.register("ritual_dummy/craft_dimensional_mineshaft", () -> new DummyTooltipItem(defaultProperties())); ITEMS.register("ritual_dummy/craft_infused_lenses", () -> new DummyTooltipItem(defaultProperties())); @@ -529,61 +588,95 @@ public class OccultismItems { ITEMS.register("ritual_dummy/craft_stable_wormhole", () -> new DummyTooltipItem(defaultProperties())); ITEMS.register("ritual_dummy/craft_storage_controller_base", () -> new DummyTooltipItem(defaultProperties())); ITEMS.register("ritual_dummy/craft_storage_remote", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/familiar_otherworld_bird", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/familiar_parrot", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/familiar_greedy", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/familiar_bat", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/familiar_deer", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/familiar_cthulhu", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/familiar_devil", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/familiar_dragon", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/familiar_blacksmith", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/familiar_guardian", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/familiar_headless", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/familiar_chimera", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/familiar_beholder", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/familiar_fairy", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/familiar_mummy", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/familiar_beaver", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/possess_enderman", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/possess_endermite", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/possess_skeleton", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/possess_ghast", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/possess_phantom", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/possess_weak_shulker", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/possess_shulker", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/possess_elder_guardian", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/possess_warden", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/possess_hoglin", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_afrit_rain_weather", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_afrit_thunder_weather", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_djinni_clear_weather", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_djinni_day_time", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_djinni_manage_machine", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_djinni_night_time", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_foliot_lumberjack", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_foliot_otherstone_trader", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_foliot_sapling_trader", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_foliot_transport_items", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_foliot_cleaner", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_wild_afrit", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_wild_hunt", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_wild_husk", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_wild_drowned", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_wild_creeper", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_wild_silverfish", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/possess_weak_breeze", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/possess_breeze", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/possess_strong_breeze", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_horde_illager", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_wild_otherworld_bird", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_wild_parrot", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_allay", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_foliot_crusher", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_djinni_crusher", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_afrit_crusher", () -> new DummyTooltipItem(defaultProperties())); - ITEMS.register("ritual_dummy/summon_marid_crusher", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/craft_nature_paste", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/craft_gray_paste", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/craft_research_fragment_dust", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/craft_witherite_dust", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/craft_dragonyst_dust", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/repair_chalks", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/repair_tools", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/repair_armors", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/repair_miners", () -> new DummyTooltipItem(defaultProperties())); } + public static final DeferredItem RITUAL_DUMMY_CRAFT_RITUAL_SATCHEL_T1 = ITEMS.register("ritual_dummy/craft_ritual_satchel_t1", () -> new DummyTooltipItem(defaultProperties())); + public static final DeferredItem RITUAL_DUMMY_CRAFT_RITUAL_SATCHEL_T2 = ITEMS.register("ritual_dummy/craft_ritual_satchel_t2", () -> new DummyTooltipItem(defaultProperties())); + public static final DeferredItem RITUAL_DUMMY_CRAFT_MINER_ANCIENT_ELDRITCH = ITEMS.register("ritual_dummy/craft_miner_ancient_eldritch", () -> new DummyTooltipItem(defaultProperties())); + public static final DeferredItem RITUAL_DUMMY_RESURRECT_FAMILIAR = ITEMS.register("ritual_dummy/resurrect_familiar", () -> new DummyTooltipItem(defaultProperties())); + + static { + //CONTACT and others + ITEMS.register("ritual_dummy/resurrect_allay", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/craft_wild_trim", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/wild_hunt", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/wild_husk", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/wild_drowned", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/wild_creeper", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/wild_silverfish", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/wild_weak_breeze", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/wild_breeze", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/wild_strong_breeze", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/wild_horde_illager", () -> new DummyTooltipItem(defaultProperties())); + + // CUSTOM + ITEMS.register("ritual_dummy/custom_ritual_summon", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/custom_ritual_possess", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/custom_ritual_craft", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/custom_ritual_misc", () -> new DummyTooltipItem(defaultProperties())); + } + public static final DeferredItem RITUAL_DUMMY_CRAFT_BUDDING_AMETHYST = ITEMS.register("ritual_dummy/craft_budding_amethyst", + () -> new DummyTooltipItem(defaultProperties())); + + public static final DeferredItem RITUAL_DUMMY_CRAFT_REINFORCED_DEEPSLATE= ITEMS.register("ritual_dummy/craft_reinforced_deepslate", + () -> new DummyTooltipItem(defaultProperties())); + + //Debug + public static final DeferredItem DEBUG_WAND = ITEMS.register("debug_wand", + () -> new DebugWandItem(defaultProperties().stacksTo(1))); + public static final DeferredItem DEBUG_FOLIOT_LUMBERJACK = ITEMS.register("debug_foliot_lumberjack", + () -> new SummonFoliotLumberjackItem(defaultProperties().stacksTo(1))); + public static final DeferredItem DEBUG_FOLIOT_TRANSPORT_ITEMS = + ITEMS.register("debug_foliot_transport_items", + () -> new SummonFoliotTransportItemsItem(defaultProperties().stacksTo(1))); + public static final DeferredItem DEBUG_FOLIOT_CLEANER = + ITEMS.register("debug_foliot_cleaner", + () -> new SummonFoliotCleanerItem(defaultProperties().stacksTo(1))); + public static final DeferredItem DEBUG_FOLIOT_TRADER_ITEM = ITEMS.register("debug_foliot_trader", + () -> new SummonFoliotTraderItem(defaultProperties().stacksTo(1))); + public static final DeferredItem DEBUG_DJINNI_MANAGE_MACHINE = ITEMS.register("debug_djinni_manage_machine", + () -> new SummonDjinniManageMachineItem(defaultProperties().stacksTo(1))); + public static final DeferredItem DEBUG_DJINNI_TEST = ITEMS.register("debug_djinni_test", + () -> new SummonDjinniTest(defaultProperties().stacksTo(1))); + public static final DeferredItem MINER_DEBUG_UNSPECIALIZED = + ITEMS.register("miner_debug_unspecialized", + () -> new MinerSpiritItem(defaultProperties() + .component(OccultismDataComponents.SPIRIT_NAME, TextUtil.SPIRIT_NAME_NOT_YET_KNOWN) + .durability(10000), () -> 100, () -> 10, () -> 10000)); + + //Placeholders + public static final DeferredItem DICTIONARY_OF_SPIRITS_ICON = + ITEMS.register("dictionary_of_spirits_icon", () -> new Item(new Item.Properties())); + + public static final DeferredItem PENTACLE_SUMMON = ITEMS.register("pentacle_summon", + () -> new Item(defaultProperties())); + public static final DeferredItem PENTACLE_POSSESS = ITEMS.register("pentacle_possess", + () -> new Item(defaultProperties())); + public static final DeferredItem PENTACLE_CRAFT = ITEMS.register("pentacle_craft", + () -> new Item(defaultProperties())); + public static final DeferredItem PENTACLE_MISC = + ITEMS.register("pentacle_misc", () -> new Item(defaultProperties())); + public static final DeferredItem ADVANCEMENT_ICON = + ITEMS.register("advancement_icon", () -> new Item(new Item.Properties())); + public static final DeferredItem REPAIR_ICON = + ITEMS.register("repair_icon", () -> new Item(defaultProperties())); + public static final DeferredItem RESURRECT_ICON = + ITEMS.register("resurrect_icon", () -> new Item(defaultProperties())); + //JEI Dummy Items + public static final DeferredItem JEI_DUMMY_NONE = ITEMS.register( + "jei_dummy/none", () -> new DummyTooltipItem(new Item.Properties())); + public static final DeferredItem JEI_DUMMY_REQUIRE_SACRIFICE = ITEMS.register( + "jei_dummy/require_sacrifice", () -> new DummyTooltipItem(new Item.Properties())); + public static final DeferredItem JEI_DUMMY_REQUIRE_ITEM_USE = ITEMS.register( + "jei_dummy/require_item_use", () -> new DummyTooltipItem(new Item.Properties())); public static Item.Properties defaultProperties() { //historically used to add to occultism tab @@ -591,14 +684,17 @@ public static Item.Properties defaultProperties() { } public static boolean shouldSkipCreativeModTab(Item item) { - if (item == PENTACLE.get() + if (item == PENTACLE_SUMMON.get() + || item == PENTACLE_POSSESS.get() + || item == PENTACLE_CRAFT.get() + || item == PENTACLE_MISC.get() || item == DICTIONARY_OF_SPIRITS_ICON.get() - || item == DICTIONARY_OF_SPIRITS.get() || item == ADVANCEMENT_ICON.get() || item == JEI_DUMMY_NONE.get() || item == JEI_DUMMY_REQUIRE_SACRIFICE.get() || item == JEI_DUMMY_REQUIRE_ITEM_USE.get() -// || item == FAMILIAR_RING.get() + || item == REPAIR_ICON.get() + || item == RESURRECT_ICON.get() ) return true; @@ -608,6 +704,12 @@ public static boolean shouldSkipCreativeModTab(Item item) { return false; } + public static boolean laterCreativeModTab(Item item) { + return item.toString().contains("ritual_dummy") + || item.toString().contains("debug") + || item.toString().contains("spawn_egg"); + } + public static boolean shouldPregenerateSpiritName(Item item) { return item == BOOK_OF_BINDING_BOUND_FOLIOT.get() || item == BOOK_OF_BINDING_BOUND_DJINNI.get() @@ -627,6 +729,7 @@ public static boolean shouldPregenerateSpiritName(Item item) { || item == MINER_DJINNI_ORES.get() || item == MINER_AFRIT_DEEPS.get() || item == MINER_MARID_MASTER.get() + || item == MINER_ANCIENT_ELDRITCH.get() || item == MINER_DEBUG_UNSPECIALIZED.get(); } } diff --git a/src/main/java/com/klikli_dev/occultism/registry/OccultismRituals.java b/src/main/java/com/klikli_dev/occultism/registry/OccultismRituals.java index 4251f258d..a6973d32f 100644 --- a/src/main/java/com/klikli_dev/occultism/registry/OccultismRituals.java +++ b/src/main/java/com/klikli_dev/occultism/registry/OccultismRituals.java @@ -76,6 +76,9 @@ public class OccultismRituals { public static final DeferredHolder CRAFT_MINER_SPIRIT = RITUAL_FACTORIES.register("craft_miner_spirit", () -> new RitualFactory(CraftMinerSpiritRitual::new)); + public static final DeferredHolder REPAIR = + RITUAL_FACTORIES.register("repair", + () -> new RitualFactory(RepairRitual::new)); //Other public static final DeferredHolder COMMAND = diff --git a/src/main/java/com/klikli_dev/occultism/registry/OccultismTags.java b/src/main/java/com/klikli_dev/occultism/registry/OccultismTags.java index f480e709a..c3e69eca2 100644 --- a/src/main/java/com/klikli_dev/occultism/registry/OccultismTags.java +++ b/src/main/java/com/klikli_dev/occultism/registry/OccultismTags.java @@ -43,6 +43,9 @@ public static class Blocks { public static final TagKey NETHERRACK = makeBlockTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "netherrack")); public static final TagKey CANDLES = makeBlockTag(ResourceLocation.fromNamespaceAndPath("minecraft", "candles")); + public static final TagKey FOUNDATION_GLYPHS_ANY = makeBlockTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "foundation_glyphs_any")); + public static final TagKey FOUNDATION_GLYPHS_NO_WHITE = makeBlockTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "foundation_glyphs_no_white")); + public static final TagKey FOUNDATION_GLYPHS_DARK = makeBlockTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "foundation_glyphs_dark")); public static final TagKey CHALK_GLYPHS = makeBlockTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "chalk_glyphs")); public static final TagKey IESNIUM_ORE = makeBlockTag(ResourceLocation.fromNamespaceAndPath("c", "ores/iesnium")); public static final TagKey SILVER_ORE = makeBlockTag(ResourceLocation.fromNamespaceAndPath("c", "ores/silver")); @@ -53,6 +56,7 @@ public static class Blocks { public static final TagKey STORAGE_BLOCKS_RAW_SILVER = makeBlockTag(ResourceLocation.fromNamespaceAndPath("c", "storage_blocks/raw_silver")); public static final TagKey OTHERWORLD_SAPLINGS = makeBlockTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "saplings/otherworld")); + public static final TagKey OTHERWORLD_SAPLINGS_NATURAL = makeBlockTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "saplings/otherworld_natural")); public static final TagKey OCCULTISM_CANDLES = makeBlockTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "candles")); public static final TagKey STORAGE_STABILIZER = makeBlockTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "storage_stabilizer")); public static final TagKey OTHERWORLD_LOGS = makeBlockTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "otherworld_logs")); @@ -63,6 +67,7 @@ public static class Items { public static final TagKey PENTACLE_MATERIALS = makeItemTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "pentacle_materials")); public static final TagKey SKULLS = makeItemTag(ResourceLocation.fromNamespaceAndPath("c", "skulls")); public static final TagKey OCCULTISM_CANDLES = makeItemTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "candles")); + public static final TagKey SCUTESHELL = makeItemTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "armored_items")); public static final TagKey DEMONIC_PARTNER_FOOD = makeItemTag(ResourceLocation.fromNamespaceAndPath("occultism", "demonic_partner_food")); @@ -86,6 +91,23 @@ public static class Items { public static final TagKey OBSIDIAN_DUST=makeItemTag(ResourceLocation.fromNamespaceAndPath("c", "dusts/obsidian")); public static final TagKey BLAZE_DUST = makeItemTag(ResourceLocation.fromNamespaceAndPath("c", "dusts/blaze")); + public static final TagKey AMETHYST_DUST = makeItemTag(ResourceLocation.fromNamespaceAndPath("c","dusts/amethyst")); + public static final TagKey BLACKSTONE_DUST = makeItemTag(ResourceLocation.fromNamespaceAndPath("c","dusts/blackstone")); + public static final TagKey BLUE_ICE_DUST = makeItemTag(ResourceLocation.fromNamespaceAndPath("c","dusts/blue_ice")); + public static final TagKey CALCITE_DUST = makeItemTag(ResourceLocation.fromNamespaceAndPath("c","dusts/calcite")); + public static final TagKey ICE_DUST = makeItemTag(ResourceLocation.fromNamespaceAndPath("c","dusts/ice")); + public static final TagKey PACKED_ICE_DUST = makeItemTag(ResourceLocation.fromNamespaceAndPath("c","dusts/packed_ice")); + public static final TagKey DRAGONYST_DUST = makeItemTag(ResourceLocation.fromNamespaceAndPath("c","dusts/dragonyst")); + public static final TagKey ECHO_DUST = makeItemTag(ResourceLocation.fromNamespaceAndPath("c","dusts/echo")); + public static final TagKey EMERALD_DUST = makeItemTag(ResourceLocation.fromNamespaceAndPath("c","dusts/emerald")); + public static final TagKey LAPIS_DUST = makeItemTag(ResourceLocation.fromNamespaceAndPath("c","dusts/lapis")); + public static final TagKey NETHERITE_DUST = makeItemTag(ResourceLocation.fromNamespaceAndPath("c","dusts/netherite")); + public static final TagKey NETHERITE_SCRAP_DUST = makeItemTag(ResourceLocation.fromNamespaceAndPath("c","dusts/netherite_scrap")); + public static final TagKey RESEARCH_DUST = makeItemTag(ResourceLocation.fromNamespaceAndPath("c","dusts/research")); + public static final TagKey WITHERITE_DUST = makeItemTag(ResourceLocation.fromNamespaceAndPath("c","dusts/witherite")); + public static final TagKey OTHERSTONE_DUST = makeItemTag(ResourceLocation.fromNamespaceAndPath("c","dusts/otherstone")); + public static final TagKey OTHERWORLD_WOOD_DUST = makeItemTag(ResourceLocation.fromNamespaceAndPath("c","dusts/otherworld_wood")); + public static final TagKey DATURA_CROP = makeItemTag(ResourceLocation.fromNamespaceAndPath("c", "crops/datura")); // Ingots @@ -118,6 +140,7 @@ public static class Items { public static final TagKey METAL_AXES = makeItemTag(ResourceLocation.fromNamespaceAndPath("c", "tools/metal/axes")); public static final TagKey OTHERWORLD_SAPLINGS = makeItemTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "saplings/otherworld")); + public static final TagKey OTHERWORLD_SAPLINGS_NATURAL = makeItemTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "saplings/otherworld_natural")); public static class Miners { public static final TagKey MINERS = makeItemTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miners")); @@ -126,6 +149,7 @@ public static class Miners { public static final TagKey DEEPS = makeItemTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miners/deeps")); public static final TagKey MASTER = makeItemTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miners/master")); public static final TagKey ORES = makeItemTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miners/ores")); + public static final TagKey ELDRITCH = makeItemTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "miners/eldritch")); } public static final TagKey TOOLS_CHALK = makeItemTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "tools/chalk")); @@ -136,7 +160,7 @@ public static class Miners { public static class Entities { public static final TagKey> AXOLOTL = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "axolotls")); - public static final TagKey> CHICKEN = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "chicken")); + public static final TagKey> CHICKEN = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "chickens")); public static final TagKey> PARROTS = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "parrots")); public static final TagKey> PIGS = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "pigs")); public static final TagKey> COWS = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "cows")); @@ -155,7 +179,16 @@ public static class Entities { public static final TagKey> PANDAS = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "pandas")); public static final TagKey> SHEEP = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "sheep")); public static final TagKey> SPIDERS = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "spiders")); - public static final TagKey> SQUID = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "squid")); + public static final TagKey> SQUID = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "squids")); + public static final TagKey> TADPOLES = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "tadpoles")); + public static final TagKey> CAMEL = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "camels")); + public static final TagKey> DOLPHIN = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "dolphins")); + public static final TagKey> WOLFS = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "wolfs")); + public static final TagKey> OCELOT = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "ocelots")); + public static final TagKey> CATS = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "cats")); + public static final TagKey> WARDEN = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "wardens")); + public static final TagKey> VEX = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "vex")); + public static final TagKey> ALLAY = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "allay")); //Entity Tags public static final TagKey> SOUL_GEM_DENY_LIST = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "soul_gem_deny_list")); public static final TagKey> AFRIT_ALLIES = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "afrit_allies")); @@ -165,11 +198,6 @@ public static class Entities { public static final TagKey> CUBEMOB = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "cubemob")); public static final TagKey> FLYING_PASSIVE = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "flying_passive")); public static final TagKey> HUMANS = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "humans")); - public static final TagKey> CAMEL = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "camel")); - public static final TagKey> DOLPHIN = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "dolphin")); - public static final TagKey> WOLFS = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "wolfs")); - public static final TagKey> OCELOT = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ocelot")); - public static final TagKey> VEX = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "vex")); public static final TagKey> RANDOM_ANIMALS_TO_SUMMON_LIST = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "random_animals_to_summon_list")); } diff --git a/src/main/resources/assets/occultism/animations/entity/marid.animation.json b/src/main/resources/assets/occultism/animations/entity/marid.animation.json new file mode 100644 index 000000000..08c36edee --- /dev/null +++ b/src/main/resources/assets/occultism/animations/entity/marid.animation.json @@ -0,0 +1,706 @@ +{ + "format_version": "1.8.0", + "animations": { + "idle": { + "loop": true, + "animation_length": 2, + "bones": { + "1": { + "rotation": { + "0.0": { + "vector": [0, 0, 2.5] + }, + "1.0": { + "vector": [0, 0, -5] + }, + "2.0": { + "vector": [0, 0, 2.5] + } + } + }, + "2": { + "rotation": { + "0.0": { + "vector": [-9.99067, -0.43399, -2.46207] + }, + "1.0": { + "vector": [-9.96271, 0.86717, 4.92442] + }, + "2.0": { + "vector": [-9.99067, -0.43399, -2.46207] + } + } + }, + "3": { + "rotation": { + "0.0": { + "vector": [7.49294, -0.32621, 2.47864] + }, + "1.0": { + "vector": [7.43656, 0.9762, -7.43656] + }, + "2.0": { + "vector": [7.49294, -0.32621, 2.47864] + } + } + }, + "Torso": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0.5, 0] + }, + "2.0": { + "vector": [0, 0, 0] + } + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "Lhand": { + "rotation": { + "0.0": { + "vector": [7.5, 0, -10] + }, + "1.0": { + "vector": [7.49294, 0.32621, -12.47864] + }, + "2.0": { + "vector": [7.5, 0, -10] + } + } + }, + "bone": { + "rotation": { + "vector": [-27.5, 0, 0] + } + }, + "Rhand": { + "rotation": { + "0.0": { + "vector": [-32.84189, -17.1222, 29.57358] + }, + "1.0": { + "vector": [-32.84189, -17.1222, 29.57358] + }, + "2.0": { + "vector": [-32.84189, -17.1222, 29.57358] + } + }, + "position": { + "vector": [0, 0, 0] + } + }, + "bone2": { + "rotation": { + "vector": [-14.75008, 58.82558, 27.10954] + }, + "position": { + "vector": [0, 0, 0] + } + }, + "Tail": { + "rotation": { + "vector": [0, 0, 0] + } + }, + "bone3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, -180, 0] + }, + "2.0": { + "vector": [0, -357.5, 0] + } + } + }, + "bone4": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 180, 0] + }, + "2.0": { + "vector": [0, 360, 0] + } + } + }, + "bone5": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, -180, 0] + }, + "2.0": { + "vector": [0, -357.5, 0] + } + } + }, + "chest": { + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "1.0": { + "vector": [1.07, 1, 1] + }, + "2.0": { + "vector": [1, 1, 1] + } + } + } + } + }, + "walk": { + "loop": true, + "animation_length": 2, + "bones": { + "1": { + "rotation": { + "0.0": { + "vector": [0, 0, 2.5] + }, + "1.0": { + "vector": [0, 0, -5] + }, + "2.0": { + "vector": [0, 0, 2.5] + } + } + }, + "2": { + "rotation": { + "0.0": { + "vector": [-9.99067, -0.43399, -2.46207] + }, + "1.0": { + "vector": [-9.96271, 0.86717, 4.92442] + }, + "2.0": { + "vector": [-9.99067, -0.43399, -2.46207] + } + } + }, + "3": { + "rotation": { + "0.0": { + "vector": [7.49294, -0.32621, 2.47864] + }, + "1.0": { + "vector": [7.43656, 0.9762, -7.43656] + }, + "2.0": { + "vector": [7.49294, -0.32621, 2.47864] + } + } + }, + "Torso": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0.5, 0] + }, + "2.0": { + "vector": [0, 0, 0] + } + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "Lhand": { + "rotation": { + "0.0": { + "vector": [-29, 0, -10] + }, + "1.0": { + "vector": [-33, 0, -10] + }, + "2.0": { + "vector": [-29, 0, -10] + } + } + }, + "bone": { + "rotation": { + "vector": [-27.5, 0, 0] + } + }, + "Rhand": { + "rotation": { + "0.0": { + "vector": [21, 0, 12.5] + }, + "1.0": { + "vector": [18, 0, 12.5] + }, + "2.0": { + "vector": [21, 0, 12.5] + } + } + }, + "bone2": { + "rotation": { + "vector": [-21.43432, -6.18092, -9.24859] + }, + "position": { + "vector": [0, 0.5, -0.4] + } + }, + "Tail": { + "rotation": { + "vector": [0, 0, 0] + } + }, + "bone3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, -180, 0] + }, + "2.0": { + "vector": [0, -357.5, 0] + } + } + }, + "bone4": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 180, 0] + }, + "2.0": { + "vector": [0, 360, 0] + } + } + }, + "bone5": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, -180, 0] + }, + "2.0": { + "vector": [0, -357.5, 0] + } + } + }, + "chest": { + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "1.0": { + "vector": [1.07, 1, 1] + }, + "2.0": { + "vector": [1, 1, 1] + } + } + }, + "All": { + "rotation": { + "vector": [8, 0, 0] + } + } + } + }, + "AttackAfrit": { + "loop": "hold_on_last_frame", + "animation_length": 0.5, + "bones": { + "1": { + "rotation": { + "0.0": { + "vector": [0, 0, 2.5] + }, + "0.25": { + "vector": [0, 0, -5] + }, + "0.5": { + "vector": [0, 0, 2.5] + } + } + }, + "2": { + "rotation": { + "0.0": { + "vector": [-9.99067, -0.43399, -2.46207] + }, + "0.25": { + "vector": [-9.96271, 0.86717, 4.92442] + }, + "0.5": { + "vector": [-9.99067, -0.43399, -2.46207] + } + } + }, + "3": { + "rotation": { + "0.0": { + "vector": [7.49294, -0.32621, 2.47864] + }, + "0.25": { + "vector": [7.43656, 0.9762, -7.43656] + }, + "0.5": { + "vector": [7.49294, -0.32621, 2.47864] + } + } + }, + "Torso": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, -45, 0] + }, + "0.2917": { + "vector": [0, -2, 0] + }, + "0.5": { + "vector": [0, 0, 0] + } + }, + "position": { + "vector": [0, 0, 0] + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "Lhand": { + "rotation": { + "vector": [7.5, 0, -10] + } + }, + "bone": { + "rotation": { + "vector": [-27.5, 0, 0] + } + }, + "Rhand": { + "rotation": { + "0.0": { + "vector": [-10, 0, 12.5] + }, + "0.2083": { + "vector": [-55.11756, -17.98449, 37.66083] + }, + "0.25": { + "vector": [-43.96521, 11.10344, 43.241] + }, + "0.2917": { + "vector": [-4.05266, -5.23211, 27.36235] + }, + "0.375": { + "vector": [-13.12996, 0.13083, 34.13127] + }, + "0.5": { + "vector": [-10, 0, 12.5] + } + } + }, + "bone2": { + "rotation": { + "0.0": { + "vector": [-12, -17.5, 0] + }, + "0.25": { + "vector": [-32, -17.5, 0] + }, + "0.2917": { + "vector": [10.20951, -5.54343, -1.04318] + }, + "0.5": { + "vector": [-12, -17.5, 0] + } + } + }, + "Tail": { + "rotation": { + "vector": [0, 0, 0] + } + }, + "bone3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, -180, 0] + }, + "0.5": { + "vector": [0, -357.5, 0] + } + } + }, + "bone4": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 180, 0] + }, + "0.5": { + "vector": [0, 360, 0] + } + } + }, + "bone5": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, -180, 0] + }, + "0.5": { + "vector": [0, -357.5, 0] + } + } + }, + "chest": { + "scale": { + "vector": [1, 1, 1] + } + }, + "Head": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 45, 0] + }, + "0.2917": { + "vector": [0, 5.75, 0] + }, + "0.4167": { + "vector": [0, 0, 0] + } + } + }, + "bone6": { + "position": { + "vector": [0, 0, -6] + } + } + } + }, + "attack": { + "loop": "hold_on_last_frame", + "animation_length": 0.5, + "bones": { + "1": { + "rotation": { + "0.0": { + "vector": [0, 0, 2.5] + }, + "0.25": { + "vector": [0, 0, -5] + }, + "0.5": { + "vector": [0, 0, 2.5] + } + } + }, + "2": { + "rotation": { + "0.0": { + "vector": [-9.99067, -0.43399, -2.46207] + }, + "0.25": { + "vector": [-9.96271, 0.86717, 4.92442] + }, + "0.5": { + "vector": [-9.99067, -0.43399, -2.46207] + } + } + }, + "3": { + "rotation": { + "0.0": { + "vector": [7.49294, -0.32621, 2.47864] + }, + "0.25": { + "vector": [7.43656, 0.9762, -7.43656] + }, + "0.5": { + "vector": [7.49294, -0.32621, 2.47864] + } + } + }, + "Torso": { + "rotation": { + "0.0": { + "vector": [0, 27.5, 0] + }, + "0.125": { + "vector": [0, -24.5, 0] + }, + "0.25": { + "vector": [0, -24.5, 0] + }, + "0.5": { + "vector": [0, 27.5, 0] + } + }, + "position": { + "vector": [0, 0, 0] + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "Lhand": { + "rotation": { + "vector": [7.5, 0, -10] + } + }, + "bone": { + "rotation": { + "vector": [-27.5, 0, 0] + } + }, + "Rhand": { + "rotation": { + "0.0": { + "vector": [44, 0, 12.5] + }, + "0.125": { + "vector": [-20.9419, 16.88077, 6.15879] + }, + "0.25": { + "vector": [-20.9419, 16.88077, 6.15879] + }, + "0.5": { + "vector": [44, 0, 12.5] + } + } + }, + "bone2": { + "rotation": { + "0.0": { + "vector": [-41, -17.5, 0] + }, + "0.125": { + "vector": [1.00475, -3.99745, 2.31019] + }, + "0.25": { + "vector": [1.00475, -3.99745, 2.31019] + }, + "0.5": { + "vector": [-41, -17.5, 0] + } + } + }, + "Tail": { + "rotation": { + "vector": [0, 0, 0] + } + }, + "bone3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, -180, 0] + }, + "0.5": { + "vector": [0, -357.5, 0] + } + } + }, + "bone4": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 180, 0] + }, + "0.5": { + "vector": [0, 360, 0] + } + } + }, + "bone5": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, -180, 0] + }, + "0.5": { + "vector": [0, -357.5, 0] + } + } + }, + "chest": { + "scale": { + "vector": [1, 1, 1] + } + }, + "Head": { + "rotation": { + "0.0": { + "vector": [0, -27.5, 0] + }, + "0.125": { + "vector": [0, 23.5, 0] + }, + "0.25": { + "vector": [0, 23.5, 0] + }, + "0.5": { + "vector": [0, -27.5, 0] + } + } + }, + "bone6": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.125": { + "vector": [12, 0, 0] + }, + "0.25": { + "vector": [12, 0, 0] + }, + "0.5": { + "vector": [0, 0, 0] + } + }, + "position": { + "vector": [0, 0, -6] + } + } + } + } + }, + "geckolib_format_version": 2 +} \ No newline at end of file diff --git a/src/main/resources/assets/occultism/geo/entity/marid.geo.json b/src/main/resources/assets/occultism/geo/entity/marid.geo.json new file mode 100644 index 000000000..b7d70f355 --- /dev/null +++ b/src/main/resources/assets/occultism/geo/entity/marid.geo.json @@ -0,0 +1,189 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.marid_worker", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 5, + "visible_bounds_height": 3.5, + "visible_bounds_offset": [0, 1.25, 0] + }, + "bones": [ + { + "name": "All", + "pivot": [0, 0, 0] + }, + { + "name": "Torso", + "parent": "All", + "pivot": [0, 22, 0] + }, + { + "name": "Head", + "parent": "Torso", + "pivot": [0, 0, 0], + "cubes": [ + {"origin": [-2.5, 32, -3], "size": [5, 4, 5], "uv": [32, 0]}, + { + "origin": [0, 33, -1], + "size": [0, 5, 6], + "pivot": [0, 39, 1], + "rotation": [-20, 0, 0], + "uv": { + "north": {"uv": [2, 2], "uv_size": [0, 5]}, + "east": {"uv": [2, 2], "uv_size": [6, 5]}, + "south": {"uv": [8, 2], "uv_size": [0, 5]}, + "west": {"uv": [2, 2], "uv_size": [6, 5]}, + "up": {"uv": [2, -4], "uv_size": [0, 6]}, + "down": {"uv": [2, 2], "uv_size": [0, -6]} + } + }, + {"origin": [0.8, 30.1, -3.8], "size": [1.3, 2.9, 0.8], "pivot": [-0.6, 32, -3.3], "rotation": [-37.65617, -5.52676, -7.11422], "uv": [2, 2], "mirror": true}, + {"origin": [1.2, 29, -4.4], "size": [0.8, 2.2, 0.4], "uv": [2, 2]}, + {"origin": [-2.1, 30.1, -3.8], "size": [1.3, 2.9, 0.8], "pivot": [0.6, 32, -3.3], "rotation": [-37.65617, 5.52676, 7.11422], "uv": [2, 2]}, + {"origin": [-2, 29, -4.4], "size": [0.8, 2.2, 0.4], "uv": [2, 2], "mirror": true} + ] + }, + { + "name": "Lhand", + "parent": "Torso", + "pivot": [5.5, 30, 0], + "cubes": [ + {"origin": [5, 23, -2], "size": [3, 8, 4], "uv": [46, 45]} + ] + }, + { + "name": "bone", + "parent": "Lhand", + "pivot": [6.5, 23.5, 0], + "cubes": [ + {"origin": [5.2, 17.5, -1.8], "size": [2.6, 6, 3.6], "uv": [50, 7]} + ] + }, + { + "name": "Rhand", + "parent": "Torso", + "pivot": [-5.5, 30, 0], + "cubes": [ + {"origin": [-8, 23, -2], "size": [3, 8, 4], "uv": [0, 40]}, + {"origin": [-7.4, 30, -1], "size": [0.9, 4.2, 0.8], "pivot": [-5.5, 30, 0], "rotation": [-28.62959, -4.82924, -8.76703], "uv": [2, 2]}, + {"origin": [-7.4, 30, -1], "size": [0.9, 4.2, 0.8], "pivot": [-5.5, 30, 0], "rotation": [-22.70162, -18.54587, -37.24556], "uv": [2, 2]} + ] + }, + { + "name": "bone2", + "parent": "Rhand", + "pivot": [-6.5, 23, 0], + "cubes": [ + {"origin": [-7.8, 17.3, -1.8], "size": [2.6, 5.7, 3.7], "uv": [50, 17]} + ] + }, + { + "name": "bone6", + "parent": "bone2", + "pivot": [-6.4, 18.7, 6], + "cubes": [ + { + "origin": [-7, 18.3, -8.9], + "size": [1, 1.2, 34.1], + "pivot": [-6.4, 18.7, 0], + "rotation": [0, 0, -37.5], + "uv": { + "north": {"uv": [32, 63], "uv_size": [1, 1]}, + "east": {"uv": [0, 63], "uv_size": [32, 1]}, + "south": {"uv": [65, 63], "uv_size": [1, 1]}, + "west": {"uv": [33, 63], "uv_size": [32, 1]}, + "up": {"uv": [32, 57], "uv_size": [1, 6]}, + "down": {"uv": [33, 63], "uv_size": [1, -5.5]} + } + }, + {"origin": [-9.4, 18.1, -8.9], "size": [6, 1.6, 2], "pivot": [-6.4, 18.7, 0], "rotation": [0, 0, -37.5], "uv": [18, 44]}, + {"origin": [-9.1, 18.5, -13.8], "size": [1.2, 0.9, 4.9], "pivot": [-6.4, 18.7, 0], "rotation": [0, 0, -37.5], "uv": [36, 55]}, + {"origin": [-7.1, 18.5, -13.8], "size": [1.2, 0.9, 4.9], "pivot": [-6.4, 18.7, 0], "rotation": [0, 0, -37.5], "uv": [34, 52]}, + {"origin": [-5.1, 18.5, -13.8], "size": [1.2, 0.9, 4.9], "pivot": [-6.4, 18.7, 0], "rotation": [0, 0, -37.5], "uv": [25, 57]} + ] + }, + { + "name": "chest", + "parent": "Torso", + "pivot": [0, 4, 0], + "cubes": [ + {"origin": [-5, 26, -3], "size": [10, 6, 6], "uv": [0, 16]}, + {"origin": [-3, 20, -2.2], "size": [6, 8, 4.7], "uv": [0, 28]} + ] + }, + { + "name": "Rhand2", + "parent": "Torso", + "pivot": [5.5, 30, 0], + "cubes": [ + {"origin": [6.5, 30, -1], "size": [0.9, 4.2, 0.8], "pivot": [5.5, 30, 0], "rotation": [-22.70162, 18.54587, 37.24556], "uv": [2, 2], "mirror": true} + ] + }, + { + "name": "Rhand3", + "parent": "Torso", + "pivot": [5.5, 30, 0], + "cubes": [ + {"origin": [6.5, 30, -1], "size": [0.9, 4.2, 0.8], "pivot": [5.5, 30, 0], "rotation": [-28.62959, 4.82924, 8.76703], "uv": [2, 2], "mirror": true} + ] + }, + { + "name": "Tail", + "parent": "All", + "pivot": [0, 0, 0] + }, + { + "name": "1", + "parent": "Tail", + "pivot": [0, 19, 0], + "cubes": [ + {"origin": [-2.9, 15.1, -2.1], "size": [5.8, 8, 4.9], "uv": [16, 36]} + ] + }, + { + "name": "bone3", + "parent": "1", + "pivot": [0, 19, 0], + "cubes": [ + {"origin": [-4.4, 15, -4.2], "size": [8.8, 8, 8.4], "uv": [0, 0]} + ] + }, + { + "name": "2", + "parent": "Tail", + "pivot": [0, 12, 0], + "cubes": [ + {"origin": [-2, 9, -1.6], "size": [4, 7, 3.6], "uv": [14, 48]} + ] + }, + { + "name": "bone4", + "parent": "2", + "pivot": [0, 12, 0], + "cubes": [ + {"origin": [-3, 8, -3], "size": [6, 8, 5.9], "uv": [27, 23]} + ] + }, + { + "name": "3", + "parent": "Tail", + "pivot": [0, 4, 0], + "cubes": [ + {"origin": [-1, 4, -1], "size": [2, 5, 2], "uv": [0, 0]} + ] + }, + { + "name": "bone5", + "parent": "3", + "pivot": [0, 5, 0], + "cubes": [ + {"origin": [-2, -0.3, -2], "size": [4, 9, 4], "uv": [34, 36]} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/occultism/textures/entity/old_zombie_piglin.png b/src/main/resources/assets/occultism/textures/entity/old_zombie_piglin.png new file mode 100644 index 0000000000000000000000000000000000000000..4fa57234e32dc1ad006490d4820ed8a9a3e0cdbb GIT binary patch literal 4404 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 delta 41109 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 xu1pzr z_vOeUCJiJGCqfW3P#PkM1kXU*m*5P3x8if#z@sxgN^Xio%p|=*r^3}3$&{wYNSFmz zL6GHg-qb63M_|GWvwMuA^NUii+oR)LX1}K z%^MOHp68i0`S9xd6ukRdYv_;OmOA2q5PeHX-iYg&lw~Ewa|S28@?tNz_;LBZGiz=f zA2Mei>B4EzslZ?Biu_*HySPrER2<}&srLvmx;>bne}4_Hy3KC!FF%9vT`q-pu&i)A!+kx$>!;77qjM^R>0yZRh#P*H;~a^N&q;pfo!s$wu)q9t1qSRu#Lp#IP!BZfSQ@ zO~4pyJ?%`=#Xq`tXlf&%S1f&b%8NZ?;BIMpS=plH)(x7Uf8ASl?92N0f5DG7g=XIj z$ygJ#gRp=7S^xITUuMR~pS)LfVEH*0QfM6YI^?oAaFgUx$H>n69ry2DXWe_50Ucu) zj&Y73_zaY2Dh^6f9v;S5>NGS2)hRHVMWY8b3PFMZiyl!XVyw3m*VzFcYX#jaqBuTZCjgE+722iRomL z-NckEB+J8PB(ctbk=Qgg4WoFX-PIrM4?MD3CU!jC%ukO zqYn>%1FtpqvHorZrLe zLZHew{`wSy+MW)oq+@DK15AxzRmM9@PLhVp-gww3NWe9EyB8q)9ZM6gdP~+jvDq~C zbovGY+~457WBodJyD_i|59dpC$`o68Qi+gkTc3~WlsL+_|Hb_M89W$cQdvwDN@cVC zU@Di*R8Uc+KgMDzm@Ge-(+5hbHJT8u60<=8a2gJ9xC$m$$%YwJe-_N5vQY(-%0)R! z00ApG7=kF+97Z3ADFz%=C8F*dl?@67Pzt63Wigo?suG3~Dx1SqQWbs}kE%peY?KXi z8C(U=4uvZD6Lkg+0=5&^APE>C{59Ehv)B^Nl(jG!%-M5D8+!04U64^I;yJ$%%qtK8M3+F{m($5BIUx zp|~pTe_7kwha~9P^bp(#)=#sGdU|RaHn-=k=T(i{n~6lSw*?Nrsz;4iI z!~nk@85mt)64Kv{!d|{?L+2m-^zOqyxB`Iwu*iGy`+=?xbiEe??`8ad5M2VvxuH~HTO)L@XoQ{MZz2(>Y}Y7nzA$O z%jAin!mo+$A~(^UrUe!TuWNNG{fVk!WK)fNxN_CqWsCFczTa0|bjcqlKPOdxHetf! zjK}l6cR3KoSJyj!6jpW3d*=NN_~j3~hF!@1W>9e`?Z(j=YX{no`*`L}&>`~2CmxGh~f zQre;KmVHUBOd3{0L|}(Z2S>`4;EF$K*SH2t(zB-?qoIFyo=El{6TMWGi#Zd-mIvP0 z%6>j=>21RKy2r&yi+97H_G@2RT{*leN#ah*)j-&O5pxYM-E!j&t8b4j&Q0MGZ zJ#m6lBy=m$puboL1O7W&atU#G)|zHK1?(XwH( z>i}zPz{Z5Uy$PAKuT8kr8nt1RReVEKzz)uD^E?qnuRZnI$*(r#bZp+~C0iSod{*u7 z%cGNoDT74igy+rA_O-{Kf9O{}?C8D4A>UgU)jj`oY{g$b4SSzIX>5?X3Ytx$pxLLk zS!F3Frp%B3V&u7?1$fOiOg6@=a`;HEy~(?0c?Vt^GM>s%^Ptvy+P1QdoCA(8>gBCD zGm-6WrCq+~%QtpC46J^2u<|jFUJk_&rc@lE6zKk-W4M{(zmMyD?@h#cV@&yq$R5`z1{3t(Uktl!{ z=-fEIl5_Ua?;lyci#3k7XWrt5r9^%c4V4eR3;%__e0sV_xS{Qr{Pj=RO{a2$O4Vh> z5tpw7lmu5RB&BN7>iUJb(aXAKZ3&Fe>_1c<-}Q%QnEUY~HEW)hfGGk=gCiv02gPUo E2ZK@SNB{r; literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/occultism/textures/gui/book/pentacle.png b/src/main/resources/assets/occultism/textures/gui/book/pentacle.png new file mode 100644 index 0000000000000000000000000000000000000000..65d1fb8f1497afb4d10af7384bd5867bf7a0ec8e GIT binary patch literal 1395 zcmV-(1&sQMP) z1Zn}SP2d7BgKfvSC=dKws|7bl&}!oWSbJyN9W{9n-djm}0ca&lMX-5b8mHjGYkT2e zjp1nhs0X-4PXlZKbM+hn4;$Li6`*K-160p)N+6zTJqY8$kS3eP2f~ zI9txD42ZL`!UFuDs;!r4!ae{rDZr3`1wa=8wg`C9m==j#sdxuU0Obr|dxEht=m130 zEZsF&F9H401pPHImw-{#1j9AZ09kLlV7uRenBR7>fT;~OfNBE+7}`Kzg|Ps-HrQuX zJBZ(hvF-!19mMa$&=q2Ml`<`Jg+3@tNpc z9n%6Z=VtSsngQcJp1263-vK?i$=!r$!NKxuRfGXx+>0QdhrczE88L1bfY?trFygh_gNKU3~&+`nN$^qiVqL%d}3m0b$TqoIL^N5+KYt=3pH-8+s$WT3`!z2%#2c zF=_`Ezzk+35rBh^J1pjH3#{b8JAm7czyZi2Z?gcCi;LSBfCh9GVB#LUB(R>q4Cn%2 ztegQqVLPEa0KEVUL!0}#CoreQ9&ntug8-VB|0@GsfF&;tcyXNw;7*c50Z89M6fq?n z=F$UZ5|vUi39tbMGKu%OJ70104SiwA;zNKq2qt19)*R#sh{tVJNpq@TGS@34$<2 zx4e~LaNh}nFuu9vP5H3vhkIU$`H%Xw0BN+P4W;pbf*=T^1=1L4g1oucA93W3wFz{p ztO*F>xuu9g!_SUsfIQG!V3VKAhe@fZ2GBX}b+DYCEXhI;IgA?cb2EPA!ma|=^#1}Q z7k1TWK_kEOb4pc#j?Y?DsHzG=(-anpxdiFHl5k4U^E(Q4RRAqhIGaTRR$mJ7Jb}Ed zrBGQ3SZ68hZn^;beJ2qVVBGTEF&_)Sl~KNvRYn3swkRA+pg3y+HJnocV&?V<+N}b- zm;ZMl!6(_hU&Zl93Es&iNCLS=eSY!3{4f7T`2};Uw#7C`*s}lt002ovPDHLkV1g5u BSuy|s literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/occultism/textures/gui/book/redstone_clone.png b/src/main/resources/assets/occultism/textures/gui/book/redstone_clone.png new file mode 100644 index 0000000000000000000000000000000000000000..59a06fe3023ddfdfa136a9fb12365d40bfd90621 GIT binary patch literal 127207 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 QU*M*zZKzdx^-jqD0sENQQvd(} literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/occultism/textures/gui/book/rod_far.png b/src/main/resources/assets/occultism/textures/gui/book/rod_far.png index 182beeabdcc5de36e2d53fe20b1ae4ac4ace2034..be6776fba780b51d103ae9b173fa4601978bb48d 100644 GIT binary patch literal 31751 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%0An{ zsZ$+YMtOw-Lkr!jyb=rBFD-8PWA5Z#7h=N&>vchB8YDjLWNnYEVUhgw!6HgA^e8<{ zlDBgW#f0>Ci^XkiL1l!SWJIG@tYx2t*vKF&D~1GQjMo=jvgc?c<{=IwqBk{u)^CCfcKckb*;7c&_>o055zsfq1nH87wWpE7Z)$Bu03azNl3H$Y=gu`uJJV^!k%&1&Hy56ys$FXa3k7sV zTiDu>$}($FfY|e;FMVmJg%M27nGr8q^q%t_uv!}LC@gX5lX;M9DGK@S^oiCK4BjB0 z%XMx#*x4z;;9(~{{nfpDgJU6i=3#zy%RU2$kH*KD@C1cvW?+|j$_l&IWCh81h14%L zsbL#LZf~U-sXRVR00>h@EYg{Rsk6jiL2Z|Sl39~u0*w5XZnsn#=)?*N(O819+|I7EgB+X8U< zE$rzjAXrL!ef^SNf@6aMGM9^`g9i_YLrEhiHG>H&JelhrMRZ;$3=S4><|&uHDMF+_ zm_oE=Wst9Qd1*B=oWwwzs;zLv=~v?bjs<|Ip$%->v?;q2;>Bk(WVo%_aAf`z=$-Lg zYi~}Uj~l@fS&R@P^MGV^u?N{ccC$FI2agLWRhSk%Pk&&Ou4f?7wk?bSJM3Pc0n{t( z4;=Np&iM%Fy=-=1Af>RpXB@9lke3jsWJ_!e1Cf>M?A#c13WjUV<2@cM!{|d%lx{L5 zgY3c=GvzX}zkF&X@8`qG3zo@8$Ye4F<8ZJQBr3#xy%94)0OnBAMetQb6CRS&?xh4} zk2q3^oBOgNRe&Y5yk!Qbal&@N|Fa}7IrYANNeA^Tw%*^Vs5DMgoDE%eUlr06zn z>gX`gGszo4WJDThuvFMwz^Wj2(Q;r4?9IezBI!BO%-O7hza#e85_2Q=>B#3WDu!9o zf?Aw$@i<@JCt1nBEWR~LFCb2_I?G8sOW zo%e>ZHQ+=HccIhorYr(^C+fna$vFj$zd~*<=NGXug`1S{in2_A3PUC$Yq$1a@CO<-+gxUuH}BMC)hyJauSm_{NG() zO0pw;aS<+Zh>Gw7e!Yv$5!ihy1O`QkOeROJ$$*4@Ua{tgG*u1>2LlfgZeS)2zK4N# zL1H&R0SKz!ymJHRE(K_$QCOFak7BLvdSBtNWpdB7%H^zV%Z(M=9DAWb7*C$SR5Se;;o)=_g(e?(-6@N zg}6NhTm-gOSi#5TX3n*u&X+>H$`U)GFwH}M2DN8y1IcuE({J~5q4gtJtnaTi_lK}a zBVxJgWe*a4>~z-LT%=W;_;2zmi= z2%sU#nc}i@%%;gAaioCzG$aVwk1*h53Uk303(CTA#I99r1H_n(f{te*_y%5gpYFma z4G!Xf5QFtK0vN9MN@A}M25yXWH)C=Eh^!>6!Pm>Dq0wvh`%UOF;i*{mcEAwu^m zFPlQ`bZ;=W)a%!W0pO6I&BF&DT8Ps&v1Ii@-Y?_h`RJoBz4Q_sm@?^bI0(2zDHO?k4~2y-Mq^5tj*AH%}&D`+|`;+Uv(K?ofph7zxMW^Z0%0|Unc zCxzv_z9SAlkb=d`1DdN;)!2!ERMQX}cfx^Uxk#75p3y?i10XoqXbYUrvxpP5J9<2;cEe(Bh4lRS{gGNm_bxT?1Ap++O^9Mhuea)9SFef+Y_>)9+X6{zy3PV zT(}l`@-lCAlrP$(ED6bP9}Z5@4l)ZO90>p<*T^fE>4MT&9Z z1o(3qipd6dg1XQimthCj&9b*ls;q}s9Hdy2Q0!tkUV=Yoi*O>BNB#%HgqWdD^WT9V zhE3<`uI}!P%(*e7eMr+~FxU+(i*w*r&PE|y#5+)pNd5XOHG&ukp^U&V0tH_mymqI2(8TFtD`5f|JL_}0?48oYud43ZGbh|6;{&*G{@S%IbrDQvOu*SP zG<10FDq_s}{r$cDM1e7i=JpxDZVU2;dMOg{2uB=Alvh%Afq3y!%R*^~03?CqsvM$W z?1drN3Izx?@1f>s!NKAz7fU>|;`COXhg)$=Vgyx@65!46DKgeMF@(qCDeUke#b;UF zkYipREPJXiZ(D?GHxA&IxDw4n89Fb@)#ZVKU6F9k%W1)l+1?0%NdX(<3GtmXhwH%W ziTD~ZnC!}U95@c(C;{wAr!~0wT(8j(zdD*oDCJO(wH%uh)>v;O($bvBC=`)2c8W!$ zReN}A1#Gf~yb1Qclriloi4!?-+B!~K^P2mi@p?#ic9|UzWrZC`95u{Y3%HNvGH(oU zR8}iC@6)$6EFmDpTX2!D=7d+417$JC7@m{X@8`5&j)xkT;bbHUsq-uPVF*mF3!^Z+ z{#C~`J@(i)B6Rc3H`BLkuDKFyVWHIkhx~A#Zq9}|Km{IQ3t}0o0D(jt;)qTf z4M|rU-r$-Z-Z_@bp^(a*lyDQWIZXuT90#db3PkRV`siyEn!P~uT3^^C;~&+BfMjSC z0D4Ye@66hC_BrDKjuyb1KhXdYI2F&k`Ou+1{^37~zWCLzev!WD8|dkqZ@v=QYpK8p zrWGuG6Mj;OV|PvC<2Xqgi{vtQaZfBC@x?mUcDlL>7^p_)gT;%aSVK}QoYTu?Ua+aN z_Uq&lSnj#|?)&=Jzy33#?ZFx09RL6biAh93RQ_q3{wf|pYg+%#2&flqQ@Tl;vfF_-3WdE```cW7r#mX@;U1kvL%Cqe6#>B zGfE-JfG7gK9#ZqX-4U)I6BkqAIGZB0Ar9^8!7KET)hWaMAVG@4qHWci;2K zBadAZr$dLn`o){~d$ecYzWv0aH$VN=yYIddhYVp7g2M|Gm9W#%+c!bH2A>4ke3NYl zRvdS9cwwT8|_ewUF(H-_G$ON&chv{k=!O@SWlQesY7?2BULB zRn^^*BG}Tuz8-+rZ`^p^it|99``qWw``n5Zk3DeF{{5HmJv?~cx#ynuZ36HU8}Z}M ziRTerfBn;6ycxf{V#RrfAH3|cSN`z3-~I6?U%dP7Z8qn(6mMNZp4(Zxv#JbYNEtCQ zy7RrgN0<%w%L!Get&P7%si?Tg>^RaRu0}auQMxK2>fPcR|z^T7~ z{j%QP{`T!_5$MKaup`le?QP=#9!&sOtho5%i_bk5U*}$Y-kv=S;OB4;#6J`O(i6SM zaEk!^Dgj78zIexj5B~VazyGh_|Nj1;kO*(%{Us1jVLaeTc94rHdrg+uwa5o^Dgr{n zwTry*OEaD1^r3+!$EWjR87=)HmY~2`>&VgqLezxm@)$^T_w;1G9R<(>sjp9*nnE7$ zGI4HIWj0`>GMqRk7jodaj2&<}mjL`41BiPo02U!j9QeQkpV)XFaT^{6)1A8l0Nzc% zOF!T7g&+U^_y6^Oe(-~L7(nC%b(BIdzJnYJ+X*fcpz$xu@rEuo3J3rTm!guI$#fuQ zEFq(a&bZeL=1Q!!zKE#`KTl?6$_@qgGic4OOSh=POlM(NyOr=JBVVOi#|6gmlb7x zm884qJ{QXH_IBU*t>?NSFF-K%SMg&l6x-{>bK?Mx6@VU{8vuAQJ&S7Z(e2 zeO@5K7n2Bo^RmCZ^UkXa`}?;sfHrIUREiHDH3lJxMwSIn^#*ycqZP{n#H^EE;tGkx zV>v2sJ>yiE!8sdC^a2|^or2DrZj8ic`P47GT4;uU@e9#_hX31U4nr)^b4W9`SKyeC zm%+nx&aY>M1z4;I3BX6-#;^eqR^(h^LT;T(F?!`NHeBom|cI;TV_Pq1H z%|=AQ#%^#4>Pk76i$#he45&a5t8-)=*X3H=MTDA1K8NVUf?HEA^Yf4o%Xgx2jJFM< zID_y6L&FwEy>KABq&#}xeF1`B&q6K87KD%LtLeE7C(z4;Ku1K_tHae=I^hF&o&d~?M0TPxg=YaOH_26t)ETQ00P0y_%enhrD&W|m9iI)Tb5-wyJRv^r! z{{i6Th=ql-!u~Z`VFK`g2#!5p`g42sJpJ^cIditZe#s>wI6iOJF1Es*6k+uY7B#LB za3B0Q;1yFiH*>Tk__5dH$KKv#06+2R7`^k(Jh4q)eKwwY8l+wls6*vSmOp{^&VP|8#`3fBzvamBi`Lp+ni*J-U-)u}hzLLfrlTh;Dc8 zBzoeBurXxK;1f?c4u-|);U~JDxRdD#cq>ovulOWhauB~cNWVk$>H9q5nuwtL?)%k! xzxvg$<{v(Mc<8`6V@wA=%e3pjf$*jG|NqoleSzieMtJ}L002ovPDHLkV1hvs%On5* delta 20972 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 z zLNlGCjOB=A+b13?`wv@(zIb?eDXAy`MHwb~4`V+zhR1(Wm*1VI%YXtPxwU^KMvXS+9G%u*$NdKLxp|YL@Pq{PbhZ*ev{A&GvRd z`{Q>_pdl^rkpqN};Pkuy1F+E}xBR1E(R==7AubOfNjquzgewvCZM>IL7 zj1}K^TF!Bb$Fy+;mN9gM0rD(hY6@VRrGYX{I?4U**F>C=x4u3uhVh>J2URz1;1Uk2 z?2Cw3-`n+bRaMuMfN-|C^;Gsfwa4-CalZdgAHSfs`#g7$shx5`Qt)!-bRw)@muVUJI1O-$rUXS1nQHgW$Y5{O}svACtwtIkuRlvkSDxWWubyMgjLFG^rk$&1akH0XoQ*- z@{|?cOsT(W-jmBOmvrejlwk;67;j0~#*M&aZCVcxDA%B@HQ1h22m$mEQf=+2oRYig zJJLNFnmB`m?JEBG z-bBuFhvh!xjT9isYFO*d9O6hEORNXcOTtSrdYqy||5MqT`t5vnQb72a-S8|j=QR1}uo;9-* zJD0n!UxneAxCMbCB+Z->y-1E%$F2yv@qO?I-S8>ehZ)ZWE-XVgd_GXA$Ljvfxq}c! zu>WbnPJ|Z{=pY=3BE|XurY9IJgq;J|!F|NE`H;-PEq8`gDRDcY-?6Amyx1Dq^D*Qu zP^PrQxf1A=K-LsGM>IwNmxK~k-deljI;@sMdQGIw2HVI};&dw$>gr^&J8f{01Ieer zQny;BCT&TG}7-#;yB!2?M`L{M}iI4AhT&O)}p+3 z+W*mQF@eX+TPCr2VY%a&lh6+&cehiPr2cgi;#6*{NV%UXFdd)*9WrORG6_}DmYo>a zv|sfM#4`TGj*GdhV(;u9er2$Znv_Fpr|>}7zl1OJs0Q1BBGPE8W%aJN$Y8x()m3f6 z&g?~EJQw4d#PWhrGZ)H7tmj*0h%SJAhf z-u|<~DzCv0eASL(07EejOQ&9Q8BKG?R>H2epTyVn1EUb!CMEm{>;u)|?1L=Nlu=tn zbV~M1{94-ewh5uJS{1@X792fA&?>H_b(V4(B* z$)Yvu5eVrlLqvDsC(JvpCitmOKd$Px`r^T^9_+zD_A+y znH8kdw7vsxeBRaoG-nuNn0^9F`3Y`#&5Gpm=mk=1-Jh|PF1D2Aq zX>BW3Jvb6U1W*K^olMI`%Q+FQWkG*RM!P91ys}=r70%4+o|3wvRXGzaZXb?uz(w(5 za0<}i%)(p3Sj*LuYMQm_4NzwWYP*f#n^!0Ct|~K)MY3RbOB&|(WUXr}ni*sAu{eF1 zQpN`U#2>87s+pvxD;R~=jK^L$sw?T3ZDsZKs)jVHA#w8W9u@5|)^?_GNM)#&GQR{` z2;na_t8gO-?r0~B`hCU)EqpU>P7-jy?2m2UskH7;U%E(L z5vWGwectf#7d=Q8V0-fBV1BSh(X-3tuX#UY88b$Lr2IKlsWhpb1gCB&senU)(HW(0cZ&9FQfC+H{ki-e2h<_Ea6n2>j=xw}l#}R9GmK^(M<85F>Xc*HwmM3!Nk*F; z{8l@l=CiPp^9d#`WWCI#blx6`fJ_IHMEtaA!pP6b8iVLQ*9rW+8gn-7H_&`+f33NY zPClERp)(p$?krD~iw)LIy9``|8??6L^c_(JkAk)G61}=ixYUvQrO_sS;OX~rNAN7b zH54iEc*1FJp>PY|gp3-GqafM;&P*pn@?>tPhHNN;%UjjCvpbPk8YF6_@wBX58{Ipr zEE%Qr;gmI{GlS^=h-wZAT^q}aFKvldHB_^17;v;qB159gAK0hOBf(+>4g5I|MQb!` z;GX0yRbzBRP}b$7bwg+keP?REy9@(X;S!1uqmbJTuC|$L{wtpyyGWp2uCa*aC7yCg zT=rFP!q+_D$(QH*0R~I)&mFw@P-wAbOOnZ}`3Ws(CV5?U=2tdn(enuY5w1!AQUUM$ z#eUl)sM@NSR&ACl<_zbl@kOM(eq6(JKoU{EdbfA+j_|{xHY>(TuTJzJ6T)D z&>?|*GL_s$Q@ar?@@Sr;QBp%H>1x#J8K7f?Nmeu=kvE;x@+2`%=Wa5c@0bS+APJ_` z_jPxg@zTMNAB`#4uI;O@-WuW>etUN9$QiV_i%n0mb9c@AOi76A7m z&*^XHjzs+e*Iv{3DGn~rhP$|M4cd`+7dpK=5qE*o!cKJgdeQ5#5Wp)2J&KUj4$;cE z9i45j>7buG=BGa`wO326Gm4qx+$GR8zZ0W$?GlB^9{o%eWREhm)`sGhjnb>9UaH(9D3)xA3TjdbotBJd=_-o$^fRAC4mDbcRg1y=C&h#FaUaR)X0OItn1ctrs-(?Bv>*!cD-V=?J67e#jdbQtUhe=H7 zoSCiaa0QB^ZwIJoA;3$e+oaP_Lq=Y|Ub{?9AH&b;T>ee3K?Lq;k^m=TRMz~CYW%KM zyPfyUlg5cZMwj43E<)!d0Ba!I$)@h;wu83l^FFJEiiB|QkZev_x2CZr%O$xzcoWM* z0YV@dyoe3}`R3xHs`*Ua5{qS^Vxu?ByFae9#@g*mYUd(HxF)qz5g88*m0yT%+Co9`rKs z)ZYwVG?Dvt7zI3TK8)d?E+b4jn6=2|smUH0&=vfAc2s`YnwErjsmRl*ZX7;qHUO&^ zVagq19U52j7J;yca0;&j1vCIH>Md6_1ejj))kLMu`^V7kEZQvq_)rG~imdfJ*|nUt zsbwTtL7ro}hy1y_I*Q6aNt}q=KR)Dn&dP&>m8?Jex9ZcqB*Pf8YW#x9o@qq`Gk{3j z{9C_tHGjxCtr$2PjE?3l+a)Hg*?avk|K6TA?`teXV^)3IkJB;iLsDxa)&ggQgtCF= zCiwYSV5gKSi4PLMLxDO*+C^qZBFa;$BGfBfxT-$q0FudQ`Tvwmag)8VMVQBDC+`1Qu^TEs>|8Qd1?Jh=twvnZUH*G(}eA`x8XKyiRFII zmJ9Utj{~^vrxmW1W6mzkNqiPM3xjQd1_&v%^JuX|veKyRt&e^kFKTn;S=^~@fDZjJ zVot}i8hsB-N8G-VH+jGq8Yq@73I~$%{vwu6!3m-(gYQG^9JBHO?io4J)gt;t7~bmXr`eB4Pbqu^}U zPJ$uM&6L)RXZl(Z?0=Ksx=^c689H#=`<2e^Wd~2y#h}Aw150&1@R~^Ujbd?#x$0X< zl@Ss8`$F@@S{$pA;rrjGYRUAHK2p?y{pTZi1@E8BB~c$I>t9=3-YZfAG5Zk!7vZeE zm!mLDtnHw%jB1_w%^vsDD(zq1uIue*v2+E#JBeiZ-m62k7xuDfYqAxm316jlbYz&t z8k~NYPv&@SCFcjf{>~(IKQ7yPTOAX9Ey}sA-+ID@0Eal)Yd>0nuf z=t6aUU(iCicC}9JMuYDqmZ<;RZ!%JpGWzfUgEh*Vpz-)*f=X{QA|^YWHD1R>_9n_D zcE`nL&a>Y$$@y=u&yUw=137Qc^+DRvptfEZB6xoPhZg{Fe?q&O$62q#ey%(tcd^zG zPTi=*VQ4f__4TMUope)_-TzIhE`2pwb*wdM8}n$-gFf&9xHVPq_IfXQb8%kIyM?Uw zyS?V(o2#)9%vYg6Od23n;TrtpMzh0y6pEv6?fz=>@pu85+whQbsazE!R@e`DX3DDA z5R~b8FQJ32;mS~RPeRHh19Wj#}$!S|T=^Q+de(0~t*-d+o^LTsLhOqkJ>+0ks#>?o} z3_uVF9JExXa-_Duc;2Xm>x;RLGtSI0}^}#!1Swn2^F1{*EQm zZJWwDn}^x6+wB38lP_3A$PFG8Jpl-^N34H|AqzUOjOTS)2Atxc>(&{;MVi1ko3wcE z_PwlG%612T8ob_Wm&h{M_5RLPr$6(?@hkW4E0t)y`iA6=!E^Q3fDagd?J6`Nl0y+$ zH{pAXdr}#ZW!n9Di4h2HM>kYO9=Gk!gIUGqxOVDgst}t9@hha6W;gZcELH_iQ)Nwq z9?NKtNGP>vZ%D{k1JVFutNqGs!A!c&kS~Tvr0{T!-V5a|)w=cT7klZ+lm1p`MiQf+ zb^;(9Ib2ZI9d7UEs&qy!i6Wv*o%-(`eMB#ZE%BysVhg-RYp7@mhb%`sSDzMOQ=~=t zqVOo&wWmuigzv6)lMDR$0YbOskIIq2S69Y-JvHbMye*$C%Vd#&>&dR7L87Ae6iG}% z1F7l3ja(j)%i-uLUupx7Ati5Lm?Ej>;K!yUzf2u0c|jY4TUE+DXY#;Iu=StG__@&s zMgbDgePq|e;QAFgge+(`kuE>*>Z2h(1X8d`&yznr8|8LJ_0s8PkNLu4t?Tp7CGV#1 zr(Y|w7x`nuNKBTx{ptnoN_jgip$3y^4gls|I&_tIzs-IxA=C$vFt4hbTo;F`q0CvV zOp;i@1N8K2!`0I-UT5lXllL#TUE(%iA8K=0*vY6CbBH;p%INZ`AK@k1Y#t@CE9hOIyGDfyt-asl%T$&|13GsdT2x$js=Aw=R&fVEqq#X7?_hy7b} zmW!T?5z5GiZkLj2aq>9U&Gz#I&I3|T?*SqrF-yPCtuy&Jof{5|c<@`FQ-m@4;74*% z?SIOFV*75&8gaqJR1kod?G6y)sB0Yj@)KpL-muMo;a2V77sAeMzca}#Az2+=PVwM; z_;HX|A7)X5V}8Mhhgv2#M!)F^X+)Ug&IL z(yfEcFllkX5^>T~_KQ$ohd1JNHb`uT)^U?0=zqz`@_{S-+RbfHv{VUin&l1=I2F7{ z)iQ|pn9AA=xcF`Q+rSD2fn1Ms~c#R(uwLwWs%#_ey4IS{$A*u7+=A|;|N}#51>Zj^ZWpw8DE&AvA_GWc+Y}1mFxWpSz^y%on3J>LOefkw4q$xl09R9s@WJ_S_#7*SUhUXl`^LP*Ir(fu0d4NHJJ zNjpuDdMf8$sH4yMCOHIgpBZZCmvI>fZqnr*H>_$!B9?YgXK=tt4=m_iPA}fualz)X z{^raKd%M{{&Xoc1_kFLAOrmDc$(J!!)-j@%Al~wh+DO*vokRVSTxj4kAndSKsvSam zgFgG2#0c%QzwO;T#54+7z|J^0wd~@t_B~%Up`;@OtK;O~?ZmTg`Q5F2>k1GM=oFNZ z*%5fos2B3TB)Igtq)P54&h9nX5WX$XWz?_X0Ysq2BQ`N{JE*)=n0C+2H90Qb8FzJ> z1n;8w#fS#neUUxyI#2Duvm~J!m<||=?XMAj<(vL>c6=NK?d{{GePIY?A9y^JtW*2@ ztOR~h0+09oHJbf#5YzTL#kD@zF+Xs|Af02$&5zt0&(C>Ga{s9bzkVbzARxMjj{(4Yac}ff-007%-lCU*;hE_8iY@x|z}}C9xEBf?)yi z$lGUb%-8zE_p*3k;QeoxzPH!+^+LZ-MsADtYxK_<0FffW=K;2ouL1xIG|zU+0D@i? z##_**hgFXy<0+9*NR7mc$pXtEyE*&f3YIZ$BWugEZ4!GWOXZlQ;9SsGacd%Z$0%?XRkk>}G>@vl{63%abIT zLG17%5X1Kw^}w0s2uAj11)R?+y7v6EDvb8JQgsA$2M&aF#ehyt5g?pQoP1T^fqX7U zrc9aw{Zz?AJ%{roB_XXZPNzTdJ3>N_u(Rr2Jikvk1RwiYA?Gj^FoH;;RhM4Pz&n3P zJ#_>~-=Q#=d#Hgf2|z{9Ql=E;{d+Nw+kibCc#01XOv&Q0kzD7| zYv@CCAUBA9#fsrGTEO#sx1Y}jD;l86ime-LVdEewqqivECzUR&@U<{!J z`LfB>V&t#CKHT@-zdSli=$`USfFj>u`Uwe};PPMVmQ1=Z0Qv0q!CwV-4|%t`yKO70 zk&aTUrAo`g-^ATy7C%sQzua~8UVYZNP0H!L0(2`Ldn7Z}I{=tMcWU(Uw(dXUhu}>K z><0H+Y#pvYUI&Dbf^wtLu3_Q2U<8AXMj7Klr}gW8hZTcP9*VztgM*~6s%kdJA$%eJ zoa@4ekR{cVZLF;LiTZ)%0?z}I-#_&9k*42X$FpFb;=mt%U+FbgGE-HxLe4JM_jqHf zH}dq;dT##=^HN>ND|*Hwv4J8oto4BP#-vw}!utB!*7vgSYW@B?_pQ27WB}(kad5*G zg}=}eY!QDQM(&7<3+m&j%8M8NwUtS>$_{`a8J;4Z(VI^ocZ%ePOdsYPeg z(Vm=q$N4=riCMjRgfdD-oF@`9@xRwO+z@)PD3Ae4#=hngJr{#W+Rv)iuaAANzxrNT z7lU8U;!TyR@H*?Nb}v7bRGmd8d2B~^{wiltD${t_9C5v*2vjky{Ph&ch?}1n{ea&) z&8@t2NgnirccvMMWNDz}0mBrc;Ij2u`8lrYQkP|(OL-sfx&AniqPLQzKAQEx!ib@l zz(lQ!t<7txE`NVx!#MOQ4*N&$5)S{i3vFlTUH6rO7GfRs+X1f|k$8ifqqJ*s{O9xW zFWd;AVL+wf$9y)gjd@IjThrHr%)aN-g16^irf+AWZ~LZ3NbtTglttB@_ElBp_z23{ z%#*`|$q!i$*$>=#XnIlGD+qJV*g`WJZe9;g%Mb7U!mP*Z^*{ck!L&y@&zd$`;!qOF z-2xr^YER9*3(Qty{>G`)-R`_byUA$Y`9R1TmDw+e8{|Tx<@JkS5NcJ3ixoOW2KeI+ zz9)&)Mz3qruYxCfwIPxBiZIheJKn_VF-fovRSa+WxLs(+eH$jo*c;Z8Ism>%5m~^qtGRU$O3QLHlqc=l(e6(+Vt?Cf zDmwUx1Yk&pjnL#SO3krd>pX>mH+0FZ`(`}thE+I*>Vo}By-x9s>q4SDToe_+h;5&t z!PuDS)Aq7SBKR@Wa;-e*D|x1k?3_SI{oe+oK}DZs3j{n>(yxIXj_9{ktc8k_rMamf^b*WvHT; z+c;v#LSXI^nvtg*n%VXHxv~%2vMi?b=DsF_!)xmFD2AK*6{t|Wi8`pP(34}51^{X$ zWRrZfU%r&04kBCB=Cyhlii8Oj-Fk z1xhhgWs%f5u_ndn%Y$6+6c z*=^*DJEz1HhjIcS$cJWi>C!p+WNg%pcnz~g6NTDG*=qV6ckcK>4Tlx>8XkLFg@goG zvurIAF7%V(N3#kj30>~J&6$C&I+=574oBL?72^%_>6y76O*t;m+U5fH{1=bIZr|Lo zu(e>FUs5XIDnbSzL+N|vMz<8^vp%kUkQ%QN!FaTr6H}A{J|B5Y|K%E_&nW)>7(%)k zB;u>xeTgd^YxBD|wU7e}CLR^uz&e-fmeDSuPHco>0O1Kwz%COLH84i7bQZL>0zFuU z5E@z7EiQf8=6lmINFG}3+*MbyTXwvp403RU&g6psp=gXD(_{61txeKvo5z2c$;Zi5 zGZIvNyANXJN|174mL>6W*M+@l2bZF#Vgt(WFz3;OYr-$W+~CwSF`G@}AaNy$;0#N} zqrdVRLBeA{IOfBVN=V9V%CZtECtxC)f zsL5q%<+f_0)y9X5YSL^+G6 zByl+sa9C*p9Em|5X=9~O645HQ90BYr%CZAr7+_@jYBKs8%VaLys#@^RgKg zCeAW^vFeVpRWl(7+{Q7MUFQyh$E}cPF!#D+Wm*2mU4YP7na^RwVQRD7Gjww)gCaSD zH(W(Kv?vtq#R^RoGiAH>2;4BUpZQeI>tf`5kY{eZd@^6I)LJl%uJ86Umu>)y_Y`t* z2aAp8wMl|Mr-vj>U+1xnl70v({ywMqpyt6kwa1d-9a*@0+BuF76)?_xftiG z5HqEA*y6yzRxy-exGNk{N!B-Sa*JQ9O|r{dcVfZexRGZ?{76*-iFLhCQJot8B?*fZ zZJP!Me#!vk{@+(Px<+mbe-6k~?jloWHab~6Sc`3ueK)2L1wN)JFg!;kC1=CXpxnC2 zH$M_XQ+8W)B6r6~o|Z$YR$43&ivZ#gqkpb+8+V=$=>P|A*}6i^a#N$oopYYEk?+w=ZJU+py7^hIkqo-H`&I_=`w zoo^Oj40N~8Dti9|XQ1m{L4{B^b;sj~PuW0zq6}qg zkT@)?nmZdaToGdGAcMog&74~}d3k4Ip@xbD5;)kg!ycngc%UvnlMW!4A@pS$3Ryqq z*_=}!i6!{%e(AC;&*B;Z>xJPuoT=Yh%qb_Oh|IxSX(toJe-@2*67aGa(6=r_GzL~p z<1`KmP~US`B^iWn8f--k`E1sBxpaU@8m=??Ij0ah7#>Ft@}py)?<;uB)%@fwNC`xbpLSzW4eAK{hKFd^b<0=@a`em&snxMJ(Q zqu@rmI-f?Kcp{+tcCs(2zFrxU&jlckK`flk4&+aA)HEOVNzrHPwq71s7NttS#ho06 zA^#5ZwJsbj!N@DTooG-IKoPX&9*LP#NCX`vm3OB|aS5UPC5w9>i9-U`8p2hD4a$z4 zu>5f$D_}Hi#CjsCED|~oU5U+9TsKqr0R*nLzID+6K2u*uM|E1hXU}t*T!q^gzBlTR zMq5e}c)?)2tX0;+|5XwE;u9PlJOCNOC7hEtezZ5OlxydSz>f%v^}w})xQpm7&TbQh zqB$ZIKJp3kdM3@(rj@2-#sPv|QZ>C`ht+WQdMahTcd!$F7g0{nU|ad>s0bnp z^~Y&tI}vI)TABnrWieH!k@3}B((e9coxwS(&F3&B2VMHGXSM+EGW^*M_JBK)7*cCi zy~EA-ziMj%pG?mzkUGprLg)&RF`!-85kBmMWsWZ+*Ga5|3vMTt6GUJ65Bgme?ih$O zE=RxeCGB6+A;-Nymwod(jj-bpThuh0M|MX);aIiCj86SB_{@xzq zINwXpJ-&GMCBj($TDwo0WI%X52QH)m1ASNkXV_~oNT-58GF-Sela|?pz=1K}&{p~Q z(eI&BdLKXVptmjO%uBvIct$a;!3Bj8r;S6f+f)e&;YfiG`)`ah8zLFAqEu!s+jV%S3AuVxoE#2@Dl5DB49g~lz+CL%j+Yg4Z)_iTTM8h#+XCIuM zDZ8_p=!9MU>zN~z>?`r&S=%*6u^S|Cz~4ngduPaBS7oeuL(A7n;N~eEuF3+@Tf<&$=cQ=y+^0xeZ+&6yTgOJKBYw7klSvAr}E z1_#;M>|V{*mWF79QzIkXPxwpX45+kBqi!ryE|b`_E_9LKQ*qQVpe#9c=|l{H6S zBoTghXBgi@w154DPq@k-1J5E=Ur`d^jT7=4KURtyFLiPXz@Ja$3S_#hN_<+PYaLIZ+HjYs6N1uhAuaX?FbeSz9c;O=xJ!6P-dXh0=uS zugF&>m=7~b^en=DVc7_q_ApfqK6J&YMdG+qaBwB%&w8j7H4_^i$-Y}=7{g5cS1}vb zkef4lNEG2HTJ1%5QSh7ozy72e^pJ6@+3RfC$ha@O{ZL*A6Hz%o{Rl)0+On0{XnZVS zkko}e*(Vvuv7>|73717o$JuSpQ-vRSF{*15xvFC?{gdhN|_IhAU(@{h||? zA&(a|VR145SwGO9RO={y`$;)0MJ(5e&}rF?U^knm;N7VNbwGoG{iyr*VZqLui3`~} zYFgq2TlVbcjgLU8OoeQ8Ydnf#zMOuJq-yH~-=I)ov2yqQ z*M%{>0q2b+)nAY>jC@yGE_tq=IOM#9^8m0;PmY>m3Qm<@B+CnEbphO8PRVoYIyI_* z1gd4m5y;5OdO}MmWb`Y*3<62a=$sFcT*eNqz+(*-b$e`V0UV=l+wwV7r-+eelywmi zwo{2SRHBfSa4!Oy{Z61P8^F`F-8l&baGKCeybYT!r2nJQ8trUV{%{S4nf?o3NxmvH{6J83Zn6g!m04-!#Q+YNmN)vmJI0%PyNRb|Uyfaf{&# z<;<997*Ql2X~Lgo>|VxU4hn_k6&kaRpBwUcx;zhmG(7R}@d-kzdGa}29mSlJHMws6 zQsu_z=8H(h5$Y&s>OAhet15WCsSs`V`g0rRtBNd0niPJ-qM?c%4zcVmOI%j#oIq)% z|Bi`aw5T5zqvr!L0&2L9j@JsEEeDJvpGpp~D%E?N2c$W|cH~vAAv*omYhQ{xd{~s9 z?do+D8;cEC2==F$sI-O;T|bgM(2{a!BrI2w_SG%Vf8;g62)&XqCfj}-TP!1VpX#~a z4A56Rkq~wFc@J5BY@z<}%~bTPb&aP$SUTtHM&X>HdAX!5&nj$2Xfu1?cUP?m+B#Mg z1Wpg7@!#1>1Ary9lgiD|Ejr04u0}!{soWuCC#r~QbTkL~U^qbongQuXrGdG!t@uV) zg^C1dHqasUjgkmknypT>)nZ)fBSHowzJQ z_p6SM8VHkL(sQ10bU(enlby;hj^5|>4ph{2VH~+*EY||TW{J%%XrY#lW~i7H(q|YM zM-h_yKPt(1d0Y@B`8x0cd6FAdsP|1<&1pCuq`9*)*-Gg{>@rinIE)?PQP!_21$}uM zcvw~0mxE)7NE@(lVM=UgPoD~q;m3h@#W)7)l82>Dp09LxEOGarZ7Lx9tXLz-h9*<` z`Z$6lj(P*7{qlmI4#3wcP{^kzvI^;8hkSVYkG^9!8(48ID;%>BRfYpc7nBHI*2wcTj}LCfh(K zoA{n}EG@Rw%ah%-m?r;n_Iv;MZR_y|jIHYS)_&IPwq34FzWocAF(n`V$TZuE(L_uF zl-yoO!lMxFgE`YNZ{QZLY(I##0-bPK3wKUCIx*scI4W--7oQ__@aCN+La&~b@zcEC zk=VNB+6eOSw4zlL<16-qDd@C%r+|AXRQ^Cr{>Oxok1>C)D7JShR(~G28eQ(dasobH zP3F27-k3axrL(yw1;PmP3WFd8{#;ajB}iB`GZC+`R62*(tw&jQR+fNFY$YBi9PMH4@u z3jrYC%ZEYl6)l*-EG>=(!*(OhbU&5{OImczlPLhZM&vIxpN|^h>pcwmET&KDm%qQO zx0ffxA>@5o87ghJ$UD_?7<0EL59`|C?`rZ8#f7uJbg- zIw8?klWG?QyTTzPywT$HNTfFBwbl#pVWRU&V<}|byQ7OkM=#%*VmOUvo`Sq$7-ORE z%()!5`?0&0j-@c{YGo|nT!aN=nN!CfTv#$Kf37H$@wbm0$f;mAibioL>eR0I*&H*B z2!xCNP{$vr{P-gqe#7GXN67Ek+;P*#sJw#OpKHbLv!|RWv|5%Ue^sZ5gRj*BEYc~nVrn;^@|UVmuq}-qm6HnlB+bS$*#c9YanCVPZLS&(1TylKrK|rRq_!R zp2VKMQJmMNeFgC-Efz)Ctx_IPtH@u-bZ155|Hw#VO@H9fl7+cY_Fj}X741%3PlOKm z_NWEpUXXqe2=RsUq?S4aTin8DQQsDPsVPHMcOi{Dj2oZ<8M|)V>cr0n&HAC;0gx#M zy)BD7a+_r*0_1MC`fI(hv5_AHZf3q)(wgmTF34sHrk!H}LVkJza+8%xcYf4opIc$? z|ElxgMOkn^WNr_WiDX!)xEP9ncbrRcTb@0%aXI;6mpX9m?yE`IfOArG!-wp}>|QfN z_^~Z{H$;N$O>bjWMOtGX?kqH&46eh-$Xjlo4-ms|ON_KBE_;oU3y)cmvP0|6p9iZ| zyqJ>7dMa}!0F%;F5IIvS0|h4sdLf$p)-)uOCu}J*ZbqRx6NlpV6rnIvn#a&)FNqPw zlzV^;kJ6G&i`T4M*)a^Ikdg-g!vH%|Kemw71YLG|zQPKJ7-8+P$%1FjHu}2)>CCio z>gB6!Gm~!(9N8k_T9|`JbDGz*zJ?uwQlZN}v|!xZcZ4{c`o&#cw@r&iABv5xFV z2R{{hi~~!3k|!U%5tFiIHq-Kf44?VP7o4mkL2~buijzzMS|WjrYnS>M)A|o7PvT+L z>e4(aA&PGNHpo3+u^$%wSq|AAnl9=_x--5VpP(TRb^Q3j5i-5a1cgyb#DCpV75CJ^ z4Z*I3kJ`rkK*@-8P4#Rs<1t0^D(Y_@pVjbj_ZvBx^t;^|zZ~QjaSY9OJ@)S^?Wf;G zSrVAP|702Ry)q|FVIO%_tli-m9YEg4 z?E0}ge@BM|-I7gwNsf;J-zY5~8KJ};H|`UQj!uM^nU2_jwBXryL*N+6Vdl%lJo<|#ssjIEUe4t)WSB0&rbhK;trINZSIF4^W z&Zn_3QR$4p97nY^+e3#^w3~6~(ter>mD>%1q6o+FRE`LfL?O@~OcaCEcRcJDj&^$| zK7>dTdidBNw}K6ac_AVHandP~=vpouvm$SqczpOHEUU4_@g$A?eYRytk5bdAev1%m zfq8PP4HV6?cy40cjh*=WAK$I6KIxT?xl_|BS^1pCC6H$+H7nLjQE`Rpid=u^tncwY z@6rBZfRaHQQo!GCEQ_h0okceAhS$qJVub|3XAov7%c6N?MWjV2gIiUQS{|mQKzoFY zhAn9whPX5$Q2&Fq(TQLWy&_HV()MKS-cz_Dc3RAP`Owko>aiHwhJ`qm*(J6%*r6!p z@B{R(iVMCIx<=;$pE#0%^1THOrD}1TCjF$@<5`7P%AA%n*z{~Hj%(L-bQbAAdfGYkNiQ+xm(H~D1jhTm&kgxB5E zES=W*2OTk8rq)CCyHz?wnB=F)|0gdp(9KbZAli|sdg(&vAhOO@9`(BGI=VvuB_3ub zaKXNP`|f`$&RvALENq?!T=R>eMt~r&Z4IRdPw!%@6p#>{_Hb>fXIOgZ4IV`?O{a zppzzF_VmX3@-I8OMJbpvxb5IEtgkLQrP>n{K-^EC**29aEx(9sW}(|xv)Poikrt#< z3yQ-@qrM{d0)P_$!ni8tUL3ZDkVpgDw3Eu^gmkbn&+2GGby**!8>R1{&~b;JbTZA_ zC2k8MZ@iOj7xSFpu|=5~h9}{OWL8f1{ec3757CZaU~!5~G#vU`D#i7oojZr%J1Xm~ zaw(*B8ZfLSjZUU1d`ki<^FpM(FMR&g@sq1sdILX2mtgeHgnFdv7+X6==y#72XWNO*62Zsg+rMazZ zZN~cO*^>Z{7eKN)c1p@%0YcSu z%E-fe!nWxiH|t<#K?M}KEUyw#M9$&BAiE?j1%ZB^EtGztV8Ckm8Ixs8MUgsjI;kjL z$p~q;ozG+t3d5Z!y>XfRFQ43II@)Cz8Z+veBi6(tU{s0BBUu>(`5z*e9p*d zEWwfCq)5Bd%$=B=vC$BY6pKYplmKPC2Me9aWFnCkQEP1mV#Bq^PQOJL(UD?i0yL@FG_DfWAwrHW65 zLMBtf7uq<{-H0uT=3skfeb zYTHxWD(kk7-3;;+AXfnpv^1T~flJu^{Y5t?Wo~e5AHjT*xn=ozmffQeC6by9+Z{of zQx1r8E+siU+1Z2iA`wh*rIJ}F8wZ&Txbqw<9G;#`CP_A#I!KVCtI}}5J$?XN(WmpZ z@DOgJVLHj)-mJ=!Gb`*F*c8q6{Q~bsc2|_iDg%fW*WvPnaF_;cj9cZgMt=CIr%rj{ zg+E|T|C=Xg5s`eI$7ZAlIenM!||j!X9K^>$vMBE>&Y~@wVE`|fjkQXeqUdo;V>^& zDD)3-YclCP;*5`icgX5+O&rZ(vfT4wqYE^jxuwgO2PaTC^pE`J*oqHFnCVOitMam`;~Pa|a&9hpF?q z4?w|y+o16JFnxZ4#gjC^&&fVMY+YnZ2fvYKM|IH7xs}*;#~Li@OX5cGuDk9nHx`|H z`em2Zx(z{1ib+9D@v+24}ZMdQ|_qOCzgCmkl+*1spDW5D71J@MkRw1<`8uF3`OVSv?7}sGinRDau z+`?++7p4bV7L%4R?5Jr-SaiyBc>nB%kA8F#zzGCUk)efrzAqmR(?bU{8JmPpDnHzG zTtR{0WKl_!rBx7T(tcZsL_V*oNwqXE zKoMhPrf~4Lmm6T&KrhU@!#fuH5CStDX2FveB;D_oN=91t#X=OOu#%i+0}N|LjP9hS zA|0!)1DKRxUf5+OjB`1Rg5ZO*$zF5FR{#JY07*naR3ta|(M$w68R|N-lqw!I{lcjVAkx`VW$G5wuYdhASJ$pt*);#mfmF4x?Q%@~yp2BLcmb7Hs3oq0)R-OV8Os98z zbP~V`127?-FR)lLsKE`y;C9nFwr(ZtL_*<(8E~w0vZ@bjW%Hu*C05jI_)=fjQ*zDR ze~>j#1|dw18f*lV5fU3t$u?z=BDfS^g;j;AO=$!D{a%8Pa5n)bsKS6hbN*9Q8Ppkp zw=2DZ+;c)D$}kb07kQC#ZxPEOcid5F4t(aGdlnwuxUsxR{-B`_f3>=$NZJB_=H>HS zH&rx@6~fKn>i9AW*C`CBe9X~ z=q-Rw>uj(`aanoOn89$*7<@eMJgEswQT@uNpI+EJ4c%rfY00*2FVwn`MT?%pUz6KW z0TANX+pBPRh{X{hCVx4a*cfxxS+Bj;x|Y;dF>cG2IuRt5frebSIq)Ns z0FEC(8C3u!rd!axjEuY(1{*e#ipEZH&K$6KMoTY*j!iHMoAh$My}eGjo4L(GXwcbA z^1(JOn@v@wDj6H{bJqFthT){ScNPH53cXIThXX8!v+J@`ip@cFZmewKZYA{$Ohke~ zbAesk_#%OjBvndcyF%8o#Zna<*Q z3mW_7VR{%nX~hEEBqMssMl;8dOml}9*=dr32`N%CkU4i*Z*K~}!DoOp7K=J-qp}s2 zWwH*(myivSY#r7OkSRVlq?Vm}Y2uihkZg_Pe zS75s(%{WOe^eCB3OV1JAGWSB}jAkD^s4AG?aX%&}z2T?K9an$5Id zD#r=rJe(AXc)`?U)VXUa%e{*1e<;%-k zOq90(Ew}hWhtD5HhqrB6(y)J{HlC~PYLh9YpJ|pQA~*@)_yJUzh;bNsvJ}PwF1HVo zlsku$k~v%jV~VuH;Z^)R4*>IQXGu}H*#IM5Yl_j|KkTJBHJC^giUsx@>3Sw3xoMW& zGTg(1sfi>#Ig=F}pHAh%ME(H#`Vj-eEWnHueD>DhPVwD1xvemfBUAA(CU8{Ob#z2V zFl?|Sgy#XdsLA}yrx(`cq2tNu+G=LhrC%8ok&j19d-tX)Q!gok4-@c?o`;kG}BFxsC<3^ zo>pV;429S38(^K7iE3_)0GnpfTRA+|Mm9OK3jO_g?zULUbC56%0GGLL-caaU*!Erk zGxG5p`9899k|VrPzL+g11$XYO?4erKBMl?Cuu=qBSX&O+)+nj9Wy`@^KEoM9S=+X4 zlgIGwf0WneXmJbS<=0FpaIhDAr36X_d>|pIl*empP+AXxY|_9JGbJyXT-FN_ za>*D$WOBW9F|yY&FWE$RTVy#!aY!$-S;s4a$B|#MQjlPBOb$F`GaSgCFU&-C%gT@< za=)`AYbFEi4g*#x#+0%{g(5@Y-0Yfv%s^u4((a!47N7!P(Bd0*>0f!z!iCK$n%nTN zR)?1?`OH@#VV{5Dg%>{mRap?YdvCt^p~Vf?M~_@S3E)Hk$ds~FvpsfPFrSi!C$LL} zf|*ibggo{|!k{M#wDeFW_O>{Rv``7#W>wvi!+l)U^!TJq##a&4F3ZYLJ6mGd;9NrJ zn{f~V_fu(2*G)O5StupAsi+*9m=ZFjl1G|8O&|B0$g#MOU(aV~ei_k-Yje^MmiM0M z=qfi@G9C_%;F&anVcl(8R7MKcmSEMojbIq0I(0zOx3@c9$gHfzn*~6aZHEaK*_O{l z9KcR#)f9PxrRQM*vi+{~ojJH1IV6Dn9i9)4=dyp9+ZVZr`!YTgFD_eLA!=ErSRBri zc(cUGM!!OdoqjU1i5E$+>!rURcZ$hswg%?1O!qUbBRK|FlC~@tGa9mkoVk{PQ8XN9 z>(-s!bsefGb+077A1qgW8%!$XwVB8)gWh*mg#gIkhwEealDgy*KmPjbMNWZJM&Zg20d2tep? z=!fU6SrZHAu6+IVCCw)=8&pP?e5NV`7?d&}_*pN@NOe-U7$UeC0CKj}mrcD%0MAKn;&3x@l-k3#V){T7?Oh^>6E>^5CXyngQmhVJ5mfZeZK?`t;o(I zm3g_Y@K9HNpbkgj+|y4VJf;=SGQ`J`ILhE&5Gx~90OVtvCjlHcfToPJGU~*2n;FA! zxv>O!pT}_}&Jg-crY607Ni*N#c1E6=3*^)*-#~v8yFD4Q$^PyahE^X#%m@;;~ zasMZ3rXrCw(80^(^ZosrmQ&;$T_EYO(W6M;m1Y>s4t^Gp>3$5xE=*={qgoS8o;@;| zOqNFr%h>Bq88{3EuOlPKXylGNZd)=o1cMZ6d=>;soZGs5d1F6vzi z7-ZK9_tMMv4S1f;LH88nkQ4((BiJe`=V~&@W2Le=?p;o2;xI=o6OAcwaSArvb%uhM z=FZcaUBo@?8y+@xMd4fz!?`e_uplHdoEg6I%GbvT;Fc{lQ<;>)tJQ}dY69R#5s9SJ z*=5OMasB#INjelvqX6n>rPEg5`r+Y%9H=ULihEwM=;4|<3*y;uDUJtyzZ zXm1L)mD`;A`2o1^73KZ(XU{HAip;yQlG8fttQ)tCQHht-h#F$2OusN^n{JliWF~nvVv^7lS3gV z%*KedhP6qN9?J<7iExK7pPL`zu@dNXO3#-{8B2~QU~z(bg$Ad4A)H&5^t}EO2at4z zdJeZpg$d+ti&l;kVRQ*#mjxfR+GL%;fJ+*Ni5(s;(yYm;HSEjGSyr)sU?9UI5=-kp z_ql!+^<3_XOaGK+p@5r|$^?M9Y{!o79vNMaAIh@kj!^mt;F)7If(M7g{WUEypZ)Bz z<%<_L29PaK-0Oi1A~De4*H`ew72^W>5FV!$IDrCV03H5;-9-vBCRs;~4h>DGlUanv zte-H3Q`y4-W^UWuVA1w8@^6+4nDnz*n?!I};7J;`l%Om)XK7t8=JUP*qLX3TnU!Q_ zxk?#1PZ&2-%Pm_5E@fx9pPRV*bZ<1V8JtHDo#znGX`O%L7Y9{*SOYS7c&@=R29Fgg*!Z~$ z%Lr%yA#?Yf_NNf0X*$92sM#XhG@WchmyNR!1!ioHe-!Zk8oV_)RED$G(s`H2_aUO; z^aSG*CD^?h)*^{`I2;=84w8c5-W{=U4m!MKtX%Mvn*AkCS@h03>Ferk;3R+(0w4#; z{Y20Rn6|hbVwzi>_K9^e4Avi$vM(ZSKlv@S2SE4rWjtR7FnuT*Ls`I;=Z46DC!tF+ zVPN2M!*-CwXOf4S&qM5GM-S$uT~}k7$rd#=n6gbksg>T|94o-KoDR*Oc>VqBhw};9 z4O~*Zy2;#)yLWH-K!TpQ5xgU)4buvqdH)yz3|nGi(TD`ZS7$eDXb=#yN1DM^B51;s zY>S$}#jA+7IO|$6vU~R~OG#Q9p&Q!e;LruK(wq&!Gm?|t6!~aFJJVW_27fdA1tl|(Bn}cBnuF=Wy_L%ee2iz zkVV#dRcaz<={Ta0P1|;yUV~lqXLQMMvegukKQEvF z^-C5C!~FyBpczRahkG3<(B}2SI_#&Om%?s}+i$>tf%fKDB_XydYrZZkL*y-NhvlZm zo}LOkF!!HHDI|*&GbbmU8ukx&k>w}+GK>NlH|aL(P7J8onyIR?3t4a&?nv1WFIW&V z8QDGN{`-UMX_Q7?GV0p0rM41BHm$Kge-gln2aptO0Jv~#r9!D7krlT|;DEn0mrL=3 zL|gnaCk`d~35BB*NvC*x0P|SV5bm;Bh3`@q@a+gs@C967T z&W&fD6>R}^)-%uCc-O11-dtWEt6R6#tb-3;Sij-o13&v&mO5OniIf4v9WDVCHl7x_ zCz!!-M3K@Grx#fAW$U0c%OtoZAh%UxbZq1IJQ}Pd16FQ)#R7aX&BV3MygM5Wxp?iG zS42RZCuUB#6(*0SPn3p(1w?&L-`KX(n}%VPWH_6Tq(_Il5<*9^u+qJ3+sUO>+zw{J zDn_s?Y?7H*-Q$6E{#kFojo)KZk#T^GBH$))w;Z}q6QR_yy?eJ}?ZxZ&?ghyA)UKzW zzU!`6cU9*D%MvKDE-7F?;@d17prlS2gG$G@q9SnZ_sC~tN`xsVnsXi^E_3^GfCJBJ zNho*{SJvT?n=-4)GcCAbgqmN!{&W56vSs`mrHfKFsVM-~5>_8VV_Ri*kVotWg?nx> z0pKKkq4A_taL^=lo_Scs_c>JOKG+i_1uMIdNlxqhvIyeCkADmw3D0B&&C8Ski_;x` z0k^eSqETXSvy1}-xEeM0U{`$2mM-Ewdj`A9Yk9CXUo#2dcmZUXE8(Ul=XtQ3FF~RU zDnl!tV;=!i{u&Pt$>=gg#3O~-l1XJ%JCj1$15p)KBM%%6_SLA;TFu5czf{U|qZOBp4ODnJ>s=k3k7Z2_U)BP z(Ai}qhdOH3@@uBhPq0#0(ij|Rd8t>j?c4TAqW3PNRg)~0&%ypQC$3V`KZHL8w#ne} zgj%7{KRhs?rD;c0wAbFIMEvH~OAe+VFK;8(? z9FmSU72alm1DdqMX|Y^*b2%=9WW8m`_4kAf&$3J$PbO`Q;O!OrVc z4)?x<%gq?<*x`&l?X06AaP0FQd{EBI>ExPSUV}2{7_9(6kc83z*u`)$ms{3reC~6f zTVIsgPr*NBN?=%d-_U&3)12ltGS?8Pc$r5FeS#iNWH}z2e(%Z|@36K?59R zZ-%a+@@ar&3G@aSU0~%I94T^8dI13g9c)t5=xKEYG=;`1DG?v{C3a{Lb)Mr*T)16K zPBwn0G4v_VGL;~(GI8hvoFefqG6k5=E4>`ZW-!9vNb7h*?xAjk5mB$SkE9gY4j3=S zEgK!-sT?LSr8XtCD@Q9VD<4hJ(NXE~m?PV`1uj@D;qRG>uV%E8XDK(c_@1#__ z$vTsPfx=&&POk_?kt6hi9n749mmmgJLs>x6mo;n5E?K4-9fy3=D%AUL& z?NO;aIwJ64Ze7G}dR>_q=$L3IwyXF z7)jG~FdYQAB`FxrZdQeJ=La0-{6GeO4`W)y{Y|q{%><}Pm+wOw1~Tli4}>~sA7Oir z)w`6V$P~X$!pASd^Vh`UcJzb*vSo#wj$wgxbW0lwPZbp9_N2=QY@^^yLjn~IQdG=a z5Y`m)RmGyqmKo7*>A|(>Hq>A?o0AQB=wL#;h0AR$xk&)YXCjPhnb)FY=B`>y?c__+ zA_p(-P^oe}1{UEad`aFA$i-W7qDkT3Z3nxM1xdj@Wg;_gUbvU#`2m1u{hp~xImm=LYHc^ZNP`H>xs#C1q>o?&z^X5hQ-{F+9Afr|dx{0h|y3xz7e$%H^DaL^yt) zRP%@sG7LmXdu5m~!G?f=;6QJVawvitW7$4VM@U&xx&=W3OP)oKBLA6#P6Wl${QA$W zUq4_=D#tWcQWf3@T7V$rk<(?lM>lJi)GEQ);WW6-aHyndsT@1F7$b9YA2=DyI;U)w zI%7j4(cIEmVQTuvN$I)a9_+x7Jr&&HIn4tCd5Sgz?u03IYi{$8C-2=J(3k)~v4YX* zS8)KNr^~TqnUZXy3#Oc*B{CU*!w{tvdJ}en!^Y`hYbA^(?vq9blP9eY4&T(czl`qm zF5_sRB~$8_gneYgCe3O;57?CYGk9G8=hpjvmcd;rm@Z_PMhDN*9rNT;{GfQJ+(Kb^ z{qV4#Vr#n&C&Ry54w+cdT|N}DYFqQO&Wx?Ie$1V2$Smz#t{42GK<7^P7pO{_F3Xfb zQCISN4&ymt($R+iKoLQ4TLFM<3k;fiDP>e4U-l^g2c`!$WbD#046q5RR*1gBczTx2sj8Om z@5g;Jb1A(9*&Y~>BkiaN41XM>guvP4%}a4dC|Cjy;ZTN~LG_3y>DjZVT-}^=-dW}8 zSNf7GfASLxSJl6MeX(ePD>>|2@>NQ5ntKErj?BpigGDlyu$S>%sJ-E5A~+PuUnqf4 zI(EY6Irfo)hb)o!^Uw1eDBgFuM-X_g0MGbjOYXlPFa;G8+z2M1-3OS*#D+ws7H08Vb} z5r^}~Z*#$uakq9@RZ@QrL*tEBbj6Y}ogsjOgTaA10f6NGMPClcWFRa0MSlld%X7S$ za|#n&(qzt4(bx`&U=>2Petn7jP00mK#ug)3bJk!%G6OXKp}a&mSp@K#yXn&s&!9nTB2>_(K z?DzOrI*uU1V7`y-(Zd6j4o%uBgwaXXBAX7JDAUcf@dI?P200$CiW`PX*P66emv|zu zE4(kLX9&;A$qb>4TzUvNc*HKlNRLk54jNUJ&~LL@5x2+W?6+ z`vo?N_<7mZJlxBuTp5`&Z_l2t*?|y-(L_1JET09H&`fsC-aaz2XWqVjYZj~_oDrC} zcXf3}DVbQ6WGKvoM*x~BvzLsTyy{D(TNrt*y4kf~PtZGFOT2}?wxL^hu z)aA>MJo3oRn^}SrPtVP(2btTCBybYIaRQh#ptvQ|lzMJD;+C{QnL>s;F&c&%@N?2H zZtE%g-LqUPXVK8TT~)m?i_e~N%PqIys&5I`b+NUzyvjemrSjFP zRTtd(jXSaat#Aw`eE`6pHRBGLP^DWD`Eud@Ld0@i^Uh$tv?q_VsHoXSN>^PIm z(x+^s!U&B!4zhq$;w)XT1_<#0f)C1^=Cge%G2(b43jmV)$a1DGB_z)=N_}MQ z!61ppqI`z^8#%IaJx^}LHawm$kzrE^2+phj{_p?zkN@~xtiS3G&!~@@WP*@*q?)ue zMzNyWot2-2se{hWotv9Y8VZ0feTwVy%Rd#Z%U^owh8sRry>58vrI#+Re(26SU;5pz z|31FH`OR z{LuaPuekZ5i=O;@0C-(e+O~M?4cyRxCm}XV5T#%h%rNc4L}E4pNK4#_frIeuT#+=S z&N8~|lUi%Zp!UQQnz>nbh9kG|)jaVamwS6ngy3IwMgi~6uCDDP<&);NSA}7Xrbv^rc__^4k%Bj3TT8o7X(gVn0xZZ9JSp;_ec;u=c)enbe%u z7YansQMqrrRNyU%bJ(e`NQSdFo0cR*ur0F2rgfV~jr87L25?V^64Oo04-O5^-m?es zMA+9-kK^pwRcakq-?$DV7Ve$|@ZAOQoE0mUE?v6fZ@E^ic=d*tKK<#3fZfui{2u?8 zE~N?sKzW|56?pI)|NQszyDL^)a^C&-|MdU;zyJ3p0o1a5gt4z;o8bc)J2%gwkwM zH<`y@&SMK0%FeFp^qbuX#yW+LRWf^8+Q17g_~Z%*+Br*CtcU~1B~TGH0dU8Ta{`%^ z=bm$p00>z;XWxyl{pnACeDlpWzy3u^V2Wv!pq|3^kYT3A7>=-!OxjGNMbDddJg<-K z*|s#UOMx)WG=gO@jZm_4VN3@ElZv!wJ2LtnL@UNmDk9h^`FBY_byP^NL=OlWBnAsW ziT9qyi*D5(rZZLwZaVTG0J!vTi3*?)uwK0ZPUN9T)QHv672lu=@7O`rjgXB1{N&Q5 zmz?+YAN=4?54`ivb^>_IUYorMY&`{zL1s}_sU#bqON^Y!Bogda_e$IlPG$oo_XMdIpdw~}aXfYigRt)Io}FQmzq4Ae zqqI%6hY4DWW_NTfZmq&gW4OF>18m?!#BFJ)vFEI~GXgO9{v7#HD1l3t-gw6YfBMq{ zuW#SpDFALwrMyyJI2;f48$i6D=k~uqB|$fumqJld(%?p>2(H79PQoqchzBVLN8&w) z@rfDA5QT({9i8A*v{q1RoNGDn1CoOOrHP=2zr z85f)ca6$n5wb9lI5z8V9toN}iTY@&1(jSgIOS2>v#B=5_w5v8(&w!n@fn+;r30+*f> zS~s|cb6$N3PGrY9p{xnRIVS>8R^V~U5;$+(jdxsf$t7z>cJ2Bk0oDX5#=g+;5eLqN1`ZT6Kk9mMq^rg2XmFiuV zH4JuztnYh!O%<08na9q}E#j|Q!$?m(ST3M<)iWMi)y=H|3_PwNCQgI^o)h3l)^{f& zxiWxUe;d)5PhRqeKYW*UE_td*pu&O&aYFddojDvHP{MtXbU8Fc60W+`mkeY0bC9Eq zNT{XV@Bb^w!~Eg9-;Hr;3I6~8_O2bIu^@`tNstG+AbF5f%PW%NNwCl)qc|?ia=Ndt-a^onPi@dh@Z|= zPGv^q~@r-7(U3Q{BWE z|AJaTryo=C2ySLTdI?dVhVPoT^`%G;c(amUh*TR7up9j=0jAWhUpU<(yHXp=P*i?Hjaht=;CvH(U% zqz`EVg~TQyU=NEYKKo)0pA^(0U_|pC9*#ccSS12iN~N^`YVZc0@yCW5Y7{p&PknPy zW9{OiczmU8*%zz-mBsSV%v z)w>=kno~t%A-$AJeyg?f04J?l4Fsk`?5lF!1$bH#c^tz$pJf5}8GxitAurQqojL!5 zBcL;A6XY_3WG|!K@z>NK*QldV9trlCLy^vQ`wSnp8Qj>IV5ce}`t5yzaONUd4UCR= z&AlE7p8Nyk75Klue_bb3uLbp6pjvr^YTbaWu2f`oy=p)vXg#2RtELVVuFl)w?|&J) g`F*!5&!@I07*qoM6N<$f|$?y@Bjb+ delta 21083 zcmV(sK<&Tl`T^Lf0gxlJ1P}}Ze^HZ3L_t(|+SJ?4l9VtM#c?Tyu3q87-po!nPL;3a z`@e&^!!>{DljIh1d$f-bz>m$ZP7<*6)8(OgxxBpCxzD8>^^TkRM@p9Wp^P<4d0N_; zrgD_nojq=ur+J=8d7AC?Ot+t(GV*Z1YJ`(t%3$MmPY{D|BdvhtK>*8Of8zp}>yh7p z(^CM_F(9d&nfXQVwsG;3`c=SP8NGRQuN^bPaC!hjg1Y&5uYPI z-xT&ffunXh!wGy$VDxC6@M-tl?KuEz&(uxnnCqhFovV0;*(%=>b z;L*Nj`RWN9mvQ%ghy`*d@^AnZU=))$Uos?m3?g|0m$KSKOgUv~aFWmiFAG zc<@!cVfp;xdYXR+2;62BEOUexoDm)61Mh|QIicW*p7Z%t^X0<<@sI-b;WX;zNHtET zlh=X7PW0v=>$-j%pzAO{soW7Ybim?{0Hz;no{k?c$vSga?kpb#e+bMbX>Onjo&b(S zm*K`?gh)=l^1V9-+lDJ@4FRWZaSu8u<3V}p+NIi0+;IOJH*TiDgJ zkzBI@=^P0=cj+u)f5Eh+aXf*?FMH|OLNt79bhDxd-!%_#+g9I?@rSKvSJQsu;w@MT zCwg|2M0#5~hD|*?a{(Pn5>!qStZ_W@jUjk+j|DK$Yx4Pm=XmJl18TH#b_n6v4J#sA zM8DSJ?m?$`cHZ%s-PNv^H4AXG%^;;1n>x;Ltx59s-&60TW*!6HZFmN6T0u731fI*jl+%Y0UZGoHR$5*&7O=z8YZ({n&py?X8HT~h(0#yJktGM=XR zfW!-407t}ZSUrPtyowpm~&V_pgAuc(Z)qq9=BDgs+K!-a)5>2iRfRu%V&TiHtwg9F90!(7SuR*F3=G zP>f50=h;Z%#?uxwjjGvMVuM}2X9I?>AW}F?U}j7R0x5D!2%OaVjSC8F7vgf96rw^(!4Un%|lM}_V$(rnAo;f)#gssJg#QX zgK4XqZTzCrwX>uG;sj#CCfW{UHrV4Je>-bO#UsCXwS(NYVIT^_K)dM)x-9HP6u@0- zDd_&!%A+jh&zM7wC=C2aN-nzl@F*&Ae=-}G@nrkm;4&LjlMlVL4_lg7xs}$ z3&TLEEZ5GuMVnT1^lwV8W=%Jd z$227Zf~C+i-G)=J4!;31|GNu~s(7AX`(X#2iDABFT zxwjPD%Bqiwif+?O1w2n(s*>(Ah`tSbi~=Y+}l^X`Cytt?XLG?ZLGxlpt% zo>{yvx%J`jYQ~pS`I>msi=ON(ot8~HU>tr4yj>cR&e1Ib+K?UFHmn_Vf06@FQpk~Y zz5h=FJpVK+7u;HS2jJQ8isI?fI=^;WL~y#8ICR2O-UGOK?R2r7#+XJDC^%O!0(1_tNXg4bwX-S z11ffVu`3HaLucePBD#glfAf+B7;Vd-W_XoJ#jc=XSHIm^ysC8?FK%tRSt}QCuNTLq zX3q*T-7d9^E1Q*cw(LU#I^dAgEV(;$8nQd`F9~p0iOu$6T>%4$kAD19mULe1pj!?) zmZqtlq0^LKe?A~D7SEk|sbPqn zsFyG2G!8sTd3NZbrWiLb`G6x_n!xqF8h%YZY6qQ`BL|<^v4*bU_r;6-v$hR{VE_ls zo;98)Q>e#SQwVr77&3%@g98bKXwV(mycqHU4l*R4phKWtWP7PWcuI$WO(EWbkxS`d z$PhYZ>wEf>x3c7%f3Lap(Md5PVEp5GIm_*~F~I%6R6!jLrux)BNMKZE^_@eyG;a!M zz^Q7bLPNKmb``ifI+Yt{U<&Y^Vi4glEQVUOsmfuLaB4Y--L`FGfZJLSl^AZ7+FEKg zb?NqzYa?8lE{{P#>1Co_xM!-ZV5y=QS4}y)CZ+)Owb07|f0m+k>dxV|s&IQVz%o{a z4!fncf{T9e`$&~e=>~Gj#yMGRn_z5W3~);-+P_=+DM3}tG>5g04dqIDq)8m&JckfC z9b6EVhf4J0e8gg*RkgRTt<+pKvUJ5bSz*GRqyMbUqJd0P!VYI7O+NDxA z%zzxWuizsVxnAGi4;#b#uV=@9=WcEe@F+S+;*e9`e`A7q-i6Cu*AIK~x)trT%74^V z6{?jTn$dTYV9$J{NeaHcvptv zr!o*J~$gh)HMrhIT-ZwkIf_wq;Tb|#a)n41DTJdE1VK*lK)kh?VWT_3_{8#}62 z3W8X=f3-?4>Zq*4S*hFJ`Ft&%13=yg!F2)T(oy0!Br0l&R2!h zszIvlbMmc2s-a*v-$%}lbHFd3%>V+0oqX(te<6&oG^7CxGAy6{oY;DWvfm~dR;?Vw zf{=9Oe8d`++J{5@h=K+Ip-s&s?tz`hpn;rvB9tX$Vs>J+G>8m_Kng6hE6`9*CTkxl z_$+HQUVg9gHE$Y|4*w@44@FCYx{GJi`D@^9$#$VRL41(X`mLf63lp zGJuBbhx6z&Qh#Wt{r?0CixsC92N&n(uMpfP@l`6|m#|g z6zsIYY!fJ%(L|b96E6dR5t|sDf8dl^q6OIE?!yZy?mj56VA6!h5!C=~LvYu%fX#4$ zjdRY(gq+bh!|=A{&iI@e*u(K65Jwwv?Pj`{3k7VDCt4Uk(WL}g#axKFs^Gd zms_sjSWK5=F@=C5h3Nt%IS?N?j%K<3ozHT7k^4}+`O#3i4>$ez0Nydjr08S#cUZi@w^fO`uOf>$e<|9JfS=M3 z!TuNdVZw9*2MOF1oOlWpFb7nQ+1f@46TrV@qrzoL5y80ofG>0(E{QQ|!T6zqI)KOy z!9mOA3?3A&pd5Bxf$(5>FfGG;G4cUsQc~39_HiIy;_maI1rV25@DPevDL})pEbcNx zST+-eApn#a28tNlI>rrpe>l-g3t+Oz<>!Q_`Sgw4hYJt`dbG$<=J!Rc7GMKg4@`d+ zGcmv*k_}*M8rTzyhHaWQhb=e1J81!o@Fn>{M9}}iFNAM<<~~`tbW42uS`bBy{fJTr zTF702un=5OfN(Ah8wqYJhe;2tfm<1tNP$fW| zqBa1Jq8E)1#cZM*q7e#AGsqQ;G3J?Gx(S#W1Qny22R{e6<~BUrF+AxYn@i8ZI7VN0OvCsTM{7d z*^|$n;A%Pt~h`pIjPHo!j~U@?WGJ5d~|2@_J>x@ zW-pZMQsvfIpAVGY;AYhODv8>~wVzh;C8s)oa2n15ZJW-qe{MssZre7_SDQ`i(&n4V zWN&9@=w;G&U}m)Q;#{?;WsBLB$b$V1M-Sz!?|_y};7Ctq_!a_$1=Tqa|IqOk!t34- zZEfxPTH(Wl9`Ww5x8bel9mhG6Pqzo6J_m$PD`vCBLcp(Hu5X{+h~)Vegc7y8*njj_ z98RkOs5_93e{sR_u4?!0bvh4rr+ARkb#x=(OVxpyyuSYWN*4Gu0IZb)f-4u+-t{AG zjr=Yc$G6OU1la$QQ{9n%AboW8LZ{Q}c6NtOYgf77e4lzX7w`%#@ake~rysh|~6 z(05ApP`T~V7ytu$e}<2i=XdWOKlb^eB7gxO0$6CbyE6yQ?cSx*;TMfD0}U30=U~H? za_M9(JCi@vNPxT3DTe7-?k=SV^MM|8{M$$60B@GtAlT{yAUW>f1b)u&UX=hs#RBjF zB!rHbf2$Kgyx`jMFicB)ixsB_e8=v8KCcE~MhXBQmAfD~1DH8TQ4M>ys_1}(?CAB{ z44+1~?1)4#*Y8a$7+e0Z@kR8YWA|6jD|H}!hq_?x=t?P9 z2>GESmP3NM)?obU)M9vH>4x;=1%T>P_yG*~fBtcQs^<@0`uC?*tyTa&1TFiETz=JNhi`rTvh}S#kja!a zB-rCSeC|HY4`pQ5?my>NKesq&t)s{f6iO9?$np}en0wM>mxnVAEx^4-2497m+tp3 z(}OyOAKmYV&yMT!_(HRfOa{)*@b3Gk4juzvPjGiUeC&ZbMv%K(d!Urv zZ507dM7Y{#2oBy{ee7_ukpJ)Be86+6JxEQf$JW)70ZNn{B)Dupec|Z$^XGp%`^%>_ zifeopE5Tatv$N5K5QL4jF=Q*ee~G?HIYi@qw9a|&lh1l4#-L|ylZP=#b~XCI7|9F@ zT-QbCvyF`pIj0m{$f0IF%V$!GHpXo4zTts2aP2@2fSrdse8`Zch1Fl7ck;r0uf2Qq zZevyx>;4x2tAH;8Xnf|kx1V3X?EDKyXFSSCIg5B(j362tBu0tO#cH4de?@+3NTHh2 zop#Px&wy%^4?4n_HW{C6_Qrx$Z17x2LKJIUwkCS-ET~1;g57yxlcV^2>gF9#sbBXL z;50_4ot4WjyLe~&k^7V&DqNJH!kce=`kceJY=A-8WEbN2QvkmD>iHLbJ8CLKIEZ$P z%FY-GAaf~Mw3(f^0eO~!e|pf8iGeY-#u^=BL`ybQ>zX8~m5}t0BZ?hWV&lTKz!-y% zCX|=~ihwQZR2`?3+H3c>C$}A|U4p0%Rf1c)yDM84Zf|dIem+@6Od27T3IZ#rqr%fk&OTO&e+H&)f<_R40Im&H zgoD+9**7_4m+)`W%Zp?%J3-tLw~IK%h_hqmh&bJMEtkvj=HvUeUD#2maCc>oDA}gg z*0yiIfBH4Zq6Afe4=J(}=yg<=+5<%eAi>)+pPfH^`|$TqemM$8i8xqDY#Xmab48%% z#WEV=-o=RFIHPR~e>ByBCy50sYO9DXHGzSQ&}YKQ3Q&cndiA0LujCL1EFz4!I_n=2 z&ECx&NY4<<_9ot4-MxBuWp(vpt*tjF9;Oz%AaZHS_5UpPfB> z_S~Q6j!q2?NHJq_YQ2E7G5|8>8=B-D)SPZ>>|&*oG9@Ynf8HAaL6(--0z<4%_!=~} z2*wVGGF$Af@I(>%2Eb%dRlF+HkWU?~_4B^92YL_ht?sapb@g#Q`(w{O^WZNpjc*U7ts27f|!M{N?Gcr6XT0xJ-xYUx&1|)EbxQ&y}8ZSn)S7wX* zU;}S3!8(8%e<1>;;#z0)I@rH$Z0xKYN!?l`1q;_2lLKoELWjM1dgDQiVBRh6KuDBZ zX9T~ze?Ex+IS)jF)B?VKZ^;0yjh)k+ueFSe&iq_9If*7^z^T?dQw1~t1PMbMF_@CW zrt)buGh6{+gEfk#Ym=zS!!>%uX4r3nOzJ@|LZn1P?y44AdR@q-REM-| z#cH|DhP;3T@vRRlm=Kj(jZ*{#y?`PuDz*}V306yd)85DvjE}K3ZW%|n#KwY-MH~SX zF#4c4e^ajQJj`=vb%KxLyO9~fpYET>Hy^{=1r^}@%x|tPedE3*0W?u;5V~2DP3J3@ z93)Pg0J`Q%XMzl)3J?yM6><^pjSv);MWMsV1UZUoO9%v@`b>zkCn_^rYPJ#1jhAXc zN5AuJg0YPzv}85vri8o^#zrG=c9Z6qxMt_hi3d^{-u!$G-x6 zpL*l2W%a;VOzW!lyXpjNbaT`L9;3Mkm0;D66@^G4A|lZOaYG)XA2W#9KHxtg9h?I5 zJ~bKIsE^?2>@5}Hk<%~|?<)FsqgJw-Hz0XBL17SrugDRJ-?YEBv-+6k?_QV3G(laA zf1Y{x)`uUT`yzzRVi3>Yd(6>$>^YB5tr-%P zh>COBM-arsxnc#-h)C_p8_DRiNg)<#(KMBlWut*B3OI1IN)8F0fU~im4qASQ5wV8f z=1(1L?Lu#|jL_HG=3}rsj*c-tsP*Eq0E)qfT`NzGPE~BS z5|o({Q-;6Zp-X091Ikr* zi}5YS7PJRj@tEIKWL*L8S|=X+dvnvxE6iW0ei=chH1jd?>Q}G4F|+L=z^Mdhe+bzj zI3Bv-o8$UpSpXya+GNb>+=$MJlT%g!Ib{OZUs42KnA8P>(WPlb8yq9qBUlA3igr3v z0o%43rbI%NCTOIFLPO-!kfnKQOv9OdFNCwsg_;_Lu`U*6n4%fpee(m`vvmYkqp1!c zG1Aj}>6ML*7oT3x-oouj2k!3xf1m#Dw&QyD>m>oqbgGdrw0is{+WhGEE`!vC=tmkX zuILo6M3-uDiJmVW)=+brue8k|66pUB!pNG(35S}99|f0c>bAjT!LFJ-{S9-_01rN4 z?M&Ci!HLl~y{QXXB*qlrIv$?h+O72ByK!S<A|f6O>a!Ng8{bSKaiwOW&s*NCaHTO=`NSYq2GPakZvVA+(_ z)BqV^Ktv)paoHa z7%sW!EuLlV{ZpT$vSJSW>7?e=CBXhkGu*L3%gb-;|Q-IZQ%*lqGxM?T@df7_HNkUT-(0m z!VeYT6yZbj5}d+Qdb%FH*aO*r^bg=I6=1+R#gv+9^A5eae=9XK$pic-ST7SFFcVvG zU`)A2wdgQ--0CyBbO4U3)JnT6G=M9;3*D_9r@?DZ*EZ=dfnTQmxzUxa_oHNO#=1Jw zG~f-QLXYnB!S>9G0@0~0e6F~h*0VBojv-rLo!wMSCtb@#h{ z-|eQ?TYImy*FKEoql$U@O@P|~2n8nuC+bbRkYmG$K0v{Fd!U*;p^MW9hqtx0SMq{H z<^Ui~@Kj#ak&^Pe{B+v#W2?3qjbR-oE^6cl2^+E!epYg1b0y9Edg!+Qmjm0;Ek8)l<5VOsTwF zxz)HAe`H~(SB=1t79S*IUguI@ zAHe!1uAP>14x^`xK<3BDDXQDGkOhJS>Ye<(Q^vHZ|NAeWh@_mz=Vf~NE!L3Q|6 z)&Q+ugboWoZICum46F2m^OGw0kds+c@0k~$y5-3ypPKd{$2OVzWTN1V04gKJ!Voe$ zS-lwNp*5w(*Bsmef>LVA%iA8#2-(m@=(baUFP}_IK&khZT69(=s�jQJN~&aA6!! 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%0Dey*9C}`LT5Yf(+5{N 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 diff --git a/src/main/resources/assets/occultism/textures/gui/book/rod_near.png b/src/main/resources/assets/occultism/textures/gui/book/rod_near.png index 07731faca564dab5fa69bb0c8da12a66db545b0c..c4082ca915559a8c39d5dbea6a33ffe425ce90c9 100644 GIT binary patch literal 37613 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 delta 25665 zcmV(!K;^&fr2?1D0gxlJ1P}=We`8fiL_t(|+O(NHvaLiEg*Cdv=pvB9vLN86DE=-~ zHDTL?q&)zLpqN2d=>$w2gw8+{2ViMvY-nuYTHSEbTSraK-S^#d9zV^4uh(9CH}4ZI z<-V?KTqjBJ!U$f9Wgd=Qn<@6uCogZ2*m)S1uIrXzI0Sa2W-=?btLp@ze`P4D+^!o# z1VK>AxG8aDQcB^>6(iIzAKA-GZB^IY7jL`y=&^TFcAAWCaWi2Y=S5M3Qc7ct?bME& zNjrBTd~PYWmKk@n{r=;Z{}o?+`33&)7aRQk^pocV0J&RR*DVIYplWit;pVK_jg~s@ zo4Bt*^^72%=M&)k03go@e@1&8YUlV#_o7PEG|LhIZ0x@Bq5liuU;+Z{7$L?0U=+Lr zVqG~Qt6le|@54}9{F|G#YvlkQ>i+=}8~HJw4RD&KZ5ZYan8s}$)ILr7=ED|kS&AGH zwI!99t;?b~`^#|woK|c`H-})G=VOP2Vjsn|zfK}G911X~-;AQ%e>Pbr!3}VR!fNC7 z)q`Bbg2E1)hB9i~R%oqBJFM&Ew166u0DzP9{Nx3Y_!SP_1`veC?AFBTnf|?& zO(?|PZHSHl1pwl$)E60&KdZ67fFs~MufPkSPHuq1V}PW0OYcJfe`2x~1jRYGP18#{@(LcD za#)Tn0E1yIk!On@WtIS(*XhkX-}ND#t!ySXc_vTWO;2{S~AquI9Ly7=(`g9!G! z0mZG+0*+?&Tl%+e&RXwR_Rkv*0uQgih8puG+5w3sK#aFgut%=At5Ag5?X0S0nnfK1s$(h2G7BLz zXxEf=a4GO1Kpxt0Wz6I;%u9-knhD9T&*U%T=G*UH-_g4h_agyuRAB1J#cN-KY-<8xBK%>Cb$4xOW(P!*&m0C0?8!pOz#qKsvZh)tn>TZVJ zQZ+ubf0@>Sm4VWp)oxr{gqqd2<0#_3z*N;ds2EItl{p0(Owv1m4-)qwzSq~M0UYaA z1K_e+yDbQ0+e+ymu~iWyOq`(uKvsi)0=yfH1<$`hiB_F{fPKd?tmRmzkdbr_up+@#;Z?-4wkU)HZRAd>0B7!v5X4Y zPk{1Fer;ii70BYiPi~#|Kjaul;pYPEe~;q?INtzU+BU%40B^%-G4+6AxE-K@&OvDb zgKjw%bU?HKAX&OB35vs4_;JdV>7Aj_&j{(C7O-UgO1sWS^hw5!Dw$;@>u$+W6H z2$G5`Ojdsa93tAnJpA%ozN`RvRlXboUF6u6MfAs`> zCqPDZKllK*8dnIi4qBnDb^Rng5Xk!~%tta$g7FO?8zY* zXh%^MwRK%ggu8A?VFB0a{sZ6*&d1XMGNQvT<&xfLgS*=66X3Bd%J~`yy!oF7JygN! z+!lOr4|=xAOJLxC2_5U&?L8I`e_9hl)Q4d#H61i-rk#4TpuscIeJanfaN}81-Yu!? zSU1pdYgy-re&=HH7#;)kv^>2J1y~FoV7;>?*_62eUa^l!;{C5Egmj_9a%>aQ?-pS8 z)!5>s-1oXQ#veDp(*bDs&Hy5A_>#qi5c7W$B3~D^A!$Q&FC73efBy*(f9+#>0i3z! zX7W3LukU*mhNJjCK7W1vAO&7;LiTq6u}r(FuZ-V9$|u9(r8TfT}{Uv$DI4ilTMA6Sj{IV7EC1YS*-5 z>Im?Hckv^<2l$=|uyB#~e^9_qfO3Pecm)QQisVvK#n}G*q^nY&2(@AWCMRU^u7u+(xz{au`J+)s0LY8>UHU*!IKmYjZ0scEa zvU@&2$<=@{#w83`Z`K3qk6M)Lpp z-RD>0K7@D2QvpiZ^!R}wNxY zw9|dH)~n zUAp&C#yJ2K+++bx%Hswh*oRm9ItkJ)Lfw@0NTp^yqd_Cna}j(2GAoE3@%Ldae^}+xFkY8slT9qj`dcdS0X+}z!vHcPLo&%H4Q71$G<@gCS1V1P%F4Mu#n!iWtt;Wvr;aTUz!r%6NcR$lzN3{mpzeB+iij{i@jYFAm_%e~rJM-iHDlg8&m5R)P~NL=F~l zm8KPaE|-!_`;^54sappKR+_RM+k%9lQ5pAu6UHg?S<9-%^_ofMIk-wnk&(3C0Dul+ zuOU@LlI2WDOo22~l*m!R{#^DM2IQTxJgALo0*3SFH-NirPk{44?S}YYr5`{4`lffK z?c@0De|Z4^qSfqiBq@R@Y;pvIgcNFnRI;ej$RC9=D^VJi_Hu>203KJs7z2v~>;aI# zm^D^wuY-$(7LUc{3>dr@*)YH~!+@GlPjBy3O^xd7_g+M1PoHhF84MD0QgQEyXf}{z z2)^NctuggeXx*1MjfSQI8PU-K!S0Hit53Hqf9&8pF0=C)Y@a^c0DVQMH|c3umhB$& z$H67?fd;lQXjMk89-{1R#*8N2R@-+HQ(|0rhmwNVQ3ejP!m-TnKK}fN+dlw&s6N2s zgR23I5$?i6#6b=&%%mo=6!QSj;$cbU_fBzpx+PQKDb!)*aY!8QPqu^0Rb=MooV^p0 ze~D+vivL);-7Zj0WMPs#(E52o9@`-uYLq>v5RyZBxQt^?PsX}Mzr@Stm1bCx;CIW~ zZ9Mz*6BqD?fA+=Croe}#M|`X+0;G|KLkUodV|!)Uq?*B@+Nj1?J0N9=CleGamWjFT zH~ES{_}BAz1sI*UJFH}r@sf24ZZMfNfqd`#it-Kj|nTKWJ|z{gMiQM;+F zL3A2VJLMB>{11;fo&L)=KfS%Z`S8Z9`!Kz01H`*oQ8FX|)b@0&)Hj_KXd#gwn#t12 z)8)xkfyRmkBO^f5)TGpycRK*qHS(m%-aIy$XYYltLiBTeSIq^sW# z00jO4$fd3E-N18biYO0FBO69lf8am16!hiSKfk!Wfue41puoq{dvZO1=15g7$7iOp zV>J;lVC}Bf2AGc0Sf&(h0hWw`(yY~uK{nHkJA%x(Tss(*jkD2C_n!}&tV--%O9d-7 zY6Y8wqiq4?m=keE0Bx7SkrjM)tkQcKF3nyTwJ)E4|MvFvlMilCf8Q@yfA;}?cO`%v z0pl374ON!c9}=W}V=!iD&e<7WvRk%9#Zs1@=&A;z*Mj^zmP;E7vFc&@u+U z5_Si9t-_*mhgtOuX;8UdnQEEJ%{!COoFA*p4u?)W#Bg<+(F3E4_(%?qzY=`H2fm(M z4PXQi#Iz8Xb%N}ZhMA%`e-X+H&^kEzf#Ptt4L0ql!KB-J92mSoi1Q4$3p385FTJ(a z!Aqh*D>YoUXkbGZVlB{iG5xMOC6|E@nNh}JA%|zb6v%ldmDGExj+fuQdGqb<>*d@B z40{jWxvmH>z>g&2Wk>#jBwUptIt2)d1V?I7OvlQxnya=Wd)1UMe}OljxggsemCIWV ziO6|}AXp|yxMA?jma&x7mU2S~b(d1uxHAcc7MkL6g%aa5N%`~Liaa=HU?7S`Na_{z zUcCO`vUQ2-j^J5v2Jg>xJ%B2X?#zrMP8ZB@X&juT(zA1FNwXDvgtG|l3IaC9SOXqL z+HF|NwKe*PvmVl*e;VoqXMhCX3S4LLn7wYR`5qb8p58g*z5rSiuavH&85)~A=NHMi zZkj(n|LMi+8>9C~<=wCMuLrPJA{g*f=q@k0h>Ogt**UO5AFXojZ>|Et&1;7Zn+@Os zQ}cG2ffd9OPF>tf()JGJw6Gtz_0|=-RRJmBbA&JE*qj%>e_Sdp0L8*{X{FEZv8sl2?v&n?mrFXPA((H&_#Mz?2yyA&M}z_eDND4^uu$ne#on40$*)N7 zu5B2&M{Dm6-PHlA>I5kmIDc~Z7QzV+6i0_XxeuMWf3O;QvVyB^^kdHD7zkNuKoVY7 zYl?~$Wr%iM6NNcMHLX#kd#II~#t*W?tA(wN-Qtta#~B|d$(B5)LT4ij(A?4c+X?R; zxXX1dfXup6bBH$t)wcWdC>#sLg*`&g=|F%AO>)#_~NYT-kA0lH$49r*|FYx zZ#`cPAg3?x0v`6q(mR7nRcp?khIYGY4do(K$)b=x5b6UF^Me4;F|1=fVl1vHVBuc*DR?wan}NO@R%KzC1i3))>>6CkI5 zfAPKHMWmLx`G+^|X(E8(>wcOpb9qKhMfT*w+QW!ArAlPHN#dTw?`sb#wQ1t2mh7gN zD&y%hTU*e$w7hlP%&Q%|QUFt&2VDwlI>yC9ljFe*Q*?xNF*z z_T-#`cg8%pmM&ExCBk0u2*3bW#BpzQ%Zd)g#^X4Me{Z#O ziX=@ZjEw@`!e0!J;|g4HHxwiedI-L+D89?h_OY$@9=><&>D_m)2ax-h84lzuGB~+v zfbpUtpv-5fRI&b9V}VJvV(5+$aJY##inYXv~ny0Jd8Bid2VmTApU-_C63si^ts&dTCQO>7ls7PfeT&HuSO;c~Tg7d(vVahRtf558^=OSv$9OkA}FZ)(CAqxGgJMH~T)4q4H&n|eE>sMCJ z*hOk62;*35uc8t~@D{-<@-`Rtd|(rh>$0%T9wgy7vLHer-ENaw;To~oP7n+63PEJC zw6L+)#zt-YD=hqdFD{;LvINYS#CVEuzngh8^Ud5{?++l^Q(`<}f2QQ>N|kyLHsBE$ z6Sz-TWROJt;hiBob=Y&JX%;?G7L||!9PLZvhJx*+J|=XIwxO~a(9#+u@1Zgg7P--! z+2!!_kQ`n!+SrKPE>%ja({Z=all2DBt1I2ehN}N~^R2W^#TG3;mJc(ol!O2CyWSCeCn$EeAERS`E^gHPD0s6T?%cXJTye} zcYO)CsZp%!fPpEMR9_g*fp@P+8>fWsX|o*A!mayR*J9Ut1c+jS5w>{GE-x;@s$bS8KbU{HJ3C#FmGu_jKsP=POaLOfvLYJnuxPjHI!~ezz=GD z^y1~)r)}`Mv)drp%8(J09pf_JF2>~ZRmf0z+%o|1HLU%m>x?d;&@?(X5* z?ssRczp zWdarP-(h?~6sCN@y8}AAZzbng38daTrH#j;cj|bxpLK%QIb@Y3HmPwn*_WOG=F8=5 z`SRt`e=MsfRet>N*aY&EneoHp3l}a(POncsLu&#_6DW#F$|Inuqd;B|H64INFv_9_ zd$rK^27NQbI8E1mCGyahYHz}y(x@(9yb3)r;?ZWmg_AaP+hbO7+63>W?*0HyCvjPp zMSh%5cq@tuo<*5vWuBKwTrBe3hnmljvKFfOf0O*P&bFEwjkJ`33I%t%7Y(E$pF~SU z+q%rwjvU*UIwv_4m2_)*r&qV)YieX$$#wQS*xlsf(Idd3C`$pHrjX-pS)|D{&hvDd zq(xQD0<>fHf&9p=SQzzT7;bkEW9tG93Kq^SN= zI~~-{qU#^v7;H7bgE4Ql2gb=kw#erxe>SgaZ=)eaT=!u9;m%M0x_&-a>}TYdJYvM9>b9VMCtyVa^T~XqkDHpf9^vJ zl#G_s-=Xlm#rG}?UN>v1PPiKCy6)g=bib`PfK^q^3jiKFfV@@91%9_!8O(x}h z$tW%)fIVi#Rt=l>vJ6!Tg|TrPmrj+ge~wJxYa?i&nYkHKE`R%UU7;&Ze@#M3yLAoN zc9-L7ww)cW-T*pmSv=3HIOgs5gH$Yllku3pQ9=zg8Dd9L19i2wt~m5~(?UVWnyNOe zDQWii)g)_&;T@4n(!Ji|W$o6vooGz2;?@Rl=a2OYuqd;PlTRqi$t0bZSzImis^a70 z!>q^y<0Qh60-F6I^gZ=`f7*f$ERh^&2Ipp-LzD#Rhjb?IDEL0W0k`YoY1@R8uF-mh zyWQzF?aTds049k8xR~WxQqJSU!wi7yU@pgpNtPoe;8?zEc=`5LChSx*tZxie9BcIl zYP)R0u^8>~;}Un>Snc99=(TrUy7k;@O&Ov)x}8RDmvm!0{hfhne;H3Ec%T4gM-LKs zCMnHGQsl+>WRg5_qYi{`%;ylRVgZa@KF$(6@bF}sJVAxF)~%Waw^S4x z@nm&|dB!b?ROktEe?hvouawK5R?xe+T3ugt;#9w=`|4WJ)%l^#f8c|RRGcY9vL>1S*Hvr`*w4QeOUdZ|IJ#4i>u7y)ax4Y89uIY?h zN2&a5@7$aBKi;2z^AElAdzbLQ-T)pDxMhlll}wM04wC5u9tkDjA{D?=inDL5Pt)N$ zB^qVW$1PbQf24#VgHW=3eE;H_b3QR_Bh&6^tz~etwV!Z;x2A{v;^mG(n~1_VfO}a( z7pJ0=2)b)k6v0Kr_ojRBc<>(F9dF2ROCU~>=3?$}IP}2M#SC=`Mfaj&b?GW}GtSjT zL<$`pbnyFfm%d(-i!nU=j}0*ytUvzmzISP^X*&G+e_>_++eG#N)aDW<&^rKZdH9Is zcRU9aga>zSz-Qd9z|??W7zW#!(N(ATX=ivB;m)-SH*jnW-<}7(#rZBSl9@+2+yhU` zod7KSFiyICv|roYTshn-=hx7&2H0=-l4z`)?~+V0CJ|7&9+z%2(1J)G_I$8ohWGf^ z;A9Oxe<5=PFPns)Ho>x9dk+_FfZlmnx+i$>wnUI@iOx->4oejI9v|&*Y}Qs*YR|Ur zmvgjJw{;Bc_kGEP05{iFG?WmAg$y_kTAqd%f=g>~rQmJYFvA6Kw{PBoYrXE?!uRm+ z!uz8?hcM&@ptrn|4Yj%n`ax1`-_s|Xz*noSf1H~D{I%!UYarKQ80LTp0&*gR^gY5n zpKHpbw+1J_a4rJJKAa=4oxTJ+m%9frHinPS8@;8u7Ml%o;fjZNXBO{9&WD0e56ggC z-?r@mvPck!bloh`M0zeqK(2*saX}gJ4q*5m9Nf6Nw)XDbJNSGSUb6oiHhkNI%Y(t& ze~W`fj3^f$d~(J?oBOXYd@6(K$-&v$AA<7MIwDkWA*6!m)E6y z`SJPl$Gyjc)yo6Ozd9|N)dk>6OZONs-7)RM1K`SZ1#uA%&)BJ8x2+j=!%KLXP z05T6tgq4+>vMlcM)3X%#_Rp@bj|x}tnK@!MgLVOxq7ecHo?`8Oo2e3D-auzyxNM}3 zw^>LPY|g}Ai{SI7ea_B^@9f#Le@{nV2v?+N2bxH{T5A>B#QYBH;Ht{ zA3o#=c>S*=W=By3TU9(*CI!&6oY5;C`<&gJ4^vdo_?6~}b-)Y&voW9>b%auiwfcSx zk7Tn+N`UqGy;?TlQPQf0E4R-Xj}F6!*{GETkLSq$0i_nNzI+54!(i{*Eeqk0e&Q$?8 ze;``7n(yZv&yKVh9p$X!e;h%-sX1aF5QswB>1dKA3F|gTfJ*ajmxHX5QoVdJ1JGI8 z$BN&0@}@h(Bf~dU!HPLz7qI0M1WbTSGv7^m37~1>`$UHrodY@+sO2w$ds8`Er+TN$&653K_xy(m)}0cp3*D02fQ6!!uj0mUgcuzYfM@_97G*K)x6 z-1eCY8bDJ)+zi?Uf5f>F2QH(u(~I$dsN6t7BSY>pct+?)4^9UVfz0+eO?OV@7_g3j z>E8Z2wr_3$*PoUFkud*rZ_6s6{KLz+gtk&gVH_PDrUN!J%(M#^vlv_oO*Yc4E|i&7 zgJm$$v_#YDYzh@F=_83v6e1cQSB>~Y7osSwP*IBbMnv$rfAEd;g6}6PxVR_?e&3l% zC)3=Z$e45Qoy_D>xWD_I|2gOTPp;SAX~V**5+F=z0q6&QP!fRtqyUm2gYG=|J%9SU zp?LKf3`4{h1N?dWAMo9IE9I637}sP-FjIhyM!SO&>@8H<{bsq0O^}VXqTgvWy`|y~ z00xs(AS3Eee|}uc&(F-q(f$6zn<>FqfoDDc?e@RIC&-c@&Zrs85+EQ2f$w`OEx+IJ z5#DCY^V>T+#YqE9Y|+QQd!(>h@7^#I#SJqze1|L^cr*a~>{r9`;^YCMz<&7jHMQv|3i%^`^IL0AUpExr zJw^$p@ukEUwS8x%7uS)@+L)3T0c^zp%NXT4<>iIt1p!!H{Or|<0mQEE7b}GUz*={J zuU;z@wz`9u@0L#A1PPAK-Dve2M~`vWr4M~@e^o|~bWs2nTN{4A$+O;arPnFrTV4d% zY5S$}1OcMQyL&YT7?+Wmt$eM(iyM;YUjNvy7)26%NA$?;AL-q4;+zwAe3=ozASjFO zmKMTxz_YOAg&l9BwN8M|ou>EX!~imfZ~BM;;~YjA=}y(AqnZ-wF#_nF{_veUlcjH5 zf9{TvWQf9@LHPyi0K5XoRk7tMIgb`FAhmC##fMw2p|uX zAe!ma$U#`g)rW_4kRAiakFUxSAm@)V*cGuS!b_}yCEV@dHFp|4e-Z!_2|o7pYEAT4 zn67WtaU?%Rem+v501PR?7~cR}(l-xye;(H!@x=gN$qb<1i;BpmM}Q4hlF$!}MJXpJ zEdHd5NG!o;ew>b=)uy`Lny{100wtKlbsv6lYfOj_F}5_lVSuD3=*~GOTYzDRZA`yi zhLhC^7d-(Ow5z33NErfPFadzcMkR9?Wkm2{7|s*mAo4@}=70F;o%2$4cRW22e_x`# zi~&}by=nmCZ;AJ(E>sARd0bg89|QP*2Pq1`$39t|t^*$^&1`{Nx~-9@eDm^lRC|;C z%YQ?U=%~Rg0WNW3gKx#|ueTHdZ1#CMNd=M~gDHITcN=-ZHxCKcnY)9S8sK|>d$8}3 zwhI1%-v5%qs1^aOKYB&A)QR+W#VIO zAK!YD(^TC!A-IyD_z)Qbqyn3~$+yh2hR;LC_Y;6;!3mj2@QX3uJ>A+OJ_K@jP(})J zn3|#Z64ySp?{S>oEoTy6_9?uO0Q6#jJ`aIEtiZD-5mX=Wt*+LoKJr84f8(0Wwq|Pm z)e-C=ryFJpik8x;Xq4U46)(P*~Y%xG>i@k=93wlSxlzv(~3^KwWo zdCEtejr#=fZPJUWQG!AcWrR&3@zthon8}|8g%I>modTwU_ws-j?l{-V5QxJ@&*9?APfXx(DY+~zdQHble;i?&pr2C zcp*-mT+VT3d2&xKhr=LnrK-_2U*v}z!^!cQAF>_3g$H{!hqKw_e~peK&p$wX4B(0Z zN*O`!cDJ_jh1J#7`;JQx@X}q(T}j6$^yDE$FLQuizu)xzBY;)3F#srs2;eExR8-S6 zRbA6{Mb$J-F%84e6-&_+RaJFeRSeTG6~k~%)iNyCQWZtPAH#G_(=t^>#RvIWT)3vf z7jzyi`~+3e49mdVf9EdVJQ_RV9Oj{0hc!J#dW_e%&m=({j}&+U>_%6;{|{h`0J*O; zNa1RU?7ReE@Vlz$s%0ABhchkbfEmEq3Z4Nk1w09ioP-r%>wryShHK$LR}GwN8eRc; zJYyL6iCRt-(2lKJmTIW3bCL=?%3%i0z%C6fEQ}JZ?K5qke-EedEs+9+-Y7nqL$Yn8 z*UCo6rre!1Lg5=?l`8UD3+mv7T5?eaKKvt(G)R)q(Rm3 z2~D90br&Lqds1%4yrRq$}pq5lkw{55kzZ{*33}}*& zfjoEBQ6itf&`APTU&A}olL&tn~s*d_0R_f8_$dlu4B1(#g zP)hTYYed2@Gk~SVpwF%0YKTDu9t;7t8@>Sa0dOJke}7j^O*3RkQ#FHFbOKZ$AI%0% zVxas~AO%Ujj29yXk}qE|aK)@v6bC;IivTe?R5Y`l%EW8-wFDTKk$H%Z_~@(7BvE`} z>`g?81c_*rU%V)0Y-a`4wyb5^N zW)8n_oL*Xi>|{pj2QLzS=iGk#i!Z*N*`CNSzzy6i7={7%Ha9}{G~U`m=%3ORpwN(d zx~bcm4uHDm2p-95=B&Zu08~g`05o)m8OthbQH!Y6I0Bf7XHZf!$Q4YH!cwhs3f{_O zf7c%<&nqiO*Xlp_^&R+wVneq6%uCpT&_$sjDfK=90 z{B(Ah$YJ>S^s>ar8ug+h2||1cy@*`ee@!?s1|X$(H{iYg%A0Ry1+W^lDK#pvU5)^v zB!}xO-VOm)DgbEc>YT+S<)Y?Db7EQYm)F=Fq6kAzvgDZrgGUw@4dkFWmI@pU1#KT! zL>x@KqOr?1*c_>@MZEkM(7)c8BE8ti8g2`d@Lpi*CXv|DX$g{Ay8Vl!_a-Ale}I06 zqg>m=eS(1i?3F{my1s%5&!?YI^?%pNhXny?2?P5d# z7c0Sc{3~5438oZ?IPu)2N0HgaI<05gFXbNYk=|H`0?Wm)Q(b6P2(Zdqe=bikJuTBw zB&ZdjV;R+L6b21Ez{b&_G85SdjfyZWOVo%bpEL8TCixiv!n7T{kq{ zRVh=p+Za%2MOY88dl9XX9fB@GjE`K`L2o;4q#mcolf;gW0jArSTkbeN(jNh4Hp)eg zH00Ll0bsxXS=ecIDr=Px&-jc}7K?%Dx~4{A26E8SxZoiP+2D}`e`<#XzM@dmn$u?; zQ#A#X^oKGvtI!>bhoiaBG*>_T5Xo)nU(!z2U_XRlS6U}u+&GMj;S9N(W=>f2PHegs0#N`1q(PXmtg7&L+sfj}g|Kg82`C{v}S$Wcab5ucuOI%p)92QBC6>5s>e;TMT6ffo%ypFz`Z({XT zbxH4ml|^7v;zLW+3$@J_=uN{2ynUR7Kn0Gwg@f4A56+!LmTR&Rr1F4f&LFPH z0(6+gSo)B%fA~Dm;~8bnqBK#4$X_!rQBye_uY+5yYp>kAZ&hOD&a?zmK57DQbQgUP zQj{UVtO2fXlp0O^XKj!7{@e-j`GsC_ePe6yp!39Mdt~_e!S46J+ekdh2_@7PlCm6{ z(i_I6p3C_SRR#d@B!tB@*A2V`NIK_S))s{yH+6^lf1{&?p9rFgZMyosaobD@5+6*! zsr=GfPOLX;V8zB;I&FoWbF>)J0z>b^ z1yY$se<7hPXHO0!m=_;#+0S4gnKL*GGvz^WE~&${tuDQoe?oGjzC`8yGi(Vb3OsRa7mkNfPjJx6 zWC#$t+ePd>_5JQ)boTvI-$Q|iyI*~^dx*=gcHe@1C2HZ=3Qa*~wx&T|?wnK!S_2SZ zv^hk+s-&)F;$^x7v(}uWu>wbx8~Lj`4)C%;giS#c3{-FA=tgWcXfKADauHr0Q$}J1 ze-4y4c0Y-iaW|bMz(1S8T-iRe6P?})A)`@xf5I=3V3q)P;%~^c@J*$iuvCVR&|2U9{M`n& zMM59p`EOl)p)Nz2B%h|E=4uySNP`b^7;_uXnW!Ss2nN$t$|qJ}ZP*DM$zh^9?!YA6M$;Du#(7u+GX+>Ge}zGb z-<8|xEf#~`+RE1M=ZAj=xMMJ=VwW@A|LGq068^m{GqP2nx*SNM4A@xWFeU2-7fH@> zbXYEl{XSbov8I=AU=}839CA8ZATY&%2Lngm#;p~1PQU!xh+aM=!L0-!%E+jdPk@O8 zB}>P^rr&P}e?U>-US&}LR;#5l02*_y$clpmoj}{M=)vb^k*VgK z>Y!NYx_h;&LzAqwQi8F{QJXk3VcF}mXmO;&LH1j~4cN$PaSU~M2`6iL(i4DVoWS=J zdSEtoH*O5PNSq?UEK_*#Z`#f$w2?9lkJwf|#yuR?R_ho9Zf*;?jeNe=08OK@cm7NL4E8)n!o+tDp#?;z4gd&zni7 zpQ8t1eAQ_GsPOCae((D}?>A|u)9h?6&jEJnBlMHn>j#%NlBCA>oe+Q#K|nApAuJ@m zqJAutT(eweH^T|fLIxWge}|z^?k)qa&;y03xl*Dd3#~;KH4FjL=%+1FG2ml0X4~gD zgggv@)L@pwniEI~X7Cs!r~A+(q|wXZr8SxxO-isZ1@@ZFW~aN{+1S{8OaN}q0p3V} z>u?JRFk}bK)1CzYnd(Jit{^d)wWz#OL+HFviTn;8bpT3RM$A~te*s0?6Gx%Ug)&r! zQUbMB?0aw*pTsCZ0SF1E!B+4ndhef=#MSs|+c;vfEb0<;`j`4$3o78>+Chgt$WgYJu>S3vF#@=+*&$=qyV)Xe)yJDeeknbICOscH2jYS zf(GwOS;%c|eX?@jg9QPsuh$8%nv8mU54S2_nrB`=_+f1_L{3SAO^jPX2`+)Cp&-d1vgV5thgJ>$e=82s-1KAz64)H4XN!!@ z=P;ysO03lERy0Fz|DHES*HT~>i}3kaZ&(YUQPPF zW@r8M={k!D2MOBE>;ZwxmCl*o0N99G&xXXI)Hsu1m~%mpb_|qT17(=Cm-6BU z4s=`r3-OT|0xArAR&M@_Ha{z?P&pHA?g9cOSBxyKH)q5}fDa2m>7{oDgN?zf191ZL z^M`H(e`a?Qh)hdi@cZ)1_hHjyvGv>=-zn?eq5!f8vk#nXB;9&1sT1It*DqbZQGTOW z69B0|9Bd|+O7nXN0O=cIx)@AnIm%4gvxBZ-0T)LT(*t(Idx+T_j)r|c>a{r> z_Pg~&%)x&1>r0ncdnv%K07M1?m()^4hTNyI7#Jck0)*4RU8e21E}K9Dz#&>p96s+5 z@=G$@*#T!5t_HZ%qik(liP3WS6s`lF`Si`B*w?O=YgWEil`~60I|Hx1;cxL8OJHq9lWF_ z*I~*f48X8!FrUdLFBW2D0QD4Y1`|I9h7lTNqm%1lHQW z96&h*^)BWim&tKbg$(YKZD1GlZgOi6}EXfE#QEm$jJ90E8c*XrI6uPaKM?Q0?vRGm>BKYZgX;` zYc2Oee9y25P40T&Us@`&FtPJiiyU5+g$Mz@^5(5~P<}-Cqh3bR^aa3-T?&tpm!O!? zM*#`G=2(RR98VHl2n4`huhy&Me;q6FsIVxoQ|;7-%@a@5*9nl;i2?bzq8k}Ec#o2+ zPM&P86L20TAWG3GSCFF+85>8%b%;gp%V(Eep$QG5U`ububveE~pDjd)kBhla?;t?| zcv|0vP=KPqJiGilos!ffNP@qjk0=V@#$X75Pn_UyWa+K*f&Z!iyc)&1f0y9*5>x@u zGhql&dF8Sc03R;B@^Fk%V-Op6Ar6sQz$nIl3GC3%05DjClU%a2h>rfNg?~?}C=Bkb z$TGm5q7J9;wgYwuD>UfmNEl<6s`5#0aAj9x0JhzxedohkuV zk;LorD{ZQCfYmAho}>c5e+YTdadP7rp%m4}9)#;&=!gl6&8Fom8;Al~u8ZmH*pWrY zA9zuXnYkcs^L|3W2|5UjvSU{&uxPEL96pr-eDW0@g1H=~1oHqh7k?2t!n3^1ah%|< zwki(baC3cgbF{5XieH6OVK}kx3e}lZWlvxrxpK~p& zXq&9S#M^QHB#}Iefjur=mci_^4ioC4+M} z*+@@IVf{|bF?>=-UMwhucXkrI|8WP=OKJqztR>eIVD;q5=BNgM-M0=6lbwmO@Zy1! z#eR@`O*GU(tmJ@5e~GojkzG0HaS4E-4WMmziJmEMmqWcKtw5lKCOJ;SjiHdSQp)A< z%aCANiCwN}>mY%{Q!IYH7E?0;(gui;{ivxJ#M7>FXw4l3lfFFJ~ZZ4m!_WM1I z#|OW2(shl13tXs;xA8rKU`|`?PhbX8jmo1{>MN`I>iVODib!q!oMw@K}5qIzVat5E{Ci1hqoUe|qhFVMU}yfXz;` zH%gk-jsU#y;UOO4JXvq{Hg+cUOTXL7A`u!dD5DTks5q*jv`SWrBLgo%z75(WOtZXH zL4KN$tm!fwe*=Y@yJ4C0%3R3HW{I0ow;bFf`difDtc*Z@kDk8xBZZfRHi^&${8xaI z+qpu_I#LwC$)rz!2mqu#4S+QQ9CerLoj!m2|H1E6m*PcpaRCEM`7lT6N68}%GLI;s zBM-u{%M)AB_R#v-2q1%1E!U_i+8`h|)ruVHvuX8Me{!{Bk;7!j9KM6>e%$B5r+fGU zZy~|lE+hvqEyO9pV)w#BJaB!o3w*tPtu`9gn$08`0pMUU%gPn~kQW%GyudD!> z37M$?UJ86v+6h8dOcvo&F3XmaSzQJ{6V)g%Nv^6EX(m1{;~I z4)dvye^-9o-`8efM5@1kH==bbFx!coJ(6I-7c6`I&N4{#pgZ7Nn>2e#a_aINU=^Ra zNdN{m0vjU`q)!zX1UccENoqAvI{y!63} z^+&^`$Am>DkFF-bNmT%f0x1-cSrq!XiiV;1PS;c52`qeWQ|v-{Zc9dENK^S?Xv%_^ z`*$9aLF5A?eh5xQ(!Nx#%-77e7b!s8<_XA$T2H+)k27aFUuxYSk?B5kCPCeV;VUCc ze__p(x$W(z-+rpFr#1VX&GkBTH<~N3dtz^|gA~TucM@DDgK_8JMYPBe5Xap4W7Aw3 ziDMPP=|p~e6sQrh=Dx(|l;-Q+sCnQ-Hi zA3v~&A2lBfk$b0@teMsom=Ey<-#&Zxf2oI_`e(*mxQKCDa%BI@hm>49^i3J* zzz@cauROLn<%-KFNyqJRqT}hu*@bO*Yc_lS9F0`*^Itgv_{Sr8D>Wsj`7oLUb$(Rg z)_)d!{jDqE>94JW$)t7Z85mhWu~u3KRReX zf6uwqRa6hsqa}UjNP;K7%&$XIcv&82Ie(llAX|94X6u8k_pk-QCN7O)0ruo-LcKE@ z*XkVrT*nR7VJ+D^{A{n*@55Igb`H+B+u#=?}w38IPifSPWi1Y1W(Hl;SI`14Xb(w!V3p3-tSzYfXjF(X$-2oUJ-V1E~M z_t8~YVqSIC2UsM%H~3!wCN%`yX8`P0HwZA93~T+tdxz(L7}Zc)2(T4~?Y3vDFb)GQ zL~NVeb$RSpslZ(-ftqVa$}MwdsbEE{(9ta2iDf%Nu1-7nR!`b!gYqLgr)>I>vf3Nj zT6mtrFK0QNUx)CIT;wG9)R$-9#(#mA#dF_T;oyG(m_TT>?}xQ2=8ka}KJ+l@kJr9G zeCu)zct_2H^HGE(_8_FlhoKU+e74XPd9)urHL9?TYQ7Ja6_*=y2Q4&LA+m`BKBhbB zF~2SH4VTZ$fho*rO*1Kegc5)X}jI$j*!tx`5w#}Wh;d&wB;aF9%~5l z8x0GOLRkWo<@1o^?U==O9U-!fY} z{|CUqBsl^|ceOd31Kb#oK7YG(xHlXT;H=RKl^4Y=fDEIs75fUuAk}1}5Xhzzb|A0& z*)&R(524{$ITH(@;^`qk!OWiU#Ry+b53V$}TM;KK_kz(yQ5+S6&n2aKrQ zKru$DDoz~e5Cart(|-?RV5uyX5uAX*%;T{MmR`UUvFy^GrZQ~^m?Lmtc{mF4IsCGg z!?;sPJL?&(h-d)w%Q!yIpxX!g%CO)4KNPsp>ns3ntZm>%02Mf#OyE^FYZnhb{Or>C z>Go_kjXjiHPz&P*B96jFBlL;WvS=M(M2_Ov$B<`RvTnCLl7I8VD6qH#fsJ_QlI=OX zo{7B_+C+NNoMGH}aFoMoWMyReOOQL8wJq8s!MUdzGzkKrF2Qmo`nGrl?hN|P(Z*yr z8uee@{Y-+1GAOn}Yt-ua*ZgaT*N(6)$-lSPPju+?hdI0Qe+55_XDlUq?E z;@UD)0*tFXKYykUk=1zh9D0Z{d!V^lTB6xcsT$F_#oZVPP&9bU$Db|;zOUC?Z34~= zm%N#fbFgmMSLRZCrD%XVJA+ztxU(}(nq9Pj39QwMF@P1b43H(d+jw$a(hX# zcj1dKb{~9jclYr8`4``M@$i=~emXpS>7|zrU;4=hz*)Q1o=sZ~AcPJTCpu)OXQ>uI z`p&%2dVe80MCH-$Q#|`TlwH__OjUz!Vuf$^K^sQ-e1|AchCjzGPmdl_x&;?I7!TaK zh&SI)$)!G4?kZM>PIpm7g1QS0?Qa)73xD;CL}NCye*5h=%i=4;vEuFfx7#i7YPYB0 zH=QBc_#35%qUy7J*oHzf`vzxS`uhQxSnjsd#B{`@`fxKUaxl!#53rW_PF}w#1-;b(-Kcg1Hr>k$v)glp>3tVBV z6~S`#;9xoOlx!5ZuB?(+NO-qK+VE}C(|>ky4=iqWAcu7)P%9((XKRk%Q8)`~#{fct z*xbBYEI>%C)k23d-QK1W+3&GFNQsTx4WMne6!J6%!dS6Ajzy}|*s?-SC80vZJQ95+ zPfx?HUMg`E0VXeMg_c|L_$3FjEE|!vbaz=y2%`*sG^qg)!-&3Dm#r`f@?L@f%zxr| z84+YTCqMl#zfj+|oH8U>B)}LF7TAV5x!Y|@j z7X@6ld2u@qn7&ouNz)A>fJKhs6n58FD8Yo(&6jXjkrb0gzWL&0{%CfLRXX zuhZ$dmxY$YB$YY&$KPX2m*8z8!GDqwLV_y=o`KL-7@Dm>@t9iXZ6dKFlF%beSW1#1wu=HfF2oYQhy;_m&oEE z8v%$DK!9H0(aCp$kbH@33dGhi}ny_zrOVLjdY7mfp$ap9+zn1dj(L2s7#1YgSeY1IU?-<7~`| zfe3A0t^%2sXN9E2RvDQ}^?$V)P#^;RG|gxwiOqczJp;Q0&~eP+&1A(eMRxcZkRNPT z6G(kYWqwiC?x-Z(kXDSv^{g8KFw0>AlpM~7-pS-wNkS8k#c`9A>h>u->M(id+&epK zH{G@9Q4GZ$Zp=GdZi^-A`N2`I?m=aY~AmoMMm*W<`%73?GL;Ypt=J6y+Si}FQD1bgq6%djWPqc&qgM4TlAZQ;122#8gQBC+V zDstqLC-mcT$rPcti+?-}zQ}QcMEc@~;2RdtO{vXPn^bVCR52AV3L=H?UaH)EcbUs% zrF?}(M!#J2;n}e*&N=U4Dtq38$pWnZGYHE9i5#0{ri=FA7**5c?-{bpx{Qt9H9ToX0Y8eNU zs1Yd(kBa93hjCz-sO(gt%{JymSg*hk1Xm_?#4xI z^Cvbw@})tj7k_8wDX)&$lZk9SYkePvLHV$_8spXpjxn@Zr0wLl(&hCR6!6x8s-D>q zh&lDq(=?Q$u#b9P3~)3rTU^Xoz7R!5mRxuV=N({)SZPKn+gt3rmFbGgg2^R)FB)CZ zu&H8Y;cC>xJV#50_JIxDDNgKk9XB17bXB|8z^~22Uw^bZc?zuy>w`x>e0m4pQF%<` zij!tWpeT`oQ2>)uGB;xbzlTjO(3I-q%40|FFHv_4sCILP=-Hyk=PV{eCK(a>kIDHU z^{M4z#&c>V*e;-WMKSxbWwFhq$(Elp z-$%RGBY*JfnYl3QW>(}cS=vZhAK)8Aa{xIgX~b+QWsV_^L%(k7FvWARUeRagKn5fs z8~392ywtBNIdB-$YfX(NW3p#0*pR*;eJ*}rLb%ZSa92xPIroqe1-cBjtAV_WZn0g| zwuSXwvAzk;jzH$KMW`4kaTk?!okVyP-zXWkFMmNzYM{mq>>lWX!lI~3d|YK z8#-`ng0G;LJLAmPj$042A`t08h*J>~6l%FU?Sd?(HQ<&HsDRz`NZ?R;SQ483ay!E> zcV@y-79@t;x81fJUf5{MbDW=SUJQqEz<++07&MiX4X6&ewgRgS!mX3Z$c8@LaVU#iN z#msv3D#N;rEe!Yrf`a`}P~GfP+fCf%unPO6D1CN}4)XW{^2Oyp%flD6hxs=G1b?vVO@E8Mi339TK4s*@e~B0 zRD?uv)eKAii`X8r@QPju+53Q}yeIh8XjBADuPE6@@yawdm{NfK+aU!sUQ-aKYkI zhMTelD8pl;vZ`H2#*1)SpA~)iHNn**M$qQ>Wvi$hE^b6k$}I0|FFkIxH2k@84steQ zf?Xwp2?on^B#@JnA`smnRniv-f#bFbQQkvugmzSkj!K@U2pUX_`j{Lu@P9&cb_kS> zk!p&%N<4%M#DzTKWiUmE6jBJRWq&+9usww)UY7IydIf61zIHo5Yw38 z+z8~mPPq|_JZt-ZEN@^w42-n5!4?6Pn-VhR8cWbJJ~JdVmoOB zSUopC0%byCiyTTXDkv4_RG<}=h#D5$S6)@rxPkJ72xrqN( ziJnqC#9Y-bAP%^Na;g@Z)8r^CiM^C#5z%hxe*vg zb_hw33hc2-8j1ssM}Mc}Nkoj^Kn&e^oI6d`(aJdX;6n`EJ(RacNMtoIplI2bUV^I69koea%wX%fY|3l8dH9sB4?m<`-OZr8SHyeY^=RYIhd_N-Tw@~p zl0ndoQP)&ms3g#L9azmOza-4#vUxIWhO$WRT7-|tq_!k8$ba*4SV-2{UOw4lKpjll zMXQGqDri{x@?q6&W{eTiTh?bM9e5#{g6^=*l$NHPd#J^qGkEk7+m&>+=0{*D-l$b$ zxAjAF4owVm8Je0biE)XTJg)FduKje{Id|S3d%z#=+&N5b6*H$=W@^OFFXItjsF$mr z8~VgQJ9pD_mw%t=LpBk&G5p$w7M#uW zFu}PH=sQ%SolUA^3~}sS%}g)I)KAFqPC}N%wxpXx8+`Wcj%`vX_f(R!+4M`4kd(AJ zFbf7!I_bE!uRqJNrbqZnWm|TP5QUM` zQOQ%2Hkx=0Vp$lQ%|$5}99lLZfAp-*^RQX`HuQ-DDdjOCP?@Dpa+akN)pq*V`7Y9k z$tesL$bXn3CPuPnZDMKl(Cey@xqJVFK=3h*4pL7*Fsb#|#}p!#BoFk078SPMz@psv z-#Y*o^E+HE=#QBVl}H|L@MeybOWT!vWidZ#dRn&et&|*ti z$n%mMh18_c#+Oe%qa;svh&l&%u_#yS9lsVcBQQ%w^xIQTpJQZPVmH)N!%9%=PpKfT zhiqf`=p8wbpK}KznIy*!n!*dkN*0O10#OrLj07ZFG7Nym`9V(vMiKb-#4l&pPw>qw3hEuu4aI|x0 z6M4WNhrb90xdBT+r4;qB@=3(FZIG*p=f=E2AkJxNq4GG*00~qWsAgog9q*z*Ng+@> z{gnb@kSSbYjDD;aM(BhTEg2drT66hCM}JEL-hOQ6%x$>5e!8#}Bqd?jubL`Kc?gpg1S}$GZE`3GIQcn?a*tdvG4Nm!~`GJkAHyT z1#vVOXa^-zW>+B;&<9EahKm%PUh=~cCWsHug}{vJR52Z0EWn_=gR?}5AU1m?<`{-> zoG7)H8hmClK(DV{z@vb?m7C=R z!-yY7$_+fg`7r#g=3$qK`B!bBRacBezv5{l?FxXRyj!C_w+}wR` zXpO4EP$_d49+b1!E91lhZPSt#B7H1ghebJQ976DF9zM3Kr2#}f%0No01-g~wL}5`4 zB^n}hJzpY~rUs0`V9T@#&VR#&Aq0_IG*Z0!Ifily4UVc%K8ZcWjBvAYxYM}Um0ga_ zOolfgA7HDQVxxjLpB$26pgtz8lOmjOYf8Jzmd~#%C`6LWt0On1XM~zq-G-+v^mWt9OAxkB-zVwhoQhq9pZU@S|^1zX41QVP+fr`fjH97krF)<0=ClvDP&E>lM1a8p7^Jr3 zKR z($iy{eb0ddA4lwUsSU>b8bh~2Tv|Z+92swn=KXWlF~RxhK(?Om3uIg)kK8D^k%&#{ z5s#r{FH|n51e^T&P^vFAHPOiAE>);QYA1AYGZRZW{`%mWIJQjy-nEWhdPIoPPBV2VwW`-~So-Sco1uK*O5?V7w<4 zb411J`e`MD3C@_n9)PrdO1Ge(sC0P#;1vhNb9m%?u zXV<=c`y7)mIW7+z_~8d>dr}$siIGcw={hEO(u@f#3K!3?vC=(=VUPERBf5ktIOK`) zI6^bP>>!~Lzg4#A+BIJ0M(19Nj73P}S9;RN>3<_)1Qv(^Q(seu#64T7%iPQ)hf1a4 zypIoqNn;-qY?~_%b|�{id5;`*sCiElcl3>Fuc0;koioc1b(HlM^oy5Q4D9SWYg z8GmccsD&y#$jk?qmQ;*%^04`^&=tlG_S_bQ$p>5a#=jkt6vXb+I$Ch11kw~yKp&RK zi2~V{IUrx`j2m8wNjU<&&~*!Z1|38^b3nbr(j^1Xrb<Ypf+{AbC?z*7 zu<#035%Cf&I+Fl68?iWP$k8g)MVGn2ZW6$e0WCED9J^#_5QDY&^lA zTJ)@2+oFie+p~>;7(Y z&!J>y*ielVA=P2c4F8R-D{g`fD1Xk$HfkSxL9|&4upzMcqMc&-E~E(!gEX)f(nKK4 z$tT4l@;b~_owE91BR)Qj?kRE@0u!R3=HX3IcjTkvS9f{^h9Or@ zW+OAJL~6m4n#hzWtgwi&x;k4@I0|*lUpSw-D_0#%i0@-aQ7-kELq7XejDMCn8lr%Q z03>BQ_emxXIV|;TD@EQc1Tn&4fs}1T*VM z!wV;bbrM~GuYsscw%&68{oA+Rzju#;kMD8VyEjb=nr{)!FYzatGK{&9tdCVPkfM#? zxlalL-q8<*c^<1Wfnoqz%YT=9PYxr}=s^YL2R;Um-m~TEt`7^F_u;PYI|07_;Hr>joh5~>>OCx`mLz3 z-u2w_cdu`IcIDH(_sRFTAKFOEO#zx=Y2b;z8Q+7P2yuX3seeV4TVx=ou%48_Amfr8 z#a_^>4%wYM2z$U)9^keU@3_OY1>NHrnBa^F+vZ}(oa zMTRt(6g`%M9fV2 zbb5tpRHN6$cI(4X)!Gkg_;|bJx6@JB1V|(QDuIuQK!4tKSblfq+t>KmzI)#ne{Ws} zfo04hWlV?0g8~@z3;O#LMFJSflZOeGIY+fKw-N$yYIF2H=&9jQR?^!+@* zjK?cs5p0S@#Pr+=gds=ZV-pK(UDybG?xrur-$yrG1c8-IEwkBOQ+tfI0q5UDV@W$A zcMvURY=0bX;HW3(uR|CFC1o+^-6aPDR)Ts$9G%h*-oJ|C&W!Vt>vA;<7tB1j1gIz?aVb;;eH|IPoF~ zF9rt-T=FyElR1M!5Hv{k zO*!B+i_kdb(o^$bl+3?nfykH%d1C@kH3IkT+I9DqWk;a30!3jg{lOL&Z9?Yj)`d{G z<9`y1weWp-YbZt-3|l5ahuc|K^{*ro3!6jQl5JDT%TQ89oV2;j7?S2m$V;Zj%s^BPt4|nsh zwF5Q{iAEY$P`B2r)fSv9fnbV2=o-gB8Q^(4WS|oQ`+b@=i$P>(2Zf{-Fu|q>8Glrk zjeI*H^4Y_fOp-&Z&6OyflfX9BAz5NtbzV~(q7MG~@F#~_0u4m4zXzmu>(hpl=A1+( z*e(~|YcX(D2mbcy?mO;wjPi#O$QgFYJd&+UPz0EfRgI9qXgqS^&ebZp>J-7YUosnr z*h-5rh^Mo8C|0j?yd47FJlrL4^MA&uUIa9{AHv)Sd}{BG7P7#{_FS{0#cOimJv(#* z==1vb`RBJk|DzF@6(gav?E~t!)RxwUdd@KzwG5J5x&B0o#}6o(f#=330`)Qf`q3o+ zeqs=btLAgO5%O1nqRAiKEPZ9SGp+w-dCcKv!()$)--yAR*WiU`SK3~duz&K+3f-86 zpxLQq)yU1{g_KO3kd$kmB_yw+(6hn>t-N52HZf!w0#ssV;%Cx`o)jU6;13FaTJ_=M z{vpUOS6?wN3+!Oqp6=r}Ui|O~-2Bx2T$UAT);p>_4uDzzK<{K3J$@1dkKrZH1nwEU z@BGloz;KKphkCmz$!YFvaDV>YF8gAFh8utS=_l8ax#IeN3~{K5$QA7?ojfZ7uf0}A zhvn%V{UMkcuD+eZdrugC#2|ls=9y=He1?Y(JmN9$u43}};F<2zorkY};PC1glgID9 z_ujSt9Pc@_ul3Fuvmx-}zl}5g6S(+{qyESL_#gk{fBcU>+JgfD05bpp073rN8%$6E s000000000000000000000002I09=?miC+1!?f?J)07*qoM6N<$f}yPVZ2$lO diff --git a/src/main/resources/assets/occultism/textures/gui/book/spiritfire_instructions.png b/src/main/resources/assets/occultism/textures/gui/book/spiritfire_instructions.png index 2c520995501ec6b9b8860726a0eeb1e41aa3a880..a0a24d915c1f1c06b7c3ae556ce79c60a9120ab6 100644 GIT binary patch literal 254517 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%0A(u?nPIeDnRagv(d;hDUt`a!0 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ΝJ@%R~@hcuY(jKyq<`?S!EOiP z5$68GXhDpPJjk=Y5sx@N$7mym*mB=QDu>a3qtwX?b%!Fd>zq(Kv!5i8@ zAS(w0^@MCkJFjTmQ}D`B?Z$uH?w5T(AMb4I^vm^yJUS=D%CB*=Pkv&c03Izn&0P*q zu{bf{uM_SoNpaHHW=yZoml@gu^%J&*N2P65!?Jg{MK(DqdIGcz7@4CtAsd4du&TfE z1`_RIAdLoh7e_w2Fa%g|Ii|i`8%2Cv(Gy^r14&5a;jZT0^y zbZT%z9!Dh}0M+d@c;vu=O$6BDdb~@9&{(8nrEi81Wsg(Q9?q1FKedt4))|A09e{)1 zVxY~L(}2dH*&CW82>7<=pJ3K}jb&98o>O_&_C+tD_*eoW!F!QAv9PnRF+9xvSs0Z* zY4BgJ7gi+S4TEpF=$XY!aSqAsh9~ZmQ4{chWKnv6zBtuYbX)h8LfHdQ1IT0S|D^a7 zPrxovr5s9~(+q@%SJU4M(0~u0^mpOrr$^`8PZnSo7vEZXudU;U+v#FBRc!ser#xIe z13U6;0Gog-*IqEwlC@Pml(wU!{)HKCf*3uY?RSJTrK&%8hZ@)0e^JdSCtt7xGMeaG z8-%vl>TW_p7A|DFtsFdue?_c@H|(`E;`$UEilD%~_i|f9?c%uQ)grg5<))75GeOVH zko(BnklWgslM5y7-CBcFMn|2_MpCKp=;uYR1788=VHf`H{emOi0gXYRW_oO{5#iyo z3~V3U3m|P&KDF(1A&OEh-98_ldk97A{Lsf5!RlJfamHctOSY=P+)I^Mi<6U@7j=O%&a)wLzhODzaTlPqm7Q+<&?lngFl4v z23)oy3p=F#?$y#pThAPh+vp8t>AaV#2atBV*;WwPNL?XOYm3`CWicIZv|M(xLq)7Rw{IIXk@E(sWZK}q|0zoJ!oI(pf@V_@6aMc zT+u&tcj>o#=HB*c+=*+4m%P0tM&IbwE^mvbZ^Y(^3BXDK_-XQe)#3QL+?vY6(Qca98BR98R(2az_$>)nIpczp}TuEpgu zOM!RA>v74A7DX=Z!`>D~peg^~l0oQBpgE;!1f*}FoJkVfocElmu?`AE6budUL=9md?AIeBqOWhkQD$;(11_gf*m} zCt22&QmP+Q&guclfK2SnvMh>Bnx0Q61@iIX4>$Jtt4LIw$6FY61ouc9E#+MUY~AL3 z*T&!S?QK0@&rqgvtultOFve!>42qW0Tu1OM>v3wWiY z-XXciX9z3BC)2|#zK1eBaDz&{zA-Z66FSee$EtUr)&*Lhl~D;Y5tHX=J;J@uXTHI& zeAz^BUi$g8kZ>jWvoKr@2~hOg^}Tf|-#P)76Ggq7RX(yf%Vo|sN7?niT+$UlYoU0& zP^kGRu(WZIG&ab9G8(7|k@xfMK?)&(s0GlmTkWSw{&3{Pr3cRn&@fhJarJP9Wd#OA2 z?orRkFbaRI1=9}LG{p)woY)4AmN3>;1pd_hBYcogj`kW1UJr5wWxv;(j07!hPM%%z zzr}bWvWL<9WH^0C*@-eRDdz^+uq*L$vuq-8gqpR*+PAfpS@5o!>xhO zrc)$3ab|K|sn%Wwa6}_at?_k5IJU9%fLgVmaXkL5<|C5?J`SL$sIL}`ZQb@(%Z&b^ zaDpx~hLbJ@K6-!jy?N21ujhzwQ<;DLDC0sWp*?^TF?j!b+U?YrfM?0?9B;eLrf|5P zT92`K#A*t6dU9UCqQ5H2C3LsIf6s8hd}iLbqIzK^rKMBY5|8eNcLpRu(!4KYBYlPi(W1Ak9_jB_NFt?wm{46 z`>Q!FVpq^$9RvedP#}eXXf^Od5M%)a2W1EXQ2cc&jlho!KAWc@6>lTvUHIQA@G$E9 z2?yl>4v70kk-}NK6Q95#IH0ZMjnZx%|J6+)lmI{^7A{pGm}p5RLa2bhz8ioh#chyU zeKzAq(3JxeDlF3gr7hDbA`837XP_)@n}dgI4y7izLcSQiZS-G@_f4^#yV}C%02a|2 z<-gG@2FMM07bF~fxMqWFO5jAmhD>;+&yW)tj*k*g14pCTN4AHKL2w1^$RzMCRRaNl ze7L4<`vOE@VHiu=j2JeBn0wCWE~r|tH8kVI(M@~-Bc2rM`=L#^3OFtNE zYX1BZ6_D_2Lw4ylGgZ&ezoH&yDj0hO^3Of0PVjvs)XYwtE8CHAY{V;5Xwhvx)I38` zzQ;htB4lxdv+scnW3hC?_NTz`{GqI4@-+gCvAez8BRxedb!jL9tTo&qmaIL#0xVBg zC!CN@xpwO-(fY;^ciE3tsh$oy^7(!{;v%oZJ-%9k-r9JjF$N*Vbp_8%_s8ouIGhH2 zc-8D<5U?$IfBf+%0GVTg{uk@rK*{-ZB-NwVc2Jt6&F)zCUx=^G8!AciEQGaZ8gkpg zH-vNxE>>qcFAd2K$n}!KYDfPs{;P3Hh(#RdVMp_!1YtM=@5dPe1XKlv;;I*h;LgI; z0tmri%_wp<_lpC}Ky_pVfINL5^5X>Vk{S*f@b>`AzIl+~^{M~=l!F_b-Jd5yVE}bL zyrEN2;~DB+jQ@X^dx!SN@f(>EaugPHQg?8q*`kf{I`e?D(9P=-fKJ?8dLaQEnzyY) zu$=EJ!8zL9&NYmE44Hn<7bxl@cbaElY#KPqe-{3cDGd|MkR6hQlMCPLen0`hFA)R=AnOd4dXq@%<^=Q8Vnm zd%N#giEd;9LY%SVRm#ro@2IMnc)@p|>)I-k0pfK(UfFQ!FMJ$PP^=7@wPeOVmq3I% z(pISr#cwn1;c_@@y#C!eQLM=g1<03b`BUv;I|?+7ZulYRKs#;vZ^_zWmgEjkm{G3i z4VlV4%Dr zB>@n;o>=XNZ8CI4Wt>sqmCKpN=RsX9Z6D{u<4x+;da|Gk?u5(Yz5`chuHyaj6IF;j zFq`@B5@Qs}ym*+Am50Kq%WHJKojo{-H?tiC60$rhu0kqNw85Fn1M=om=gnCt8F%{g z+!1)vS^x&cGill?@&AXXFAs$B?cOI7W1o;F%2HZHj1-knXt9J)DZ)@hC=|&WLz_0) zDXEZ>B~kWJO183OPa6^;V(fm`GoSbS`{Vt*(=_qS^W68j&$-TZT?d;!$%H0fxuPo`1osngNj6Eq>xLogu&~jyt1Dh*Z4b4;XIfP}7H4s@&GDnb` zztKBX43gI)j};{za*tZgxH7j7b4rfqsqD?w#!&UfnWk%fMZrdfeAWEr6B03Jw$)S+*oLmZJhhiLD)IPsh!2*G zj{N&7&>d`5hc*-+{FE~>zv*n|d9jM;`!dv5?oObn{G7MR*l*{t2Lo>yQwciFQqCIx z|GCKy%^ciVz4};v60Taz=@6=Kiv;Q+U~-A4=yg<;rgU2LUHGc33+RF){qh259JWT4 z3OIVpF>K_cF~D#CD3m+sqM3~}yv5TBJ#o7vSl*BC4={O3%o& zh$5qToKgwT7KqdEG|~E~=ceP%m`Ka_I)ozj18emIY-$dIp1>ohEJD|Fus1$$J?*;y z67=L&X?f;}+e&+bpI$$4L`EV^kXE`3B!op&R4DklLuHIi*}r$|utmOB z%+^2iZNepqFO}qP?r2xHD7nn$bPV9@+AqUsP|qEEm!;$0*M8h`>fe%XpL2ZFJeRSl zO+WdRgo51ITN@f0J`Wd8j0!ZJ+MBgHH8prnJbLnenkT8y)9pF4sWMu1S>9=@N62y` zeuVFH)Bag9(ySqFP{~m@fJIZ5q2H1VU5)C-&j)|Q$yWVq^sKVgHXE5lKxaZb$4N7H53Q9Op0prR)W22@2>)BqtgZ+#bNs4M85Q<01H4*`R92 ze%dwxsy0e2Q9fn#Ad8&aXkq+>((n|TYr%N3VKxfHHOad^QSN)IfG3RU7&~{?A#`g) zq!jz)oJx%Oy=N0Yljhjh{A@=Hts^Iq+2@6kYegSs9K?AU?2@exTQ+G?zrUdwk}W!B zz20^TH&v48X8#(ttR-`3$Z!06y}xp^9G{Pw+l_OTo8$)f_pPy0?fY7{FW0OC6^4dF7Y;`7B>Lf(w@qu6-n z4nZyg5)w)Ymt|E!4ah7!wSrmsA{h*Vi_0z~^Eutqj2E!9%RGQn2=2l>F9a((GW^xYKe>ZSN)L!@c`Aw0^nBG#O(h-WY(FJ4g*NM0X{7NL= zG`Js~p#=3+*bAAI>z+pBxkoC8SqdfgtR}xU8zKLuM z-j1C!{vn6ZCi^h@Txl0|6Pd$af_H>!*wzR^{>XUv;jD5&P7Ym;D#*Wl%o7SOX z-|AmW)`e~%dAupEe-8(MiORWvSCVcWs?`*C zok#$WWBZ7Z%bgOdj%Wu-nqM{xd$5%C?CmM+dg_=Ecp3FtU;RJ3@nWu)g2OvN zY;00`*}v_)JSFsTed4K^f4|;N(N`{GY#|M7auM;rHN|PY8r%W{Oc8r&cSLh{+r*Y+ zGuAt9noUh)I-BA#yFECgOw`7Q{%wC=zV#t@?{OpH#_W;{LJ1<+cC-!A6PrSVrk|n~=!1*j$^uh)!?JP%;n5vZ^aI-AM z&>!w56A2Z6SqeexqDl?^5Ulgc?Cm~H)A(?W{tJ?edexu$(t#McI9jM)O*+N z$biMv*%>*H;RDzOM2Yo(GGSLQoTy?IoO`okF5Vxy?&)JU!LFVcx5R*%+gGlA;2CWG zw+EQ^?McB~UN%AfFJzsztd4R0TEo8vG|FY?9owh9lw9+!IK}W2ez2VMv5=xtkI<|n z7?=?7NH6cUS82OieNp>5QBsU9Srv#eYEy#<&+4&|gmlfdd}EN)7ZI-UWn`5%@>#c3 zO|-M7w75E;kdY+e@n(eDj6pbRM!d`U4lp!f(9n9CYM_=~{dpgJM4-iAS!TOayeEv% z=}+M*lyEvfa?b_l53Z?rkb{(7UKU|RnmC6EVn`m$zNLR9KjkD>^OSAsSs<)V) zE%^OG_9~*VA)Y7Eo7SSXNWI!a<~Sewd~RyrOz3sCvd@D1CEd40H{M)a{>DnLlbM^n zv-M%&9ri`c+znoE{(zdb$zx&psY_Y8ex|ga{sNL5p;b2T=j69>^7)LOxlrr#dWW(< zPSjNw2SO5${jvIMriRw@G6{{P{^WaU;YzU4Q*(2@phafdC)(}In)$#j-4UarvJ?Wa zz4a?vr{{$Pn!iW;VdUrttlX7|?{4}-fOXa@6f z(>0WT!hi{AMN_L3LFO+tH`je=JSG_)W|0#How0|>OQH=KN5a&bbiY)2L zt{6$yN(tC12yzK0z#MQ`1u`OmLof=Nw74aM)tZGEuFc=#Cw?BQ>2nPHq<&9?yxsjJv0rK9 zwVx#t_pu=*q^y;Ol{c>?3;S&N(_S&-p$__NeL$vaqME|OzJM;IC4xEG`I?;{R>Do6 zuOlE`xuQKrYS7I~^XfQ9E@Jd;(>qFvE%#17z`-lBuHSCK<}|6$XRhq?a9@evg#oXO zN`}qNq5WUjI>is(SX}ldH8o-1swkaaK&iathrEn9zjtZ|V38NbFRK;FIR+B5u&4Ch zbyt|~h$OaqX`5*bf}Evgj-HgHg~ZmL;)`1$D1eJroBjGNWRJe>`!jdNs5hoBTwAD{ z?|Z^urX#|a^QWRss^+dssf8<98?*&vQ~5}W#VSY_V!yx15_1UQMjmm=1}7`dmUYBt zqxop~*q_oH++^Aqwo0U<)8T$jS5{GR#+=`D60@gG7lw2HUoviNsRod**;{y zJCZ7(sLsEV^Cq8`{=Iu&&Okd$SK-(5W{Pw8FlTnbt0jDquVfk)TNS(tm^V&ialoAT zaxk~#?1Z%KfoZW&o9MK`C45TSt?m9_hX2My?OwH$x)|$aNx8(H9fiLDj=mlGmaMXe zJl55*bn1Jw1K;L4)UWE5w6t0doMppzcD*+fvJETBdI(Fq7;wP^MO3L(oz)U< z8|uue&l7lte)7PF)LO6DQqRZswG{j9OX~W9jd=o- zKpy&5?9KO0V(>wnLrDL;t87UqV!ZO4FLJ*5&Zg~hgfZG&RuSA%?TBf9r^uhjXVd1- zt{*bpZTyT3iZm>clPo6|>${nLj#MMY&HdmEM|4OF)+LVGj$+kUlHsN`4Zp<8A@9B_ zUStnC6$n971%DeO(>FUH*7-%?Ge%6&d{>t3{Z~c0-gG%l6XapO)qC#a*VRbmiJN$1ILG(& z1=v&*d5?xTpWDvXDz6*Pb9L8OulGVDJj+KlW&LaQTR%gyM7kXW$ah}mwr1Dd46qB# zTGKN<8gZTynD$h&x9h0@NHB5^lM6Qm;$W+N?EPd`|M3-{0>f1W3iG|@z*&KA3pMb zO5~6b7P{Ia&a9W_3i_i~gfSWYZ#^VxL=m3fljw$nn{u~#CgHwzVu;qvppW2(mE{;b z0@>=Ti;pVj%8nE1a?QPZjST+sL7!ypl4xx&DeI|XUUNyI6Cf9XQWNQVIEo}hIbx{b3d<(^8K~w1EpxqDq3Z~6o%hT9 zO7|8F0K@FZO@dTL9R`$YLqI#V!Vq%kCTFVl13&0#Vo&Re_N9Tk#|R)dD_ zs_74J&7CVcM)$d8Ufq^|a2d0EIV{5ma|9J#=SrU6@k-bZ%Gr6%)k7yn)0CWPB;nBy zb0`Zad@YXi%<}m*HyrS6rn^#Ag_Cd zM-sG%pnAL1Le3$L8`??PbCIiMfnSy3wi>mZ8@>~Ue|A8`8UeUYV%d2Bp={}^GSd1gZNN^SKb&_{dmlhc$ z2W2Jw)pt$TU)A$UNxO4KHrUS8E|j+6LcbWe3&j5oq|=5R(h`)=qF#?kQbXQD#FyP! z#)F%{dB+~mC09;mS%Ir~@mK-eabfa2R93-NXpqd7f_;DNVX1nV%?mKoI$qWX)Vf;b zcNBkjp!2N9oOmJKRs*5$A2yV($_0QII*J3GBxw1YhYF~6m0py@l$ikb#oR) zPwlrVff*P^PMJxGFEMVa474#ix7TMK^~#MUFx?JZj>wqEpAxU`^{4#L&{Cr{Qs_ql zwCr!-zi;Dv}UKdB-E~!YUrXPWwDf!cbE-7rN1h*pHhK*(@mSY!Oi=T;`uhG zobqxkLiEfqA*PB_*`orof@+W(2X(`evLK{S>?ro6<$?1g5Alj#*co_~n@}lF^caon zzxr#HM_-0KiC9XV!IdI#&#im8$9i*Kn~mhT;LF0NSGG^zeM&@0t=7sZ3tc#@2WP!a zt_rd3@btfogAS@|?;4G>4gRIvF8eTZs8k1}^3B=rzWsf9KC@>HJdfT$Hy|i)IeB@Z z&DJ>w(~#Z1Mz_aA?fbxdrfL}%ijwo@P3NQ1ro{w56sUZ!>eET>CSW-a~N$NtUpdZ-!CQ?l!OMSA}av& zl*kJu2hw2wvMdPHMyi#_=v&eCwHbWS#H;88y$T5foI%PcK6z!%o7UY+&}`X!*| zgbDTEEr054^5=frOgX`m&lj39_*k-?fq^4L1Nq6g&d{OBlJ^o>Q_!%eJiyJ1N~5-qUwfE z;Zi+IbTDt+jV-;=^?8RK%p+y7uK$qjr!~&FO2}?Fp)0erOr@l$#&%yIKk&dYcEw|b zTiBLZfQ4(ZAFVakZdXU3B#M$5N;M)l}H(_>@E=nHYeH3W@paD%y9(qLZuBP_%EL|j)PmnZ-04Wd)odSX5BK?T8xd4t1 z9n!Vf6YInPowC!vfId5Aac^~yi|;l;O`i#)k|^{F4lW{uWj>=PpEKKrif5I-p$f9S zS<*G|w`E_hQXMB|{A7o8h|dZZbW$+9{m+-exa0L8WyMh6yC(E4oN;gl?7JNsI|{I zXmiP@ikga(%HHf$cpI#9)qPJ^^D$vQ-M<_=wv#$$g|7OQeQaaiJeNt;W8>E*#Hl(R zUNr%Vq{|G1()K0rM*!+V&o^{%K{f#UEL8^ZdpILJ0oNph{Zue*fz7JGX&1cuO;l!u zAO|prKx2hqoY+zqm;Y@1d=8WY{XL4uh@{{x?IM6rC3#s;PMyJX15EHl+T12o@vwGQ zzm2p=;ZMU7k4Inz*#smklz~9|-#I@GKg6rzJ>CS&s0k-JnRc-^6YSYUp#X% z2HBC>WVoE4N(|1+CgJvv4@vd9c9<=hGT<{Y7C_!6%IA}@?a1U?4}UHyZz!m*3!Te- z6ips#!4mtw;i4D*hAmX8u0>tpZDM&J-LTXzcO_3|Ia_r{lFE$hSsLcwx~EqV+z2i} zdqGplEHrg?^se7~?D)zPw>O;ccOv&jK{C4_DJ>ZQO3*#Hm&4@}F3rI>^E=q6*H^Zhum zFrOm%y!C_ZI?f6oKNrb`mb2;PwG;o^it84N>-~<%d=Je^PEHQlJ^v?t4=?@vuP!X!^VKENdb%hnB(;ZI>La@8-!gk>M2G4=48?!8#ZXx`OH zSiXw-$}uJax%fNU-(4+p9d44Y{a_L!%;|Tiv0a^$F>NtlGT3%!nXXF9PaWFkeGZaS9lT3E)&EsTh|~hv2Lc=XmpI%za92vqARGUw$%HA_Fb2d#6GE zfzg~;w9W(wG~r7IKlzO<%v`klSDUsU`5_SnM8IsOQ$JRl$x@?)8Etvn_Oa6;DgyGb z=CwX{^++Ir2iD?=IN5Tp>`TJLBnkpIj3OB!Lj#9-h#ec|?qm^6^FVTc5Pwd>tXS!S zT`_aZTUgt?`G73N9*Y4*XB&PGWC?Y6A2;U7;)?ZLoe@X|`)L66;VFlXZ4GG6W<2Pd zp1x5!KD@be9q12DF-!QWC{et4P|%w~rW?<%as{YC`}6l_h<19L&Aw1tMvpLm`P%w? zG-M(<7?C$@N~hv6erx9R!o=y*b6>o+t!}+G{)(w3OB9mS#l>f@qn-Pj#&aQ-Nb(sz zI~Er?N50Z|ew0K&2H@?iM+1u4W-~gNZcNUp8+2dsd}o{FGZB)uC1vgDk~mwVt0Gv1 z5Vei^jE*J72wL1%L4RH``O<@B^~hHz#V{kq+ti|N=Jv@j%Gz#C0g1kaFE{zin*;@J zB=mCKOp;F5AqkHptB@FoA?p`o?ukQ4m0i1tU8P995oS%@aR_o-6mt?;Uz4`zXQ3UM zQF%Jg&y##MsFPDCLmy;I$M`n1e)#Rqy!!Ge1-$?5Czb_oy-~rYgDnLjRL!||V_9fv zFpJ>A0yAYREa@(tbeF4_RH^5~K?k)oodV3~8mREjDlRIaB*6ZXH-?wmEX zRSF8u9SvJT_ba*T5XoK_N4f}KHG8?QktjT*Q9EKTEvxhw4aJO-->Rf|DRfD$e3|aO z0^`!X%!V4yC&(_w&;L;oHwgH1%{wu-&E^6b35IDhF_>53+9L@ID_CnasWJ`>bMu$i zu~!3<k3MQ4v`w67SE14Q%uEP{>9qsM`q2IV*sd|( zS7HL=cmY0-RpvZw+OOUl6ZvnJ>Zh;Cr^3h+qi>%+D+@9FOmyh*6t+qk+?{*NZv%;J ziiTPH4YnI;5iAGtv+;*DeP)Y%-nIbTw3Nyg_Qq>P$*~9C@n1V>K=J(c za4OMs2gjMi!h|)L*{l%m;~36|JjZ)?{S4oyY>qlYS5@eSCs>|~_`?2k1}r*0p|nZ3m{)w94+^d$F=?C=IL6xoGD2BM9gvut;$=G8iZ`23 zw~J5@@i3&j-JT%tLvC#b1tX-z;H0G)oY==_VHVZ*d=;`4;5TE1ul`*@^9;rf9M62u z?%2C!kathpSF4O#&iIApm;JUn=alsl%^_#vTT{NH{{#Cq4JH?HeuGy44I!%)wO|QQ z%wd3Ow6I@nefHbM)=oIwojZ&ShLUADTl}=l$rljm%Z;sb%C%U5NX5sRdpAz0#HFE4 zGm%%VoMcG6IKk2LP?X&psK-(3tW7RJ)wV;ieDN{K&yj7@Q#;WXfZcxk5 zSQq>E8#0Z25llSgPv4YC=-&X^2I!P>YEy{^KgLKC8GU@fXO1q-+Ry8PlFJnjAb43j zQYHrf^5&V2_EeVa5DHjWcXKlFqTWT?o9mFQmKb`TUWu60s`Z}B`Vh&&s;y*dB))g8 zsy)e~t2n`#E#iR)v7!cz0*1%1&&Gpcn^OWT9dm))+h~F2x@;;yr=}{i-Z@>>95A;J zZsSbW#q}OP^5~Dm(M61&SMoytJ;Q7~{^`HpkHk3;(^7y33zSdq%xYq7zC@U@u4b?o zpWQ-!sAZY9Er%hxq{|TF4cVVg9=&g21hvMI(XCNYsG_|NVw` z`(U(V&7NqUasjK5E73(IMv@WoMe!Z_L=Y`=6S>4#aMs6N$AW2^CtXjQK zpP&Aos{%$V8xS1ZqxOc*`w_=+@1l(?8y`PG z3_v)jndSI{JOZiHzQutQqPgWj}w`bbftsbDx%83Ft=8=Gkxt&OrxUf0IM=;Gy5OTI8F?R zk2z;04_#dMcK)Q@J^s8Gexv8qeOLKEJa`QHK6Nh7HNhXVwPISWRX#ns{z;y%UO9l(T^b36OGAV zb*|{?QC&!cj|%lKQarY%mQ$Rk3oxU&XK(h}Kod2#lyB)o#w-!~OvDen)w>%*ezqWfZP^YC#nuHzT5 zKyHaLEmjuPU%OtU&^b9UE1betm8F9M8KFgn9XLV5!3Jkq#G+kq)GuNUp>4M0@*=AO zlU*m%#Ctph()EI}uvbaIA*;m9c&+=P~K7TZi z))@*nR$1D99p>WiBrShgC38GQd1}$2d2JKZRejLvuL|<_MZ)^=OJdX*E5rSxB)Uzx;Wg^>H=q(IY?b)4VRc%u z!Wk71w;`<0Y%35xP4w4j<5rWS-f@CgwkoBcN4Sc;_wnDLZk*~D(6s&w0wP!o|53TX z)+s+u?9TtaI4FdE7DZ<@Dtu?UTdgFLXF)_bRT0Am<}fkB~QUmOaP zFs|aW1d#~yL$L%7waUO%tL8%8(sB^%(R*Np7=Rl1QW318Q?8lA^@{!~qGN)?j6}YM zl>7C}H%vsqg454B-R+VR~%g_rbW8 z#-=;XhsYDZh6aNTo?KUiy~FP<(#?tI!g9(!Pt@9eA4{E$&yU_L&IirOXhgIV1!_aJ z3-+F`|BblDW$wa^zM;jRrQ|gf$h;xA8>`^IopqQ;;*nVN^(7UsVNidx@$Du!f) zTpMbNI~?!rHnjnIa9-1X%L_=DW368+y0VFzTC^rlC5ozd&Nf+ZyvJtsJ2U*6`qJj6 zoOj=X{R5+?^<5kmy^++`XkmyL2b*l{FLCQ}MRL13wVczHO>sQ>D36W7->S7o+qMK; z*tGYz%?G*Jm?xzXL*2dVJNCWEtJ9R*bWn|4f1mhl+>k@;L$hG@uI@6?ullo2J0$^FV$Y9A8OItXllv)^O0bh=qWXqAb#TeV9Fi~grY56NdOH+?s z1P~fB8+K{43}egW2UT`!%gON(dR&`i=dt;~g?etFC^0-%p9gY8q~sTevX`6Kv>H=- zwG>U$>_4QyF_Nd;nM!E>*yyq}K8nib(A&}4m0u4%5%<=umcGqLvV7GXrEOSlaP`*3 z^wYBbp8A$Tv5Q{n9TmD_;(Du|-;#)B@|X18j-9MtwNBmejGuG$s^k;5Ycva7j^J;u z^X*dTb}|=RzQ}sZ#!EWe6t5VlcRY<)b34`FZS06$rRpydm}eY=nY>MrPGRvq-Fh8EdU|g0- zU1GqsNmioZBNfCoqt@JY`~s+!?uor#_twuPjFO^p#zW%$D%CyYj)&W7Y~Q)ZZQKr@ z^qA$=F4kF-2IS9uo8BQhyX}f8=z3cm?>JNnnpc|&6$ntuZ6)vFtxd;l{Xp!YLXCq4g075_*Ko?VH!_ce2-=YR zgz-a8`W*v`sG9vLib@rUMV8vtDzm)&!rm-1&9KLU|5x!2Sq6M8{!Wy*vLGj;g@!6P z&_;G52BjGH!WWU2@lcz_37HFu(TnJ^OXQoi-GiZg8q&54q!~_{oXROXc~{*hk8r^J zc1hARGxXVUvc6lm7d{l2W&W=r^0(DRy$W!?x_(*x{Y-PFf9vlxKgpb~3$;o4sp|E_ z=>EIQHU*{zR!Zd$I;qUX6&Kmuy-q)3uO#9a+rQ?}=9*-v(v>l>Fk!*#OpQSUqEts( zY;yw7MU$>>_fXpS&#K^ep9>Ec!3y%;j<{0M6&kUKQ zDGV%enEZiS2o9;EhjI|Kefi(yFaX8VjnJ0Zu_q4@n)8tw%~=dgV$^lPDSE- zAJzLeydREyFZ{}E|Jx8dv&;nL0kXVx)pH>(B&ynAeYZ(hpNa3vku8^ThT{S-7&RMY zycYmlmoi+Kv&yMjw5BK>Lmr$Pz@ghHe7QZh8?AI)pS$8JA4MLk=Dl{!vBV39>7z@0 z)|b97G4TBz`CEj2^B$7g*q2X3%`aHAhrfrBXWdBrc4v4+ztw*I#S-Yg`l$9Q7G*1k zgAP#v%F7aaOO>-&z-3*7Xd%=m2}Yv^yeq-YJFkO=i@>Z z*HB4l7&bjXwzt@XeD&zB#ilH{bU)AB^3RA4Xg}3V_6>U(Hb0yFSzV zkokLMEnE)47)pv(*uXe}LWh-e#P!?uLv(-uqCB@^2K&~m^`cW8KY^l}NK>D{!yFL< z_{Z8!`TM&|~Qd%F2^z!0_wjAl4I`0zdnN z_wip`V+F7jiQ*~0H8fE5*T5JMebc(o5F{bSeBvw0*0Wmin=NJRSedRITuxb;v*XSz zDk2$HfWF6KT*J>pUMcL6dGhY<9HILin)TxOp?NaDx@+$S2$Zy_TxhoQlsnz!|IEcI z9_SdSxPED9@&y4*5;ESvr>~-MI;Xtkcir`wF1dMMrF2!2@Z{SND<`|%v@V0-AE#F$ z*HztvndSd(+m0QN;Mw86H%m3{W%=DxjtaNzjtS+bPx)y2g!i^bVQ1Fmlu0aiE#kU4 z{ij~Iof^ISx5h@_v%|VbIIjp!a{(mk!v#i6#3A)pew}8&=~_fD`V(-wC?%n2h$=T4HO2} zxv1g+<$tG*GC!xS(b7|Bm%<_+I~;K=G=^W)p6C*=v6FBLz9p6m}Nl+SeSt$mHY-l(~NRxRnW?rqj8zLdB}3h%S<{ip+&!y@q8gQK_; z0PIw=wvQ_eb51p-%U$wZ!9ls^7-D7cUCpwxFBC_J*QgI)aHRv2S}Y} zub(^ev)E!xyk+=Hy#0Np&nIqsWz<`DC$5>!rz$fxIvP6o#Qbu|Fd~bu4hs1SnuIxs z7jOh~i2G~zL^}~Ke9SGEemt6_kWsd`)^$xg-0!Pz@V#rQ;XsCMo!r8hb%IX|v06mX zlqFV+Gjfz`#>id{P>7}t5omrd(#LR-8LJHtH#rk=2I0&OjBXABD_aXu28*}7pErbc zVy!H%d@d8d2y`ZEp(|)W8$g$X^@P*$Bhgq!0g8x|%ZfM|czh=6r`WIoypKai%&Ov4 zgoEDNnu3e3LUhwuCy)Y=ELK195_Fv7qzK}lvUACpu*2x4BG z8RYPRS#e9`MN67+nEl1<-(7@;71WFra9x)b8=&NBL;@28kS2cVXLQ#W(IUjkY*~w^ z4H=3Jvb4G zOp^h(GVA(Sqp;eIJqeflod)$+Elb{Y@B{zqcN*e@<4@ZxJ}2qKTSddDinqK;Jy^jn zZiwTSl6LEpf5R8%H+NP1XpP?OYMK#$$?(y(TlaOyPZyV<)_ve7@IaQ!i1kA^b=0 zY^K=E==*%_#D=M^#||OSo(&IL?bkbJBZlDwFab>YG181K4T3=l$8E%w$3*1}{1Ovt zWnhGCnkI!_1MnLnvqhk_i)AtV8>Hk_NuY!i_h&ujKhA&S8UFR>bbr>yt1g?L(p>06 zfHRHfKO`9h!XOT8XA!=!?fpeNS(dG)p8#s`Rj(}H6KsR0N~}i}(zWGhu|j*b2yY-P zy$DVr}R0J~_r+ zP%(|Jzs)98nZXV$V;y(ePgxuZspJW4(l2f^i;*2yzd)EVb2uC83| zvohaidCrDJL$@xUqN@|2cdE^8SvH`hI} z{2=2ZaF<4IhFCsPpP8UK(Q`Ys)c*yjrl0pb5L`An|K1~VlbmzkP+Q^;GcJ)Z^ktMx zRY&*_1msR~;9ebdT!jDX3|#u){p!7X=U}t7`{>T6OI0r~O-!#U{b{1`Lq0pE&1R?K zRCN3JHOzZ?7DE658hTsAp^#q9*J3*r-T5@yF;8NrUBVL1f8hZ=BIhbwx~J3vQhl18 zYCWaCO>m^yhtT(!e}M5MQI>B>a8Hn#y}egOjt>veL_c>;y}5nJ302{+s}?S6Tb(tO z%O1Zz_}zdt8fy6~UpY6G){n|%W?x62A&IT++oR=Yvv1p1Lb)f9?~5G8ek_)M&#nwJ zh*h77_n2z>o>VUH^{6HD7Wbwgt%~EW%&u|cn;{59^6AX^Q7E8Kuj>rG|HcpId-+GW zj%lokUlJZ_b8@*cDth(^VR zAdnSNcTOEA|CndUFJ&~JF_B@BZsPZc(&~;JTcc&32y;{%x)9-PV!XAop3$KR;LO)w zHS_Gzn%iifRn<3|{o4c=PK=IK0x-Rlk<_5X_bVAn$}6Rv@j5XK%rbk!PxlcVY@b%| z`8SUWPr?5z3!8?m$@U^^Jmlivu@S8R13ov`{4b0Th>@+ zNVm%T&GMdWxC`Aka_5vQmwd-Z*y;d%3QfNC-oL+Ck*eyOmTS6d2EkZ3@-kgk$~k~3 zZTUp-o-tAZU6rVqXL~IPmS=rSO7h)7vi*!cB8DPo8Hp%URIK@exLIclJkfKyE@S?6 zgd79f(SxfP(60LdF$G=bkML)L7675?6$oCYY^7@Q{wX<-g>zn;a8R9y8}ee!ZFhJf ztp%jJflqujBi|rdhj8(VsaMXsN>W`VPYH7SRv?ZJfXUMBy~zJo%% z<$<>d;MkfhE(BvZK6=EO#b^$Uh0s3e5@Wi?cGEueWBw6*flZ@#eumX*EvKB93iZj# za?Ag2KL+V;zx@~)NNr2Z`ues_3~y;_i%2enP-$e*tH<&HVU#Q(glOn(<@Cd2I0cj@ zjiu#8_ZdroVUv$bI7$gSC3u~rI`sc z4&cnj9Wf(cJEp#_1uHLgTDUJqh2|_!CK}zq--Kf#bhVSIKp1kXHi6RuVVTwj$|H_s zm5vVzCE~#Z73ap?bBUb##OB~1uIe+YxIwQ=7Ls#?}!bktbDXpfm%7rPo1{278>t+Q~q4&5e)2Y46!_n}&4ge%@V~hlS zS=^Y}>ln^AT#CEsCPn;1;!F#nH3m=IVK674-0t_5U$Y}6G>gL89aBzZ(R=Xj9U>}w zNRWjqT1ePM#B#8U`J-`fQ3X;Ok)=y*iPd5oYomny z@FSG*D;XgykRc~lD(uI%eEjOQa6kVHi^$`oAFmbj^JKy^5u1tw%LCerzh_EQt)aRf+eJIz#CHw7GPG4v zYBRY})`9k=*nFPrt*!a?i?W*&bnegVEw*{4`-=O0sR_IJDd^A}4wnX6%d*LzV;wke zyYE~o3N9_?@~ofL^VUA;;$JN2>VG%cT6T%|Ht7$K2B&vxeDuwkdbDw2yLVl{nI-Kx zj9>4)A3RyX3|7)OwzO12^L+T=x0nHuI_dA03KzBa{)_l+5{QajESV`w4rt$UsSvrYFD9!I(Vn*OCxubWpOAn{}O zlf#Nu`vcar9@b+B7Mb|{8Xv5>hV%PE{?xfL#f%a5xY<)P?%R)Fn|pn#Nx6*8Qsd9Q zY5o=U1~j&4qXDi)|G3R5wSWC2o-7kKnQXNWX3w{DNhobD{;t?#0GD59npCt=XO^sL z3XVvH?xAk~rsD6X4XRi9O|-NIFuZQ9jdtH-egpZFQTu-HmBT)JVqAw6moPW&Lw_rb z^~`Sp=h(iwhU=5nj+>f;Z_Hl1#GAS1lm{NuNKROy2_=GbJy|g^ReK-LnYAnCC!z%d z({c)Z+0%FH-|gz*wRtx6S#V0-?7ec)o6JK6P0Ot`*g}1|jzka?rmm;cCJyJP7McHs zCOV~V^hq&}NZ&gS-dC(Oy7KS2<{N%kPM0fes0|wNlZtZiPA*cp6fyc`qdlWax#Z}x zD7Eh8^ic!F?uGc3w^P4&l!s--IfT^K{NsuF^k&;?tBpO7k=66y=Y{z1i-Pg~2K%5i zawYKTwXMFR23aDnBi&WZ`Qv|hXvjow7v_VNe9f{~zBq&aRpp4hy8X14vvHjU|Ne`X z$cME3{s{J7v&5I?57mH4^`DYx#-425#{nBKe2fYqb=g;cZI4BtE~w?^vjv{ zs19yV3f+2lmws*u%cA^3a=;UBbZ=?Y_xVJ)w=*ib|AF4=F>pBkTeG#X<*bu(QLoP# zwOT8q`oyA`*sjP?Q`;eh0F?j}%b{=OH?5PDi`>&N{NSeKj;`s*4td3H0_$i?{(ktw z5i8klHCZN?{t^M{BUWuoc2rlti~yr6+G!7!Q-$kh=DPTv$m$xU!-0x_y}>6wRBjip8Rv)_)p;r85R`=c3z&CWO3BsA0>v1YIWrYr@oaT! z<3?R^P(ND2e@9$a1*hqI(=pQ)#bn>FhN`RO!D`Mh8Z{M=_vn-i6E12mv6;{HEBhVC z-MfA3?~i}aa(Q1rmq=^5)F+$SBkRCOf|3ygSUJ{-@IZ7a~R7ef>5(yA07UQp4NHlc7rlj-?pywjbZP&6@h$yBGH9B#3ES#eD*rKvWC>Q`$*0+&(389Px}QpG zNrexLkBfCDUu>T^aa(Zcx1efUp=K@T0?`m!xjAKrS&}Ezi7M8*Ic0h}Xg|jDuf^r8 z1M(teAi0dOG4ppRXXmAn_n1B|@6^gW*f8gm%>Olc{>d|+mko8cyu|B<+*c7Jzam*l ze*aO0$+$Z|`fZ8cokGT%RP7ha-)fHY$grbg(~cPHozGaGx_eRaPisG~pJu;%MEecH zI`iWvB#3I`Y%-~_iK8lFDnX!l-q1%tcH`^l$>t4(;o0xbZ1W^)h@9aCq<^0`Y*BBx2Z!?8BmubS!mP5OKc|)_XIJ!Tpx@3%N%~6hPo-ltF50BodjQT`MBt}7C4ga4MEhxzF1C}9z^{%eZ@(iCNYv@+6Y^fK#-E5ud7K2q;(BuAv5AHmT?cu zDFXlH@o}>Dccs<9Gmr{IjJAJymol{i=_yuh_yi9z4`CocvFpwY(03e1*=*kF9nFSg z*?#{Ysk7eBGeNa$U3EHy6chEi(e>d=rpjLt|8&j4Q8L`b$_|LrxufSla3x1T;@2*- z@OQ55j;^U;(&?Gt{lfYWOix#Rlyc6CJl4qU&3QLH1J{PB={;Gn{y5+`!>Fp?B)d)q z$n*YtQdtGp0>VQr0q;<1o>EC3>Vv8z^q6a?p4;~o1+4aEyKoA^(Nr?1lL<{yvI)Fl+~nBpi~CD60>bwLyyIW>s7`W zNykiF>CY3l_jz4UeE@zvt#m73Um_{}01xTa3^$F&M}+YuUs}CS!i*$_sPtm;(#q}Y zLGb>B#7nRjAFWAd$TU$5te@0U4_F8}DvZltMR4rAu0J0vrbmPp@XRUtwr^hx1X(cWeS+Mti+d#;d6n*!(LHRHoVM|1)63_lwoSb%MAW*J zIg2UZP^#inIJLq7WwrWl zC;bQ|x+*6?c3D|&@ZTQH#{B?cGF%DfYP@qtr)^r-6MY)&eC0m0`i|&h*EIv#V_k_l zixUszV8W8cdqf2CfEb5B=a2mK)gX(GU4c!HPaZp=tNqOju(pS($Au^OiXk_WkAruuMGIf1I(N9wX7a}Z)Uw(ICSZC8(X%57ZGA@VnJ2UBx9_8 zsR-?$en5fZlBV`IXh4S5gz&v&Xdqz-1``(>LF+0R4{p3TRG0fAcmjV?nfm5HknA?> zM}1xx;NX72{`Y_%=;J(PZ|KWQQVk9aaFkbW7q7`<9`2TEBzB}Wd}iPYlst3a(c9tZ z$CERR+KD|!KStP^T(tZxcvZgw##kx!Z@zo4JGh;UfzFmW8zEJ^=2ub0dL;SgBw^Nz zV&cV#C&$UvDmG@GskFcz;Mc&lSW(XmzG(^ zf4L?W#Ba)K$mS&Nkl!vUxRmX|bvUVAMBFV2o%!2}JA0XzV$RLSYBNRMzHD2SB7 zTtTkqJ~4SmOEDL_)9U^HFNA;w%R-vG$2-OmF(O3D{8zA5Jiomnsoa@$flrs00XjXL zDAh=DHi5*8m<>eW1~eaOf~#-JUr`gXL#+UBSyNQj2f6)8ZKTxP8@f(-EBqG%*Ah-T zMBGt_5P(G$m@rWFf|dgK*&uKX4>2D|0*JEoF;)aX0l*cAj(JcAaF+Z8G*2g7pFovd zPn3rL{{#3X`QgC%q4hpZjAvB(j?QOt$#x0o zgf9h@7o)>?9569PXIU($4Q0MH@le-6Mr@sJ@8TX!YJ(zmt|o~(o)G|f!Lmy1+ z_?s5e$K@7 z>{rir!Skj!)e@c7Ze=6h#?Ttekc2lbr)0OBPrkSK(1m&x$+KeT`CIb-IF`wcOTC!n z;mXV%f04+!aqax*uI1IO!V?`_NX+3U#V{&?f{gb3Sh zGQdtN@V|AQ(GkzZFeq z1R~YcR=1qEO=SHUcMBT@zD}=iSx)!LJni3=Z2fdyyT{3=TXfQ*_om3(@1cUnx9J>a z`#rNx19p&I$HQ@I1D!+S9J3^xbC7*fkzE`d`_(C^ZWi&_qosQUeD`!U604(dffMk_x`-Wn`j4I z68Z7$iDw?TKcc^vBH;`TClj%N6oB05F8pN*T5tL`X)seo@Pkyzk(P4XJ%FD6!^%EI zqX#@A_<6cdIM8crR6D(Oq2qdS;6Uk<(=~27j3wW@=l7j{AU#5hF)IbY!g11@)z~0y zvhe5Tfy=VNM=71+-OfM1b1WAv`uj)vM;^SreJoIt-R!v5IR++V43qpIlI=I14|P=i z-L=6_Cz4NJuClE^FV@ zs9WEQ!qTWIFi`~Z;KNpWNmilNFTXAOA2lf-{Ptl6*-4l3JJ`Nz`OeN%LE>i4Pa}#X zYXobLth9alFtpE9*Tyl$VF#mskG)3L@d~+|U@3xQC%ls_T6YiHiO1jBX|W}={KfS@ zE$)J9Z71_Yc1?`k@g!KHRr(13uC;gXeb@{1sc(O&;7-aEMaw5=@V^WC`P#^`RXgD0 zcf2q6phBk?iDx}{_IbjkEziGR=l*0Miwf6+^Vh$0npCq{%4e>*t3>$J&w;&YZQQp+ zM|COCAXe+-e75SSjE(A1QWuBTcAfn1%SOp_d!E9zxzt^A!u}#wTX4)+TJVHLaw1E! zy69Io7*FR8*G;jX;&2`LN56DKiiyG99U>+1GrID;Ix?2AXFu)XHNc-BLOSP*iR6?{ z4JWnu#u~iqBkW{Yam!Vn5j=wj*+b}@&hl&xr>Sy@?V?`>I!j^|JK}%(n!B8Qdc{y; zUp38FtX{B&c5LidqKLfeueb+sPDBbXl3E6p8ReI|fUE1CluuJM9C1|^*s0(8j)(Vg z5$wi{g=Q&yyCD3R9a>*Rg~wjD#!4H(frkiFqNjo71if`W#go{Hn0 zpn5EKfPr{E#jIx;bj>>?kA)_&$%UBDxS6BilXlQ-cW;=vtxqiW8pet zwjfR2E97mhS{yq;%rit7Sx+pFVBVG=d0M^_ZVcWMsh09iAwS4>1#5fD`!dy1Y+MQ6 zA~tF(SJ~Y+R?R2L*cUz(EU#=-`3l*QAtRtAwXe;Ty6GXzJsCg~fj z?PPD)*(EhpW)*TwTG@P43E0J|t_3ec*C^74v0c^er*28+{ovM*eRz>1u)Xx}XUvYT z_ubc+6E1NrYySE%qnj5dypi>(OW!1Ypy;eO#ca#MY8fVIdM8lH{7zPV=H9b0VKN*3AKIJJ z*Fl7G6IaA&bJ$XmKSvPlQHqEn@I!}X6tn<55~Pw~26v4l^1!8`%TJOqW^q{lDq2Cl z`?9%kE%7RO=(;d%E={0;G7=h6rIi1vQftCHoZ_u=jRG^sjG-m3cVM_?w=st_5D=a}R|9}u+# z7e>_Nsg@$_(M69VN^^S(Bf}Wn|GVgGGS;Rv5c}{*a1nhSxg~Kh1l99AbV}DZLFZZ! z3_gM{CMQ9O!NwZX!lvbo3{~|7La-@!wX0;~7ntO({%{*OAqMX&Sl>?6@va3gnc>^7 zT-e#isFN#WEfv|L-vlqcum~@aongNCx_!yTqBCdCJcwUfN^SPf=d*Bqqgx`_A~LyU z)g|}4-Pk%qd=LYY6ow9nTUa;HANynfst{gO6BH92a^uPjQ}2zs8I_eis3r3Vp6meo zT#ehxBQjSXDZ{FGDIeTaJtI_>>M4mRa)3u(Md42Qo;&yO`+-U#OZhZa>*I^rreYG zR3x1IWJMg=ozf!@{d$uf1SUbE-jSSi3S0VM?(Bqti?4q~DJP2ex;A+TTOuolMI&;Z zOLKY3#llLHtLo>ZY0p92MM!bqN77^L@(F75E>^F!FC>YQj7fgAE#A9XTsnwJezM&& z=BEatBkaCx5e2N)BHtG_;~2|14uYU(S>xP!u&5xDT$pB#K`f$m zN=0aGAQTq9P|yQBg<+b*&p8MNIZ3B75t1R!Xc{rVNxYW0ag9C~b##I}u6g_aFjZ9( zu$zwN|4>r>527f4qo>;grbQ0dmP@cy#LY0raT27nlPDsxj#GU5`=&nCb0G|`gPrXy zm}U55@SZXMf54WU$drE_h8fmCwCB+009pwfv{Q%HlpGpXPI=4X$t4m z31lt>-OiGmS4eFh4B<(#=mo{QLuR+uDiHG8#>QVlU`Ght`|T<ydeTjRLM5r&ydk+Rq}|4>ei-V21T zZMG+Mdck>?W|*o^kAm`qNj?`K?;9|2CnUgWoP=}j<|MiG%Ke>0e2CQsO4 zauw*En%)PKb*r^9RR~)AhAb@Zp6guH#LmmpsG8OU#JuTWz5aI*iZL7GTtPz$ACm4Co2vgl3N3MS z?NkwYEm`M+QS@aMm;#-%4-rS-gpy4wt%JZn!?G1W58hVH?tE$;S*#`OSi9O0%<7)8 zHIg2prx5qA_C%PbytOF=7oxg#yzE1@nq=msT5aLgoC0QwNa&M!&yj~S46i@F<0yLa zQ(ZKf|6MxXi6N=W5S`^Rf;SLOTIR45KvE5ac|g3p>}CCW(=F!57 zlZEnnFHRda zDpqOxZ-Ks!TPScQ81T!4*cJYkxa~*!jYyxG?wlh?dLm5~e@TL(5w^;3xc;ZI-cZp32bu(@s-k67 zdh73_64;UlB#+eYo_7U;wKUnJ5#Dt-sao|?UvCA0oli~Q@dMJuMt$WU4RRV9tH_Y` z`pPD0L(Z3zE~sm$Ba68=!Q1=vcJF$M0+R$5-pP~ za7GV}I11AmY(?K$1zG$wcO2w3)lw1cCGg~H(OV#WA69j3(fVNsJ&X10`z>CEfeq>x zQbg)gbxUMp@V}E$W_+{8Oz`$|aSZOK?~(xuAWDs|<#Hpy8i+f1zw8aNheZ&-lBeUp zd)upfAI7bxh!NfoX^5gH8$Cxs9?>BKOnG=z$ZI4NI)yttYA7n%fxh3OGn>QoVvhxd zLKrp$;L9V(>rhOx-fYfsM0|0d7zR+Mk4jsaYmT9Yx*`R-wU6m-4g<<`G% z)ktfT8q=Y_I8xE0TiH8rWXzY?;8q2k8&xshPTLumGFSRf!aPKIL0Bf5{Ixp!jKh%u zEPrKiw#UsdAcsAJjit6^x;Fv8;e}iD#+a#yC4l6$C|V-Ne=!2!TD32%ax^Vsx?kVH zgD5d#Fifs#>rz2f+q-WSN6VTo7!O<~!Tqe1x0(WqJv6itc~I#)v5QPd#4_YHmjpar zMvO>?IW0Lj{b-X>_7@h|dC_G-F!vl1TpgaV);7BYZ`V2;u)I#jyeD+@VQ<9$KTO*H zA`0@qxXgDi8`^lx4=+0Rzqm~1_lVlbZ4v~L>VYxqbx1A_N9#bR)V*i1w}W6*N@*^? zCOhGGUuA{UTE;1ueRN0NONlz-)yD?o20;cKc!LlCDbRlUJZWGl>L!YJ?9Y@(DuV-} zwiP=vv-zA4)M)YJQ2VYoECxyP(_mNsFH(EwKlZOChBF}5!_i3tl69J9NvJ{hE*1H` z^fP| zp-{Y3b@}92y!0XB9D0FDmKe*?P!EEMQP89E<1zS6K@fkwv-AMA6i|&Wxrs@h#O&0S z7?HwD&5%@G@7bBx49KeUG*TD8u>@QqeTkq>ed%L+zp4<#RK?TPjZbs)_Eb2LR zQ**7Y;>hv-r;2_x=VPr@8F^n$HLq%DQujd2KH_K5TmOXE`E}zFtWNZ);nAv>H-+7g zFCAz^?Jyp!xx0@RG<~e>@ReIN+r|_Nj{h)iA zUdYwGQzbLGAK*M@!Vb3BDbRZ8sBH9#96@z)u82G7??ZO)HMs+U_T3D0=D#Wg)h&@& ztbVEy$5fN*{eTI>(gJ?Zi30t?^NRJKV`fr68$a*=f|eQN1z^&9%Jl<3TRt%eCJk`8 z^SNPZ6TF5v6-(2UH|rP8ha)5toY7fM+R0BKiSM6j$`2+N7>@K#(d$YnVW+BL- z%dF7Zk+;t18=}b)^&!}7o7Ow(~Nmjzutoa-cegcXEVJUIZZnoXZ51RSACl19=&XYyNwVIK1kdDIwZeyH z&1q$avJ}9aKW$(2?u#y(M@e5jNC$#OyaCZlXG{Gy!>kVfA=eCX=+yX=J0NEKQv^r* zHH82ozFCUvr; zvrSI}DiHI&J}wcjI{FMoDGG%XRAu&YR6N;Mo*vD|NAMjhK2#{op6&22qol)2rFGHj z>f}wsAXp{D{g4>;-#!0HS=9-!IjXMd;Gs%1l2?dWD4kNRoeTEGqFG3~rFYg@F68T+ z6{;^7Gdb88;@D|s13;NmLY}$V2!M3&rTp$jmRFBOj)Kq_i`&qJzyOPT-6;)TcDMFW z`tu&X|K%13Mdtt-Rtf_wB1;D07;4Zg{q|)d`Q&^#M9FV7`-{R>-ahx9pdf9-y!P3L zq#wiaI&s@th%u10cdlKFrBm#F#J&eE1D)sD^2j>n+nNNN0 z$g_BA3?4IDU0;xGngY@r%t78PE@$utIG!~Z!T1oP^BV}8rEhT_LoC>XdY%%GGE3MN zKMpg=tdcF#Jv_azx(*I|2|AJLZ$f=a)s^A5gE2wvuO%=PN*sn>o^IGBs-+z+22Un~ z>W}wuF(hX9uyV(N4Qg8j;kPoy>5-OjP2S8uH(eqP00FTE1jP(v_HB!+0pY^59%KN9 zwy5~9mS^5a6j3&Ms6h~RnFHpbAXW|E*#eMi?HFnWz0!RhbfyoA#~tucFG&5%(3hULF`h zx>@bJXlpZC9wL9%SOH^D_!D&FlUkRW^y?lDYpUm$b>gp}4_s%tW*}({0JE2Q2EF=z zu}U?T-FOD_`mTf#=ZI&t{shAmw0E7BG?EbgS^00+!MqJIWTYMIn?k+v;cCzYEWO?q zM(e@scQ-fz@DhOQ4|E)Xny?MP+lj@oF?fb4rrsA|GDD$S*k*R{?|V)Hh=&+J^J!}*rvl!N`Y%@U z845Xgu$n=zGNULLzEOIBiUTa`gh^hk6cYyN@&~Iu$cSH9O)_&4j;R~saX^$E^E;^U zR~c440aDU^BrWRcl}p?0Ku9@g1CTP{Iy~|bq|hjiZ|^=}G~$TJFee&`Zx)nIGR!}g zV9;QCI&(V75?iWxI7R&(QD)zEE(q4o5hQ5C?WS?DK%AIka_~E+jw)9L&>{*P6erIs zBt&x*Hsc3{x(w?#S0nOG*|GsKZzDm&((&@eUO=blQ$mZ}&t+u?=II54$Cv+Gx)Jc| zJ-d}6>8VX@Jl-kC^fb0~cLtR_uR{<52aUxSi{94)hf;)1?bZMV3w&qBH)eONta&$H z)9em?3G1g{qB9W9hA0AC<;Gdsk+A4v>p?rhWC#*vYjz&?)xt1yY z;>iqEwD$9>#<>pDyeVGZ+Fv@jWS~cx3Z4Vb9(d*bW+#UxC{bc2r=)%%KS=t-R_49_ zTd$}4Mh~s@Ex#fm?TVY5Qx>YZGj*p~CNyfB$G7gi_tG3jrzOAF>+`oo*l|w(pTa`x zQOvc{Ihg8sX&*+9$-)PUGBfK|u95S?V@U6ANXAj;XITS6qE? z@dV-YFt}B8CWALvr&u)stuNC?79!7 zL|trWF?ozJnZsF+p`goJ%jrt@~ps8v5~Sln(PE zzv|7dlrT){EDnVWj4HkGZh$K0L55xM47m)u2e%;jFGA8psvTplbiGk&!U)x;{y<*~ z>dz}?aM)!!4h3lzU|-(^`ZUNyQssceOD_&^0>Bi#ozh_1ZTL8&@5~x&>Av4E25J{b zos?2D8>$?LbPL#H>?E;@lX4S$^|sQP3?@MWkV@-XvpJ(riqVEasxHgC+u$xiw7DtG zequulSc*<4e|=f7jHP@P_bw{SKXSa|WtGCOvd_84B1)S9BX=1u?5-VtH78{9l|+wuMx&L>Z~qe1#BU=`B@q|4`KqPh6+%T`9Q zMx@Rg-OorTM3ht5U*(Cv>FhKK>FtJ>?3Sy?#<mOx^36RXWO2{TA2UwMG6Ri~y? z)~Qz6Q%pDLO{ZaONgp-2n!5bZv`2zdtcwjuv9m9cG_;JF{E)Zp?uih9hSe!(>Dpl+ ztFjY1{uQew;xo{GF9WY8G}Nl4-$iv^CT8UO6}yVp7hAqpmBf~8Upd%r%tB=+&C6%R zKj%epWt);-8u41Nl*C{gtNok$@Bg{E&a#f6v5eq<|EnV@RD+vmS_gvgpN>rlz8^VB zeE~X}aQ$V=AJSH}jGT?kjKgZ76J-2kz7#f%$3kF8>bKd<64< zqP=EVQe|Q3@!u9mGqr{yF^sDE9`&e}l0 zbN9s);CST>>;3(V|1GSFDWS~#iSYI&=vjEtX+`MN#CO*JZ8P-0ZTd$TVI~5AH{1d8 zHTQp0@f_tQx$44VDgbGzkiy$zLyUkkO1_djc@VD~d8h^75)`h_AZ?RW*I2+2X0#@I zd=3gdbqvBYQz74KgnDC7!MH)(Y~E^?6K5o=k4Qt*)DSJ2#MR|KgN)^<$5e36+lQmnDg zwibKLogA3!sEj)}K3nkKngb|zh-}rBxGV>EGDy5R8d-crEj88#Gc;ua_+tZ&xwmm^ zb5tOSK64UHe)ThUPWr0oAnIMLUKR&vOSr-LS~T1K>OC?nO)E< zy1d!NVP<(@AcW0%YD$7FyWdI@Ux6ZNkM#f~*drL`RDCgiq2L%lq2r~5xqf*eGbIY0 z6}{RlK4i?ONJ|BD{Te^?>r^fr3>?U!X`RJ45!4HMr6TDTIMAc0hByo#4q+9%$iNF| zTNmfTK!OEDzIhk)Uk$3OcM&vzY78I1BVW4TcyI`OFW*f)=^zf;pYZ6DQncZ4pkxs? zfo6tJ1$vbYnZY4Shg=yYs~*&UHxE!RYFexbt|+f=p+Emr=W#hjqb86@2`>jKUHeR!tp}S z(i+_Yz5iMFT0Q35Dq*4fd};;9Nc$xGA@!49f}XicN%Tvf8t=-6x1|@T!{6~|eNXv# zz$iQQ>I;189lvr~h0{_K!u{FZ0!pVpjGL(*Qdqq=Zk??2(>y_i#bb zUd8GJ!7L&%;-H+$az|jZPt!F)9rQ8x;FK}Y5sYU*vPWFHDD@T0QAj&muC|U0KLA)_ zP_2IthpAW_QAwvLU!TeWWcnXV5<#?UkrJqI0%mlAY6rSRN${ejkmD#b_f+N>a3CN) zsyd;PL3YNz;wxeSObv9golB=KsdyR10YW|xs2C5yV|ooVRQ-oR$CpmZ%-rJvsVvNO z7{MDKY60$!nukCXz(Hd=JCdc|HcgI)Aah$v#aA13EQ2cFU&R^(!7dm?S($=1ax5ML z`VAh3$a88iytE47I1tZa;1r4vo2FBPVce#11L^?3nvnYwEbX#^@RSOEB#D&?Iwc@n zKL?-#sH@$S(s!Vb2abeGM~?yq7VK^7{vJ|@th>^pgBIX99)s`bZeio;DLjcXyQmKb zJ$jJ&fF|Y@{1)i3Us%7M9oea-H}1hD$7@EEaHX+FI6gKc)4vs@rP5nh)=`+HbMEq7 zOyIJy)J4PbIG0^;KvxBqZ3EsTGKl+w5`lGdP*gb@{^e0I+Y6GV^5UT;X*dNlMc7@2jie z&3cb3_{Csag69;{^9K}J?UK#Endr^@{3*O?&o*~WRM-;d=;C?ML0xa3aF)ScF_n46 zBfQB}BlLzy5|82hnQ%t0(2ZmDPmr{|Px=+)dIoV!OieyhNWtT47b}wPC25EH3%-}! z2>e>y#5TJ`>VBoEb79%%mqlalPruAAHpddnn(KYL#;3+x& znJ3E*$W&OZb|xxW{;Mdk^NZFiD=;iA`BwQ{bN5SG^eEbXfXt^ZkgZ!Ab?Vfq$Nfw| z^3Cn}=e_1PsEHkBAgXv0dGL%wKl;h!?c3DKtD#n!={$c1?62Z)%a>0$mJkWabV$0Bvt0a!$rM$TUCazaz~qKvW-N91m_fV;s2s zjL*+f&~OHkXv&d|pvGc5x-mB!5rE`B2+y8bw2_Q$;!A^|b+WCgv4f<4+a{hEFz~+2 zHKJleZ1?1Cm3taDgHGjpXWL%FAm~3=Ds|O(1?|L| z&oDTgSY}w4s?4sc$7P-!O_~IhlK+=8+A52M+U)u7{qglH`eh)U!6F=yRgS>4aQg5| zJ&@vNK4Er>?RXUH3ubNPd8yXg$$gs=)Z5y;V}%lqwZvK(*T3P=_4!XZKc0S3S2E@& z7z*=3(fR2Bjyz3xn^T{NKg$40-s{&F5ry9BL6@h8bNGTA-^ICqJwk1^{~oZMzcAh0 z& z$B6-Ep9`!bpqbv(?~q>*XP{4pF`fQu7L+ozAH?7g>HyO^B$i6%dT6+%BG9pcNozq6 zm`gN)Wu=lY5@-WrAcv!s;(-L}^YjH@(HTJVK@OPEV2`1z?71gK@cTfOybR0bu(HE( z5-{!SWMhzmaetueNa7Y0cVwoI0-LGRrLyn zU5G#f)!;ayh+hsQ*+UG6%vO$AbZBY(Zuh*3_6AGu&6bc%C;Unq$k5)hcPn+ z+!~u53G@fpp?4sx)H7c5zurI*|F40#66ha|u+o&0?Z-(Kf9@p-Ro>V=Uk}(3Xqqi1 zi~PSOS}L;)e;DT73*Df%K#2ocFX}#=-W#K4K_Wm_q%WmHBJ#l!y==)rQOQq1mIgp$ zTrafG0~d~nTyhYe;uA*wzEOZ!XbqX)X;zC}1^qG>bu2pRaAf_kAcZF+yg;Z)LbY2b$tpx@s!KwynUI6gF8Qf7hKhtB?x z6NYJJgQDH&Zo1wbR>@d7e?bf;vK96SRwZbnDGC`qcJflF^ZA>gjYjV4*jsC4EBImuWn_%Z!hj=Ou3(BcW&jihy|+WF$EhkXqsD%wM5OliQn z70NfG!DkK*g2+oH_>DYF9xzIOou04^i_v=zkD000-Y++b@i>ki&X}>?}dzs^jLwYTER;!Z?2X%3*GRf+8e>%31rJXim!2 zdub?Rd_hn+ks|F8oDY`$Ur3DLYkJ$JKC$Hc&pOb)%i_wz?tO!40msA1XMFk@hkeKG zK|f!oZBa$qFmmTw_)XJf13I^RApQ|T1o`0iU$5I0Nm4iqLLY4EwFFS4FR)w6BX?$T z{DL)A!LK&vSYj`fRq?P~(3N?X_hh4-DpQQT%zZ0Vv4@46lfMzW@NY2WI7kJoiejg`>DTgBtOO(C+|W~ldcVx#&&Y15$?+d!zcd~N{&sYUlD;WiRg*n=Gdym> zrPSz%zn70r_^-ZeNv0L|dS~r|v#%KW$CCO1z&@cGb(BB93E`8M#8x)g7*%@bAW~pe ztTO0@OBFliCf5I7m5UdVy97=}prwJzF+S7MV$&!JV9woJz}`_vpK-_k{5hd{&9|{* z71$eElQxbyKQmH)Nzws2MJJ1h5Tj@LU(DM8yBqqxDtkXCz&sV}VAT>h^3r$rViyI< zrUOfa_fcLkcM;rCm}GcdU)i{Z?@@N7Du!-tWezL-{hpm*?(4d0%!DXXU?(gB&zE4m z8_+3^t>O|b1uf%O#u>*ob!3bMEy2pU;}%Oy6Fm{($kTTKf^9#c>zmJfbn3+M3qRG# zvvk3?^!Ftg0mxBw*b2sQ0<>{(K?xx|*{0vG`g)vzlsLl*H`L_^JNgnVO=XIvkq6lD zpyIIqL%Qa~;2~X^mI*e5BY7E{-B4p=ky{Lz=qc2tH`yJcpFjZdqSqa5HyQ~}z{y5} zv^h>~(L;khU+1=ru`KUP=K&ecO{IS95^9<;LIFOcHg0(Fnog>+>*CIyv1=5W|$qcd8%l!ad>vikz=&BQ!Noe z_uo)0uO^nS6iC!Ql2pwGHlAUdIi_`?THFFtM9AUA^Um;@1C#78^~2NdiepRPLevt0 zAQVeL(Qxz3aZerK2uJ-qVY6G_U~~;`dFKe$qF&tWiKpMHr!UhkK*xlKSQC9wJ)s-N z_E&^ziGtiiXMeDQY`RHN4F|@c!snWKr^>%c3LM^Sm11Qt|Ew_gXiM6_cW~wVORD?+AFXc0PQOf-N-_Ez_Fv+PULII| zt2a?BdE4nmEK-#17xJL*$;}Ev=fo4eTi>w(Szt|N?CV1An@ueR`w*p^w z*_1{$=q88f3EcOb*lT~d<>kCCRY2-e`K%DI=dBtZUHMJxnBB1M{A=}NK{0zV53E*p zlkQa?iHNn3ds=zN(AlaIf8h7_*VUItKQ~${7?)XxEVI1~*h)IMBG7N+dVT5b`D>s= zw~A;4y=}_*&sb~bXKn>K52`LM2-KgVHn`)k!+B$XNQ}W)I#dTIb3 z89^5l7byl{ZA+6OlfT5pZh-L3*F|Ts9JV%)V)c-) z(hD*8{%k?8gqGKjlW?N9`bvN6f3y0q^G>Z*`~ER#?(@!&ClT#vl$jshV|z%p{2XPD z%^kXDoPjVpT&F4s1j0YQ#fPw?omK7_t-t0bIC}KrrZs3`Ao~FT(Sp6JRq(ZXzagep z@{rvaf3aXsRZeQsWQ@T5RKwfiv#vcY3#N1FJiAANWvAlYk1d zcOR_kzl^gGb322oyXir#d&R8->ct)V=}G6#oIF^J?J#Bse6yp4`{$@1ibptZ?@NkE zTT&`IGZkKJQF9^Q3bB^5v=@MS*43pmihY?SI zqoE8RAn`8-bHuFxt;vSOEilF59c=u}k~*zA4n(AI9E529wG=`(Ckj4d`J5VN?im;& zA-YBd*1F!Yo(K?gVi9N^BaluLa(J*2x7~xN3$kT$zYcbexCaeg%W^nlD$_c`sndF- zMWG&&9yih`IL&-kav z$S|J_;BcL9<>fUT<9P1(UqJZ9O--gO5l2@HWoG4xUrzSV=7@8% zQ!af{s?CL>)yoU9sQ_ZE8p;f)zmftS!|Umm1-WHk+!#j`vz67%zD1$?7jqt*c{jop zhWVYO>O~&%^c#wKpv?>9TROJz>o``W*$w?_;`W@Qoz+9J-W*$eQ>i|T*EEbMM5kBT zGLtqI!aX6Ax^MaP%Q+%}tjds#FmO zDxi&%w!~Znzh%&#j>q(Z+atqIaI!PyiXDi?2$)0>rK)#_4>^nD)clWaT~SlUShzm! z5v&Z07D%^qzCR=Cv3SL-tO*0pQl=h`o3I`s zyUO0qM&FJEn8NczCT4q2q8^eCsoqWL&P}A84HiZ-gnz`Q+n0MdJbi#^lm-v)kUwC+WI_6dQ0)$8(BqdU9}{TU^=IE zO;lTxsS%&q^F4z>lBIKbARQ^VS?}Gh+cQ^=GxU1PcM|T{o}-tvM)d=EY7CgOEI8;) z47l(3EfVnM0@nkDfPpvXeZVg*)njG#qK3qD(G$cMKc^LhXB#CLVmY4X9sw@iP4Jc; zJEbmjjh=`Bh7)c**HYs}TSi9`<0!Elzx2lEKcRpGqE1k{9xxCSW-d#f)q z)?(H1eH9acAW|hiw2DpXMiA_bbXL+_b4JZ2e z)Ek?o@oJOG0E^_7M`}#LK9we-Ei%&f+gCi2%!7>E^atG)qdRT%N zx9GW9qO(d0F}v&*v0Zkp9FrWmmGw15FJWbQ-awtTkuL-Ni22rHaqDCO$;ldgwDKBO z^}**C(W=03&5?Cc;_-W%NP7CL#p={-qz1i(@f9*rbPJA(ANUIz>^%0M)h@x zp4WmZHFVIFPH8M!ekILhG~Gf>53PPc^LzSmZ@d)s z;z`&)??RnTgkL-n>tYdU>1m~{1hcnz+qAj|>u4cN*<@HfE4+R&n2lo_5k^lHWF=>% zHN|jGG<(Li-!R{f3$x*giPY3(7C%xIRD#V8%AyvJQ$a&x_PwhIQlRA#5I?Kr(s?s7N}F_ z9#B;^fhuh*bmcK+?dVHZk>*Up8!$R@AR3T2L18WK{$>bTqjQBDbK{~^e-6v%t_lhP zquHkS%wNIpOVpxVZr^A!mQQ}Qp)Oje1dww-)v{*?}Qj3eWg^1Cj zK9p8Zb5ojg5H}@Zg_xjRAOed3DVc)SIsG`Q)Sd{W0D1UHT46Q7=yByM#aEn z;JL%7KFwqov<&YG6j0(A$T}TMMWBfx{d9H;+Fp>7rDJ3L7J{`^fzt5V8@@W)h#MJ# zR-t;c{qjI+{y)_19&89uUB3xwlfqe5&rXRyO2t-SiNPbj)0C{JjCigEi)7K0BY4-| zmg*DOl2dUOY&yCnulUO4ZkNZYySb54c>t2A-j28Q*HDCuN!8+(nZPp{s2q~6%uhC* z+5S*7+oWm6?rkP_@e4e8azJ+#f8CCTz8 zpf^?59;^om!J+1^J7e9Il}nd#bO#Gy9>88u<`vACfIl3V3xc(ZEM(IPih=J@KkInQ zkLUPi8OO7AeUE;4x?Qy7iPGz2VS2!cg{781WF3LhQ-$7Wq)|^rzOWcoF4vmGx z#RE>{Xv-_o9L?e4#rnS!s!@ExHhWn~RN{0tU~y0$pbk7Q>|u%gSGaZ;d-Cx4zoRg2 zwR}y)A0UW0U#DWNMXDq7vKos~*G$bGQWW5`3&uyr`dz`LQEm&-X_Om?ZjL!7y<5JZ zSnA_^bAEsqn1WL|bPZgUg%3^p)Iaiz-y2un+W196X^hgJ9UFg9#!&4>s6CG@Sz7&m zBPk+i!!4rW$;AFr!1Wl*k%`vE`A@NlmSLExu`kqwtg97fmKIOX-v^Bis83G~H}{`! zQVYke5RQH}c`x5q_wGJBvMu!4xl~#kA>)7hq2*(UJBuQ1qhXlU-lOSbNRs#${`V{5 z4W`k9Rj{o&PUC;aa+tU4n`-d7-mAE)c+ca~wYws9xEZE2ky?@`+a}jEA`;xn*rvO4 z;K8(?JrT@D*k#xW&h)f+8~WLfhiitrjHN_jHmx8E_Iia@gYQo!^TgBxKP>;O@ZZ!U z{r}G90EIPMlh>Nc1(sn}Lf0g5MkjkD-ui%96B&I|q*>-TYzkQU=iO1V;M8vkS9u3I z!>Tuq^-^y620o|~sl`QOw-aYw+_dM z3(~%;16RkVcXHjQ`8Y0G?GLMc`x$EkpJid6O%tDe(*WQ$iFmONH89?)t{O`)y2AAC zrmM}yL;o(LsTaF@E^2E|JNIhRgBL`Wssm>3Jf4tM+hyB#Qay9BZvBAdulk^=y=Y(X zZ`r}$ytQup%GAS+$E3cfza-fJv3C{UJq>C$Lm!F=urj&qo_HuBVBki7Bx%N;m^H8c z;bD!D(|G~DxwEa&8Uf~&_Dy5%58NXw_k7+hET=`^5XjQo^$;?MnJFIY7)YAQS_iMz zalhTIeyXQk=1ei0igJH!(@X+Oxq$a~pV3!4*r>KH168f0^7-8t0n$ans07=lTQ7@? z{;{}cCv6qA9Q^m~P4#48C`vS+6jXuYOu)U#n4 zQ8xERe>?rY@Wzc{PBg%}CLR3vru@{4di;*uU(x+Eqv&Y6-mO7AN9f)=`6z*b*2Tq) z12AuV&aOQfa?i?8+TZ&IVLcZ(x%&Bu=v+F7X=l`L#&kV{rm?ZD2MOv+fUii5|YVIoSjYyz4BsotaPlJ!qbH8z1EMiRv$~%67 zM|JHIiTY=!`RkJ58x^z=U`}zqD4fs;ObeTNW1dJJB9e@OI;lK@e{a17$u`}Z4c|~4 zH2M=%-cf_+beUw-B8tI>ZUUW)@US{JA77eac|lN$mOahnpvyPwG37JWs8wYMftj3; zu5|>cPyo@+lguM2#ZEb?Hwsz|tHzHpgN1cFzjhu5{v&wme&FI}sYG|km281ri@ki_ zGab{H2W^x{&UI|8u|kt)kdb(z4U9;K=2j3;vj-CQ$?ZJ9aotPJ^bC zO>fq0Mw(w4NcPxy@gS&6Wt6l^Zi_I@swNTc+44_%vTz-2$-Oge;Zy@nQ?6ngDtJyZ z7>hzsrSmy}QBLg4EY90t!b0uu7^%-ly$Jz0W{g`>lEhIa+e**X&!v6j-yfrrt*wBB zF8cB6-lfHjaH=W>VIUCTk<;7uxb8FJ8_~~LXoQt}T;sNmw`93fUJ|Rt9Mf^#wRHmgHOaVm&8@@cWBSb^86gX36-%_g?8(FIRP}* zHBA9UUv*7{a1OYj{hvK;72B~He3A@8)>Kt6tr`#`|4ueMCtS}X8v!Pf1Nl^g|1Aio zU~MIVl_Y*UYy8Wfe@%1GA6c9+KZ~2oUEKY(%DD9}#f1REy~h>vLnB954~Oda8Gd&wS2JW_gQWJ+rd)B z)C--|V$NHMm^;%OP3#9MqkEr5pGJ#J#Ppt9{=PSJcD-c3@x!_ECEFGUwr9&GSGCUh zO-i`z&p%Yy=eOtioL6(-6`Q4F8hziRxnjR){-OH{V@=R#Maw_E zq<_X=sj2PH z>bsv#Qm~U>KTpn&z4NmzaRo(KYe%`@ivKi)gbFRZ2gd#IR%JV+HXyiqRhtp4LHf4`JMM0HI2w@o!ka^KhQZ#kxO6RITm#APJ_=Ops&>drgdR^ zZ*;RR@UAcZoc?lux_dp^s$JVn@XU|^n7_Thu(o%qdSLc*+vU%rw_^RXk^sP#V12(r zqZCxPcXVk<)b6rV`aIa>2=4`^%l(s0M`y>sW6JrC2R!ibK7ptHLw2{XGbnR}G6%!Ug8Z{ETkcU12@l-&Q~ zwby37dTie;U`=#z{qz2hjheqRTTwR2%7_QM0j9FSCC7HOetUytyA`r~PSJV$!oS-- zJA%O_kQURJr*~RU+(7fYkd&0A9|UFG6|S0F(gv1V*DvorNnpIVt*P=8>YhT}v)pOh zh89D{A;e2Pnv&&hRBX!?R3O%tM8#&gNN6TP`JWJlstZ>5pI}h9j7i1%RtrlfMqWth z9I!Z5wY==rGp?4uGt30})DW>g=#@UMed^20Mn^!7d~i2&+5P5nhFf#od(rtE zC)aV#ts8d1Vm(^jn#RwcaiNT__mvgsfBA5rvs&~%uY|}IJhp~@`naKrXcuK%fYI~AN>z~~tY05^G{5748DIwT)ONj9 zV_&cpYQUXL!W_k`4y}~2^;>f>Pb>Cc9K=N1GmUOWTO~!Sl$=T_a|_+?Sjc?XwfzVD zuy&2AfC0{w*llx@XKTH!pJzu|cfi&I+sOB0MQZ2X+Rm7S+HmpzN7Z-7Q~mw%OA;x2 zl|8dED>GECdxd1HtjuI(W?Uo+S6tT~q3n^JtXz?c?2&A8?Y+6?{hjOc{rw(~pMS1& z@B7~SexLU_uh(-O*F5oiJqSCtd-&D5)bV0H}lzv zEMH@QRN9OdpfmwO$))K0y2jNi-4L*wh6sAc%gVWiH)894BwrDyPGgp@SC-QIrp>S@ z`eQ&i$EiflU+aPdJB+*zZ=A>0hd3GqAHo-?D| zl)q)G6(aezh9~9+W*DEPG)QZooh6O*z5lM}UgQ5UcSAwZYh7!3;>XS~556i#hBpKq z;OxBn!O_Pb=VtM6aK~ZH1d|!buR+r$xy_GRv zTaKD}?AuKN%}<899Ie{!Ek?nS>Gwui&+j@rgoleabMGl^eLk$MD%u5WH_%T!20;;x z{~~?07BVGP3@6652DzFqHy3B1{30QbAlxhmn6K=nstJbNy+4@s1l@i1*rLsNrTUiU z((by+-FflG*SVTX%>wq=ieo<&hT6c#B`Vb}er`s^b@e~VrY6h*`bg7H zIE7C+XxSaF5IxaMaS{i>r8}!!xq^t=;tuIj4{I;YU-o=hmi|p<;6S!rkH=e)r<$)x zm~2iQKJZQodtB<7YF^-rlzUGflAdsSfLTgqUL>hYDtIj3l*97X4tRaV*s8|;-7`8m z-rQt%%MJyRosE3(g@1Vhzq|20Fh*U_bK+7ChI_o;=Crad;+e^xX8Q zKVhCHU>sOl0c{8zt(QXr9zEtQiZaD?seF7_(UEE%>?ob6<~j1VSX>@}lT1YRfnwfw(`?l{pH)(-d(MAmd zr$2jGM=x(Bpk^Km6`YsF-hql2)@4zWR)70Wq)ed8Ijh~#qYi#OlA5PB%B*!&CWCjvsz&)g71Dp}m zm(NQCfI%DTQl>|x^WGT03aItZbp)oYHX?aQU4Llt_!a6E&{q^kp(B@9PR!3=LGuV5 zSA#!0-qAKTZV<&^C{q73ZVF7dT=xL&@z3pYC*5D_sWSURWafQgfOY+jeyVz0~?IEMt7d8Fhds|C85Skvvu(%s0wCW->S(w(zJ$J?E z3*4QZ=Z!>OI&PIT#k*_e3_kMDi}<-nW5X8q|R;PZU$O(urNN~0YAl_7r zVC}TUjv>Y~0c;Q6VknV!zSEd|H#j&fnVJ7qidAtS~yP`u0M@pD-2R z8DhEc_ojuZAkbKjT`5(h8Q?usm|T4J_WfrdIh0huE~>w!Nfh9C>*alvnMqY5`YFcj zlVJQy-q3{Ydp;A(Z`!``MVT&X`v<=DX}&AQoMq_y;47_c#GkC83*Azt*@kBGq!jOI zUqtuY^F3iTiKgaW9Zxsi6s>n(1j$U^jqLEvMi7Frq+xPw3oB+844=q7+k6im+QK_pJ>Ldmj z7;w!&0eD&;lo3kp_BqgrP7?9^|J~MUkFSuhy?8+`d(#l1{OQIl&K$3mIyXg+pnVWxWv*-ol6_ zFVJ`|-!_I5S{J8(*zkdy-s2wCyFvi91{p7*MpjJc&hxUUWU`n@6=F^Z8I9^^VE~Sc z@}TPD%*)hE;wpC+e!RYxWtjYWDQ*;wFdUo223_s}al@6>__XyPseXg}YQT{Ov+rWNsA8nj)nK5$noxC|sO-%?o{ z)cYw=FnKV0i|hhMLeP;Qt-%JWmwd-kl(oGEa!NT+dzbRX1DI9>^gjTUStNBExEBAF zBxv^$l0IuFZlOPkbAZ7l+Vp2+v090u?o9$Jf+4PLRILUJ9d-EbL+}CA#S%d0G=JG1 zjA~_6Kgl7hdvIWJ^vC}lg{k_wS%0C{&N~ca*sfqbz(_79m;zNq9w@sJ|BV6W#fKu% zj4!uu)mw1!(eMMJVoQ~~E>e^>KU6#T#k-SlE`8Vjs*xKI1W9&8OLHN;F*C=}rpoN> zVY__w7GIEbv&XTf%8?@@BN-21VxXsYnQPk12wgGkl+Hkt$r4Jl6-vN`v$zNU?mvKK zQOI#Mb}PBq87;8a6HUiauNX>)U*W2Es;ApI!~N@Knveta)@sD=a>t3Pq1Ys|0ofLy zyaPl;yQqYNf!-=nz8aVOvvK*I3D5i zb^aU~)3RJ*$OC(c!|oaTjDR}-i;B@JPTD0#748f7xkZAnK7<Y;|0T_RI*uqFcRa%JUn%+7C&zo#R`@79YOt6yMTYUB1lW*iW0-wBI zn$v-E(OzdvCw!=K@J|ysD3s$KLJga<3EiXIgKmlsFkS(kTTKFk?h?mI328NQB1G=r z(Aamo|My@PUwVMkH`=s}T8Q>KIH~BY^Sfhp_*O_r+@mVPuYl5GtG6x^!0s=k-#8N_ zS22GGh+>g>>L>)mvE{yUgeg;VLMp}G86UC>C)byx{WQc}`&126~G zg&+FE%RC)CjPf6q7?HWq1svF>U-#t55~@GyEYl6S4Ao-4!i^^M%Pvm$SYmf|7-G{v zIYbc434$Cb(1)^hQjjLUg;^O_GZMlOKBy!{zaV-o#7EE?ainbrI?^ARBp&)3Ht=Pc5oft%TS>4f8~1e1Qa6G zfeZZW^T%i5RqwI73GQz`o35WIwDk{F^d!8b3Qd+8DMo(iACmver^wztvA8@_Z!;`~; zh$sbTPTC~J?-S-x<|xdN+c(N`>3nNWS(4i0MSAKYw*P}blsOwCfh0V{<8z>Fg65*P^0rf&ytls(Ae zpky;i5{P1yE_P(RG`mUgmehZj-eX!qgJcLPpk_n62W9_U-(OeBR!#?<>S+$pfC6jP zBB?qD=#XHg%E~^NUqx^JrmT*VrtT6i5iK!XM%RK%(;rqcu_i8A<4iYO_l}_bB7OlN zgzDXLAlCy+fO<;G$e%2x(2FYEr;T-u1ZZKA?4nL5d{EloWlcCRJMKMvHvY}Y7(N-v ze>m!V$Pp5-zOhE-zc+>d``UQ^PKhr>QPOh9S#xS6y^lL}A;Z-wvlB^LFQ&t6o*qu{rHC!EHKbwWL-ESq+n8_qNVOhg)F246Ye>Ek`| z)fhf`K5+13UmnfPk#tzYfscUSCI{{A#$kU+z*9xZoiAo^&i}mye%o?`?d<7%3HneN zyx48k3SWWWH31ky!~R4``~Tho-=gH@0cf$a8L9>;4$Y>9T=M_)aF{`ed)%UA{r=SE zLnqN%|K;PUG$enYBYp`gI?Llr_?|Y3$+LG#j&~08k_Ug;+~0A-H*JodbT1EiFjQ1j z1mRCIH-6*oqw#ZfXBLXdkM%=_2V0p|R8O|yP%~5S%yXYTC#TY%I3Pi!4v)>u-%TcEvZ$>+2zS2DNJIiK z{pwA%gN=kx)$bQUkFxQBf<0uGrY$JOr%&AN1?xuHA-nF6zQKLXEmgxY!#)_|;dW?7 z;aUndrue%vLb`SoEjYRO>Nv+Mvv6(aWftHTBw)W{uUZnEh3A83}G?dfvyE9$HEDFXR_-(|0;-%HZTEH5MYMIY-FOq(nV~2HtrjOY~i0$IQ;&i{jDu=xwi|U0Oq+vg3+3G*+&f5x+w{fK7y-a(80 zak1Ip9o4;mK~y&i3pr`Y;WL>mAC;lZFN4%b9=y9i6dgQyJ3pT4)_osx8X;Qp+0A>> z!(VuWe-U4>L`BMH0*RIph%4#(PjG2M{o?Lovr&x$p?m>`G1YFxmpUMTwiKR54$+H_CB)YRjs5Ny2A<7o~Hx6 zjCKP6E;p<#&*mSbc|wLu`SvJYN^vvuMNJ12x@sZnn5zS_Lt&W7X(0{P~Ja?8jX!lg0DV zMI35=JOIvQO#i-LE0+nnuckV5!KL)gC)pSLn z(cqbm=};zb<1*nf!@@aQ_#M;pQ^X$PUg^gkG3#=E#vmN6xf^SEtr89nB?Zc*SI5Pf zsQPe-q#*CDIxzoh$uchKfMkGU1WE@53yTwA_{Pl#(icH{5&}F2P1d(1!A%}$G;3wZ zD%VIv)c3RQhjBpvMP&pafH;CfAx;y+><*5ryhGreO#xP}w%&rjB~n~4&+?;+p8g>* zs?GnOJZ=8Zdg7NCd6|inKUN&1c0+jp^}}+Vh|^OC38BOonj%8j;oKa*X?_MFjd z>cNDZ_Luoo3Rxu(P8O5Qq;VrZ3?}x4Jq2j8BeDr|N$$Z3pGm z@&5P3D7!rOhigqu>w9_c!T z7XR+_Jbt8vS()5M!>y`xtWws-zRoWC9P?h8+)4Kr!f{gqvb2nw{@-)_9|=Qf6)jN4UP)e!>OJ#3-hg(a`dw@nZ2bQA zypa_G1$$?K(uu8Wu%LYzs&WJoV$6TZf>Z(DBM%0E3?d>^SrEn%b_FxJ?ypE(%ta^^ zE&^ekxylgIWpd4$=V$1X33IL`ACc%czWOw-3_2RI>33@>C8M=|5WT(+#KZ1Edl&hL zxxk?whe3QUTn91rQJMK)^Mvayz+~>b917Z8h>-x0FM%2Ag`mQ|}XXo?I2c7zGqk?!=fBKWM+an4|SZTYF#u`rM`kOonmoItlx zb!!2qDQGzECLg)~v{`+C48O4>zVK{FtQ{KEScji-nQb53$1kTeNCK@1ey(*g1zB5h z`rrB-)Yx-2@MezZ&6pUJGbOb6v|c>D^f(ze#P8E`IBj;63Ac)T=<1MxVnzGuvPN6d zInHdZ;V})0{`caOQrR$J4jJM9{nvoaF#yC{`EUH59+Sp!$=>aQMcN(D!Ll;Cww8`@ z694^)ate)<$>N@m9Om`2%+h{>E?9L~&Zt zClU}wMGR_BD-LL-=01cC_$7OI{stlC*jmOxiVwD8V z-5&ZrpF82o$)#bc$=}VSqi0?nKVPk>3=>WM-oq2cKk9%N!>?(RxZVI~WMJQ$q(4~m zcKNI0)*NH2F%>4wu>~3!o#Xja!D-G}Ygl&H zT$2|}q=2dhWIZ>)woOK_h^3bckzOB)XYw1#Z*c?lA~2#6x?U(jJ5N3(*UpNZE&V*U}O zToaZU1yd*gUW3-B&tf9_e5=AO@piEo7y=x`H(R0s_)?BTypICHRo*5Ifbf7OxcS8V z^dYxr9-U<^@Z<4r$8a#;+P*+TYViO}IwRH=b5Wh2cyeBHAzzNDaB3!Ipla7P?!3(W zc6jQ@9j`$7TLQv#xbMgv1=U(oO7%L{f{Sw`RXNiI-hP2l-Ci5}?=|{k>5L(>i5cPW zmEiw?jwBz2`0+ zwmA*L*a&Wm#=4Qi)^DeFg>nXsJTZ5{O~+mMZ$WEd-?2MASQPmCB67eKc*CyA=J;-* zYW#>XN7wPLz0%IuFC}vDBm%ZP2?bW;T9rXbb2*LM=zZ)!KZS<#g;gM}j|f zY@r8N9@ItFOvs0>;2mUh7`gca_FDKCpVPI-{%TvqzaEC1sNm_b2))uVPW5n5{# zX1P;I2-PGSQgkJNET|4Zh$a0c`o|uO`XYt7Yk?8 ziIkF(AwA79si@U~ikXq(H@#S15Yl`V)h4sa)ik*`z=6)6+>zp_$!GWKdDyso5HLrl zYwvm2PrrW%W_1%A6)ein4;hoOVu`<)Y{w9CHLyd*%4E5P%fxlPZ)^Eubnp>LR*$gC zhiH?_7v#&Ai)ojlzZV`1&ixsg0lkCQ5ls?vL}U&S_kJ@{DY>J_Aq^JxPO%SlrXT|1 z9*9mR;qT!l7oR}J2n8GTKkZtcB5zv3qbmS5Am=qQ=d3@1eC@ZN z@k!LTuw7^(zaHk@SdAmLlhE`DT>q7w5P>6}$cfxVfV5AWVSoV~{5Y{Xw_#5&y7B7J zxB`FBVsm0KQ7?@G<>42z!%V=PfuDaN4LHLFPL3rPLNOVe`&gvEa`Sl^54dvj7C~7kuR2v%TXg;~~-4MJKR$4$j!3kpp9iQ3urJ3(_T@fz6JKfz* ziUmDQO>o8bNovCu=je3r#cB9$W(EAEgL$5l@tl7Pkw1IbrjHlWlyZ>=pA@CgBfs1x zubzz4;A(huPHO^oLuSIvHUcIRW_cQdKdR9BeT4XL2ey({T{ixh;ampe2H6-E{ymbQ z*aN~->FP)btz#z2Bn)COt>bD^?{kL(0|C;wMUsnzv#?2I5W7P~0ETpt3eqQ1B*32i z;oquXZg}l+MbB&i#ppX2uXtdj_(80EoBO4c3!oDLKT(`qmMFyqQendVGf2R+^*A+w zUYR9S+}qtk!%*~a5!!09BS;6X-jCxJ?a+vbt#EsLH(`!JTRZO)-{P+y$E4Hmft_Wp zk>)-|PN{6Ur39wS6Dz$5-bnY2($aWp^Py<*-NKLS;9GCHL9>qB@Vf&u%sG0jI(2zs*@`E(7d4|!=p8%FqHZ{$7P zo1QQ=S;ajNDOYr?tp|6{MQ+sREAGJ_F|J@uCh&sy&#x~Lk=UOwf|HSJfs{fm!2;z7 z*tpQrbx^uW=Lt9I(At(gez|dl?^l}7vY=)5TMyQLefsF1%TeIt623}?vl3I`L&CKT zOt+`FrEFXH-)S0|$b%uz6IJ?UrqBK_|-CAk>FV-XK&!M%GC)wZM&uDaYj zf9-<@lr|x|Lg~ZB35QE|;{|#9pGHO?+(x|U&&#!;--F+ZV81xFpK7dmO zz?=hgk-!nHGWOUkTz|f`hiEvdIm{aavfWq}&`HiEbDnn`#Dq7;{S!WGUs%YTFMM9Z zX~i2Ig@8okgxu!d)eT-ud25tqCaNSYcy--Jdl+&Z4&~7`;fe-HW56gNT~UTkMYeop zebxyb0IlisZxJewbZ+|p@0KLu`mbbq)Y=zwwvZPVr)P-*^;DeqYRvTfml$Os+Cu<3 zfN$4CFzizfOyyny6xG9_`#HkIv{wnAtUjY>C$9Pvfn|!pA;Bd!ULBNuD}U+^(d zZELv8(jLxUT&s011eY^qL!FOygz2ud^bVk%$p93j$68SBHCkI1gPfIh=XGHD_t&Pn zRZ)7OCq`5x(r{CfX1mPUnCduVsu~@KoPGLq=fEdDDd{&<+HLN^Fhzv?1_jeZX-(4R z??&|C^T0bdohqH_lnxTdg`Uf;`-OSW$&sf~dRZ#2Y_U53iX8}i^FS2{k&5Y;2(rBE zAMQ@Pbezo8i3HHh5*3hNJ&~qe%E&Afx&id1Rf{^j{qg384TQpE7qn@@o(6yWeH%l- zP8?#N7lv<5)c@oLVQ>Y%lIlv^4FvWN_II@Lz=C-XNL{GIS4lnO&^a`6j7blm=V-o% zJi6d@W$N&fIiq^)eK0M*0(MmtiThcr z9hFzxQeyt$=FWP-!~V zba8)~3PfpS6J2!S8d+nIqYZNsr+(KvVeWqRxN@uz0e%A$7`hfn7N3hm*EY9bQYM3Y z!u4Mq)hv>(Falo-i@G?h#GiO+kgA>SWt6F8Ge~5P-6f70XRH>^?g>r<7M61v1|36k zuUimUR=gL&yXhIW;R6SUjqAP`JI4`f3xbHQ6%0A=t(d@=JAovh=>3vdMEJhWL{*JX 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

?Z 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 diff --git a/src/main/resources/assets/occultism/textures/item/amethyst_dust.png b/src/main/resources/assets/occultism/textures/item/amethyst_dust.png new file mode 100644 index 0000000000000000000000000000000000000000..c08f0321b1bc0dfcf9eb6e6aab774ebbe9651e28 GIT binary patch literal 4497 zcmeHKdsGu=79U_i1Vtz<3Zf3N+q%FclgWD|JQE?+ARtnp*mW|QkP(uJ$v^_qLP2W5 zW#zH!gHmZLixrh!t6hpH*cP;6kM()lF2X84+IrktR=cu`TlbsrKHGElaL)EWa?WIC z?&Ejw{eAblXTFN0#Q6DML0%99&DSKTQo!ApyF5L>|FQ>92yp8zOigD~2s>=CG6p)A zg4qHK1yc^%06~twn37_A+(JB0j8sOt{NkC$oB3^;;tOBfvo;@zuU`2iYH-;9R_)pKuFKE3 zh9-q5Uj065xc~5;#(K8SHTmraJ%5fmUDCSY?c}3>yHEC+8=xPvufLG<&#=6W|EPPI zx!QY)i(B8Rp1jp{k4nxh**L7(HScWAV{v)WQb*K2rq?yDE&6_a-%GY-`xivlAJ6P` z@$q?W$d&rzmJ=NvC)_UmZC3K`cXaV!TCe22DAA%?OB`jS6AG==y28X%vM`5K=y_3*UJ(u) z0GKG2fE}h>vkiABc}`p$Jab|J4|bZcIZ9r-HVKYntQ0Kfi}@&`cF_44FVYK+u<8wX zifYvu1b9>Oj4W%x1p>R>&bN#Bj5S*zR45bz6cb<=0xS?)fte*7h}pKBgBZn7Q8v;_ zTUeSg!yG1|WAa!fj|cSdczz~}RyzT2wvDj>_z*Y(USrymofoU8;B~L7BXI=O`7oFD9ENw z7N-{=dzvLn8z#w`mK&#WmNPXG;68yn&3e3cr!lb7YH<}q=5gt1R7xHfAJ;P^t;d~@ zVksulqo@#(%Vk1DERxC*f*?tRkWzA)OiWQC894!7_$tO~BEWLeCL)^>Sj^eZ7#!hvOp->)!}#c=Bq^6*4Zs2H z0otr*?6yf&Ds7_Hu>{AbP={H1um4P3Naj$;}S7~ zig0v_J)@@$1^>&M+dgo_=%OdkHW0tSDH`2V>!{76Z=(?!)vu=8+l>^r4uCQQRUng;NqB;>Vg=m97_T-$@LzmH zI1Q$Z7~nT51EUK}Lczo+9OH`{IzQuYY#n~a2mpFE$c*@%rE8Y188I*;#seT=o<5Mc~{1>9w7nOKd*hS z`onai%kN+KO=n3(WQm`b|CYZ(j`^XlxGi1^#UASqdc&BO5u5G>?|bh3fUQ-B!ao>F zt80JIZ@cr^sVA+m&ANryGg}4%dk)rgh4*!ggatR6Fy@Ux_r?asFWC)x?+CoDZ_l2% zqL;sKI^L|0d+E8(z3-BrHe9^?V6V?LG+H%3=`u2~_g`5Xu06I6js$)=@KNaMkgk2X zS4PfD0v>x+=y$6R3`GXto|kh^wfSJ4_S-}D6ykVu_of|>dLIc?H{baxWM_+d)A8FY z60_1x8eX6W9JJu#CLhB#0-O?4tr$OFcu3k~u)P)i>e_vwzWzA7UnbbUSkXR^ou++hwlj7g@L@flIA+iF~qTi1d~hg0o^Z_^)U|kcY$Wzvc8Wkt9b(Wo`Ea1?XNa~*-z5z zZ7p;J3~U1z*KJMO11@)fkta>mMO*UG^cD)h`x$*x4u2TB1^U*U-dg)OeE>4l)$$E+ za0pBkDSO@J-94SX{d=a>-w!lva`b$Kx`O}!00v@9M??Ss00000`9r&Z00009a7bBm z000XU000XU0RWnu7ytkO2XskIMF;2!6%qs)L$T~h0006KNkl3l}DYq%o}UKd^A=!hhh##H2B4!cJGNj9pS- zVU*HBB7zl710uW?AC(E&`uWMAzwIrJ337paD#P|EpDdoK0T z7wv0nq5}j2K`Nii6iPX!GI{?!4b@Owv0`mbG~06A@!<)Usta7`G8r1U;s4)*6w-I+ zIe(Hu^7h@E<0Uqae$i|l5$Q76+}2dL~WYepc1>$=$S zB zOLSud4QA&0Nv5*CxcEGDvI7t0okguxZMlI!fJAJNwas;AA08I7lZDFevSwS3D?*a*hdU%wSyszM03J*}@i`v9V?f{}7pb0f+r)qIJK}%h{1pfA WWYm0u{lZcJ000000DGTPE!Ct z=GbNc0044HL_t&-({;~V4#OY}L{Y|LAW-sZ_rKQ~MDR)?N@vw}_^Z7bSFH!6 p1TVI(8|WNmYtB)~Hvg^M>mP5T15m6}q~`zt002ovPDHLkV1k9+TO9xZ diff --git a/src/main/resources/assets/occultism/textures/item/chalk_cyan.png b/src/main/resources/assets/occultism/textures/item/chalk_cyan.png index 5ea40e1f76aeafbc9d7108d6ca6c7fa67cb3c7d1..49412923fc5985bb44dd63d57e463d4298c1d60c 100644 GIT binary patch literal 4381 zcmeHKeNPm9GWQKa@e#{-1xiJdPFfh9g60nL|>YaPvf$MzSaqfi~ z2o)`kk{=z#B_r03mg#0`ZY3s_=z?VH*5+33(G=EpS+o+#T}(~f_YU8u&gpQ@_8)W3 z%zf|k@q3@=_dd^a=B>)f&b%+`S5XLp+-J=)=fY=<`W+Jve-p0X<=~^KEWbd><@~7E zCpknHK$TK2KtVusAV}bxJ12cy6FTPI+s~{Djhd0#;%PY5v;4(l{2rT|tX5GA6&7tTk0%RkETy<-ECida9Kfe?XEAMo^s^s#l5GD&pq?a>yxm( zZ><#O3N;jRBXRBI4O6kpn~R)vyL4}KR4<=8|4BBc=Un!pn7>c1-Hae1m7>X%V>Oxj z^MP5^t=ekL`cqnb^Rm1>GaiU|be~?>H_je0C#EI087p|iUAf@Fd73*hwai0Fnl0;` z$B#eT{OVI1-#jqxz&iB1kV{{;z1)FK>micf+R)W@B%$-F@#@8px$m9Me={*^UoCj~ z5=FhRXO9VgL>$W7MMpN_v=IX1QBtg*cOy^Ysqb;@hDES)CNjniW@pZ63rebuCW zq2{B~7xhiQ-Zr;9JJs{od#e)O(KLL2@|})18nq_N!@A6PEN-KFRy{Ry(u^)* z4=4OlGqbK-*9w|M}hVyKVk@2e;ykE$U>&M-$HXObiKaNPEd~zP07>1%1f(A2O zI|@zp2@W>bZ0Uo5Z$_+0QM@cc`2Bv3U#pRPg#=|V7zmOkXc~tWxLoQ{xB%{v6IF;_ z3^R~Xn%Zeugx|9?~(ghfP4@E&Pz}ll5o3;p&qi5Q365w z0{T%8IUn{Zkqcz0*vEs665vr1he8PafWNoc=L)7H@C0xHH#C*uuGFwCGp)9q0S}de zLecFFdO@;>St_DqkgQ>`shVIqLj!^C1GvMi`*RN(Lo1t&HA{T48lKf`#MJ#+LE=S$ z4KDSxj&tY*8fOIFfitu&8Rr~!5*J8^fld(w1JBVzpsXHQ;XFK0p&+#PN8WXLs5E)rVWNcqXobx!&+2PDN>_lf*SQ;SeOo^mQyPg z0tDqS8`k6loFe)1CCO#P)Syt+b3ko_4JB|2XXX?DK}ninNdrqW`7{OjWGMPs;{E=dy83B;V$vWIlk|{XD(6AU7+JW17-mYb6y}%@M!_j5Qq4+r; zNH2suLatze2Dw5X={u^V;r9L_pq>My3?~iv5Xvy3FIhsJ82#C%5+naV5HRg3aQLuT1e~&jV^ohsHSBF+_JN$~=y6S;@;=+;6 z2R}!CS&{8T8vig0cin-yl2>HsHCxh#S8JQ*&+j-y|Nd;n_$Atjzj*DFb5*aqzOCD0 lGp#?m^NXVg7j*ltBj2>T+AmDL*{+gc&B!(%n7e%4{{X9vHM#%* delta 660 zcmV;F0&D%9BF6=gBYy#eX+uL$Nkc;*aB^>EX>4Tx04R}tkv&MmKp2MKrb<;R9qb_L zkfA!+MMWG-6^me@v=v%)FuC*(nlvOSE{=k0!NH%!s)LKOt`4q(Aov5~?BJy6A|-y8 z6k5c1aCZ;yeecWNcYx5WGS%#f0jg#h=|o)2yJ6ykH@NrNs({K$3LSDQzS=msDXNV(;s!_g>b6MfM#aXS^S^J*+g~5WhlHoedF(j~rBvKF| zqmBxyun?tPBY(w2n$F`M{t?HYB9~0A3K%&SP=gA|@q_=t@7|il=_xlU7zcV^Z2Myz z2&@IM1rTE|~&0&}0FH#%D62ncNh7uOw4-UBXofZ-=yG9*Xx(-ewD z;QfrgDGvTet&X zMCnXXL`_Bukv1d~r`EOvlZNUT0`drnX$>$HYf|5i#TPz0#VV-%?eRLMndvao{Kw7g z?e6#S`F+2i-}n2S`(1@CBYjT9q6i3r=2*<8OmKfrx}KQ{zGMFRlmxf7((D{Dlk~wJ zfoC}<1B)dd24?&m3qk(xT(;umvg7f!sJAMfD0esLNbf#A?NMcG zFzNicjel>NUe50OExT&AP5q5I?y_Cp z96!)xhbZX7XDomI>$^1_35lI&44XDJ?Yx_C$Gf%a#e;cxOWaR7tKB*6i`zdvu>Vxa z`?{}AzLT;kBa!I}t%x}$KR)#3v8xR&%I#?y!>Z`m1uNc6@F|upj=wj%Fz09LlaYda zS?!;6zdKD7TzIz`vvsY;H~c0lW!eg}EOZ`z<4|41taEAI!{k;hp>E}LrExK>>k=wh&>-flgwR3RrZ;k8Y%AQ6Y?IE75n_oQ` z+tl6Nn%;6(<0(AXebsPL2wS+hXQ@$$O|pKFGvoZXeFyHhe1%{~uMPB`@4P;J&%yfr zeA#wm-Y2HBH($8Zf2aTU1?BB0TcFeR!l?_sFUmpL6?34xa;z%}ig(FLnzu7@zsm#a z4uTSs{2r1jU_{u?I5@XKcISAr4CZKqY>nEASv^K3pEH*VOjc<|HdR_c>1kQg@`yw~ z0RUW#NWy-X)9oev23Y`?0MC*bmB9fMvA`h9vD#oGFEFr5u99O&s-G*yWy>SrM1f|B zOjFtj1b8#Z@lnP-JHi6s1ND<0R3XPumkSN{@QSI$0AwVfAN25M zgDyog882TXP)uqu;}%~EhM=i2e@~I%45UL-DC1;Yz|;#?RZLhi-D0(kc}NsEIF~2j z1<0OYDRS&MSrcNDG=X%20|D-1xD%{La}O8;E31_-@l=r%p2cL4N$V3dPjNI6c*HR! zjq9rv7M5VSX5FM@3BWhf!r0o>NYFK*^l*R28NjJqvPyk%c0UQ;Hlaxk}A$Fxk zgQ#eg2C?gC22p72xQ@hG1*OpiL97xuP?e-JI4TK>22ge_Zdb7yJ)+g<7(}JhG5}Of zA~>z28B&Yu)tEj2MN>o?FStmsot%qwFsR4v2q+}NiDa9_Aj9R@xWwipMHV=K9^l+G z@AHnUvN;!%C6W@K3N5b1akWaT*Jw2=t$N&OH6wUIElQ{gOs-S~G}6WpARRz0DOD-} z2*^P;gi&Bfkr%Rg-f56YLBW#enA!>&iY7(UM2ZXm#c&mY=?PqwjVlPXf>7uYOi5rt z_B_q8CI8D>Y9Bapc+<_C7pz|r5DoWK7E?IYB&WiSwxFwJeQjC=J*_P(6rFi)j%p#p-cdrDa(aH4)v*v!ag_ zm}Cdw5pV?xG{6=7%E(r|I?>*j&q(_KC_^wk5=5B{9Z43ICdO#CiRgdvkr*%t8Zp3c zSO!KHn1txqC>-HS8ahAXXJj9K#1#Pa)FPAOcZ#klx+cZIq>QJkYl^N(F)%6Psp|T_ z(G@X%m}1=E7myDemCg-5egKYHGwmzVO@RX!^w4;GD|ia`nAdtCXx4n`3W46MT?m9> zqQ#mT))yWHDd)41t_~pTv6zyxb>E!sQB;K#KHquoo1l6G(5HSQA6gD z!s)4BpSTQXbfj(hu4-Fq-RTE6KKpp%qNgk7Hl5s3OS9{xe?lNjYKEykC2!k*0L;or A{{R30 delta 598 zcmV-c0;&C`BAEq{Ba!kGe<+cCkv&MmKp2MKrb<;R9qb_LkfA!+MMWG-6^me@v=v%) zFuC*(nlvOSE{=k0!NH%!s)LKOt`4q(Aov5~?BJy6A|-y86k5c1aCZ;yeecWNcYx5W zGS%#f0jg#h=|o)2yJ6ykH@NrNs({K$3LSDQzS=msD zXNV(;s!_g>b6MfM#aXS^S^J*+g~5WhlHoedF(j~rBvKF|qmBxyun?tPBgI6T&f^~b z5yzh*mrSk-7&#VDe}f9i@q_=t@7|il=_xlU7zcV^Z2Myz2&@IM1r zTE|~&0&}0FH#%D62ncNh7uOw4-UBXofZ-=yG9*Xx(-ewD;QfrgDGvAb$c65D4C%MC$+m0G3HaK~y-)V_+CE;8fs&|EB^E{3l!U|IPpZ|KI$dbVELr zKZR@lKl}gx|Gj_zFVmd^H-w3hW`0j82nNgNw7S4z7YA z_yOYV;H2mxCH^ldw21NGxF7HCJ?`ECLZiY|vnvXynq{QoF@G_eTNQg=(T5QL5sXXB z)D!8&3_QozJ$!t<3-c`RbAOHjC2umoClW`QZdk+{#Iu{0&Uv3W$V!qzd`>)N&;^Mf zxh}i>#<}RQz%zqJCN)nSBo>PuEO#&~87lD%aY#`$$``UOE1b7DtCbpS-IKpCkk?ky zT&FpPIF^t=5`Q9O)KEqR7Q(b@q?kz2e$2x^>iCo7lF3yDBgX=&P$4;f@IUz7tyzdn zyGel<(EVcD9}_^&F3_yo_V=-EH%|cnGjOG~{nZ9A_epxat%Z(&!ENB;x~<83z~v4w z{G>~UpV2qvfT3HUf6eW!wU5&WAVXa(-+urHhrnc!ve!M{-P_sQzh_$g z{Q&8ha@NH7(0e$1_lNOMqHYIef`Vu z>BSF*FRvgjn7F9{Lo-Go78p+YA72^Bz`(%3@LA^WSB5XIelUD~^^;-ViFT}-QM>@t z{N?pehA*#wGDzw26V!|m247zPgtKq$eMwL=*1$VF_0Ip5>1VK}I*O9)-~|A_Tzv=u SMa?|`0000RFqBiWp0R{DK)Ap4~_TavVKf978y+Cm&$Ew7_I`5K~Ly5-V08WA0Wb zi8il^dzG1aFuaUh`_YsLf!xX diff --git a/src/main/resources/assets/occultism/textures/item/chalk_red.png b/src/main/resources/assets/occultism/textures/item/chalk_red.png index 04b66332285f73fd525462e45e1c63be5adbccd2..e89ff61c08fdd569f99fee2faed7cd185e6437b0 100644 GIT binary patch delta 716 zcmV;-0yF)z0oVnQ7=H)`0000V^Z#K000D$)LqkwWLqi~Na&Km7Y-IodD3N`UJxIeq z9K~N##SbbDc2IE$Se@)*MI1{Ni(sL&6nNgNw7S4z7YA z_yOYV;H2mxCH^ldw21NGxF7HCJ?`ECLZiY|vnvXynq{QoF@G_eTNQg=(T5QL5sXXB z)D!8&3_QozJ$!t<3-c`RbAOHjC2umoClW`QZdk+{#Iu{0&Uv3W$V!qzd`>)N&;^Mf zxh}i>#<}RQz%zqJCN)nSBo>PuEO#&~87lD%aY#`$$``UOE1b7DtCbpS-IKpCkk?ky zT&FpPIF^t=5`Q9O)KEqR7Q(b@q?kz2e$2x^>iCo7lF3yDBgX=&P$4;f@IUz7tyzdn zyGel<(EVcD9}_^&F3_yo_V=-EH%|cnGjOG~{nZ9A_epxat%Z(&!ENB;x~<83z~v4w z{G>~UpV2qvfT3HUf6eW!wU5&WAVXa(-+urHhrnc!ve!M{-P_sQzh_$g z{Q&8ha@N40j(Z$gN2*vINy@BK|(oMJC zz|l!4U4L}9cW^EA3Kl7dTN+$c3=$^`+G<4y@!Jx3K9Zjw{w8zBF>}W;ALG>bP3rrF zl6n=6gfIiw1>le*^!k0qmSx^5h=eem;V{Q#saIhwWqx;-lErGpbhD|wEQo|K)@YQU z4@p9^-7a8&+B1AP9??>wl>%TE1O*Jxc*I@L14ZDp-J+F3XBj~lmg2iF+^|*(trRWW yuEd2I+@1@tkK;;QI=tO-Y1Wg;cU$){{zSN5^ z>Lk(THIXl&v2~Sd0;BfAq7H}lDvpQ)P8+T=E(#G?!6d7rI*-9z-kO17PdMi~ImuU> QfTl5cy85}Sb4q9e0Id%|)&Kwi diff --git a/src/main/resources/assets/occultism/textures/item/chalk_yellow.png b/src/main/resources/assets/occultism/textures/item/chalk_yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..4f9f40a46194d3a078a1cd53ad4a0adfefa21d73 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnY1=9b2E&lyEcHcII+ziG? zw_K+8GroTw`2YX^t7pys|Gm1XPFM-3h_NKdFPOpM*^M+H$I;WpF@)oK@&U$63ruDQ zF|{Nvv10Wx=5BS8X!DxLm(bX{N;QE|dtp(BLwglR!~v%bR~Z+D2&`bzQJu$NE^p1i ZuqT{zot)&WO+dpKJYD@<);T3K0RSjuJ)Zyo literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/occultism/textures/item/chalk_gold_impure.png b/src/main/resources/assets/occultism/textures/item/chalk_yellow_impure.png similarity index 100% rename from src/main/resources/assets/occultism/textures/item/chalk_gold_impure.png rename to src/main/resources/assets/occultism/textures/item/chalk_yellow_impure.png diff --git a/src/main/resources/assets/occultism/textures/item/cruelty_essence.png b/src/main/resources/assets/occultism/textures/item/cruelty_essence.png new file mode 100644 index 0000000000000000000000000000000000000000..08f08a36b54bebb12fc97a731df51ceef80a6f75 GIT binary patch literal 5648 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/occultism/textures/item/crushed_blackstone.png b/src/main/resources/assets/occultism/textures/item/crushed_blackstone.png new file mode 100644 index 0000000000000000000000000000000000000000..035eb5abd5a7b72e61185355bfddc4c410c825f7 GIT binary patch literal 740 zcmVEX>4Tx04R}tkv&MmKpe$iQ^gM|3KkJ@h)|vEq9Tr^ibb$c+6t{Ym|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfc5qU3krMxx6k5c1aNLh~_a1le0HI!Hs@V|%RLwGy zv8b5Iu8Li+=)nL43}H-SrXEi%rr|lh?&0I>U6^NipZjz4DLIn?K9M-Wbi*RvAfDZ{ zbk6(4K~|I$;&b9jgDyz?$aUG}H_ioz1)do+(#d(^AhB3zW4Vo4(NKwJh(n61QNECI zS>e3JSuIyt^Pc>Lft zOcW@4-Q(Te?Y;ebrrF;QilTC`f4oRk00006VoOIv0RI30001*5eDeSR010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=m`)4A`P)k=u!Xx0O3hQK~y-)-IBp>!Y~j-->zdP zNIkU@LcQ_-|HTbXRly{?%K=E0C`3J0-J`wpJTo%<>Dh00vES}uZAaI{ZO(M1um;gr z;;s~u-mi0$_$*jVE{Op=0u@0-=xv}MY!RaK%qjvvM9|xS zilCz8CXrLarnD2t#DR!l?f@iJk|xX@kNeqott6G@2zBT&H$((|*p3K19F?Ck&0`sG zI34Bda>3jl`4tbRA8d4>qMWal!|6EMka?@me4EmacFlwHwT=%>V!!$z^S0;0e>68b WW@}|0z{h+50000bpiHA~E0SdLBs1krkVFgwq%1yInaoUJBrlVJ1Z71*Jq0RM zaTO6Qva}p)%a*N$wxUQ8rQnJp9#>IU(Un$h(Yo$pvAW-c_i4}B!#Ugk$T`W(cOSod z@9(?!JNa_eQ4!OeJ)9v3nx<69W5II<`<*-y{CYoqg@ebLO>qfKEN+EOW}}wYQ81HX zqF~BKYaz&XU9Vp2nuAR3Yg?MWy)LEb?%sxqn@Q)^ub5DN+4qVpifTXoGNbK z$j`ezND59ow03giwshpk!cwQhnji0MFeS`dKmUV2)n)y(ebubb)ves-!`BkJcc$L& zj8?x?{3Q3%w8Cxhol9j?Q|_)#xbfiUDGv)oIXZ5@tBS3!Hzdtm zFhLRI+#YH}l)3qHv{!G&+$mk`_MYn{=>ZK4<#%{Sv0gF{bQkQ%%s>tyPI-F`s?kLv$KSp_j?GSEN2)mX`GIqJOQ4 zbXnjqq4RW8T4d3Gwze)v>Q(Na`pxba;vJa_Z9#uFwm62>2KSV7uC;hqP7f~mYRxGJ zSJ!P%9I3x-t~+t!WNlWPxUbKlwZ+`xRGdE_G+sIl8Z1Gz5+jUy9!?rH6wjtNfzE>< z{~((QCsHW})=_!O zX%j;m4KRy|Ym8}30EYwg@L+y=lS(xNZ?Fuo0QlhBa1&p^L-=|UkMum(}s?jgOH=f+jKh zD}l-ceuRYLibOIYS1gf8xf%rbeCQjypWMH1L@qgjuG?WFa1GQ~F;lI;qXa4bZv4B!ZP$go7M!x=4b z05d=vNTby%#1qg2-33g*JP!6CL zXFC-D*kM66SeTi@8KXJQXw(I8SO}Q)98#;mK#@3u%W;MRpomb6At)x0#tDR&0L8>Y zE+WE^5%xxs)@J-KYj%8K|Nc!^&=wFs!!GKdsa4d*{#E}{N85)9hV5g4;Y5E47CfCI z?Rf&Meie~|8^=a>xCqJ}rcBJ?4;0I1PmIB8{rSJ( z!{2T&;)nr${W5TLfs>FwbQBKo1#(ep?gpllmcR2L!?*g|*mrZwQam>lxnfy2;q4ZI?Vd8H2e$By@6R@k>$Eo&yXLOG|DELH%>~yKD-o9oio}LToBZo~y%ruiza%Eht)~8fHccr%*u(Wc zdTeV_$n3ql=G3g|`Z?_A<_l>AZ(GM)U%z*5z4d&~KF^B}3!yLSJpOw4a#y6Twxl?b z?_=0ge$~5LUja3Di?JH-_2u2gySi&XJyjRK{K1CTg02TPwpCX?>^;6#HPPyRN!e{U zxHLX2d#2~4x$l0wlT$_%hHOtVZ4PXDr=oE0()h~jhn-#(oPr9rWv=_fKc0OBScR0~ LQSz$Lr0o9!O{Z?; literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/occultism/textures/item/crushed_calcite.png b/src/main/resources/assets/occultism/textures/item/crushed_calcite.png new file mode 100644 index 0000000000000000000000000000000000000000..d1ce6cac18dcc32c6dbc45da117dd4423f8b31ef GIT binary patch literal 847 zcmV-V1F-ywP)EX>4Tx04R}tkv&MmKpe$iQ^gM|3KkJ@h)|vEq9Tr^ibb$c+6t{Ym|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfc5qU3krMxx6k5c1aNLh~_a1le0HI!Hs@V|%RLwGy zv8b5Iu8Li+=)nL43}H-SrXEi%rr|lh?&0I>U6^NipZjz4DLIn?K9M-Wbi*RvAfDZ{ zbk6(4K~|I$;&b9jgDyz?$aUG}H_ioz1)do+(#d(^AhB3zW4Vo4(NKwJh(n61QNECI zS>e3JSuIyt^Pc>Lft zOcW@4-Q(Te?Y;ebrrF;QilTC`f4oRk00006VoOIv0RI30001*5eDeSR010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=m`)48X=SlI7$Ej0Zd6mK~y-)-I2jc0$~(|Khqg> z7K#jkh88+Kfj&VleArw{n}K`+v&D!l9Er%Bzyy_2>sRf|gH z93cb%wr%tD^h~?mN^N+luc>bCbDSE}=`#S8N|njv@pI8OK6UJ!uG`Z|k^o?u<{t4M Z)dyONpUagm*-iie002ovPDHLkV1k0Rg<1dr literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/occultism/textures/item/crushed_ice.png b/src/main/resources/assets/occultism/textures/item/crushed_ice.png new file mode 100644 index 0000000000000000000000000000000000000000..7aca11e92c9c4f42b337de0756cdaa35ad8de1ac GIT binary patch literal 4413 zcmeHKeNYtV8DFrN2#O#^MI^3kGa6;@_V)I^Hk=@Lz@6mqK*W#GjC;F##|ro1?ZO=t zBZ1f`b|Q*VL8=x_NMcJ(wUS5;7(k<@(h|QSMh)7bjS`wjQ!E+myLWs}Gt*(F`H!2q z+ui5=J-_#Pe$VqhbGzM~nmjFdZZHHv(~JgvI=F_3-=`;o-}#T8P~g&1n6Xw!r#!IB z?X+^aEG!hbSeW&4RtWOmw3}ZFZHA}zcg=hu;pMHad8hN+9mnsr?J@u1vzRZ*P`9pq zprEn+i0;O2w3Yu;C3GzFt>x-zCrc|I-d&tscHq$EUo@o`m|(QBmcClsZ|QhyHGKL0~W!}sStynDP!UYbN|R?hqBtPp!ly=>{+CEpO63~7ps zvvJAN>U#CDzb?tSUD1e@f0mh^RjVnRvo|a`5MeUX5+Y}Pd~)N_{f72et~AGW_C?&^ zePMOr!t;Sk%nLNH{3EXKi{DlrsuC&!(+)psJr#GZxbA0%(@u2v&>fCyXux)NMb6`; zc^kf~=v|)@5*;w9qp3A7rQ%=3m!dcH8TU=SubJBJ{rv%#F1jxU?cWgz8ZVy%4Yt#5{hwJ zSc%u}0-Xmzv2k7(Mdz>rY+-GjLyPn@G$Js^XpuDv6J~Ph*lf;F=w??Hre@HEIkbjB z;+6%+dPzWFX9WuO+H)N|>D3}WUJ~4kW+?*uAVQ87S!*)GI;We32?-&=&_pknk0Z;1 z;aE3gCDZjugB0LNi)0Iei&xvU*Pd9bT&%$CVUlX=)f zl)%Q>T|O@$_86qVSx3Yg6Pvi=OJ{T-zQPii2QN?#niZ)4xr75e1f|B* zG^0Z0N>EV(w!V_5GRf(-Q=pujowBh~m&4{;5Ctcfn~hoom-u(}SETDf8JwM6B~YTCG8L{QKyzXWxsp&Qi4jmH>*hf(imWnBBKNO|g&{#Y zKw3)dR6yYK0NIc_H%kdlcZSoMt3|{RV9|4U*#r(0LkX0g5?DZr;RK0kNSQK2hLbWi zi4!O$C$Uj@C&O6_{uf$2K5(qR=mw4l`xp33{xh|T-Q<7rKjw12!vw>=V?k21KLwu3 zXBl6dfXlx`XHyOv3+BgQ!w%WGA7}=PLStcRf<`SgXaUeqN>D-2UKmEGG*(=Nt5nLd z?7Y(|cqli!+y-<6T7d@jX$3DHEY~{O8-lb zSRY{2hyi|n8yH<+5=w_h;hTgrRrq75hno_wFn7WMm#>q8|6YsZI%(+$p}_Y7JcZ$@MVFp8QMIT|0htyL9o@&AsPU zhO@8T$P9nbZS3i`KJ%b^%D090KnwaI5)L*}vrx^>d$ris^mfi(c=F z?oImWjjGn~UONh}cz#=YXM$E}`nG)FM(v}>Il_Z?I-bKOw_FH_@C2PJ{`>Lfmjhoc ee|$M)i%oL)Ko@>uMPxBZ88RlO>gy6Vl>7%u(n(GL literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/occultism/textures/item/crushed_packed_ice.png b/src/main/resources/assets/occultism/textures/item/crushed_packed_ice.png new file mode 100644 index 0000000000000000000000000000000000000000..a80f14af0d8921c23001e3a59a55f4bc4cce0853 GIT binary patch literal 4496 zcmeHKdsGuw8V|T4MG7K4DhM(gY}W#l$0UKwmah!_kIELu?}GZPpg50ZfdrP{(# zTimL^wmj-tz-?u1x2~^+RTQuy3c7U{5o!@j5nH#d3zj~x^s#rs`?Tlm;hgP%n&&+(LGGiUKD9b>>wJsfx!expiFn{gY|G(^>+ta zu`n&S>25)P%$;q@XX;!#TyUMq+3v)wojtl|ydVDF zz4dy(XWy=s*`k`(tG9VaDpDIn(Wmyv9@5YcPCchKE&C%@^AU&Rw1-wGG%AH+A{~&# z;TMWm$6ku?Yi&AODa_Ae)GEv3J+d> zyKw*M;~vKgpb<`Xt~rq@Ui?$pQ=41t<~s)m|1Kc2!^WL$`V%e2$d4B$dg~K6(*4+ozJe`g-|88+ixiO_>d5h?c*Wb^p zl3pz;iOi3e;s2cfO2AoO!}qOc`%W~A3ZpS}gWt*}3k@Ol!eHN^N8;?*1WEf+gcp3c zUi!}cpv=3aO@c!=HzsbWMT?fbz9`0-OKKA$eU`j;X8W7vu^qcQFNODycn_4cB|8UR zaSqb_7Tq-zKGOScMO7tJ>YPwLe7P>X^~K|<)d{B`4iY`a!<-+}`_^SX4$evYru3`L zaSQ#O=JhmR&WS7i_Qh-dX(OsK_qO8i#e4Es*u(#1YIj!DM+{c>JZ}xC^^B-Ix4F^D z!{en#&eUIbo^NQlP`~?zcy!e1TDzrve))bMPRau_+63+ADT_zY&XdXnB~9ajP9!MEdPzK|#28w~vE9#$qQ7m$nx^ot%= zEjXt9M9ON)u@F>LE@fl_r&Ex`q`x`GlI2K;B=}SoWdKksSXDS<$rzPdGwH!fkWL%S z4lf|~3?xJAr^K2O8$07jXL=yOeUf(udLnlR7@*W@Olcx=*zicRmXk~CCL9tYToJRv5flwz3MGy&$ zix2`9i&+X>N5KTH7a{^273(Ns8pQ?+4XP5)njRHPMFJ`ml?cNqLI460QLva45+E9B z7_37CI*AS;BqChmpdtw@+GH`{U^{68o=)-2#&pL7D>$}RqmpwG-dNxcizW+a^uPg} z0oq8KY}P5TmNrmH49@B)3`0W2pg1KGfdrL`L{p%Rl*I~ak!2MMcp|Z5hTRwpqywbI z*-8Zj4m-#OQ&=dRFPK>2s#d9gr z5hvgpn<6rBV>$);$9Ta`*y&#=22zTmxRjK_LMdAeVG;zE3cwIW!*o(K3=v6id?vfq zq-Sing<6{qbOc&~0(EEwts38|XJ_JV85Fw@Kr&c>!c&q-xcu>C`E19S$X3SxnI19+ zU|Nd-eq%P!x*%}Rk; zf#<60|0b8))Mbh?f`33Za8(L8*wh8CSuVP`7$s+b)6dBbTk2K|EKitYH(5EHh2HGf ziBoxa889wjRO+Y&51v@$>FrtE>R$ye)2mg=wOZ-5-jb#`XWVaJ)#~ED{_R8CF-1$~ z<~QH+jeEe)*x%Z9;#teh@S3{c)Hk=uUAK3&tz8GVf64sYqbSg{YUlFyz};IENncgm zz5lrJ#^~e5p{COJla<(WUQGp_2ZH<0-0`~AQyZ}F>eiueqFqyyI4?g4`q$UJCl&cy z&Eb1*Q`yE!v+QDW4EYy5`Z+CdpZB0L@|Zqh_X*YD;H%{$jZ5q5#Ml1NZ!m1b!Cx9LtEs@0yp z)BoKP!%h6@6`Zs+f9}Y*eJ}1z<^8O81Cg4P_ayWi9^LTrPye={`BgkAWPsk{r+OjY z_ikiJ#p3=8S3c?T@Jfwx@!eLvvaR!m=YnNzpBJ{29DAv5-^Hd<&td)EbthlT?gh$n NR8jHDRJ zs0)hq39h(QEt@PV6~U!YmkJ^kmnXQQR*^ResCZt_dB<~J|8sIOneTr0{=R#E_kK6| zvOFRzc$CFN3j%>KN*EFlg@0P>-{z+H-SO!FNFW$b&xnb~qChQ4rADPlDon!CRWJ$G zAyNWCckN;9ob_GqR&Tm(78=j=b#cg-)!j^9TeZBVXYc)jtM?wZ`+!9M5OQ>K!a#TL zt+%IZ>(1r57kHHr!w)7GU2K8)uiji5bD_7#KJK=#r^jgN*`0l*rO1OMHE*j|WRT}H z+e;_S8lUFoDUy<`6v5d+b@C&Mv&Wp8Q*w_j`ejp^OLTgI|GiRW+YGEinLTg1!tqE& zMc-mV#dxP@=l>9_I`9HC>FAzR)GW8H?E2DXRc=wwU;A!EW;QpD>|fly{ZxIk+V?Oy!!M^2VmWjd99m&Nc6->u z$hN2pqZZMs~ZlM z6VGq#pAth$P3Z5Uo%dgCQs#4jbb@+~-+rj&UhA6sVW>s(>g|oj(2^-h)Sl8W8@9|@ zbhl-aXI;H-O_1$|6R+|n+U_{yx7w{bEYw8ZV^%K=8WYg&?|hl%#ar#xlHgg3NOi?&ameCmtabD1eyr=JQx`uex( zxCf4c=}RjW@~+x_5{ElkX!~08t5p)`xc0}_`+Ln3iMqszJ~vZU_ae>y=)7=U)UwY1 zIM$bO+V5g?qJykb?kl_Qx7s-`Hfl6>Df{^=GKL4 z9@|Xk(@K$=E2`Nyf3NtCu6jK?%RARWd2r!X7nN-yN^r|&cPL6<0wMX+eLT6VVhVp; z`g6=JRg<}8dP!{S-i3$P6xNvp#oJ&z6GdkdQSIYcyGpd6c*bhe!|d$3OHcA1fD`_W z?38-NqOD#&f(W5N@UE5M4WuY*9Y3V@Yy0}7IVB#?iP!wAi`FMoVPZsAE7i4%${_^mNZ)yfsBwB%l4dyG(w~W14ZnDR=VVQJFQ zzp8SInK8Pk()*|5t<%CBbFI>jW)kh~N8AoO8>P6a|KFh&x?GDOKI_nxXElMo4?9Oo?pL@EI+ zM?x~xaCAmk43v=qaV6yG(=2>-JRCp)V<1VVNL6ZhIzHKe%fp}bVj7ubP{C682o78TD>3Kc5EAIUy(&$e zY6wRH(cn~AfvalpRp}os87ve&5zdlcbLWqQCc!U8q7iI%6Ma<-KC@dz6O#xvpog$_K z07vQ#G9_YY7?e<{!9XPh>!EOPDuUxMxUd8OV2Hwi**+AOm<3Znh|Q&N0Txp#6^q#{ zkUb0{T#evW38oJBN)IK$p%u!B?R_g8;!EFj{=sV~5C7l_IP~X5K8fGYbbY4llNk6U<j zE_>Si3v6vZK1f#|vgKCoiQ}pXfAj=Bw=mVsF2O;vng*(RQr_m^gB%w3BK{|1+1X(C Tga8!5BOwR_!vgmECx81NY76cB literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/occultism/textures/item/demonic_meat.png b/src/main/resources/assets/occultism/textures/item/demonic_meat.png new file mode 100644 index 0000000000000000000000000000000000000000..b346d2cf172472d5e4a71c90a4e12eeae3fe59d4 GIT binary patch literal 792 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 Rr+fea002ovPDHLkV1kBYh3WtR literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/occultism/textures/item/mining_dim_core.png.mcmeta b/src/main/resources/assets/occultism/textures/item/mining_dim_core.png.mcmeta new file mode 100644 index 000000000..5d874ad0f --- /dev/null +++ b/src/main/resources/assets/occultism/textures/item/mining_dim_core.png.mcmeta @@ -0,0 +1,39 @@ +{ + "animation": { + "interpolate": true, + "frames": [ + { + "index": 0, + "time": 8 + }, + { + "index": 1, + "time": 8 + }, + { + "index": 2, + "time": 8 + }, + { + "index": 3, + "time": 8 + }, + { + "index": 4, + "time": 8 + }, + { + "index": 5, + "time": 8 + }, + { + "index": 6, + "time": 8 + }, + { + "index": 7, + "time": 8 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/occultism/textures/item/nature_paste.png b/src/main/resources/assets/occultism/textures/item/nature_paste.png new file mode 100644 index 0000000000000000000000000000000000000000..3dc8244d48c0bc0e4a3657402d15562835699daa GIT binary patch literal 4838 zcmeHLc~BE+77uug0xF((+XmDbq?2^gNk~iN3XtdoBLX6$uAS~qY|TZ|kf5$8c%p?I zQ!^egisQlRj56ZQcp@sO;|_|B!{V*$QYs?O3I(J4b+~J$YRlU7KT_4{?(e<#``-J# zqw;0FCNiR*+ekMKhtp4`R78QhCwukj4Zg?KzsJGt!jkAXCJMJh7OPoD8z_iLwonk| zpmiLM<5#1ms$U7@(X3C;xbJl^L76kHddH);oJnpmGaeRRzlD#^xZX5$?3nYz{GMhn zn$|P!h;P5({PmK}Wxbb%=nJ1c@a^MM`n?D)YnqWqCp=v9>D`UxH{7e@3!c7va_RE8 zim6%9FVzJnv&#JnM;&g2ryY6RCiV2E|oA<@~y- zm$8rUW^sPjcnMmXzivkA>gK8&>tFS%63!Vaswqq3a9mc?p`jX8XlPqJAd1|-W=&C+ z1dYCUW>5NnnjX)ghne}WbKfmFFH;c%ig1YVPP>w^P$LmF`R1P;{XG zfmEo0laOSIVzLIk|9VLL1&8Gyn`&P+9dGLISwrpFI%Z%{rJwhR4e48+@B8Jq^syd0 z$JzQQuikw0w^B6V(rx*&WvATh{c3F~8B-_dg=Z%Xir8$5yD;j4XxmpmC2#k?oSq%B zEHVK9d$0B5PVkDGFP^wxcvh4aj>%?>_8I1G^gD)39_d?$CMai$%e{oW$+^e;_doGn zd^hKeAoE6S)ZD$Y^xZ=(q zTmCArq5AtR+qW_~t}}PkmmUqgxZ=RP9W#qw)Dl&uT+TcF{b`FECnqlWcg~ym>F#4( zdQ_b)O`M+dcEy!33mQ~kdz580qpO#Vbp(EEE_V$*7F4^n>I>Vry#s=_o{T^3(!c-8 zI#=r8(jSY9PaR9Sjy5&9Tq(Df_u9N+1c%c5U7otfyceYq9P+LN&g|u>sm729AGMZSjn2?d&z^QHl4h#So zDF%leMuW+QIpka?E(V_2Wj+^jsxXV?+&Hxc3N>3P2<4$X0UYL_lZ4!7z@Vd+wFFqUBok6^?XDolko*YzEB7Q4cL}!VsHm+vU#%*Ef@;QMp$VJ zLz_(yi-~K^iHw}f1#+m(KchvhZihG7T3G;m@Ey2?kMIP1qmkd)!p4Lp0gzUQ{?x)2 z4f>QHMcK@WR)PvkqD+i;X9$vLx3?r(4bE^#f=?MJBT%)0U6C$ZMyS-9b_z+y>=d$}_q?w>e%=zdq zK@gJEkuV|C3SgA*Ct)1b;xH+ei2MZt1Vwd{PEab7jloR>#XXfjF!9X~GTAZy^ z0N`8)(O{ug3TMpLXtUWM=dw;gtYy1c4H}BX8C-!g6aWH5;?}~0S z>liz3rGoW&{_tgF6#A;snaPzDQRFd~i?iZIk4Lq%Nv#}7}8XvIPi ziol3OhQlZhV)UnQ1je<94s-!Z%1CincmK!mIx3DYW z2cX0j+CF8^54!9{Yg9gKl(^fn+7TNz-a8sSUa(C%YC`Xzyr`>2KfarxcHQ_2(-EJ* z?0FN5H*U}!KC*j%{7-L}Z;YQi|KWj1&8wZ6vnHm*q~>{ES(&sq^pNN2nAp4u@t8*i zu}{2QRUr-Yf0oKkg~}n#TXr87mt{0O*Q~63nf`3>yR?Y4%!~7lcigsloVL9wa=GKR z%X8z%=4WNG|JwG=IYsPWZmo(-y=#5YST*Tn(d`|(58bUPEQ9W3s`pgSx1F3@G57Oi zs44fy!0O``?>V!#=gAEP<=Hn9R5uj`?gsswl=NMd$49&)zC5_@=6rqlAEX>4Tx04R}tkv&MmKpe$iQ^gM|3KkJ@h)|vEq9Tr^ibb$c+6t{Ym|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfc5qU3krMxx6k5c1aNLh~_a1le0HI!Hs@V|%RLwGy zv8b5Iu8Li+=)nL43}H-SrXEi%rr|lh?&0I>U6^NipZjz4DLIn?K9M-Wbi*RvAfDZ{ zbk6(4K~|I$;&b9jgDyz?$aUG}H_ioz1)do+(#d(^AhB3zW4Vo4(NKwJh(n61QNECI zS>e3JSuIyt^Pc>Lft zOcW@4-Q(Te?Y;ebrrF;QilTC`f4oRk00006VoOIv0RI30001*5eDeSR010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=m`)4CoXPXZDjxe0TW3?K~y-)-I7sm!Y~X#Uuw5e zs9K=})Jt$H&dn7-N+}f-l6_1}DsjV@C8lZO zt%De&8OM=v98pz_F~k@FzF=d_3|_p0=TDbqNnO_f48!o8eFpz{NUtk<1^-ce0F3i@ UeN)4BTmS$707*qoM6N<$f_DI4=Kufz literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/occultism/textures/item/netherite_scrap_dust.png b/src/main/resources/assets/occultism/textures/item/netherite_scrap_dust.png new file mode 100644 index 0000000000000000000000000000000000000000..fd5f92b7a39ec487d542aa5a0a45b612e0673608 GIT binary patch literal 4402 zcmeHKeNYtV8DB!>GcY0Y)s~dykSNx@{kS{sZp%sJ?(i;pNZ=ZgWTJb!d&h>m+so~8 zcYxGX!W2RWjmb<}lBkJjs2I{zI%B{zQLx&o)rba#N)nn>ZHy2|{DRcJdwfqb(_yCh zkDJ-A=i~Q2&+mDjckZn($X^{3^`j^Vf?~`jLm_xRAYBn*;GQ~qj{=XbN^7xLNcmxp zm$!3H78WZ!EX)QtI|K##Tm?_WcER_LU5Wo$?t^bW(x~sv?~Cz`FEX|InlgSpx;@f7 zcIDegx5ZMHj+dGchqvW-X5lgJjTrm6BXMWb+;_yp?xNuzD-LMyZp-dDUH?k!=QiuE z$BKs*^$fqAllRpFcMXHK==A9H6DvH)?RSvBK7R6>=r8j9=PL@AzVvBz)A*lDHdplz zn(MA_+OF6wKws~PJYB0*Jg*)(OC3}3&t$smg>Ut#Q*v6v0%M;=nOxL!*PF^w^Q`RIjY#*_`PVOQoWWZ@vxEf+dg;V2UayHz0al2V-jdY;R_K)CXfftS*X8es@vWM}HqE8Pill#Q6&& zF&_fB?>kyT^2*0#Q%diaF5`&7afCuln#2imLHvX-QImz-jF8!HdEJfQC& zC_5+Mq3AMJgl(*YbL(V7o$t$Fj?u~1t1Otsqi0JwQ>B+Js?4|2m1VS+k>#w6$_|hK zz{QFb9B?_^0vXWBg197jm&B+H4w{H%I$5!$0M_$f7FNoYattvBI3FQf83kv189P~M z$eV-!UpiT-D0)Z~_51yDze3J?9Vo8VYEg_p2?7BYh*04csQ}^@(j|xq3SQvYho|Cmc`TM`c(*Xg0^kD;P#zSQW2no8&h`*QqYr>g2K1dCf)z|D zTF44~xtC^*KGrR!&xT;=X@5_-*BMNQp;6Y!x`3$wR>kKmx!PmlpT?bIJ(YXV7+6^>q=Bc)rSQxKolIJvWO$lm$lxobWNiev zA+{{ajwtPn7O|-b8qpBAN}(ZG1z~4qL7ClxNV#cNf&$=j4&W#?N>;11sS!-ARUk@2 zqd{!AR)eSs1%@-YhNb2}tn+f9D=Fvfs3a%`KxuFdtzl>ev8iw=8XQA33JOD1m>pMV z(I8fZEf@_$lX<+?MS*g1F3Q289=9W?kO(JN6_|B0LXOQy3Y?T^2M%BcI5)%lg&CEV zbFoDtCGm-?iL5M~z}4C;m4?9Z8KcKpuK;>cLd7w;LK)OZg&{#YfLcoGQ~(f^gKS8> zm!(ABYvp;TP9_BfOPYciUl9~d%v2Hk%*5Bkr;`f~6ATB(f~4q)6a>o0PE;IVO{nNn%I#pm z{xR9GQ*!P*nn9%^D78|lKyVc%H3OqSG?XR_QPC=!%8uDt%9a&mVH#cF?V_LZva1|` zN5B&avvdL0q&b9ZKvQixYWeBE4W>F?XCzC~`9b+onZ1lhQ$POCJ+G2p;gbZw5 zU?)VUx57!jK&;>AZ?X>G=Mpfyu*kglU7%}$u6Z#qFXM&oTA*uQ49v@Tp}YQXbVbb^ zrdT)l2jmAwrH6;kzX^_6VYW4^4Z#B!bVuL01-wOiOdA9Uie4;TAyCt+$v_w`nk~lg ztC4Yu4=sJ6)A0-t4VVq9teTUTx4#p06pJ@*+xy`~SXeA@7`X*lw!mbk*_pzi7; zPrq?}{e7{%Jr?tW=9?!gT1{scg_`1a=#&*yiSel2zU5$6#_}Ea?_XwKa_Q7Q=%%=) zijQrM_;BBWGs}0B7L6Pj_}jJD4xxSNDd_q?{Hm=%knj9?c-yJNSbJW}ic8;m^9Nlw ze|Z=K+FMD_K6UWI1;d7Dr=zE@E%ZI(=J?^-@v6n+uT_NXeVEyKcUR7c#EsdQZ)nTi GwDmuKqd?RE literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/occultism/textures/item/repair_icon.png b/src/main/resources/assets/occultism/textures/item/repair_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c29fc8271e5f5e826346f95b134e112ffb0c9abb GIT binary patch literal 710 zcmV;%0y+JOP)EX>4Tx04R}tkv&MmKpe$iTg4A5f>sc52v{A&E-K;vxAeOimEM7-bHwp_qjhukCHVR;1h_WOgAjz4dR(i zOXs{#9AX7YAwDObFzABBk6f2se&d{X*v~UVMk+Z^93mF-EiAV%D;O&AG;vr_HOlv= zT~;`6aaKze*0?8sVKA$$EOVXaFydIm5=01)Q9%(UScuT7kzyiA`!NsykmDE0C6lWN zMveuPp+a)};D7MDTQfH`=_UnZK>Lere~bbhyFk5a+uz5wT|WT=&%l+|^p|VE>?i5f zrWQT|dbfd#>!v2}0hc?#;FB&Hk|PCZ`g1wp{fxdT1N7el-D_@djeVRx04eG!aRVG2 z0%Li~UiWx+XKQc&o@w;=1J(j^&VqNmy#N3J24YJ`L;wH)0002_L%V+f000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~eB77;fx443x+000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0001;Nkl!3uyt2t;=l|Nocm5XB6eA_6i5LrsAv_Y$oo6?GBrX&Zl6u z$WFnOi#9=!>#8MVcJMJcsQX^z_~bdI?F#ns*6-&w|6%doaZ{07Sg=FW_Og3n+pZ-U zYvWV)+zkpAiE8+fLq0MO{?{mUb`-B^`XyqpB-9p z^3v>#o)y=$?Z$Gr9NzxjVZWVsX0A50KKFkZEMcoItVsJdLGxr^qxIQ28zhbw<@ZhJFaI1~(UrXE1q=V|b+vwG#2~K+oe<oT)P`CKYly6Sk% z((*mE!L=oD7c{TXp2@BWf3-exR+GzqeO1Sk?)vWF&V;Dc(=?i!Mb{thTUs5kva4_&$dge8&wr@7dTy6~ebA{jJ!t8IF|NeVZ7trKx(OYX*Jd*@J3=N@em(1u zS8(u>AH1nA=YP}CaIkLCw`g~_S8I!-#b-nL2vB&1G$^nchTmg^&BDh?n~~zXEOtNI|Vqqg?rmbpTM?)hIrb#t#y3`;v*fmrxtt)m=Q;H{L5yg3glH?^O1gKmX zAh1v@4!bP*Rt9sad2U_|JafYW9_)s&d1~GaLk6s|IVc$AqkJKf;-U-1yo3N)5yCr5M6N z+gaLXg*i^#Xe(gVJRX>bU$4(%HyHZptxT^9Ko5Znw+lpkp}=Ah^tWKxltMt#yP#jR zV6s4;3Nk6iR^TA0ltRkNj_prD5`Fge0!O|(9Fh=F`IH4f8Q@j)mdjMVA*0WNlfX<{ z>~1R{_FG7nHoXz+t+jD8?r{1q1eo{nzJ-1ryBiEp1_P$G5e3}x^jbBK^N*1>f+jKd zqf#!Bl5#?Z$R(5vK?$)5!AVq%2qjWnDpe>@sZ83BN^fOY+)7X!6(Hx+fJchUC|pU& z5t)!A5mX|TB1VZ&ftW-TfueE+Y7z_kQKUO)P?dOo|5b5RB%m@A(oZwhehF;AR^F3bOBN_QP zYXSzK2WTs4b24whS+s?k!s48sBDq+GDwU{Ap%BTHQuGaI8s%U>Epn_PAz$K|;Sz&^ zaDcQpSE+!&Z2_XeG!6=9ZH_FPEnm&!mH=~>ebWZeP$bUcTAZZ-sZfk!LM0}WWr@U? zNQ4RHAOV=LAKpgNrlS9a=Gq5Vd6KT98Q{OjJ>==BDbzgAo98v3b~h6YyW0Z82~P+N zUPyT~23(#gA{V!sDX@R^7VPVB`WK2pA~%7A%RmO@puJH_ZbTHMM1+u}$tWQtMuk%B zsi!`6#%5xjxPwYE108`@pg`SP!N2QG)dz0X`tZ(Nipv9#3=t}kHS+>Y@& zT9x3x^ia70{k9lj=NSWA7uX2}eOqC#UcmRS`RmQYujvAY2b{ccw0nLWNG8ZE6ZbG z!Z+zii=RI>p*o;?Vlun;rB@FW?PRm8AB0JVN?$=A`y}gDL=F!BhrV4A_mzC+)6-9i zm$gJKQ;mzY&hJomUT63{tyixU=hpe=IIn-As@bi+|MfkzY2>_3cXUmYZ#MfS{PeKC zO>}05>iL%u`{v))`Y=zeX!VbQLCfs#ZH?#*naX=PI5BMMp*br~u@mXQZz@+MZ|RiY z35nR0lbw^vTPI69Vy8~VriXb~73?fCZbz{16c5kMH?7p3J+kUi!udT@+Qi4B%Y$NT zszVPo?TRZgE!GFsRJ(TX->op;O47)52P2`5KQGS;-!k}aQqoIx>MC^MvF6xH=Hi3w z=U@07+0`YzlV38ubIp>bby0co#g~Mw<{5-&<*i`DjZa@d;+xHDeg9gY{_N@q5>|9o zh3)rl*(^CN*Bs2b_ab#OTgkjSak12Q(YA9dyP*r!(M3l4(Xjo=)f<>No6-kgj%FKgX8U{`d=&#T|B SeY_3i5Ynei($*%=E%^@vAD*%R literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/occultism/textures/item/resurrect_icon.png b/src/main/resources/assets/occultism/textures/item/resurrect_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..149a8d0f4e533d8d8a1ef226f97c19d97808665c GIT binary patch literal 731 zcmV<10wn#3P)EX>4Tx04R}tkv&MmKpe$i(~2Kd9IPNBn4vn^MMWG-6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~R5K6-RLwF{ z@tBy+t%}{R=*18M2x3fPrk+SIX5cx#?&0I>U4&e3JS*_Gq>z@3D!MwJT<~q$$#Ib|~k`N)IhB7L!5TR8g#YBqsV;=qy$DbsZOs+B* zITlcb3d!+<|H1EW&BFAQn-q)zT`#u%F%ER^0?oQ@e;?a+^91le16NwxUu^($pQP8@ zTKEVU*aj}H+nT%wT zOcW`5-Q(RooxS~grq$mMenWDrk*`bf00006VoOIv00000008+zyMF)x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=m`}B5;L4RPl^Bl02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{006T|L_t(o!|hhv3cw%;Rq6kK*}W7rOLMDs0foVsPCe?e z044=B1vB%>5V31Zrgub8{_{ETNV3w_bTypROWXP;W2}WBBb3MnGF>ue&ab?!3*lhL z9B4D~oRpzqAsX3eutXYiNt@)^I+lKVA2hfNfwV`~V|os7RK(sqjB0g%AJje9oJu`i zO-s`;d=`uuKRJ_4+np}?jN6b4hF5(LuCK} N002ovPDHLkV1ia{Kdb-% literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/occultism/textures/item/resurrect_icon.png.mcmeta b/src/main/resources/assets/occultism/textures/item/resurrect_icon.png.mcmeta new file mode 100644 index 000000000..cf7b1d7ba --- /dev/null +++ b/src/main/resources/assets/occultism/textures/item/resurrect_icon.png.mcmeta @@ -0,0 +1,23 @@ +{ + "animation": { + "interpolate": false, + "frames": [ + { + "index": 0, + "time": 5 + }, + { + "index": 1, + "time": 5 + }, + { + "index": 2, + "time": 5 + }, + { + "index": 3, + "time": 5 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/occultism/textures/item/ritual_dummy_craft.png b/src/main/resources/assets/occultism/textures/item/ritual_dummy_craft.png new file mode 100644 index 0000000000000000000000000000000000000000..dd7f16c83cb3c076742a845188e503c5be7cefd8 GIT binary patch literal 4878 zcmeHLc~nzZ8V_1of+A8ti(3qCSYPszysS-BHf4)4ELBjbFYn#JJ7hC?kRXaxv>-Yt z*3PMj;{qdN>$pMH;s%1!RvlrwFv{kL6;!Gf9XDL&zOV?VJ!g*R)c?piFYmp3f8XzZ z-|v3kcXG2na{jy#Y#%m@#TpSB5)=jR?#$)v2)`#jc!k4T)$*7{bQEson9N2kr2`x~ z-2^zmMrm0r+f{w!Vz(;J@UAw`4+1LuHnrA%^=Vqx_*ISpv3ujr%G`wR*34%9<7DT= z9R|M|k0ST@vbACPU{~6sJv;uf+0VNr;m>ni8wKBu`{nt=Q!_(PN9m94dR}(^v?Mn^ z^QFs?4Yi4$)7@NWc&|l$nupwe@|Wr@-@kC}@_WB?(ScD>mrn;|rl<>>57z}bPgAZP z-fm-Ejmi%D(>Iu{);i)tuUz@NZZ}#Ar#6mm;Kq3s+^T%RVmYj(0s|vM0|R@*fk70m z%vXg}%^7#@qv&%ZXSjKf8g(&pM~5bOT)5YUrMt_#;#1MDAG#J`ll^#kYf>sJH=X+; zYeVS)w*zZ9PaLjyTq|zpPI<}qE6cfm?fArdcU5KmKmyJRa_!XJL@9APp! zM|k^XG_^LJ+HvYd#@-)WMzTH3tcsE$6_gG z+e|o-0%(o~BvA$x_uh#!Tn{)E3O#un? zfW|pCz0P1!*i>9QuL3?Z!+b8s4xv+2+(qh0PN2~YI2aG(p-8ZeN)vKtu{laJsZ~S; z&F!IpZz^swO`8;azSU~wSw%dfIf*Zj%jJAj$QKF`h(Ijq1{${^28%C4(ajMAEQFad z(Uj4^VK{M(F_l(vxp1D->!04FR`<~xEIlefJ@_`<#24^TzFyDoZ(*T>(;!KYL%(Zb ziGfwhj{+8Bs+j=6X~01H_NO3;K6_KDS!WN2B=|rF^bl%+s|p4zIWJTl*=NB>kVNTC zb}K0M03=OmUyC)sH)h5jPJc(Bc^~fpbZ_i-Fhr@nw}AdyHhA)=LHS_G5J0D|KZ z0U{O3frgagA}x;EsYpUG*J#$`a62hIo&@+NLy~=h5nSOP8LHw6dEHR^NTd#@wa@_8 z0A(PJR?BN}45bIrG|uQLkP0O-sX#12#i&Fsmc9mk2+S6kiwvs(<%ux+46`u`7!H&c zXEGHM*vDZsia;~KX`?yDXw<2=j0+sbvTs@q3yQ>PJP4-&Bt?ao0+lO-XpBIv5D66+ zil8C|+7E9eDQ)`yLo?;WQFd>72xWomr`w0RYbqKn>wfEg)lv3h;&AL`p}>jm5G;5a zAnkrauI?!!88;*W*gtv_ws)NRon#>7Km=1sgNO(biC|hFMr0_8AwsQ`)Z!XUA`{96 zvRjN=+KQWje-hLYY6TP2t`%o`&sO;j#9NaAvky=*1eGJ*k_luA6yx&Wet2R+BNO2y zhG=2kAQ&OX5xJI>A~+_OkTQu}#&pvGy8aR2*)yUyJSCrLh`pPsJgsdqMvdFzp_{ZHIC4gz+ zEqgMa-96QHx2ri$clN>U+*dhu?Ty^Ug+jn8R(|>nAsM^mrPS`rDw)13p z=h*SQ@{$FAoeVbW+wz5u6-OViJi~Z(5r>Y2r(lX>#T)OB9Ur}`KH#07yi++&?(?UG zyw{qZIt4`3?fZO{4`1QM`r8#~P*G4>vUiid?Wv>#Z%EJ0j@`3uPELgf_t2hgyKIZZ z850D@TP81T-Ta?JH8lrEFaGDr%&xp(55c%cV>SjBWo^A*Ub*uY`{T@G!^-5;Gi6m< zX4bmzU8bpbR?3Q7^xGVd?s!$QI`65TRk7W-#`A-peHOOXE{)4JU%7F-PMaTe(Ks~o z#q-l&rGLh|GTT%`Q&`vOv0v*tGlZ;b*Pe#6 zr;J{BK5XQr83|mV+rRS2YWLL>JYwk?bN9!VlM@ohHl}`gv#G;D_Op*q?KR~|$<<=( zx4uj2KhI0rS+m#xhYx<&b^dxn$AvE6wazm|^>Oi6=9Ol&HQjkR?EV=qQv(^b literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/occultism/textures/item/ritual_dummy_misc.png b/src/main/resources/assets/occultism/textures/item/ritual_dummy_misc.png new file mode 100644 index 0000000000000000000000000000000000000000..9f184ec7727462222afef666eac970fb94cb381b GIT binary patch literal 5635 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/occultism/textures/item/ritual_dummy_possess.png b/src/main/resources/assets/occultism/textures/item/ritual_dummy_possess.png new file mode 100644 index 0000000000000000000000000000000000000000..94a1e5810f2a6175592f71f0845b9d3e39c0e335 GIT binary patch literal 5111 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 RAO;3Q5grv*_V&u0p8++7Nxc97 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/occultism/textures/item/ritual_dummy.png b/src/main/resources/assets/occultism/textures/item/ritual_dummy_summon.png similarity index 100% rename from src/main/resources/assets/occultism/textures/item/ritual_dummy.png rename to src/main/resources/assets/occultism/textures/item/ritual_dummy_summon.png diff --git a/src/main/resources/assets/occultism/textures/item/witherite_dust.png b/src/main/resources/assets/occultism/textures/item/witherite_dust.png new file mode 100644 index 0000000000000000000000000000000000000000..10a8791e08f4796b4a62a8b90b9bfc8f1cd1f04d GIT binary patch literal 4512 zcmeHKdsGuw8XxKU1QC_>fmqXEx65OaNiqpDBQFVoL>nG4D5AS%GBbf$$ivK#1eSt= zp0!|G#TO!4YOQVAqid1Xs#Q=>3V7BnT2bk4eXxhxs?_6Z^-y*1g!kE=vxjrG|B;-@ z-1|L#-}n9Qckju4D>*S?>Xd*f5Cl!tY2ysw?I%2wCV<}s4_}br)tGNg;|-)sWOvxi zYz`yh^X!a>akFL!a$mP3ukvja`Sf=CFN*#Bct_v~XS?&#Sz8E_>!RNw=+{7r{7OXb5*7^>-N+IUR&{n%`(2Tb5=!2ZD{Da zREtmbv$XaJH#4qmD)TwA=vNa=Gs3#Q*_*gudL3Koms5L62|?pFuxfR(POTm&2NY5D z=9Wd;#+bnK^#@9)efQE`(XGwz6W25vJ~TC~ctiX0tgp^=wa-RbtzmWG_>SU|chA+7 zlpQ(bd#G6S1X|;?8~80VUhMQwZ*tqeez)g-?`OTfe%~<%D(6p+`6?`EZdvKByERuI zmA>q=Zvi(+d*Sl!PtKtc%^i^i1*g0phV^ho??k~~$FP*c)FTqPp8&hKE&N^H7hy4}W_QK1J(YKz=>?&_b^$KeC z3Q2wiFZ?0;$v+P6dash->XlOc@Z8bp^J@?Nt~%w&y&kI5S_M7Nys;$vX=rZ7^B{c&yE{ER2MojxsFenK}CyzGwtz}D)eJ{Hqc*|~~a@X@rG$`k3Q z$NBoMd*H?V<&U4AJbCI^(M7bkcU)Vmqjh{m*<8?fP8Rf6n*McyvRNb~Z8I?vx5W+` z4}v11-FA}7W_Xc_$z-jO;+~WBVi8M6idQK0h~BPdvRG}tgISiJXr%J9DV!EZM@@-v z69B-%@TACX$+2>TJ5ubyCBRq^OT{9O37;J)PSYog)HVkrLM5mKfi-T{DHlgg5k)v? zGhv8}?}q@hNO2a=+X<=E<#I_}3W?2;DV5@j5vm) z9ITyZZB~(hNt$fAe56p;Mubez>5~UN1PU@) zi{0Y|$R1(Iv*sbPM&u@FJmm~e1h^04j<6o6-D3=_^m-!BM&%0W>Ea^ALVSX@Q7lb( zhDr*>5!5V$%_fxzMwM~|#wdn_8Mz9m7tcw)OCCHE@IfvxUzya(5 z)=Jx4+>px1T9{=#Dex%^m#a`5!xX4osYDQL$Y?p^;6N`5s4_&NKs_2^VF*wTpq3Om z6##hTpc+E$U`XEPFxqT6kzye!k>EL~)`Ja2lROzm@(ch)dc>MMaGoeb@X z3$XfBR2FH?WWf2+->?I6_UD>`L})XL%V1h*lEElw2^hmL70i&~Duk3NNF|~giO$)~ zyo+=&i!%X_fGg0T9yv?_3!H?~!K1LBFX7Pn1wZ}k@C!x&&|^VH#qSthV|0y*fl(Qcb=MeOqherG z#$(;}f1_*4&}E9Tf`33Ra8){9)^rP8vnH69Cd5Hj;T!IC^*2B=*{)s5L6G-M;TZ>2 zR?PvziM&p)nfUEwziE*8ua6-&xJ)nA#Vs~sZF{yZe&;OWqj{sUj=fVCJN4trMRxC| zV$O~oty;VLFtc)D*7S|#7fc5X?@zBeZ%}>u?AbF*BgPfkGS1HYwzqp~%%+;!w6N7H zcUX^HTfZ0UNC+_Qz1S^jlkeY_mW>DcMjaLZ@ak;M&DPquB`wbi6N1m>sJPRQOMWaY z-Df{PN3zpfSHAf`@RHz7vaY-+Kf|LhPjo%XpW0AZ-~F_pHvJ%U^_~;DUl8S8P`BN% zp4_-?#zAGr_uE@&ub9rG3w3Aj@cY;RVsmv;^PG}xskouj z%hG8`{dIcwjz;q6?Fsrm^qaDzg!vb)HU`{%I`KtEQH^_D5tQ0q V(slUE+xGy|kWP~rcPKWa_&)$Uc$feH literal 0 HcmV?d00001 diff --git a/src/main/resources/data/apotheosis/enchanting_stats/white_candle.json b/src/main/resources/data/apotheosis/enchanting_stats/large_candles.json similarity index 67% rename from src/main/resources/data/apotheosis/enchanting_stats/white_candle.json rename to src/main/resources/data/apotheosis/enchanting_stats/large_candles.json index 2e4542098..4a10c1ff1 100644 --- a/src/main/resources/data/apotheosis/enchanting_stats/white_candle.json +++ b/src/main/resources/data/apotheosis/enchanting_stats/large_candles.json @@ -1,10 +1,10 @@ { - "block": "occultism:candle_white", + "tag": "occultism:candles", "stats": { "maxEterna": 0, "eterna": 0, "quanta": 0, - "arcana": 3, + "arcana": 4, "rectification": 0, "clues": 0 } diff --git a/src/main/resources/data/apotheosis/enchanting_stats/spirit_attuned_crystal.json b/src/main/resources/data/apotheosis/enchanting_stats/spirit_attuned_crystal.json index 4ddc3aea4..9d252bce4 100644 --- a/src/main/resources/data/apotheosis/enchanting_stats/spirit_attuned_crystal.json +++ b/src/main/resources/data/apotheosis/enchanting_stats/spirit_attuned_crystal.json @@ -1,8 +1,8 @@ { "block": "occultism:spirit_attuned_crystal", "stats": { - "maxEterna": 22.5, - "eterna": 1, + "maxEterna": 45, + "eterna": 3, "quanta": 0, "arcana": 0, "rectification": 0, diff --git a/src/main/resources/data/occultism/advancement/chalks/black.json b/src/main/resources/data/occultism/advancement/chalks/black.json new file mode 100644 index 000000000..c0fdda98a --- /dev/null +++ b/src/main/resources/data/occultism/advancement/chalks/black.json @@ -0,0 +1,26 @@ +{ + "display": { + "icon": { + "id": "occultism:chalk_black" + }, + "title": {"translate": "advancements.occultism.chalks.black.title"}, + "description": {"color":"green","translate":"advancements.occultism.chalks.black.description"}, + "show_toast": true, + "announce_to_chat": false + }, + "parent": "occultism:chalks/red", + "criteria": { + "chalk_white": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "occultism:chalk_black" + ] + } + ] + } + } + } +} diff --git a/src/main/resources/data/occultism/advancement/chalks/blue.json b/src/main/resources/data/occultism/advancement/chalks/blue.json new file mode 100644 index 000000000..e060e2f34 --- /dev/null +++ b/src/main/resources/data/occultism/advancement/chalks/blue.json @@ -0,0 +1,26 @@ +{ + "display": { + "icon": { + "id": "occultism:chalk_blue" + }, + "title": {"translate": "advancements.occultism.chalks.blue.title"}, + "description": {"color":"green","translate":"advancements.occultism.chalks.blue.description"}, + "show_toast": true, + "announce_to_chat": false + }, + "parent": "occultism:chalks/black", + "criteria": { + "chalk_white": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "occultism:chalk_blue" + ] + } + ] + } + } + } +} diff --git a/src/main/resources/data/occultism/advancement/chalks/brown.json b/src/main/resources/data/occultism/advancement/chalks/brown.json new file mode 100644 index 000000000..8159c85be --- /dev/null +++ b/src/main/resources/data/occultism/advancement/chalks/brown.json @@ -0,0 +1,26 @@ +{ + "display": { + "icon": { + "id": "occultism:chalk_brown" + }, + "title": {"translate": "advancements.occultism.chalks.brown.title"}, + "description": {"color":"green","translate":"advancements.occultism.chalks.brown.description"}, + "show_toast": true, + "announce_to_chat": false + }, + "parent": "occultism:chalks/blue", + "criteria": { + "chalk_white": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "occultism:chalk_brown" + ] + } + ] + } + } + } +} diff --git a/src/main/resources/data/occultism/advancement/chalks/cyan.json b/src/main/resources/data/occultism/advancement/chalks/cyan.json new file mode 100644 index 000000000..8421602ea --- /dev/null +++ b/src/main/resources/data/occultism/advancement/chalks/cyan.json @@ -0,0 +1,26 @@ +{ + "display": { + "icon": { + "id": "occultism:chalk_cyan" + }, + "title": {"translate": "advancements.occultism.chalks.cyan.title"}, + "description": {"color":"green","translate":"advancements.occultism.chalks.cyan.description"}, + "show_toast": true, + "announce_to_chat": false + }, + "parent": "occultism:chalks/blue", + "criteria": { + "chalk_white": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "occultism:chalk_cyan" + ] + } + ] + } + } + } +} diff --git a/src/main/resources/data/occultism/advancement/chalks/gray.json b/src/main/resources/data/occultism/advancement/chalks/gray.json new file mode 100644 index 000000000..275d9db8d --- /dev/null +++ b/src/main/resources/data/occultism/advancement/chalks/gray.json @@ -0,0 +1,26 @@ +{ + "display": { + "icon": { + "id": "occultism:chalk_gray" + }, + "title": {"translate": "advancements.occultism.chalks.gray.title"}, + "description": {"color":"green","translate":"advancements.occultism.chalks.gray.description"}, + "show_toast": true, + "announce_to_chat": false + }, + "parent": "occultism:chalks/lime", + "criteria": { + "chalk_white": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "occultism:chalk_gray" + ] + } + ] + } + } + } +} diff --git a/src/main/resources/data/occultism/advancement/chalks/green.json b/src/main/resources/data/occultism/advancement/chalks/green.json new file mode 100644 index 000000000..35c4ddcb7 --- /dev/null +++ b/src/main/resources/data/occultism/advancement/chalks/green.json @@ -0,0 +1,26 @@ +{ + "display": { + "icon": { + "id": "occultism:chalk_green" + }, + "title": {"translate": "advancements.occultism.chalks.green.title"}, + "description": {"color":"green","translate":"advancements.occultism.chalks.green.description"}, + "show_toast": true, + "announce_to_chat": false + }, + "parent": "occultism:chalks/purple", + "criteria": { + "chalk_white": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "occultism:chalk_green" + ] + } + ] + } + } + } +} diff --git a/src/main/resources/data/occultism/advancement/chalks/light_blue.json b/src/main/resources/data/occultism/advancement/chalks/light_blue.json new file mode 100644 index 000000000..fd879ceba --- /dev/null +++ b/src/main/resources/data/occultism/advancement/chalks/light_blue.json @@ -0,0 +1,26 @@ +{ + "display": { + "icon": { + "id": "occultism:chalk_light_blue" + }, + "title": {"translate": "advancements.occultism.chalks.light_blue.title"}, + "description": {"color":"green","translate":"advancements.occultism.chalks.light_blue.description"}, + "show_toast": true, + "announce_to_chat": false + }, + "parent": "occultism:chalks/lime", + "criteria": { + "chalk_white": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "occultism:chalk_light_blue" + ] + } + ] + } + } + } +} diff --git a/src/main/resources/data/occultism/advancement/chalks/light_gray.json b/src/main/resources/data/occultism/advancement/chalks/light_gray.json new file mode 100644 index 000000000..8c7a6c58d --- /dev/null +++ b/src/main/resources/data/occultism/advancement/chalks/light_gray.json @@ -0,0 +1,26 @@ +{ + "display": { + "icon": { + "id": "occultism:chalk_light_gray" + }, + "title": {"translate": "advancements.occultism.chalks.light_gray.title"}, + "description": {"color":"green","translate":"advancements.occultism.chalks.light_gray.description"}, + "show_toast": true, + "announce_to_chat": false + }, + "parent": "occultism:chalks/white", + "criteria": { + "chalk_white": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "occultism:chalk_light_gray" + ] + } + ] + } + } + } +} diff --git a/src/main/resources/data/occultism/advancement/chalks/lime.json b/src/main/resources/data/occultism/advancement/chalks/lime.json new file mode 100644 index 000000000..8ec01fead --- /dev/null +++ b/src/main/resources/data/occultism/advancement/chalks/lime.json @@ -0,0 +1,26 @@ +{ + "display": { + "icon": { + "id": "occultism:chalk_lime" + }, + "title": {"translate": "advancements.occultism.chalks.lime.title"}, + "description": {"color":"green","translate":"advancements.occultism.chalks.lime.description"}, + "show_toast": true, + "announce_to_chat": false + }, + "parent": "occultism:chalks/purple", + "criteria": { + "chalk_white": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "occultism:chalk_lime" + ] + } + ] + } + } + } +} diff --git a/src/main/resources/data/occultism/advancement/chalks/magenta.json b/src/main/resources/data/occultism/advancement/chalks/magenta.json new file mode 100644 index 000000000..b1b870676 --- /dev/null +++ b/src/main/resources/data/occultism/advancement/chalks/magenta.json @@ -0,0 +1,26 @@ +{ + "display": { + "icon": { + "id": "occultism:chalk_magenta" + }, + "title": {"translate": "advancements.occultism.chalks.magenta.title"}, + "description": {"color":"green","translate":"advancements.occultism.chalks.magenta.description"}, + "show_toast": true, + "announce_to_chat": false + }, + "parent": "occultism:chalks/blue", + "criteria": { + "chalk_white": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "occultism:chalk_magenta" + ] + } + ] + } + } + } +} diff --git a/src/main/resources/data/occultism/advancement/chalks/orange.json b/src/main/resources/data/occultism/advancement/chalks/orange.json new file mode 100644 index 000000000..a2efcd02c --- /dev/null +++ b/src/main/resources/data/occultism/advancement/chalks/orange.json @@ -0,0 +1,26 @@ +{ + "display": { + "icon": { + "id": "occultism:chalk_orange" + }, + "title": {"translate": "advancements.occultism.chalks.orange.title"}, + "description": {"color":"green","translate":"advancements.occultism.chalks.orange.description"}, + "show_toast": true, + "announce_to_chat": false + }, + "parent": "occultism:chalks/lime", + "criteria": { + "chalk_white": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "occultism:chalk_orange" + ] + } + ] + } + } + } +} diff --git a/src/main/resources/data/occultism/advancement/chalks/pink.json b/src/main/resources/data/occultism/advancement/chalks/pink.json new file mode 100644 index 000000000..a3e91bd88 --- /dev/null +++ b/src/main/resources/data/occultism/advancement/chalks/pink.json @@ -0,0 +1,26 @@ +{ + "display": { + "icon": { + "id": "occultism:chalk_pink" + }, + "title": {"translate": "advancements.occultism.chalks.pink.title"}, + "description": {"color":"green","translate":"advancements.occultism.chalks.pink.description"}, + "show_toast": true, + "announce_to_chat": false + }, + "parent": "occultism:chalks/orange", + "criteria": { + "chalk_white": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "occultism:chalk_pink" + ] + } + ] + } + } + } +} diff --git a/src/main/resources/data/occultism/advancement/chalks/purple.json b/src/main/resources/data/occultism/advancement/chalks/purple.json new file mode 100644 index 000000000..fc825ef1a --- /dev/null +++ b/src/main/resources/data/occultism/advancement/chalks/purple.json @@ -0,0 +1,26 @@ +{ + "display": { + "icon": { + "id": "occultism:chalk_purple" + }, + "title": {"translate": "advancements.occultism.chalks.purple.title"}, + "description": {"color":"green","translate":"advancements.occultism.chalks.purple.description"}, + "show_toast": true, + "announce_to_chat": false + }, + "parent": "occultism:chalks/yellow", + "criteria": { + "chalk_white": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "occultism:chalk_purple" + ] + } + ] + } + } + } +} diff --git a/src/main/resources/data/occultism/advancement/chalks/red.json b/src/main/resources/data/occultism/advancement/chalks/red.json new file mode 100644 index 000000000..cf822278c --- /dev/null +++ b/src/main/resources/data/occultism/advancement/chalks/red.json @@ -0,0 +1,26 @@ +{ + "display": { + "icon": { + "id": "occultism:chalk_red" + }, + "title": {"translate": "advancements.occultism.chalks.red.title"}, + "description": {"color":"green","translate":"advancements.occultism.chalks.red.description"}, + "show_toast": true, + "announce_to_chat": false + }, + "parent": "occultism:chalks/orange", + "criteria": { + "chalk_white": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "occultism:chalk_red" + ] + } + ] + } + } + } +} diff --git a/src/main/resources/data/occultism/advancement/chalks/root.json b/src/main/resources/data/occultism/advancement/chalks/root.json new file mode 100644 index 000000000..6dea3f5a0 --- /dev/null +++ b/src/main/resources/data/occultism/advancement/chalks/root.json @@ -0,0 +1,26 @@ +{ + "display": { + "icon": { + "id": "occultism:brush" + }, + "title": {"translate": "advancements.occultism.chalks.root.title"}, + "description": {"color":"#CCCCCC","translate":"advancements.occultism.chalks.root.description"}, + "background": "occultism:textures/block/otherstone.png", + "show_toast": true, + "announce_to_chat": false + }, + "criteria": { + "chalk_impure": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "occultism:chalk_white_impure" + ] + } + ] + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/occultism/advancement/chalks/white.json b/src/main/resources/data/occultism/advancement/chalks/white.json new file mode 100644 index 000000000..0c3e0d544 --- /dev/null +++ b/src/main/resources/data/occultism/advancement/chalks/white.json @@ -0,0 +1,26 @@ +{ + "display": { + "icon": { + "id": "occultism:chalk_white" + }, + "title": {"translate": "advancements.occultism.chalks.white.title"}, + "description": {"color":"green","translate":"advancements.occultism.chalks.white.description"}, + "show_toast": true, + "announce_to_chat": false + }, + "parent": "occultism:chalks/root", + "criteria": { + "chalk_white": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "occultism:chalk_white" + ] + } + ] + } + } + } +} diff --git a/src/main/resources/data/occultism/advancement/chalks/yellow.json b/src/main/resources/data/occultism/advancement/chalks/yellow.json new file mode 100644 index 000000000..572070260 --- /dev/null +++ b/src/main/resources/data/occultism/advancement/chalks/yellow.json @@ -0,0 +1,26 @@ +{ + "display": { + "icon": { + "id": "occultism:chalk_gold" + }, + "title": {"translate": "advancements.occultism.chalks.yellow.title"}, + "description": {"color":"green","translate":"advancements.occultism.chalks.yellow.description"}, + "show_toast": true, + "announce_to_chat": false + }, + "parent": "occultism:chalks/white", + "criteria": { + "chalk_white": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "occultism:chalk_gold" + ] + } + ] + } + } + } +}