diff --git a/src/generated/resources/assets/occultism/lang/en_us.json b/src/generated/resources/assets/occultism/lang/en_us.json index 39be2d831..f8cfe5f3b 100644 --- a/src/generated/resources/assets/occultism/lang/en_us.json +++ b/src/generated/resources/assets/occultism/lang/en_us.json @@ -149,6 +149,8 @@ "book.occultism.dictionary_of_spirits.crafting_rituals.craft_storage_remote.spotlight.text": "The [](item://occultism:storage_remote) can be linked to a [](item://occultism:storage_controller) by shift-clicking. The [#](ad03fc)Djinni[#]() bound to the accessor will then be able to access items from the actuator even from across dimensions.\n", "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.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", @@ -261,6 +263,10 @@ "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", @@ -499,7 +505,7 @@ "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.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", + "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.title": "Uses", "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", @@ -551,7 +557,7 @@ "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.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", + "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.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", @@ -566,12 +572,30 @@ "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", + "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.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", + "book.occultism.dictionary_of_spirits.possession_rituals.horde_drowned.description.text": "Drowned summoned by this way can drop: [](item://minecraft:sniffer_egg), [](item://minecraft:turtle_egg), [](item://minecraft:trident), [](item://minecraft:angler_pottery_sherd), [](item://minecraft:shelter_pottery_sherd), [](item://minecraft:snort_pottery_sherd), [](item://minecraft:blade_pottery_sherd), [](item://minecraft:explorer_pottery_sherd), [](item://minecraft:mourner_pottery_sherd), [](item://minecraft:plenty_pottery_sherd).\n", + "book.occultism.dictionary_of_spirits.possession_rituals.horde_drowned.entity.text": "**Drops**: Items related to ocean trials (See next page);\n", + "book.occultism.dictionary_of_spirits.possession_rituals.horde_drowned.name": "Wild Horde Drowned", + "book.occultism.dictionary_of_spirits.possession_rituals.horde_husk.description.text": "Husks summoned by this way can drop: [](item://minecraft:dune_armor_trim_smithing_template), [](item://minecraft:archer_pottery_sherd), [](item://minecraft:miner_pottery_sherd), [](item://minecraft:prize_pottery_sherd), [](item://minecraft:skull_pottery_sherd), [](item://minecraft:arms_up_pottery_sherd), [](item://minecraft:brewer_pottery_sherd).\n", + "book.occultism.dictionary_of_spirits.possession_rituals.horde_husk.entity.text": "**Drops**: Items related to desert trials (See next page);\n", + "book.occultism.dictionary_of_spirits.possession_rituals.horde_husk.name": "Wild Horde Husk", + "book.occultism.dictionary_of_spirits.possession_rituals.horde_illager.description.text": "Summon a possessed Evoker and his henchmen to get [](item://minecraft:totem_of_undying), [](item://minecraft:vex_armor_trim_smithing_template) and [](item://minecraft:sentry_armor_trim_smithing_template).\n", + "book.occultism.dictionary_of_spirits.possession_rituals.horde_illager.entity.text": " **Drops**: [](item://minecraft:totem_of_undying)\n", + "book.occultism.dictionary_of_spirits.possession_rituals.horde_illager.name": "Mini Illager Invasion", + "book.occultism.dictionary_of_spirits.possession_rituals.horde_silverfish.description.text": "Silverfish summoned by this way can drop: [](item://minecraft:music_disc_relic), [](item://minecraft:host_armor_trim_smithing_template), [](item://minecraft:raiser_armor_trim_smithing_template), [](item://minecraft:shaper_armor_trim_smithing_template), [](item://minecraft:wayfinder_armor_trim_smithing_template), [](item://minecraft:burn_pottery_sherd), [](item://minecraft:danger_pottery_sherd), [](item://minecraft:friend_pottery_sherd), [](item://minecraft:heart_pottery_sherd), [](item://minecraft:heartbreak_pottery_sherd), [](item://minecraft:howl_pottery_sherd), [](item://minecraft:sheaf_pottery_sherd).\n", + "book.occultism.dictionary_of_spirits.possession_rituals.horde_silverfish.entity.text": "**Drops**: Items related to ruins trials (See next page);\n", + "book.occultism.dictionary_of_spirits.possession_rituals.horde_silverfish.name": "Wild Horde Silverfish", "book.occultism.dictionary_of_spirits.possession_rituals.name": "Possession Rituals", "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_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.name": "Possessed Elder Guardian", @@ -584,8 +608,8 @@ "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_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), return back [](item://minecraft:netherite_scrap) or nothing when killed. 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 nothing;\n", + "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", @@ -596,9 +620,15 @@ "book.occultism.dictionary_of_spirits.possession_rituals.possess_skeleton.description.text": "In this ritual an [#](ad03fc)Skeleton[#]() is spawned using the life energy of a [#](ad03fc)Chicken[#]() and possessed by a [#](ad03fc)Foliot[#](). The [#](ad03fc)Possessed Skeleton[#]() will be immune to daylight and always drop at least one [](item://minecraft:skeleton_skull) when killed.\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_skeleton.entity.text": "**Drops**: 1x [](item://minecraft:skeleton_skull)\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_skeleton.name": "Possessed Skeleton", + "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_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 one [](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**: 1x [](item://minecraft:echo_shard)\nand items related to ancient city;\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_warden.name": "Possessed Warden", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_weak_breeze.description.text": "[](item://minecraft:breeze_rod) cannot be obtained from Possessed Weak Breeze rods due to their fragile nature, but this version of Breeze hides some treasures and has a chance to drop: [](item://minecraft:guster_pottery_sherd), [](item://minecraft:scrape_pottery_sherd), [](item://minecraft:music_disc_creator_music_box) and [](item://minecraft:ominous_bottle).\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_weak_breeze.entity.text": " **Drops**: 1x [](item://minecraft:trial_key) and can drop other things (See next page);\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_weak_breeze.name": "The first key", "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", @@ -830,21 +860,38 @@ "entity.occultism.marid": "Marid", "entity.occultism.mummy_familiar": "Mummy Familiar", "entity.occultism.otherworld_bird": "Drikwing", + "entity.occultism.possessed_breeze": "Possessed 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_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_warden": "Possessed Warden", + "entity.occultism.possessed_weak_breeze": "Possessed Weak Breeze", "entity.occultism.possessed_weak_shulker": "Possessed Weak Shulker", "entity.occultism.shub_niggurath_familiar": "Shub Niggurath Familiar", "entity.occultism.shub_niggurath_spawn": "Shub Niggurath Spawn", "entity.occultism.thrown_sword": "Thrown Sword", + "entity.occultism.wild_bogged": "Wild Bogged", + "entity.occultism.wild_cave_spider": "Wild Cave Spider", + "entity.occultism.wild_horde_creeper": "Wild Horde Creeper", + "entity.occultism.wild_horde_drowned": "Wild Horde Drowned", + "entity.occultism.wild_horde_husk": "Wild Horde Husk", + "entity.occultism.wild_horde_silverfish": "Wild Horde Silverfish", "entity.occultism.wild_hunt_skeleton": "Wild Hunt Skeleton", "entity.occultism.wild_hunt_wither_skeleton": "Wild Hunt Wither Skeleton", + "entity.occultism.wild_husk": "Wild Husk", + "entity.occultism.wild_silverfish": "Wild Silverfish", + "entity.occultism.wild_skeleton": "Wild Skeleton", + "entity.occultism.wild_slime": "Wild Slime", + "entity.occultism.wild_spider": "Wild Spider", + "entity.occultism.wild_stray": "Wild Stray", + "entity.occultism.wild_zombie": "Wild Zombie", "enum.occultism.book_of_calling.item_mode.set_base": "Set Base Location", "enum.occultism.book_of_calling.item_mode.set_deposit": "Set Deposit", "enum.occultism.book_of_calling.item_mode.set_extract": "Set Extract", @@ -1055,6 +1102,8 @@ "item.occultism.ritual_dummy.craft_storage_controller_base.tooltip": "The storage actuator base imprisons a Foliot responsible for interacting with items in a dimensional storage matrix.", "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.familiar_bat": "Ritual: Summon Bat Familiar", @@ -1089,6 +1138,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_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", @@ -1105,8 +1156,12 @@ "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_warden": "Ritual: Summon Possessed Warden", "item.occultism.ritual_dummy.possess_warden.tooltip": "The possessed Warden will always drop a 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.resurrect_familiar": "Ritual: Resurrect Familiar", @@ -1117,6 +1172,8 @@ "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", @@ -1143,16 +1200,26 @@ "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_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.satchel": "Surprisingly Substantial Satchel", "item.occultism.satchel.tooltip": "%s is bound to this satchel.", "item.occultism.silver_dust": "Silver Dust", @@ -1191,16 +1258,24 @@ "item.occultism.spawn_egg.foliot": "Foliot Spawn Egg", "item.occultism.spawn_egg.marid": "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_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_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.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.spirit_attuned_gem": "Spirit Attuned Gem", @@ -1466,6 +1541,10 @@ "ritual.occultism.craft_storage_remote.finished": "Successfully bound djinni into storage remote.", "ritual.occultism.craft_storage_remote.interrupted": "Binding of djinni interrupted.", "ritual.occultism.craft_storage_remote.started": "Started binding djinni into storage remote.", + "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.debug.conditions": "Not all requirements for this ritual are met.", "ritual.occultism.debug.finished": "Ritual completed successfully.", "ritual.occultism.debug.interrupted": "Ritual interrupted.", @@ -1539,6 +1618,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_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.", @@ -1571,14 +1654,22 @@ "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_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_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.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.", @@ -1586,20 +1677,26 @@ "ritual.occultism.ritual_help": "§lInvalid ritual!§r\nWere you trying to perform ritual: \"%s\"? Missing items:\n%s", "ritual.occultism.sacrifice.axolotls": "Axolotl", "ritual.occultism.sacrifice.bats": "Bat", + "ritual.occultism.sacrifice.camel": "Camel", "ritual.occultism.sacrifice.chicken": "Chicken", "ritual.occultism.sacrifice.cows": "Cow", "ritual.occultism.sacrifice.cubemob": "Slime or Magma Cube", + "ritual.occultism.sacrifice.dolphin": "Dolphin", "ritual.occultism.sacrifice.fish": "Any Fish", "ritual.occultism.sacrifice.flying_passive": "Allay, Bat, Bee or Parrot", "ritual.occultism.sacrifice.horses": "Horse", "ritual.occultism.sacrifice.humans": "Villager or Player", + "ritual.occultism.sacrifice.iron_golem": "Iron Golem", "ritual.occultism.sacrifice.llamas": "Llama", + "ritual.occultism.sacrifice.ocelot": "Ocelot", "ritual.occultism.sacrifice.parrots": "Parrot", "ritual.occultism.sacrifice.pigs": "Pigs", "ritual.occultism.sacrifice.sheep": "Sheep", "ritual.occultism.sacrifice.snow_golem": "Snow Golem", "ritual.occultism.sacrifice.spiders": "Spider", "ritual.occultism.sacrifice.squid": "Squid", + "ritual.occultism.sacrifice.vex": "Vex", + "ritual.occultism.sacrifice.wolfs": "Wolf", "ritual.occultism.sacrifice.zombies": "Zombie", "ritual.occultism.summon_afrit_crusher.conditions": "Not all requirements for this ritual are met.", "ritual.occultism.summon_afrit_crusher.finished": "Summoned afrit ore crusher successfully.", @@ -1613,6 +1710,10 @@ "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.", @@ -1665,6 +1766,10 @@ "ritual.occultism.summon_foliot_transport_items.finished": "Summoned foliot transporter successfully.", "ritual.occultism.summon_foliot_transport_items.interrupted": "Summoning of foliot transporter interrupted.", "ritual.occultism.summon_foliot_transport_items.started": "Started summoning foliot transporter.", + "ritual.occultism.summon_horde_illager.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.summon_horde_illager.finished": "Summoned the small illager invasion successfully.", + "ritual.occultism.summon_horde_illager.interrupted": "Summoning of the small illager invasion interrupted.", + "ritual.occultism.summon_horde_illager.started": "Started summoning the small illager invasion.", "ritual.occultism.summon_marid_crusher.conditions": "Not all requirements for this ritual are met.", "ritual.occultism.summon_marid_crusher.finished": "Summoned marid ore crusher successfully.", "ritual.occultism.summon_marid_crusher.interrupted": "Summoning of marid ore crusher interrupted.", @@ -1673,10 +1778,22 @@ "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.", @@ -1685,6 +1802,10 @@ "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.", "tag.block.c.ores.iesnium": "Iesnium Ore", "tag.block.c.ores.silver": "Silver Ore", "tag.block.c.storage_blocks.iesnium": "Iesnium Storage Blocks", 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 new file mode 100644 index 000000000..1a5442cc2 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/craft_wild_trim.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/ritual_dummy" +} \ 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 new file mode 100644 index 000000000..1a5442cc2 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_breeze.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/ritual_dummy" +} \ 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 new file mode 100644 index 000000000..1a5442cc2 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_strong_breeze.json @@ -0,0 +1,3 @@ +{ + "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_breeze.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_weak_breeze.json new file mode 100644 index 000000000..1a5442cc2 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_weak_breeze.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/ritual_dummy" +} \ 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 new file mode 100644 index 000000000..1a5442cc2 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_allay.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/ritual_dummy" +} \ 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 new file mode 100644 index 000000000..1a5442cc2 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_horde_illager.json @@ -0,0 +1,3 @@ +{ + "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 new file mode 100644 index 000000000..1a5442cc2 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_creeper.json @@ -0,0 +1,3 @@ +{ + "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 new file mode 100644 index 000000000..1a5442cc2 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_drowned.json @@ -0,0 +1,3 @@ +{ + "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 new file mode 100644 index 000000000..1a5442cc2 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_husk.json @@ -0,0 +1,3 @@ +{ + "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 new file mode 100644 index 000000000..1a5442cc2 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/summon_wild_silverfish.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/ritual_dummy" +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/entity_type/golems/iron.json b/src/generated/resources/data/c/tags/entity_type/golems/iron.json new file mode 100644 index 000000000..796f4ec73 --- /dev/null +++ b/src/generated/resources/data/c/tags/entity_type/golems/iron.json @@ -0,0 +1,5 @@ +{ + "values": [ + "minecraft:iron_golem" + ] +} \ 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 new file mode 100644 index 000000000..41994ca34 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/craft_wild_trim.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_wild_trim" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_marid" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/craft_wild_trim" + ] + } +} \ 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/possess_breeze.json new file mode 100644 index 000000000..595be0875 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_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/possess_breeze" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_afrit" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/possess_breeze" + ] + } +} \ 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_strong_breeze.json new file mode 100644 index 000000000..d38c3fca6 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_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/possess_strong_breeze" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_afrit" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/possess_strong_breeze" + ] + } +} \ 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/possess_weak_breeze.json new file mode 100644 index 000000000..bca51eaae --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/possess_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/possess_weak_breeze" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_afrit" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/possess_weak_breeze" + ] + } +} \ 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/summon_allay.json new file mode 100644 index 000000000..763ae83bf --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_allay.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/summon_allay" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_foliot" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/summon_allay" + ] + } +} \ No newline at end of file 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/summon_horde_illager.json new file mode 100644 index 000000000..6de07f3f0 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_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/summon_horde_illager" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_afrit" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/summon_horde_illager" + ] + } +} \ 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 new file mode 100644 index 000000000..2850e89c8 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_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/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 new file mode 100644 index 000000000..be450f29a --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_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/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_husk.json b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_wild_husk.json new file mode 100644 index 000000000..6ad56fec4 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_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/summon_wild_husk" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bound_afrit" + ] + ], + "rewards": { + "recipes": [ + "occultism:ritual/summon_wild_husk" + ] + } +} \ 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 new file mode 100644 index 000000000..69baeb735 --- /dev/null +++ b/src/generated/resources/data/occultism/advancement/recipes/ritual/ritual/summon_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/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/loot_table/entities/possessed_breeze.json b/src/generated/resources/data/occultism/loot_table/entities/possessed_breeze.json new file mode 100644 index 000000000..b0a89455f --- /dev/null +++ b/src/generated/resources/data/occultism/loot_table/entities/possessed_breeze.json @@ -0,0 +1,61 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:ominous_trial_key" + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:breeze_rod" + } + ], + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:empty", + "weight": 8 + }, + { + "type": "minecraft:item", + "name": "minecraft:bolt_armor_trim_smithing_template", + "weight": 4 + }, + { + "type": "minecraft:item", + "name": "minecraft:guster_banner_pattern", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "minecraft:music_disc_precipice" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "occultism:entities/possessed_breeze" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/loot_table/entities/possessed_evoker.json b/src/generated/resources/data/occultism/loot_table/entities/possessed_evoker.json new file mode 100644 index 000000000..070e53656 --- /dev/null +++ b/src/generated/resources/data/occultism/loot_table/entities/possessed_evoker.json @@ -0,0 +1,55 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:totem_of_undying" + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:empty", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "minecraft:vex_armor_trim_smithing_template" + }, + { + "type": "minecraft:item", + "name": "minecraft:sentry_armor_trim_smithing_template" + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:ominous_bottle" + } + ], + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 0.5 + }, + "function": "minecraft:set_count" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "occultism:entities/possessed_evoker" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/loot_table/entities/possessed_hoglin.json b/src/generated/resources/data/occultism/loot_table/entities/possessed_hoglin.json index 8f3c0efda..c282bca11 100644 --- a/src/generated/resources/data/occultism/loot_table/entities/possessed_hoglin.json +++ b/src/generated/resources/data/occultism/loot_table/entities/possessed_hoglin.json @@ -4,10 +4,6 @@ { "bonus_rolls": 0.0, "entries": [ - { - "type": "minecraft:empty", - "weight": 3 - }, { "type": "minecraft:item", "name": "minecraft:netherite_upgrade_smithing_template", @@ -21,6 +17,18 @@ "type": "minecraft:item", "name": "minecraft:netherite_scrap", "weight": 3 + }, + { + "type": "minecraft:item", + "name": "minecraft:nether_brick" + }, + { + "type": "minecraft:item", + "name": "minecraft:piglin_banner_pattern" + }, + { + "type": "minecraft:item", + "name": "minecraft:music_disc_pigstep" } ], "rolls": 1.0 diff --git a/src/generated/resources/data/occultism/loot_table/entities/possessed_strong_breeze.json b/src/generated/resources/data/occultism/loot_table/entities/possessed_strong_breeze.json new file mode 100644 index 000000000..107efbe09 --- /dev/null +++ b/src/generated/resources/data/occultism/loot_table/entities/possessed_strong_breeze.json @@ -0,0 +1,45 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:heavy_core" + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:empty", + "weight": 5 + }, + { + "type": "minecraft:item", + "name": "minecraft:flow_pottery_sherd", + "weight": 4 + }, + { + "type": "minecraft:item", + "name": "minecraft:flow_armor_trim_smithing_template", + "weight": 3 + }, + { + "type": "minecraft:item", + "name": "minecraft:flow_banner_pattern", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "minecraft:music_disc_creator" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "occultism:entities/possessed_strong_breeze" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/loot_table/entities/possessed_weak_breeze.json b/src/generated/resources/data/occultism/loot_table/entities/possessed_weak_breeze.json new file mode 100644 index 000000000..bc9aa1155 --- /dev/null +++ b/src/generated/resources/data/occultism/loot_table/entities/possessed_weak_breeze.json @@ -0,0 +1,69 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:trial_key" + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:ominous_bottle" + } + ], + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 0.5 + }, + "function": "minecraft:set_count" + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:empty", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "minecraft:guster_pottery_sherd" + }, + { + "type": "minecraft:item", + "name": "minecraft:scrape_pottery_sherd" + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:empty", + "weight": 7 + }, + { + "type": "minecraft:item", + "name": "minecraft:music_disc_creator_music_box" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "occultism:entities/possessed_weak_breeze" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/loot_table/entities/wild_horde_creeper.json b/src/generated/resources/data/occultism/loot_table/entities/wild_horde_creeper.json new file mode 100644 index 000000000..71cff8d63 --- /dev/null +++ b/src/generated/resources/data/occultism/loot_table/entities/wild_horde_creeper.json @@ -0,0 +1,64 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:music_disc_13" + }, + { + "type": "minecraft:item", + "name": "minecraft:music_disc_cat" + }, + { + "type": "minecraft:item", + "name": "minecraft:music_disc_blocks" + }, + { + "type": "minecraft:item", + "name": "minecraft:music_disc_chirp" + }, + { + "type": "minecraft:item", + "name": "minecraft:music_disc_far" + }, + { + "type": "minecraft:item", + "name": "minecraft:music_disc_mall" + }, + { + "type": "minecraft:item", + "name": "minecraft:music_disc_mellohi" + }, + { + "type": "minecraft:item", + "name": "minecraft:music_disc_stal" + }, + { + "type": "minecraft:item", + "name": "minecraft:music_disc_strad" + }, + { + "type": "minecraft:item", + "name": "minecraft:music_disc_ward" + }, + { + "type": "minecraft:item", + "name": "minecraft:music_disc_11" + }, + { + "type": "minecraft:item", + "name": "minecraft:music_disc_wait" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + } + } + ], + "random_sequence": "occultism:entities/wild_horde_creeper" +} \ 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 new file mode 100644 index 000000000..bcb367570 --- /dev/null +++ b/src/generated/resources/data/occultism/loot_table/entities/wild_horde_drowned.json @@ -0,0 +1,64 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:empty", + "weight": 3 + }, + { + "type": "minecraft:item", + "name": "minecraft:sniffer_egg" + }, + { + "type": "minecraft:item", + "name": "minecraft:turtle_egg", + "weight": 3 + }, + { + "type": "minecraft:item", + "name": "minecraft:trident", + "weight": 3 + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:angler_pottery_sherd" + }, + { + "type": "minecraft:item", + "name": "minecraft:shelter_pottery_sherd" + }, + { + "type": "minecraft:item", + "name": "minecraft:snort_pottery_sherd" + }, + { + "type": "minecraft:item", + "name": "minecraft:blade_pottery_sherd" + }, + { + "type": "minecraft:item", + "name": "minecraft:explorer_pottery_sherd" + }, + { + "type": "minecraft:item", + "name": "minecraft:mourner_pottery_sherd" + }, + { + "type": "minecraft:item", + "name": "minecraft:plenty_pottery_sherd" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "occultism:entities/wild_horde_drowned" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/loot_table/entities/wild_horde_husk.json b/src/generated/resources/data/occultism/loot_table/entities/wild_horde_husk.json new file mode 100644 index 000000000..59041a0f3 --- /dev/null +++ b/src/generated/resources/data/occultism/loot_table/entities/wild_horde_husk.json @@ -0,0 +1,50 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:empty", + "weight": 3 + }, + { + "type": "minecraft:item", + "name": "minecraft:dune_armor_trim_smithing_template" + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:archer_pottery_sherd" + }, + { + "type": "minecraft:item", + "name": "minecraft:miner_pottery_sherd" + }, + { + "type": "minecraft:item", + "name": "minecraft:prize_pottery_sherd" + }, + { + "type": "minecraft:item", + "name": "minecraft:skull_pottery_sherd" + }, + { + "type": "minecraft:item", + "name": "minecraft:arms_up_pottery_sherd" + }, + { + "type": "minecraft:item", + "name": "minecraft:brewer_pottery_sherd" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "occultism:entities/wild_horde_husk" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/loot_table/entities/wild_horde_silverfish.json b/src/generated/resources/data/occultism/loot_table/entities/wild_horde_silverfish.json new file mode 100644 index 000000000..e3b5cd832 --- /dev/null +++ b/src/generated/resources/data/occultism/loot_table/entities/wild_horde_silverfish.json @@ -0,0 +1,80 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:empty", + "weight": 4 + }, + { + "type": "minecraft:item", + "name": "minecraft:music_disc_relic" + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:empty", + "weight": 4 + }, + { + "type": "minecraft:item", + "name": "minecraft:host_armor_trim_smithing_template" + }, + { + "type": "minecraft:item", + "name": "minecraft:raiser_armor_trim_smithing_template" + }, + { + "type": "minecraft:item", + "name": "minecraft:shaper_armor_trim_smithing_template" + }, + { + "type": "minecraft:item", + "name": "minecraft:wayfinder_armor_trim_smithing_template" + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:burn_pottery_sherd" + }, + { + "type": "minecraft:item", + "name": "minecraft:danger_pottery_sherd" + }, + { + "type": "minecraft:item", + "name": "minecraft:friend_pottery_sherd" + }, + { + "type": "minecraft:item", + "name": "minecraft:heart_pottery_sherd" + }, + { + "type": "minecraft:item", + "name": "minecraft:heartbreak_pottery_sherd" + }, + { + "type": "minecraft:item", + "name": "minecraft:howl_pottery_sherd" + }, + { + "type": "minecraft:item", + "name": "minecraft:sheaf_pottery_sherd" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "occultism:entities/wild_horde_silverfish" +} \ 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 new file mode 100644 index 000000000..76dbdd1f5 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/crafting_rituals/craft_wild_trim.json @@ -0,0 +1,51 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "occultism:crafting_rituals", + "condition": { + "type": "modonomicon:true" + }, + "description": "", + "hide_while_locked": false, + "icon": { + "item": "minecraft:wild_armor_trim_smithing_template" + }, + "name": "book.occultism.dictionary_of_spirits.crafting_rituals.craft_wild_trim.name", + "pages": [ + { + "type": "modonomicon:spotlight", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "item": { + "item": "minecraft:wild_armor_trim_smithing_template" + }, + "text": "book.occultism.dictionary_of_spirits.crafting_rituals.craft_wild_trim.spotlight.text", + "title": "" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/craft_wild_trim", + "text": "", + "title1": "", + "title2": "" + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "occultism:crafting_rituals/overview", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": -1, + "x": 1, + "y": -3 +} \ No newline at end of file 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 1186f7a94..5e6e25337 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 @@ -129,7 +129,7 @@ } ], "show_when_any_parent_unlocked": false, - "sort_number": 20, + "sort_number": 21, "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/summon_allay.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/summon_allay.json new file mode 100644 index 000000000..fe1caeff3 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/familiar_rituals/summon_allay.json @@ -0,0 +1,66 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "occultism:familiar_rituals", + "condition": { + "type": "modonomicon:true" + }, + "description": "", + "hide_while_locked": false, + "icon": { + "height": 16, + "texture": "occultism:textures/gui/book/allay.png", + "width": 16 + }, + "name": "book.occultism.dictionary_of_spirits.familiar_rituals.summon_allay.name", + "pages": [ + { + "type": "modonomicon:entity", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "default_rotation": -45.0, + "entity_id": "minecraft:allay", + "name": "", + "offset": 0.0, + "rotate": true, + "scale": 1.0, + "text": "book.occultism.dictionary_of_spirits.familiar_rituals.summon_allay.entity.text" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/summon_allay", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.familiar_rituals.summon_allay.description.text", + "title": "", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "occultism:familiar_rituals/overview", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": 20, + "x": 4, + "y": 0 +} \ 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 new file mode 100644 index 000000000..2501dee74 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_creeper.json @@ -0,0 +1,64 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "occultism:possession_rituals", + "condition": { + "type": "modonomicon:true" + }, + "description": "", + "hide_while_locked": false, + "icon": { + "item": "minecraft:music_disc_cat" + }, + "name": "book.occultism.dictionary_of_spirits.possession_rituals.horde_creeper.name", + "pages": [ + { + "type": "modonomicon:entity", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "default_rotation": -45.0, + "entity_id": "occultism:wild_horde_creeper", + "name": "", + "offset": 0.0, + "rotate": true, + "scale": 0.8, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.horde_creeper.entity.text" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/summon_wild_creeper", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.horde_creeper.description.text", + "title": "", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "occultism:possession_rituals/overview", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": -1, + "x": -2, + "y": 1 +} \ No newline at end of file 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 new file mode 100644 index 000000000..b94f3f2bd --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_drowned.json @@ -0,0 +1,64 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "occultism:possession_rituals", + "condition": { + "type": "modonomicon:true" + }, + "description": "", + "hide_while_locked": false, + "icon": { + "item": "minecraft:sniffer_egg" + }, + "name": "book.occultism.dictionary_of_spirits.possession_rituals.horde_drowned.name", + "pages": [ + { + "type": "modonomicon:entity", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "default_rotation": -45.0, + "entity_id": "occultism:wild_horde_drowned", + "name": "", + "offset": 0.0, + "rotate": true, + "scale": 1.0, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.horde_drowned.entity.text" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/summon_wild_drowned", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.horde_drowned.description.text", + "title": "", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "occultism:possession_rituals/overview", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": -1, + "x": -3, + "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_husk.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_husk.json new file mode 100644 index 000000000..de8094031 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_husk.json @@ -0,0 +1,64 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "occultism:possession_rituals", + "condition": { + "type": "modonomicon:true" + }, + "description": "", + "hide_while_locked": false, + "icon": { + "item": "minecraft:dune_armor_trim_smithing_template" + }, + "name": "book.occultism.dictionary_of_spirits.possession_rituals.horde_husk.name", + "pages": [ + { + "type": "modonomicon:entity", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "default_rotation": -45.0, + "entity_id": "occultism:wild_horde_husk", + "name": "", + "offset": 0.0, + "rotate": true, + "scale": 1.0, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.horde_husk.entity.text" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/summon_wild_husk", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.horde_husk.description.text", + "title": "", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "occultism:possession_rituals/overview", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": -1, + "x": -4, + "y": 1 +} \ No newline at end of file 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 new file mode 100644 index 000000000..17386d09a --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_illager.json @@ -0,0 +1,61 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "occultism:possession_rituals", + "description": "", + "hide_while_locked": false, + "icon": { + "item": "minecraft:totem_of_undying" + }, + "name": "book.occultism.dictionary_of_spirits.possession_rituals.horde_illager.name", + "pages": [ + { + "type": "modonomicon:entity", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "default_rotation": -45.0, + "entity_id": "occultism:possessed_evoker", + "name": "", + "offset": 0.0, + "rotate": true, + "scale": 0.7, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.horde_illager.entity.text" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/summon_horde_illager", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.horde_illager.description.text", + "title": "", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "occultism:possession_rituals/overview", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": -1, + "x": -6, + "y": 1 +} \ 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 new file mode 100644 index 000000000..89c38970b --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/horde_silverfish.json @@ -0,0 +1,64 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "occultism:possession_rituals", + "condition": { + "type": "modonomicon:true" + }, + "description": "", + "hide_while_locked": false, + "icon": { + "item": "minecraft:music_disc_relic" + }, + "name": "book.occultism.dictionary_of_spirits.possession_rituals.horde_silverfish.name", + "pages": [ + { + "type": "modonomicon:entity", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "default_rotation": -45.0, + "entity_id": "occultism:wild_horde_silverfish", + "name": "", + "offset": 0.0, + "rotate": true, + "scale": 1.0, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.horde_silverfish.entity.text" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/summon_wild_silverfish", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.horde_silverfish.description.text", + "title": "", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "occultism:possession_rituals/overview", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": -1, + "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/overview.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/overview.json index 1ac07cbae..a0eac60d2 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 @@ -29,5 +29,5 @@ "show_when_any_parent_unlocked": false, "sort_number": -1, "x": -8, - "y": 0 + "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_breeze.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_breeze.json new file mode 100644 index 000000000..da1e7b7af --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_breeze.json @@ -0,0 +1,61 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "occultism:possession_rituals", + "description": "", + "hide_while_locked": false, + "icon": { + "item": "minecraft:ominous_trial_key" + }, + "name": "book.occultism.dictionary_of_spirits.possession_rituals.possess_breeze.name", + "pages": [ + { + "type": "modonomicon:entity", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "default_rotation": -45.0, + "entity_id": "occultism:possessed_breeze", + "name": "", + "offset": 0.0, + "rotate": true, + "scale": 1.0, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_breeze.entity.text" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/possess_breeze", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_breeze.description.text", + "title": "", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "occultism:possession_rituals/possess_weak_breeze", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": -1, + "x": 3, + "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 1f20b4c0a..bf4454a67 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 @@ -59,6 +59,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 2, - "y": -1 + "x": 4, + "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_enderman.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_enderman.json index a1f17ba2a..ec0c01ebb 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 @@ -59,6 +59,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": -4, - "y": -1 + "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 87cd28ab0..5e3622210 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 @@ -60,5 +60,5 @@ "show_when_any_parent_unlocked": false, "sort_number": -1, "x": -6, - "y": -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_ghast.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_ghast.json index 8ba058dc1..df1b03fae 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 @@ -59,6 +59,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": -6, - "y": 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_hoglin.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_hoglin.json index 26b10bfae..581104aa1 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 @@ -59,6 +59,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 4, - "y": 1 + "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_phantom.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_phantom.json index 21de93975..cac0884b7 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 @@ -60,5 +60,5 @@ "show_when_any_parent_unlocked": false, "sort_number": -1, "x": 0, - "y": -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_shulker.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_shulker.json index 326d0ca3b..e9c007e6d 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 @@ -59,6 +59,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 2, - "y": 1 + "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_skeleton.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_skeleton.json index bd3a47d09..5167812f7 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 @@ -60,5 +60,5 @@ "show_when_any_parent_unlocked": false, "sort_number": -1, "x": -4, - "y": 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_strong_breeze.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_strong_breeze.json new file mode 100644 index 000000000..e0e7c3df4 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_strong_breeze.json @@ -0,0 +1,61 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "occultism:possession_rituals", + "description": "", + "hide_while_locked": false, + "icon": { + "item": "minecraft:heavy_core" + }, + "name": "book.occultism.dictionary_of_spirits.possession_rituals.possess_strong_breeze.name", + "pages": [ + { + "type": "modonomicon:entity", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "default_rotation": -45.0, + "entity_id": "occultism:possessed_strong_breeze", + "name": "", + "offset": 0.0, + "rotate": true, + "scale": 1.0, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_strong_breeze.entity.text" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/possess_strong_breeze", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_strong_breeze.description.text", + "title": "", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "occultism:possession_rituals/possess_breeze", + "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_warden.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_warden.json index 36b791a86..d13e305f9 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 @@ -59,6 +59,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 4, - "y": -1 + "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_weak_breeze.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_weak_breeze.json new file mode 100644 index 000000000..0d82aa01e --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_weak_breeze.json @@ -0,0 +1,61 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "occultism:possession_rituals", + "description": "", + "hide_while_locked": false, + "icon": { + "item": "minecraft:trial_key" + }, + "name": "book.occultism.dictionary_of_spirits.possession_rituals.possess_weak_breeze.name", + "pages": [ + { + "type": "modonomicon:entity", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "default_rotation": -45.0, + "entity_id": "occultism:possessed_weak_breeze", + "name": "", + "offset": 0.0, + "rotate": true, + "scale": 0.5, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_weak_breeze.entity.text" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "recipe_id_1": "occultism:ritual/possess_weak_breeze", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "condition": { + "type": "modonomicon:none" + }, + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_weak_breeze.description.text", + "title": "", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "occultism:possession_rituals/overview", + "line_enabled": true, + "line_reversed": false + } + ], + "show_when_any_parent_unlocked": false, + "sort_number": -1, + "x": 3, + "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 32934daad..7ddad9192 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 @@ -59,6 +59,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": 0, - "y": 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 420a36d0e..e1f9727e2 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 @@ -25,5 +25,5 @@ "show_when_any_parent_unlocked": false, "sort_number": -1, "x": -10, - "y": 0 + "y": -1 } \ 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/summoning_rituals/afrit_essence.json index 0065b7d9c..91d23e40f 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/summoning_rituals/afrit_essence.json @@ -45,6 +45,6 @@ ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": -2, - "y": -1 + "x": -5, + "y": -4 } \ No newline at end of file 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/summoning_rituals/wither_skull.json index 477598638..ceb94d180 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/summoning_rituals/wither_skull.json @@ -38,13 +38,13 @@ "parents": [ { "draw_arrow": true, - "entry": "occultism:possession_rituals/overview", + "entry": "occultism:possession_rituals/possess_skeleton", "line_enabled": true, "line_reversed": false } ], "show_when_any_parent_unlocked": false, "sort_number": -1, - "x": -2, - "y": 1 + "x": -4, + "y": -5 } \ No newline at end of file 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 new file mode 100644 index 000000000..c949487a6 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/craft_wild_trim.json @@ -0,0 +1,59 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "minecraft:diamond_block" + }, + "duration": 240, + "entity_to_sacrifice": { + "display_name": "ritual.occultism.sacrifice.ocelot", + "tag": "occultism:ocelot" + }, + "ingredients": [ + { + "item": "minecraft:mossy_cobblestone" + }, + { + "item": "minecraft:jungle_sapling" + }, + { + "item": "minecraft:bamboo" + }, + { + "item": "minecraft:glistering_melon_slice" + }, + { + "item": "minecraft:mossy_cobblestone" + }, + { + "item": "minecraft:jungle_sapling" + }, + { + "item": "minecraft:bamboo" + }, + { + "item": "minecraft:glistering_melon_slice" + }, + { + "item": "minecraft:mossy_cobblestone" + }, + { + "item": "minecraft:jungle_sapling" + }, + { + "item": "minecraft:bamboo" + }, + { + "item": "minecraft:glistering_melon_slice" + } + ], + "pentacle_id": "occultism:craft_marid", + "result": { + "count": 1, + "id": "minecraft:wild_armor_trim_smithing_template" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/craft_wild_trim" + }, + "ritual_type": "occultism:craft" +} \ 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/possess_breeze.json new file mode 100644 index 000000000..7c5936ad6 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/possess_breeze.json @@ -0,0 +1,47 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "minecraft:trial_key" + }, + "entity_to_sacrifice": { + "display_name": "ritual.occultism.sacrifice.wolfs", + "tag": "occultism:wolfs" + }, + "entity_to_summon": "occultism:possessed_breeze", + "ingredients": [ + { + "item": "minecraft:lightning_rod" + }, + { + "item": "minecraft:copper_door" + }, + { + "item": "minecraft:copper_trapdoor" + }, + { + "item": "minecraft:copper_bulb" + }, + { + "item": "minecraft:polished_tuff" + }, + { + "item": "minecraft:tuff_bricks" + } + ], + "pentacle_id": "occultism:summon_wild_greater_spirit", + "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.possess_breeze\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.possess_breeze.tooltip\"}" + ] + }, + "count": 1, + "id": "minecraft:ominous_trial_key" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/possess_breeze" + }, + "ritual_type": "occultism:summon_wild" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/possess_strong_breeze.json b/src/generated/resources/data/occultism/recipe/ritual/possess_strong_breeze.json new file mode 100644 index 000000000..4f1b2087c --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/possess_strong_breeze.json @@ -0,0 +1,62 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "minecraft:ominous_trial_key" + }, + "entity_to_sacrifice": { + "display_name": "ritual.occultism.sacrifice.iron_golem", + "tag": "c:golems/iron" + }, + "entity_to_summon": "occultism:possessed_strong_breeze", + "ingredients": [ + { + "item": "minecraft:chiseled_tuff" + }, + { + "item": "minecraft:chiseled_tuff" + }, + { + "item": "minecraft:chiseled_tuff" + }, + { + "item": "minecraft:chiseled_tuff" + }, + { + "item": "minecraft:chiseled_tuff_bricks" + }, + { + "item": "minecraft:chiseled_tuff_bricks" + }, + { + "item": "minecraft:chiseled_tuff_bricks" + }, + { + "item": "minecraft:chiseled_tuff_bricks" + }, + { + "item": "minecraft:breeze_rod" + }, + { + "item": "minecraft:breeze_rod" + }, + { + "item": "minecraft:ominous_bottle" + } + ], + "pentacle_id": "occultism:summon_wild_greater_spirit", + "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.possess_strong_breeze\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.possess_strong_breeze.tooltip\"}" + ] + }, + "count": 1, + "id": "minecraft:heavy_core" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/possess_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/possess_weak_breeze.json new file mode 100644 index 000000000..f50a3eaf4 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/possess_weak_breeze.json @@ -0,0 +1,53 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "minecraft:honeycomb" + }, + "entity_to_sacrifice": { + "display_name": "ritual.occultism.sacrifice.snow_golem", + "tag": "c:golems/snow" + }, + "entity_to_summon": "occultism:possessed_weak_breeze", + "ingredients": [ + { + "item": "minecraft:oxidized_copper" + }, + { + "item": "minecraft:weathered_chiseled_copper" + }, + { + "item": "minecraft:exposed_copper_grate" + }, + { + "item": "minecraft:cut_copper" + }, + { + "item": "minecraft:tuff" + }, + { + "item": "minecraft:tuff" + }, + { + "item": "minecraft:tuff" + }, + { + "item": "minecraft:tuff" + } + ], + "pentacle_id": "occultism:summon_wild_greater_spirit", + "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.possess_weak_breeze\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.possess_weak_breeze.tooltip\"}" + ] + }, + "count": 1, + "id": "minecraft:trial_key" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/possess_weak_breeze" + }, + "ritual_type": "occultism:summon_wild" +} \ 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/summon_allay.json new file mode 100644 index 000000000..d9038ac06 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_allay.json @@ -0,0 +1,41 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "minecraft:sugar" + }, + "entity_to_sacrifice": { + "display_name": "ritual.occultism.sacrifice.vex", + "tag": "occultism:vex" + }, + "entity_to_summon": "minecraft:allay", + "ingredients": [ + { + "tag": "c:dusts/redstone" + }, + { + "tag": "c:dusts/glowstone" + }, + { + "tag": "c:dusts/silver" + }, + { + "tag": "c:dusts/gold" + } + ], + "pentacle_id": "occultism:summon_foliot", + "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_allay\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.summon_allay.tooltip\"}" + ] + }, + "count": 1, + "id": "minecraft:allay_spawn_egg" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/summon_allay" + }, + "ritual_type": "occultism:summon" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_horde_illager.json b/src/generated/resources/data/occultism/recipe/ritual/summon_horde_illager.json new file mode 100644 index 000000000..1f93cbb5d --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_horde_illager.json @@ -0,0 +1,47 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "minecraft:golden_apple" + }, + "entity_to_sacrifice": { + "display_name": "ritual.occultism.sacrifice.humans", + "tag": "occultism:humans" + }, + "entity_to_summon": "occultism:possessed_evoker", + "ingredients": [ + { + "item": "minecraft:ominous_bottle" + }, + { + "item": "minecraft:dark_oak_log" + }, + { + "item": "minecraft:dark_oak_log" + }, + { + "item": "minecraft:dark_oak_log" + }, + { + "item": "minecraft:end_crystal" + }, + { + "item": "minecraft:emerald_block" + } + ], + "pentacle_id": "occultism:summon_wild_greater_spirit", + "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_horde_illager\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.summon_horde_illager.tooltip\"}" + ] + }, + "count": 1, + "id": "minecraft:totem_of_undying" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/summon_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_creeper.json b/src/generated/resources/data/occultism/recipe/ritual/summon_wild_creeper.json new file mode 100644 index 000000000..e6fc2c958 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_wild_creeper.json @@ -0,0 +1,66 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "minecraft:tnt" + }, + "entity_to_sacrifice": { + "display_name": "ritual.occultism.sacrifice.pigs", + "tag": "c:pigs" + }, + "entity_to_summon": "occultism:wild_horde_creeper", + "ingredients": [ + { + "item": "minecraft:tnt" + }, + { + "item": "minecraft:oak_leaves" + }, + { + "item": "minecraft:moss_block" + }, + { + "item": "minecraft:tnt" + }, + { + "item": "minecraft:birch_leaves" + }, + { + "item": "minecraft:moss_block" + }, + { + "item": "minecraft:tnt" + }, + { + "item": "minecraft:spruce_leaves" + }, + { + "item": "minecraft:moss_block" + }, + { + "item": "minecraft:tnt" + }, + { + "item": "minecraft:jungle_leaves" + }, + { + "item": "minecraft:moss_block" + } + ], + "pentacle_id": "occultism:summon_wild_greater_spirit", + "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_creeper\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_creeper.tooltip\"}" + ] + }, + "count": 1, + "id": "minecraft:music_disc_cat" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/summon_wild_creeper" + }, + "ritual_type": "occultism:summon_wild", + "summon_number": 5 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_wild_drowned.json b/src/generated/resources/data/occultism/recipe/ritual/summon_wild_drowned.json new file mode 100644 index 000000000..cad8443a0 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_wild_drowned.json @@ -0,0 +1,48 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "minecraft:heart_of_the_sea" + }, + "entity_to_sacrifice": { + "display_name": "ritual.occultism.sacrifice.dolphin", + "tag": "occultism:dolphin" + }, + "entity_to_summon": "occultism:wild_horde_drowned", + "ingredients": [ + { + "item": "minecraft:dead_brain_coral" + }, + { + "item": "minecraft:dead_bubble_coral" + }, + { + "item": "minecraft:dead_fire_coral" + }, + { + "item": "minecraft:dead_horn_coral" + }, + { + "item": "minecraft:dead_tube_coral" + }, + { + "item": "minecraft:dried_kelp_block" + } + ], + "pentacle_id": "occultism:summon_wild_greater_spirit", + "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_drowned\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_drowned.tooltip\"}" + ] + }, + "count": 1, + "id": "minecraft:sniffer_egg" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/summon_wild_drowned" + }, + "ritual_type": "occultism:summon_wild", + "summon_number": 5 +} \ 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/summon_wild_hunt.json index 66a340e5b..b764cca4d 100644 --- a/src/generated/resources/data/occultism/recipe/ritual/summon_wild_hunt.json +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_wild_hunt.json @@ -1,7 +1,7 @@ { "type": "occultism:ritual", "activation_item": { - "item": "occultism:book_of_binding_bound_afrit" + "item": "minecraft:skeleton_skull" }, "entity_to_sacrifice": { "display_name": "ritual.occultism.sacrifice.humans", @@ -43,5 +43,5 @@ "count": 1, "id": "occultism:ritual_dummy/summon_wild_hunt" }, - "ritual_type": "occultism:summon" + "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/summon_wild_husk.json new file mode 100644 index 000000000..12423dfa0 --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_wild_husk.json @@ -0,0 +1,66 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "minecraft:raw_gold" + }, + "entity_to_sacrifice": { + "display_name": "ritual.occultism.sacrifice.camel", + "tag": "occultism:camel" + }, + "entity_to_summon": "occultism:wild_horde_husk", + "ingredients": [ + { + "item": "minecraft:sand" + }, + { + "item": "minecraft:sandstone" + }, + { + "item": "minecraft:chiseled_sandstone" + }, + { + "item": "minecraft:cut_sandstone" + }, + { + "item": "minecraft:smooth_sandstone" + }, + { + "item": "minecraft:dead_bush" + }, + { + "item": "minecraft:sand" + }, + { + "item": "minecraft:sandstone" + }, + { + "item": "minecraft:chiseled_sandstone" + }, + { + "item": "minecraft:cut_sandstone" + }, + { + "item": "minecraft:smooth_sandstone" + }, + { + "item": "minecraft:dead_bush" + } + ], + "pentacle_id": "occultism:summon_wild_greater_spirit", + "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_husk\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_husk.tooltip\"}" + ] + }, + "count": 1, + "id": "minecraft:dune_armor_trim_smithing_template" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/summon_wild_husk" + }, + "ritual_type": "occultism:summon_wild", + "summon_number": 5 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/recipe/ritual/summon_wild_silverfish.json b/src/generated/resources/data/occultism/recipe/ritual/summon_wild_silverfish.json new file mode 100644 index 000000000..13c4951bc --- /dev/null +++ b/src/generated/resources/data/occultism/recipe/ritual/summon_wild_silverfish.json @@ -0,0 +1,50 @@ +{ + "type": "occultism:ritual", + "activation_item": { + "item": "minecraft:brush" + }, + "entity_to_summon": "occultism:wild_horde_silverfish", + "ingredients": [ + { + "item": "minecraft:sand" + }, + { + "item": "minecraft:gravel" + }, + { + "item": "minecraft:bricks" + }, + { + "item": "minecraft:mud_bricks" + }, + { + "item": "minecraft:stone_bricks" + }, + { + "item": "minecraft:white_terracotta" + }, + { + "item": "minecraft:dirt" + } + ], + "item_to_use": { + "item": "minecraft:egg" + }, + "pentacle_id": "occultism:summon_wild_greater_spirit", + "result": { + "components": { + "minecraft:item_name": "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_silverfish\"}", + "minecraft:lore": [ + "{\"translate\":\"item.occultism.ritual_dummy.summon_wild_silverfish.tooltip\"}" + ] + }, + "count": 1, + "id": "minecraft:music_disc_relic" + }, + "ritual_dummy": { + "count": 1, + "id": "occultism:ritual_dummy/summon_wild_silverfish" + }, + "ritual_type": "occultism:summon_wild", + "summon_number": 7 +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/tags/entity_type/camel.json b/src/generated/resources/data/occultism/tags/entity_type/camel.json new file mode 100644 index 000000000..d280c32b8 --- /dev/null +++ b/src/generated/resources/data/occultism/tags/entity_type/camel.json @@ -0,0 +1,5 @@ +{ + "values": [ + "minecraft:camel" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/tags/entity_type/dolphin.json b/src/generated/resources/data/occultism/tags/entity_type/dolphin.json new file mode 100644 index 000000000..53c02cb6b --- /dev/null +++ b/src/generated/resources/data/occultism/tags/entity_type/dolphin.json @@ -0,0 +1,5 @@ +{ + "values": [ + "minecraft:dolphin" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/tags/entity_type/ocelot.json b/src/generated/resources/data/occultism/tags/entity_type/ocelot.json new file mode 100644 index 000000000..3a9736d67 --- /dev/null +++ b/src/generated/resources/data/occultism/tags/entity_type/ocelot.json @@ -0,0 +1,5 @@ +{ + "values": [ + "minecraft:ocelot" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/tags/entity_type/vex.json b/src/generated/resources/data/occultism/tags/entity_type/vex.json new file mode 100644 index 000000000..4bd03e724 --- /dev/null +++ b/src/generated/resources/data/occultism/tags/entity_type/vex.json @@ -0,0 +1,5 @@ +{ + "values": [ + "minecraft:vex" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/tags/entity_type/wolfs.json b/src/generated/resources/data/occultism/tags/entity_type/wolfs.json new file mode 100644 index 000000000..19648749f --- /dev/null +++ b/src/generated/resources/data/occultism/tags/entity_type/wolfs.json @@ -0,0 +1,5 @@ +{ + "values": [ + "minecraft:wolf" + ] +} \ 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 b7f4b80c9..83a7d94df 100644 --- a/src/main/java/com/klikli_dev/occultism/Occultism.java +++ b/src/main/java/com/klikli_dev/occultism/Occultism.java @@ -29,6 +29,7 @@ import com.klikli_dev.occultism.common.DebugHelper; import com.klikli_dev.occultism.common.entity.familiar.*; import com.klikli_dev.occultism.common.entity.possessed.*; +import com.klikli_dev.occultism.common.entity.possessed.horde.*; import com.klikli_dev.occultism.common.entity.spirit.*; import com.klikli_dev.occultism.common.entity.spirit.demonicpartner.husband.DemonicHusband; import com.klikli_dev.occultism.common.entity.spirit.demonicpartner.wife.DemonicWife; @@ -45,6 +46,9 @@ import com.klikli_dev.theurgy.registry.ParticleRegistry; import com.klikli_dev.theurgy.registry.TheurgyRegistries; import com.mojang.logging.LogUtils; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.monster.Slime; import net.minecraft.world.level.block.entity.BlockEntityType; import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.EventPriority; @@ -183,6 +187,25 @@ private void onEntityAttributeCreation(final EntityAttributeCreationEvent event) event.put(OccultismEntities.BEAVER_FAMILIAR_TYPE.get(), BeaverFamiliarEntity.createAttributes().build()); event.put(OccultismEntities.SHUB_NIGGURATH_SPAWN_TYPE.get(), ShubNiggurathSpawnEntity.createAttributes().build()); + event.put(OccultismEntities.WILD_HORDE_HUSK_TYPE.get(), WildHordeHuskEntity.createAttributes().build()); + event.put(OccultismEntities.WILD_HORDE_DROWNED_TYPE.get(), WildHordeDrownedEntity.createAttributes().build()); + event.put(OccultismEntities.WILD_HORDE_CREEPER_TYPE.get(), WildHordeCreeperEntity.createAttributes().build()); + event.put(OccultismEntities.WILD_HORDE_SILVERFISH_TYPE.get(), WildHordeSilverfishEntity.createAttributes().build()); + event.put(OccultismEntities.POSSESSED_WEAK_BREEZE_TYPE.get(), PossessedWeakBreezeEntity.createAttributes().build()); + event.put(OccultismEntities.POSSESSED_BREEZE_TYPE.get(), PossessedBreezeEntity.createAttributes().build()); + event.put(OccultismEntities.POSSESSED_STRONG_BREEZE_TYPE.get(), PossessedStrongBreezeEntity.createAttributes().build()); + event.put(OccultismEntities.POSSESSED_EVOKER_TYPE.get(), PossessedEvokerEntity.createAttributes().build()); + event.put(OccultismEntities.WILD_ZOMBIE_TYPE.get(), WildZombieEntity.createAttributes().build()); + event.put(OccultismEntities.WILD_SKELETON_TYPE.get(), WildSkeletonEntity.createAttributes().build()); + event.put(OccultismEntities.WILD_SILVERFISH.get(), WildSilverfishEntity.createAttributes().build()); + event.put(OccultismEntities.WILD_SPIDER_TYPE.get(), WildSpiderEntity.createAttributes().build()); + event.put(OccultismEntities.WILD_BOGGED_TYPE.get(), WildBoggedEntity.createAttributes().build()); + //event.put(OccultismEntities.WILD_SLIME_TYPE.get(), WildSlimeEntity.createAttributes().build()); //Wild Slime Attributes error, changed to vanilla slimes + event.put(OccultismEntities.WILD_HUSK_TYPE.get(), WildHuskEntity.createAttributes().build()); + event.put(OccultismEntities.WILD_STRAY_TYPE.get(), WildStrayEntity.createAttributes().build()); + event.put(OccultismEntities.WILD_CAVE_SPIDER_TYPE.get(), WildCaveSpiderEntity.createAttributes().build()); + + event.put(OccultismEntities.DEMONIC_WIFE.get(), DemonicWife.createAttributes().build()); event.put(OccultismEntities.DEMONIC_HUSBAND.get(), DemonicHusband.createAttributes().build()); } diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedHoglinEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedHoglinEntity.java index d171e2ea3..7b999c922 100644 --- a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedHoglinEntity.java +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedHoglinEntity.java @@ -41,5 +41,4 @@ public static AttributeSupplier.Builder createAttributes() { .add(Attributes.ATTACK_DAMAGE, 12.0) .add(Attributes.MAX_HEALTH, 66.0); } - } \ No newline at end of file diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/PossessedBreezeEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/PossessedBreezeEntity.java new file mode 100644 index 000000000..a0b6f4a5d --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/PossessedBreezeEntity.java @@ -0,0 +1,106 @@ +/* + * 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.horde; + +import com.klikli_dev.occultism.registry.OccultismEntities; +import com.klikli_dev.occultism.util.TextUtil; +import net.minecraft.network.chat.Component; +import net.minecraft.world.DifficultyInstance; +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.monster.Slime; +import net.minecraft.world.entity.monster.breeze.Breeze; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import net.neoforged.neoforge.event.EventHooks; + +import javax.annotation.Nullable; + +public class PossessedBreezeEntity extends Breeze { + + public PossessedBreezeEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Breeze.createAttributes() + .add(Attributes.MAX_HEALTH, 150.0); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor level, DifficultyInstance difficultyIn, MobSpawnType reason, + @Nullable SpawnGroupData spawnDataIn) { + + for (int i = 0; i < 5; i++) { + WildSpiderEntity entity = OccultismEntities.WILD_SPIDER.get().create(this.level()); + 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); + entity.setCustomName(Component.literal(TextUtil.generateName())); + level.addFreshEntity(entity); + } + + for (int i = 0; i < 5; i++) { + WildBoggedEntity entity = OccultismEntities.WILD_BOGGED.get().create(this.level()); + 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); + entity.setCustomName(Component.literal(TextUtil.generateName())); + level.addFreshEntity(entity); + } + + for (int i = 0; i < 5; i++) { + //WildSlimeEntity entity = OccultismEntities.WILD_SLIME.get().create(this.level()); + //Wild Slime Attributes error, changed to vanilla slimes but now gets unintended slimeball + Slime entity = EntityType.SLIME.create(this.level()); + 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); + entity.setCustomName(Component.literal(TextUtil.generateName())); + entity.setSize(7,true); //Haha bigger slimes + level.addFreshEntity(entity); + } + + return super.finalizeSpawn(level, difficultyIn, reason, spawnDataIn); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + //endregion Static Methods +} diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/PossessedEvokerEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/PossessedEvokerEntity.java new file mode 100644 index 000000000..dcb74f686 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/PossessedEvokerEntity.java @@ -0,0 +1,115 @@ +/* + * 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.horde; + +import com.klikli_dev.occultism.registry.OccultismEntities; +import com.klikli_dev.occultism.util.TextUtil; +import net.minecraft.network.chat.Component; +import net.minecraft.world.DifficultyInstance; +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.monster.*; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import net.neoforged.neoforge.event.EventHooks; + +import javax.annotation.Nullable; + +public class PossessedEvokerEntity extends Evoker { + + public PossessedEvokerEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Evoker.createAttributes() + .add(Attributes.MAX_HEALTH, 42.0) + .add(Attributes.ARMOR,7); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor level, DifficultyInstance difficultyIn, MobSpawnType reason, + @Nullable SpawnGroupData spawnDataIn) { + + for (int i = 0; i < 2; i++) { + Vindicator entity = EntityType.VINDICATOR.create(this.level()); + 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); + entity.setCustomName(Component.literal(TextUtil.generateName())); + level.addFreshEntity(entity); + } + + for (int i = 0; i < 5; i++) { + Pillager entity = EntityType.PILLAGER.create(this.level()); + 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); + entity.setCustomName(Component.literal(TextUtil.generateName())); + level.addFreshEntity(entity); + } + + for (int i = 0; i < 1; i++) { + Illusioner entity = EntityType.ILLUSIONER.create(this.level()); + 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); + entity.setCustomName(Component.literal(TextUtil.generateName())); + level.addFreshEntity(entity); + } + + for (int i = 0; i < 1; i++) { + Ravager entity = EntityType.RAVAGER.create(this.level()); + 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); + entity.setCustomName(Component.literal(TextUtil.generateName())); + level.addFreshEntity(entity); + } + + return super.finalizeSpawn(level, difficultyIn, reason, spawnDataIn); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + //endregion Static Methods +} diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/PossessedStrongBreezeEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/PossessedStrongBreezeEntity.java new file mode 100644 index 000000000..f3c9b1a7d --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/PossessedStrongBreezeEntity.java @@ -0,0 +1,102 @@ +/* + * 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.horde; + +import com.klikli_dev.occultism.registry.OccultismEntities; +import com.klikli_dev.occultism.util.TextUtil; +import net.minecraft.network.chat.Component; +import net.minecraft.world.DifficultyInstance; +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.monster.breeze.Breeze; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import net.neoforged.neoforge.event.EventHooks; + +import javax.annotation.Nullable; + +public class PossessedStrongBreezeEntity extends Breeze { + + public PossessedStrongBreezeEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Breeze.createAttributes() + .add(Attributes.MAX_HEALTH, 300.0); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor level, DifficultyInstance difficultyIn, MobSpawnType reason, + @Nullable SpawnGroupData spawnDataIn) { + + for (int i = 0; i < 3; i++) { + WildHuskEntity entity = OccultismEntities.WILD_HUSK.get().create(this.level()); + 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); + entity.setCustomName(Component.literal(TextUtil.generateName())); + level.addFreshEntity(entity); + } + + for (int i = 0; i < 7; i++) { + WildStrayEntity entity = OccultismEntities.WILD_STRAY.get().create(this.level()); + 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); + entity.setCustomName(Component.literal(TextUtil.generateName())); + level.addFreshEntity(entity); + } + + for (int i = 0; i < 7; i++) { + WildCaveSpiderEntity entity = OccultismEntities.WILD_CAVE_SPIDER.get().create(this.level()); + 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); + entity.setCustomName(Component.literal(TextUtil.generateName())); + level.addFreshEntity(entity); + } + + return super.finalizeSpawn(level, difficultyIn, reason, spawnDataIn); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + //endregion Static Methods +} diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/PossessedWeakBreezeEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/PossessedWeakBreezeEntity.java new file mode 100644 index 000000000..b00a4e26b --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/PossessedWeakBreezeEntity.java @@ -0,0 +1,101 @@ +/* + * 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.horde; + +import com.klikli_dev.occultism.common.entity.spirit.WildHuntSkeletonEntity; +import com.klikli_dev.occultism.registry.OccultismEntities; +import com.klikli_dev.occultism.util.TextUtil; +import net.minecraft.network.chat.Component; +import net.minecraft.world.DifficultyInstance; +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.monster.breeze.Breeze; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import net.neoforged.neoforge.event.EventHooks; + +import javax.annotation.Nullable; + +public class PossessedWeakBreezeEntity extends Breeze { + + public PossessedWeakBreezeEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Breeze.createAttributes(); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor level, DifficultyInstance difficultyIn, MobSpawnType reason, + @Nullable SpawnGroupData spawnDataIn) { + + for (int i = 0; i < 3; i++) { + WildZombieEntity entity = OccultismEntities.WILD_ZOMBIE.get().create(this.level()); + 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); + entity.setCustomName(Component.literal(TextUtil.generateName())); + level.addFreshEntity(entity); + } + + for (int i = 0; i < 3; i++) { + WildSkeletonEntity entity = OccultismEntities.WILD_SKELETON.get().create(this.level()); + 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); + entity.setCustomName(Component.literal(TextUtil.generateName())); + level.addFreshEntity(entity); + } + + for (int i = 0; i < 3; i++) { + WildSilverfishEntity entity = OccultismEntities.WILD_SILVERFISH.get().create(this.level()); + 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); + entity.setCustomName(Component.literal(TextUtil.generateName())); + level.addFreshEntity(entity); + } + + return super.finalizeSpawn(level, difficultyIn, reason, spawnDataIn); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + //endregion Static Methods +} diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildBoggedEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildBoggedEntity.java new file mode 100644 index 000000000..a9389623b --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildBoggedEntity.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.horde; + +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.Bogged; +import net.minecraft.world.entity.monster.Zombie; +import net.minecraft.world.level.Level; + +public class WildBoggedEntity extends Bogged { + + public WildBoggedEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Bogged.createAttributes() + .add(Attributes.MAX_HEALTH, 45.0) + .add(Attributes.ARMOR,10) + .add(Attributes.KNOCKBACK_RESISTANCE,0.5); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + //endregion Static Methods + @Override + protected boolean isSunBurnTick() { + return false; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildCaveSpiderEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildCaveSpiderEntity.java new file mode 100644 index 000000000..a37a31804 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildCaveSpiderEntity.java @@ -0,0 +1,51 @@ +/* + * 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.horde; + +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.CaveSpider; +import net.minecraft.world.level.Level; + +public class WildCaveSpiderEntity extends CaveSpider { + + public WildCaveSpiderEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return CaveSpider.createAttributes() + .add(Attributes.MAX_HEALTH, 60.0) + .add(Attributes.ARMOR,15) + .add(Attributes.KNOCKBACK_RESISTANCE,0.75); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + //endregion Static Methods +} diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildHordeCreeperEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildHordeCreeperEntity.java new file mode 100644 index 000000000..e69f343e3 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildHordeCreeperEntity.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.horde; + +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.Creeper; +import net.minecraft.world.level.Level; + +public class WildHordeCreeperEntity extends Creeper { + + public WildHordeCreeperEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Creeper.createAttributes() + .add(Attributes.ARMOR, 20.0) + .add(Attributes.MAX_HEALTH, 5.0) + .add(Attributes.KNOCKBACK_RESISTANCE, 1.0); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + //endregion Static Methods + + @Override + public boolean isPowered() { + return true; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildHordeDrownedEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildHordeDrownedEntity.java new file mode 100644 index 000000000..cd4033dde --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildHordeDrownedEntity.java @@ -0,0 +1,59 @@ +/* + * 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.horde; + +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.Drowned; +import net.minecraft.world.level.Level; + +public class WildHordeDrownedEntity extends Drowned { + + public WildHordeDrownedEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Drowned.createAttributes() + .add(Attributes.ATTACK_DAMAGE, 4.0) + .add(Attributes.ARMOR, 10.0) + .add(Attributes.MAX_HEALTH, 30.0) + .add(Attributes.ATTACK_SPEED, 6.0) + .add(Attributes.KNOCKBACK_RESISTANCE, 1.0) + .add(Attributes.MOVEMENT_SPEED, 0.8); + } + + @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/horde/WildHordeHuskEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildHordeHuskEntity.java new file mode 100644 index 000000000..07afcc5bb --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildHordeHuskEntity.java @@ -0,0 +1,58 @@ +/* + * 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.horde; + +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.Husk; +import net.minecraft.world.level.Level; + +public class WildHordeHuskEntity extends Husk { + + public WildHordeHuskEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Husk.createAttributes() + .add(Attributes.ATTACK_DAMAGE, 4.0) + .add(Attributes.ARMOR, 10.0) + .add(Attributes.MAX_HEALTH, 30.0) + .add(Attributes.ATTACK_SPEED, 6.0) + .add(Attributes.KNOCKBACK_RESISTANCE, 1.0); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + + @Override + protected boolean convertsInWater() { + return false; + } + //endregion Static Methods +} diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildHordeSilverfishEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildHordeSilverfishEntity.java new file mode 100644 index 000000000..0271062d9 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildHordeSilverfishEntity.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.horde; + +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.Silverfish; +import net.minecraft.world.level.Level; + +public class WildHordeSilverfishEntity extends Silverfish { + + public WildHordeSilverfishEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Silverfish.createAttributes() + .add(Attributes.ATTACK_DAMAGE, 9.0); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + //endregion Static Methods +} diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildHuskEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildHuskEntity.java new file mode 100644 index 000000000..1dd333e2e --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildHuskEntity.java @@ -0,0 +1,51 @@ +/* + * 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.horde; + +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.Husk; +import net.minecraft.world.level.Level; + +public class WildHuskEntity extends Husk { + + public WildHuskEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Husk.createAttributes() + .add(Attributes.MAX_HEALTH, 60.0) + .add(Attributes.ARMOR,15) + .add(Attributes.KNOCKBACK_RESISTANCE,0.75); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + //endregion Static Methods +} diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildSilverfishEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildSilverfishEntity.java new file mode 100644 index 000000000..b397e7df0 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildSilverfishEntity.java @@ -0,0 +1,51 @@ +/* + * 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.horde; + +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.Silverfish; +import net.minecraft.world.level.Level; + +public class WildSilverfishEntity extends Silverfish { + + public WildSilverfishEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Silverfish.createAttributes() + .add(Attributes.MAX_HEALTH, 30.0) + .add(Attributes.ARMOR,5) + .add(Attributes.KNOCKBACK_RESISTANCE,0.25); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + //endregion Static Methods +} diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildSkeletonEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildSkeletonEntity.java new file mode 100644 index 000000000..e8c8b9e4a --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildSkeletonEntity.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.entity.possessed.horde; + +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.level.Level; + +public class WildSkeletonEntity extends Skeleton { + + public WildSkeletonEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Skeleton.createAttributes() + .add(Attributes.MAX_HEALTH, 30.0) + .add(Attributes.ARMOR,5) + .add(Attributes.KNOCKBACK_RESISTANCE,0.25); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + //endregion Static Methods + @Override + protected boolean isSunBurnTick() { + return false; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildSlimeEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildSlimeEntity.java new file mode 100644 index 000000000..6603876d4 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildSlimeEntity.java @@ -0,0 +1,53 @@ +/* + * 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.horde; + +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.Slime; +import net.minecraft.world.level.Level; + +public class WildSlimeEntity extends Slime { + + public WildSlimeEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + + //Wild Slime Attributes error, changed to vanilla slimes + public static AttributeSupplier.Builder createAttributes() { + return Slime.createMobAttributes() + .add(Attributes.MAX_HEALTH, 45.0) + .add(Attributes.ARMOR,10) + .add(Attributes.KNOCKBACK_RESISTANCE,0.5); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + //endregion Static Methods +} \ No newline at end of file diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildSpiderEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildSpiderEntity.java new file mode 100644 index 000000000..1d91af4ef --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildSpiderEntity.java @@ -0,0 +1,51 @@ +/* + * 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.horde; + +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.Spider; +import net.minecraft.world.level.Level; + +public class WildSpiderEntity extends Spider { + + public WildSpiderEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Spider.createAttributes() + .add(Attributes.MAX_HEALTH, 45.0) + .add(Attributes.ARMOR,10) + .add(Attributes.KNOCKBACK_RESISTANCE,0.5); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + //endregion Static Methods +} diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildStrayEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildStrayEntity.java new file mode 100644 index 000000000..672b9481e --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildStrayEntity.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.entity.possessed.horde; + +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.Stray; +import net.minecraft.world.level.Level; + +public class WildStrayEntity extends Stray { + + public WildStrayEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Stray.createAttributes() + .add(Attributes.MAX_HEALTH, 60.0) + .add(Attributes.ARMOR,15) + .add(Attributes.KNOCKBACK_RESISTANCE,0.75); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + //endregion Static Methods + @Override + protected boolean isSunBurnTick() { + return false; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildZombieEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildZombieEntity.java new file mode 100644 index 000000000..bc5745709 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/horde/WildZombieEntity.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.entity.possessed.horde; + +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.level.Level; + +public class WildZombieEntity extends Zombie { + + public WildZombieEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Zombie.createAttributes() + .add(Attributes.MAX_HEALTH, 30.0) + .add(Attributes.ARMOR,5) + .add(Attributes.KNOCKBACK_RESISTANCE,0.25); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + //endregion Static Methods + @Override + protected boolean isSunBurnTick() { + return false; + } +} diff --git a/src/main/java/com/klikli_dev/occultism/common/ritual/SummonWildHuntRitual.java b/src/main/java/com/klikli_dev/occultism/common/ritual/SummonWildRitual.java similarity index 96% rename from src/main/java/com/klikli_dev/occultism/common/ritual/SummonWildHuntRitual.java rename to src/main/java/com/klikli_dev/occultism/common/ritual/SummonWildRitual.java index e3a73ed92..f153a1c2e 100644 --- a/src/main/java/com/klikli_dev/occultism/common/ritual/SummonWildHuntRitual.java +++ b/src/main/java/com/klikli_dev/occultism/common/ritual/SummonWildRitual.java @@ -40,9 +40,9 @@ import net.neoforged.neoforge.event.EventHooks; import org.jetbrains.annotations.Nullable; -public class SummonWildHuntRitual extends SummonRitual { +public class SummonWildRitual extends SummonRitual { - public SummonWildHuntRitual(RitualRecipe recipe) { + public SummonWildRitual(RitualRecipe recipe) { super(recipe, false); } @@ -67,7 +67,7 @@ public void finish(Level level, BlockPos goldenBowlPosition, GoldenSacrificialBo EntityType entityType = this.recipe.getEntityToSummon(); if (entityType != null) { - for (int i = 0; i < 3; i++) { + for (int i = 0; i < this.recipe.getSummonNumber(); i++) { Entity entity = this.createSummonedEntity(entityType, level, goldenBowlPosition, blockEntity, castingPlayer); if (entity instanceof LivingEntity living) { diff --git a/src/main/java/com/klikli_dev/occultism/crafting/recipe/RitualRecipe.java b/src/main/java/com/klikli_dev/occultism/crafting/recipe/RitualRecipe.java index e2b500a82..d8f2aeb35 100644 --- a/src/main/java/com/klikli_dev/occultism/crafting/recipe/RitualRecipe.java +++ b/src/main/java/com/klikli_dev/occultism/crafting/recipe/RitualRecipe.java @@ -64,12 +64,13 @@ public class RitualRecipe implements Recipe { Ingredient.LIST_CODEC.fieldOf("ingredients").forGetter((r) -> r.ingredients), Codec.INT.optionalFieldOf("duration", 30).forGetter((r) -> r.duration), Codec.INT.optionalFieldOf("spirit_max_age", -1).forGetter((r) -> r.spiritMaxAge), + Codec.INT.optionalFieldOf("summon_number", 1).forGetter((r) -> r.summonNumber), ResourceLocation.CODEC.optionalFieldOf("spirit_job_type").forGetter(r -> Optional.ofNullable(r.spiritJobType)), EntityToSacrifice.CODEC.optionalFieldOf("entity_to_sacrifice").forGetter(r -> Optional.ofNullable(r.entityToSacrifice)), Ingredient.CODEC.optionalFieldOf("item_to_use").forGetter(r -> Optional.ofNullable(r.itemToUse)), Codec.STRING.optionalFieldOf("command").forGetter(r -> Optional.ofNullable(r.command)) - ).apply(instance, (pentacleId, ritualType, ritualDummy, result, entityToSummon, entityNbt, activationItem, ingredients, duration, spiritMaxAge, spiritJobType, entityToSacrifice, itemToUse, command) -> new RitualRecipe(pentacleId, ritualType, ritualDummy, result, entityToSummon.orElse(null), entityNbt.orElse(null), activationItem, - NonNullList.copyOf(ingredients), duration, spiritMaxAge, spiritJobType.orElse(null), entityToSacrifice.orElse(null), itemToUse.orElse(Ingredient.EMPTY), command.orElse(null))) + ).apply(instance, (pentacleId, ritualType, ritualDummy, result, entityToSummon, entityNbt, activationItem, ingredients, duration, spiritMaxAge, summonNumber, spiritJobType, entityToSacrifice, itemToUse, command) -> new RitualRecipe(pentacleId, ritualType, ritualDummy, result, entityToSummon.orElse(null), entityNbt.orElse(null), activationItem, + NonNullList.copyOf(ingredients), duration, spiritMaxAge, summonNumber, spiritJobType.orElse(null), entityToSacrifice.orElse(null), itemToUse.orElse(Ingredient.EMPTY), command.orElse(null))) ); public static final StreamCodec STREAM_CODEC = OccultismExtraStreamCodecs.composite( @@ -93,6 +94,8 @@ public class RitualRecipe implements Recipe { (r) -> r.duration, ByteBufCodecs.INT, (r) -> r.spiritMaxAge, + ByteBufCodecs.INT, + (r) -> r.summonNumber, ByteBufCodecs.optional(ResourceLocation.STREAM_CODEC), (r) -> Optional.ofNullable(r.spiritJobType), ByteBufCodecs.optional(EntityToSacrifice.STREAM_CODEC), @@ -101,9 +104,9 @@ public class RitualRecipe implements Recipe { (r) -> Optional.ofNullable(r.itemToUse), ByteBufCodecs.optional(ByteBufCodecs.STRING_UTF8), (r) -> Optional.ofNullable(r.command), - (pentacleId, ritualType, ritualDummy, result, entityToSummon, entityNbt, activationItem, ingredients, duration, spiritMaxAge, spiritJobType, entityToSacrifice, itemToUse, command) -> + (pentacleId, ritualType, ritualDummy, result, entityToSummon, entityNbt, activationItem, ingredients, duration, spiritMaxAge, summonNumber, spiritJobType, entityToSacrifice, itemToUse, command) -> new RitualRecipe(pentacleId, ritualType, ritualDummy, result, entityToSummon.orElse(null), entityNbt.orElse(null), activationItem, - NonNullList.copyOf(ingredients), duration, spiritMaxAge, spiritJobType.orElse(null), entityToSacrifice.orElse(null), itemToUse.orElse(Ingredient.EMPTY), command.orElse(null)) + NonNullList.copyOf(ingredients), duration, spiritMaxAge, summonNumber, spiritJobType.orElse(null), entityToSacrifice.orElse(null), itemToUse.orElse(Ingredient.EMPTY), command.orElse(null)) ); public static Serializer SERIALIZER = new Serializer(); @@ -121,11 +124,12 @@ public class RitualRecipe implements Recipe { private final Ingredient itemToUse; private final int duration; private final int spiritMaxAge; + private final int summonNumber; private final float durationPerIngredient; private final String command; public RitualRecipe(ResourceLocation pentacleId, ResourceLocation ritualType, ItemStack ritualDummy, - ItemStack result, EntityType entityToSummon, CompoundTag entityNbt, Ingredient activationItem, NonNullList ingredients, int duration, int spiritMaxAge, ResourceLocation spiritJobType, EntityToSacrifice entityToSacrifice, Ingredient itemToUse, String command) { + ItemStack result, EntityType entityToSummon, CompoundTag entityNbt, Ingredient activationItem, NonNullList ingredients, int duration, int spiritMaxAge, int summonNumber, ResourceLocation spiritJobType, EntityToSacrifice entityToSacrifice, Ingredient itemToUse, String command) { this.result = result; this.ingredients = ingredients; this.entityToSummon = entityToSummon; @@ -137,6 +141,7 @@ public RitualRecipe(ResourceLocation pentacleId, ResourceLocation ritualType, It this.activationItem = activationItem; this.duration = duration; this.spiritMaxAge = spiritMaxAge; + this.summonNumber = summonNumber; this.spiritJobType = spiritJobType; this.durationPerIngredient = this.duration / (float) (this.getIngredients().size() + 1); this.entityToSacrifice = entityToSacrifice; @@ -271,6 +276,10 @@ public int getSpiritMaxAge() { return this.spiritMaxAge; } + public int getSummonNumber() { + return this.summonNumber; + } + public record EntityToSacrifice(TagKey> tag, String displayName) { public static Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( TagKey.codec(Registries.ENTITY_TYPE).fieldOf("tag").forGetter(EntityToSacrifice::tag), 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 a90e3b9a2..1a39c35ba 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/OccultismBookProvider.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/OccultismBookProvider.java @@ -3843,7 +3843,7 @@ private BookCategoryModel makeCraftingRitualsSubcategory() { "___________________________", "_______b_e_x_p_q___________", "___________________________", - "_______d_h_c_______________", + "_______d_h_c__w____________", "___________________________", "___9_0_____________________", "___________________________", @@ -3905,6 +3905,9 @@ private BookCategoryModel makeCraftingRitualsSubcategory() { var craftFamiliarRing = this.makeCraftFamiliarRingEntry(entryMap, 'c'); craftFamiliarRing.withParent(BookEntryParentModel.create(craftSoulGem.getId())); + var craftWildTrim = this.makeCraftWildTrimEntry(entryMap, 'w'); + craftWildTrim.withParent(BookEntryParentModel.create(overview.getId())); + //add true condition to all entries to enable them by default overview.withCondition(BookTrueConditionModel.create()); craftInfusedPickaxe.withCondition(BookTrueConditionModel.create()); @@ -3926,6 +3929,7 @@ private BookCategoryModel makeCraftingRitualsSubcategory() { craftSatchel.withCondition(BookTrueConditionModel.create()); craftSoulGem.withCondition(BookTrueConditionModel.create()); craftFamiliarRing.withCondition(BookTrueConditionModel.create()); + craftWildTrim.withCondition(BookTrueConditionModel.create()); return BookCategoryModel.create(this.modLoc(this.context().categoryId()), this.context().categoryName()) .withIcon(this.modLoc("textures/gui/book/infusion.png")) @@ -3951,7 +3955,8 @@ private BookCategoryModel makeCraftingRitualsSubcategory() { craftStabilizerTier4, craftStableWormhole, craftStorageControllerBase, - craftStorageRemote + craftStorageRemote, + craftWildTrim ); } @@ -4427,6 +4432,27 @@ private BookEntryModel makeCraftOtherworldGogglesEntry(CategoryEntryMap entryMap gogglesRecipe ); } + private BookEntryModel makeCraftWildTrimEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("craft_wild_trim"); + + this.context().page("spotlight"); + var spotlight = BookSpotlightPageModel.create() + .withItem(Ingredient.of(Items.WILD_ARMOR_TRIM_SMITHING_TEMPLATE)) + .withText(this.context().pageText()); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/craft_wild_trim")); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(Items.WILD_ARMOR_TRIM_SMITHING_TEMPLATE) + .withLocation(entryMap.get(icon)) + .withPages( + spotlight, + ritual + ); + } + //endregion //region Possession Rituals @@ -4435,15 +4461,17 @@ private BookCategoryModel makePossessionRitualsSubcategory() { var entryMap = ModonomiconAPI.get().getEntryMap(); entryMap.setMap( + "_________H____F_J_K_N______", + "________A__________________", + "_______D_G___I_E_L_M_______", "___________________________", - "___________________________", - "___________________________", - "_______D_E_A_I_L_M_________", "___r_o_____________________", - "_______F_G_H_J_K_N_________", "___________________________", + "_______V_W_Y____S__________", "___________________________", - "___________________________" + "__________X_Z___T__________", + "___________________________", + "________________U__________" ); var overview = this.makePossessionRitualsOverviewEntry(entryMap, 'o'); @@ -4471,10 +4499,26 @@ private BookCategoryModel makePossessionRitualsSubcategory() { possessWarden.withParent(BookEntryParentModel.create(overview.getId())); var possessHoglin = this.makePossessHoglinEntry(entryMap, 'N'); possessHoglin.withParent(BookEntryParentModel.create(overview.getId())); + var hordeHusk = this.makeHordeHuskEntry(entryMap, 'W'); + hordeHusk.withParent(BookEntryParentModel.create(overview.getId())); + var hordeDrowned = this.makeHordeDrownedEntry(entryMap, 'X'); + hordeDrowned.withParent(BookEntryParentModel.create(overview.getId())); + var hordeCreeper = this.makeHordeCreeperEntry(entryMap, 'Y'); + hordeCreeper.withParent(BookEntryParentModel.create(overview.getId())); + var hordeSilverfish = this.makeHordeSilverfishEntry(entryMap, 'Z'); + hordeSilverfish.withParent(BookEntryParentModel.create(overview.getId())); + var hordeIllager = this.makeHordeIllagerEntry(entryMap, 'V'); + hordeIllager.withParent(BookEntryParentModel.create(overview.getId())); + var possessWeakBreeze = this.makePossessWeakBreezeEntry(entryMap, 'S'); + possessWeakBreeze.withParent(BookEntryParentModel.create(overview.getId())); + var possessBreeze = this.makePossessBreezeEntry(entryMap, 'T'); + possessBreeze.withParent(BookEntryParentModel.create(possessWeakBreeze.getId())); + var possessStrongBreeze = this.makePossessStrongBreezeEntry(entryMap, 'U'); + possessStrongBreeze.withParent(BookEntryParentModel.create(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(overview.getId())); + possessWitherSkeleton.withParent(BookEntryParentModel.create(possessSkeleton.getId())); var afritEssence = this.makeAfritEssenceEntry(entryMap, 'A'); afritEssence.withParent(BookEntryParentModel.create(overview.getId())); this.context().category("possession_rituals"); @@ -4493,6 +4537,10 @@ private BookCategoryModel makePossessionRitualsSubcategory() { 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()); return BookCategoryModel.create(this.modLoc(this.context().categoryId()), this.context().categoryName()) .withIcon(this.modLoc("textures/gui/book/possession.png")) @@ -4511,7 +4559,15 @@ private BookCategoryModel makePossessionRitualsSubcategory() { possessWarden, possessHoglin, possessWitherSkeleton, - afritEssence + afritEssence, + hordeHusk, + hordeDrowned, + hordeCreeper, + hordeSilverfish, + hordeIllager, + possessWeakBreeze, + possessBreeze, + possessStrongBreeze ); } @@ -4843,7 +4899,7 @@ private BookEntryModel makePossessHoglinEntry(CategoryEntryMap entryMap, char ic this.lang().add(this.context().pageText(), """ **Drops**: Can drop: [](item://minecraft:netherite_upgrade_smithing_template), - return back [](item://minecraft:netherite_scrap) or nothing; + return back [](item://minecraft:netherite_scrap) or other things (See next page); """); this.context().page("ritual"); @@ -4855,7 +4911,7 @@ private BookEntryModel makePossessHoglinEntry(CategoryEntryMap entryMap, char ic .withText(this.context().pageText()); this.lang().add(this.context().pageText(), """ - In this ritual a [#](%1$s)Hoglin[#]() is spawned using the life energy of a [#](%1$s)Pig[#]() and immediately possessed by the summoned [#](%1$s)Afrit[#](). The [#](%1$s)Possessed Hoglin[#]() can drop a [](item://minecraft:netherite_upgrade_smithing_template), [](item://minecraft:snout_armor_trim_smithing_template), return back [](item://minecraft:netherite_scrap) or nothing when killed. You need to kill this mob before the transformation to a Zoglin if you don't want to perform the ritual in the nether. + In this ritual a [#](%1$s)Hoglin[#]() is spawned using the life energy of a [#](%1$s)Pig[#]() and immediately possessed by the summoned [#](%1$s)Afrit[#](). The [#](%1$s)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. """.formatted(COLOR_PURPLE)); return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) @@ -4868,6 +4924,286 @@ private BookEntryModel makePossessHoglinEntry(CategoryEntryMap entryMap, char ic ); } + private BookEntryModel makeHordeHuskEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("horde_husk"); + this.lang().add(this.context().entryName(), "Wild Horde Husk"); + + this.context().page("entity"); + var entity = BookEntityPageModel.create() + .withEntityId("occultism:wild_horde_husk") + .withScale(1f) + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + **Drops**: Items related to desert trials (See next page); + """); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/summon_wild_husk")); + + this.context().page("description"); + var description = BookTextPageModel.create() + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + Husks summoned by this way can drop: [](item://minecraft:dune_armor_trim_smithing_template), [](item://minecraft:archer_pottery_sherd), [](item://minecraft:miner_pottery_sherd), [](item://minecraft:prize_pottery_sherd), [](item://minecraft:skull_pottery_sherd), [](item://minecraft:arms_up_pottery_sherd), [](item://minecraft:brewer_pottery_sherd). + """.formatted(COLOR_PURPLE)); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(Items.DUNE_ARMOR_TRIM_SMITHING_TEMPLATE) + .withLocation(entryMap.get(icon)) + .withPages( + entity, + ritual, + description + ); + } + private BookEntryModel makeHordeDrownedEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("horde_drowned"); + this.lang().add(this.context().entryName(), "Wild Horde Drowned"); + + this.context().page("entity"); + var entity = BookEntityPageModel.create() + .withEntityId("occultism:wild_horde_drowned") + .withScale(1f) + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + **Drops**: Items related to ocean trials (See next page); + """); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/summon_wild_drowned")); + + this.context().page("description"); + var description = BookTextPageModel.create() + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + Drowned summoned by this way can drop: [](item://minecraft:sniffer_egg), [](item://minecraft:turtle_egg), [](item://minecraft:trident), [](item://minecraft:angler_pottery_sherd), [](item://minecraft:shelter_pottery_sherd), [](item://minecraft:snort_pottery_sherd), [](item://minecraft:blade_pottery_sherd), [](item://minecraft:explorer_pottery_sherd), [](item://minecraft:mourner_pottery_sherd), [](item://minecraft:plenty_pottery_sherd). + """.formatted(COLOR_PURPLE)); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(Items.SNIFFER_EGG) + .withLocation(entryMap.get(icon)) + .withPages( + entity, + ritual, + description + ); + } + private BookEntryModel makeHordeCreeperEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("horde_creeper"); + this.lang().add(this.context().entryName(), "Wild Horde Creeper"); + + this.context().page("entity"); + var entity = BookEntityPageModel.create() + .withEntityId("occultism:wild_horde_creeper") + .withScale(0.8f) + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + **Drops**: Discs that the normal creeper drops when killed by Skeleton (See next page); + """); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/summon_wild_creeper")); + + this.context().page("description"); + var description = BookTextPageModel.create() + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + 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). + """.formatted(COLOR_PURPLE)); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(Items.MUSIC_DISC_CAT) + .withLocation(entryMap.get(icon)) + .withPages( + entity, + ritual, + description + ); + } + private BookEntryModel makeHordeSilverfishEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("horde_silverfish"); + this.lang().add(this.context().entryName(), "Wild Horde Silverfish"); + + this.context().page("entity"); + var entity = BookEntityPageModel.create() + .withEntityId("occultism:wild_horde_silverfish") + .withScale(1f) + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + **Drops**: Items related to ruins trials (See next page); + """); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/summon_wild_silverfish")); + + this.context().page("description"); + var description = BookTextPageModel.create() + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + Silverfish summoned by this way can drop: [](item://minecraft:music_disc_relic), [](item://minecraft:host_armor_trim_smithing_template), [](item://minecraft:raiser_armor_trim_smithing_template), [](item://minecraft:shaper_armor_trim_smithing_template), [](item://minecraft:wayfinder_armor_trim_smithing_template), [](item://minecraft:burn_pottery_sherd), [](item://minecraft:danger_pottery_sherd), [](item://minecraft:friend_pottery_sherd), [](item://minecraft:heart_pottery_sherd), [](item://minecraft:heartbreak_pottery_sherd), [](item://minecraft:howl_pottery_sherd), [](item://minecraft:sheaf_pottery_sherd). + """.formatted(COLOR_PURPLE)); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(Items.MUSIC_DISC_RELIC) + .withLocation(entryMap.get(icon)) + .withPages( + entity, + ritual, + description + ); + } + private BookEntryModel makeHordeIllagerEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("horde_illager"); + this.lang().add(this.context().entryName(), "Mini Illager Invasion"); + + this.context().page("entity"); + var entity = BookEntityPageModel.create() + .withEntityId("occultism:possessed_evoker") + .withScale(0.7f) + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + **Drops**: [](item://minecraft:totem_of_undying) + """); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/summon_horde_illager")); + + this.context().page("description"); + var description = BookTextPageModel.create() + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + Summon a possessed Evoker and his henchmen to get [](item://minecraft:totem_of_undying), [](item://minecraft:vex_armor_trim_smithing_template) and [](item://minecraft:sentry_armor_trim_smithing_template). + """.formatted(COLOR_PURPLE)); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(Items.TOTEM_OF_UNDYING) + .withLocation(entryMap.get(icon)) + .withPages( + entity, + ritual, + description + ); + } + private BookEntryModel makePossessWeakBreezeEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("possess_weak_breeze"); + this.lang().add(this.context().entryName(), "The first key"); + + this.context().page("entity"); + var entity = BookEntityPageModel.create() + .withEntityId("occultism:possessed_weak_breeze") + .withScale(0.5f) + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + **Drops**: 1x [](item://minecraft:trial_key) and can drop other things (See next page); + """); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/possess_weak_breeze")); + + this.context().page("description"); + var description = BookTextPageModel.create() + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + [](item://minecraft:breeze_rod) cannot be obtained from Possessed Weak Breeze rods due to their fragile nature, but this version of Breeze hides some treasures and has a chance to drop: [](item://minecraft:guster_pottery_sherd), [](item://minecraft:scrape_pottery_sherd), [](item://minecraft:music_disc_creator_music_box) and [](item://minecraft:ominous_bottle). + """.formatted(COLOR_PURPLE)); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(Items.TRIAL_KEY) + .withLocation(entryMap.get(icon)) + .withPages( + entity, + ritual, + description + ); + } + private BookEntryModel makePossessBreezeEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("possess_breeze"); + this.lang().add(this.context().entryName(), "In the chamber"); + + this.context().page("entity"); + var entity = BookEntityPageModel.create() + .withEntityId("occultism:possessed_breeze") + .withScale(1.0f) + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + **Drops**: 1x [](item://minecraft:ominous_trial_key) and can drop other things (See next page); + """); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/possess_breeze")); + + this.context().page("description"); + var description = BookTextPageModel.create() + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + 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). + """.formatted(COLOR_PURPLE)); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(Items.OMINOUS_TRIAL_KEY) + .withLocation(entryMap.get(icon)) + .withPages( + entity, + ritual, + description + ); + } + private BookEntryModel makePossessStrongBreezeEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("possess_strong_breeze"); + this.lang().add(this.context().entryName(), "Glorious Vault"); + + this.context().page("entity"); + var entity = BookEntityPageModel.create() + .withEntityId("occultism:possessed_strong_breeze") + .withScale(1.0f) + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + **Drops**: 1x [](item://minecraft:heavy_core) and can drop other things (See next page); + """); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/possess_strong_breeze")); + + this.context().page("description"); + var description = BookTextPageModel.create() + .withText(this.context().pageText()); + this.lang().add(this.context().pageText(), + """ + 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). + """.formatted(COLOR_PURPLE)); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(Items.HEAVY_CORE) + .withLocation(entryMap.get(icon)) + .withPages( + entity, + ritual, + description + ); + } //endregion private BookCategoryModel makeStorageCategory() { 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 a6c897fb5..341351f0b 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 @@ -28,7 +28,7 @@ public String[] generateEntryMap() { "___________________________", "_____a_Q_S_U_W_Z___________", "___________________________", - "___r_o_____________________", + "___r_o___________H_________", "___________________________", "_______I_K_M_O_Y___________", "___________________________", @@ -80,6 +80,8 @@ protected void generateEntries() { familiarParrot.withParent(BookEntryParentModel.create(overview.getId())); 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()); @@ -100,6 +102,7 @@ protected void generateEntries() { familiarOtherworldBird.withCondition(BookTrueConditionModel.create()); familiarParrot.withCondition(BookTrueConditionModel.create()); familiarShubNiggurath.withCondition(BookTrueConditionModel.create()); + summonAllay.withCondition(BookTrueConditionModel.create()); var demonicPartner = new DemonicPartnerEntry(this).generate('Z'); demonicPartner.withParent(BookEntryParentModel.create(overview.getId())); @@ -653,6 +656,32 @@ private BookEntryModel makeFamiliarShubNiggurathEntry(CategoryEntryMap entryMap, ); } + private BookEntryModel makeSummonAllayEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("summon_allay"); + + this.context().page("entity"); + var entity = BookEntityPageModel.create() + .withEntityId("minecraft:allay") + .withText(this.context().pageText()); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.create() + .withRecipeId1(this.modLoc("ritual/summon_allay")); + + 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/allay.png")) + .withLocation(entryMap.get(icon)) + .withPages( + entity, + ritual, + description + ); + } + private BookEntryModel makeReturnToRitualsEntry(CategoryEntryMap entryMap, char icon) { this.context().entry("return_to_rituals"); 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 6a0754d27..bbe1071ce 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 @@ -264,6 +264,14 @@ private void addItems() { this.addItem(OccultismItems.SPAWN_EGG_PARROT_FAMILIAR, "Parrot Familiar Spawn Egg"); this.addItem(OccultismItems.SPAWN_EGG_DEMONIC_WIFE, "Demonic Wife Spawn Egg"); this.addItem(OccultismItems.SPAWN_EGG_DEMONIC_HUSBAND, "Demonic Husband Spawn Egg"); + this.addItem(OccultismItems.SPAWN_EGG_WILD_HORDE_HUSK, "Wild Horde Husk Spawn Egg"); + 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"); } private void addBlocks() { @@ -353,6 +361,23 @@ private void addEntities() { this.addEntityType(OccultismEntities.THROWN_SWORD, "Thrown Sword"); this.addEntityType(OccultismEntities.DEMONIC_WIFE, "Demonic Wife"); this.addEntityType(OccultismEntities.DEMONIC_HUSBAND, "Demonic Husband"); + this.addEntityType(OccultismEntities.WILD_HORDE_HUSK, "Wild Horde Husk"); + 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.WILD_ZOMBIE, "Wild Zombie"); + this.addEntityType(OccultismEntities.WILD_SKELETON, "Wild Skeleton"); + this.addEntityType(OccultismEntities.WILD_SILVERFISH, "Wild Silverfish"); + this.addEntityType(OccultismEntities.WILD_SPIDER, "Wild Spider"); + this.addEntityType(OccultismEntities.WILD_BOGGED, "Wild Bogged"); + this.addEntityType(OccultismEntities.WILD_SLIME, "Wild Slime"); + 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"); } private void addMiscTranslations() { @@ -420,11 +445,17 @@ private void addMiscTranslations() { this.add("ritual.occultism.sacrifice.sheep", "Sheep"); this.add("ritual.occultism.sacrifice.llamas", "Llama"); this.add("ritual.occultism.sacrifice.snow_golem", "Snow Golem"); + this.add("ritual.occultism.sacrifice.iron_golem", "Iron Golem"); this.add("ritual.occultism.sacrifice.spiders", "Spider"); this.add("ritual.occultism.sacrifice.flying_passive", "Allay, Bat, Bee or Parrot"); this.add("ritual.occultism.sacrifice.cubemob", "Slime or Magma Cube"); this.add("ritual.occultism.sacrifice.fish", "Any Fish"); this.add("ritual.occultism.sacrifice.axolotls", "Axolotl"); + this.add("ritual.occultism.sacrifice.camel", "Camel"); + 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.vex", "Vex"); //Network Message this.add("network.messages.occultism.request_order.order_received", "Order received!"); @@ -646,6 +677,10 @@ private void addRitualMessages() { this.add("ritual.occultism.craft_familiar_ring.started", "Started binding djinni into familiar ring."); 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.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."); this.add("ritual.occultism.possess_endermite.started", "Started summoning possessed endermite."); this.add("ritual.occultism.possess_endermite.finished", "Summoned possessed endermite successfully."); @@ -667,9 +702,9 @@ private void addRitualMessages() { this.add("ritual.occultism.possess_phantom.finished", "Summoned possessed phantom successfully."); this.add("ritual.occultism.possess_phantom.interrupted", "Summoning of possessed phantom interrupted."); this.add("ritual.occultism.possess_weak_shulker.conditions", "Not all requirements for this ritual are met."); - this.add("ritual.occultism.possess_weak_shulker.started", "Started summoning possessed weak_shulker."); - this.add("ritual.occultism.possess_weak_shulker.finished", "Summoned possessed weak_shulker successfully."); - this.add("ritual.occultism.possess_weak_shulker.interrupted", "Summoning of possessed weak_shulker interrupted."); + this.add("ritual.occultism.possess_weak_shulker.started", "Started summoning possessed weak shulker."); + this.add("ritual.occultism.possess_weak_shulker.finished", "Summoned possessed weak shulker successfully."); + this.add("ritual.occultism.possess_weak_shulker.interrupted", "Summoning of possessed weak shulker interrupted."); this.add("ritual.occultism.possess_shulker.conditions", "Not all requirements for this ritual are met."); this.add("ritual.occultism.possess_shulker.started", "Started summoning possessed shulker."); this.add("ritual.occultism.possess_shulker.finished", "Summoned possessed shulker successfully."); @@ -722,6 +757,10 @@ private void addRitualMessages() { 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.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."); @@ -769,6 +808,39 @@ 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.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.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."); @@ -1038,6 +1110,7 @@ Now it is time to place the ingredients you see on the next page in the (regular - [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) """); @@ -1156,6 +1229,14 @@ Now it is time to place the ingredients you see on the next page in the (regular 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"); @@ -1352,6 +1433,7 @@ Now it is time to place the ingredients you see on the next page in the (regular """ - [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)); } @@ -2114,6 +2196,16 @@ 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. + """.formatted(COLOR_PURPLE)); + + helper.page("ritual"); } private void addFamiliarRitualsCategory(BookContextHelper helper) { @@ -2569,6 +2661,25 @@ When upgraded by a blacksmith familiar, it regains a limb (can only be done once **Upgrade Behaviour**\\ Cannot be upgraded by the blacksmith familiar. """.formatted(COLOR_PURPLE)); + //no text + + helper.entry("summon_allay"); + this.add(helper.entryName(), "Purify Vex to Allay"); + + helper.page("entity"); + this.add(helper.pageText(), + """ + **Provides**: Allay + """); + + helper.page("ritual"); + + helper.page("description"); + this.add(helper.pageTitle(), "Description"); + this.add(helper.pageText(), + """ + Purify a Vex to an Allay on a resurrection process that reveals its true name. + """.formatted(COLOR_PURPLE)); } @@ -2891,6 +3002,8 @@ 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.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_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"); @@ -3019,7 +3132,25 @@ private void addRitualDummies() { 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(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."); 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 689ffca11..48a196438 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 @@ -47,6 +47,14 @@ public void generate() { this.add(OccultismEntities.POSSESSED_WEAK_SHULKER.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_ENDERMITE_TYPE.get(), LootTable.lootTable().withPool( LootPool.lootPool().setRolls(ConstantValue.exactly(1)) @@ -239,11 +247,12 @@ public LootTable.Builder hoglinLootTable(){ .withPool( LootPool.lootPool() .setRolls(ConstantValue.exactly(1.0F)) - .add(EmptyLootItem.emptyItem().setWeight(3)) .add(LootItem.lootTableItem(Items.NETHERITE_UPGRADE_SMITHING_TEMPLATE).setWeight(2)) .add(LootItem.lootTableItem(Items.SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE).setWeight(1)) - .add(LootItem.lootTableItem(Items.NETHERITE_SCRAP).setWeight(3) - ) + .add(LootItem.lootTableItem(Items.NETHERITE_SCRAP).setWeight(3)) + .add(LootItem.lootTableItem(Items.NETHER_BRICK).setWeight(1)) + .add(LootItem.lootTableItem(Items.PIGLIN_BANNER_PATTERN).setWeight(1)) + .add(LootItem.lootTableItem(Items.MUSIC_DISC_PIGSTEP).setWeight(1)) ); } @@ -316,4 +325,180 @@ public LootTable.Builder weakShulkerTable(){ .apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) ); } + public LootTable.Builder huskLootTable(){ + return LootTable.lootTable() + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(EmptyLootItem.emptyItem().setWeight(3)) + .add(LootItem.lootTableItem(Items.DUNE_ARMOR_TRIM_SMITHING_TEMPLATE).setWeight(1)) + ) + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(LootItem.lootTableItem(Items.ARCHER_POTTERY_SHERD).setWeight(1)) + .add(LootItem.lootTableItem(Items.MINER_POTTERY_SHERD).setWeight(1)) + .add(LootItem.lootTableItem(Items.PRIZE_POTTERY_SHERD).setWeight(1)) + .add(LootItem.lootTableItem(Items.SKULL_POTTERY_SHERD).setWeight(1)) + .add(LootItem.lootTableItem(Items.ARMS_UP_POTTERY_SHERD).setWeight(1)) + .add(LootItem.lootTableItem(Items.BREWER_POTTERY_SHERD).setWeight(1)) + ); + } + public LootTable.Builder drownedLootTable(){ + return LootTable.lootTable() + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(EmptyLootItem.emptyItem().setWeight(3)) + .add(LootItem.lootTableItem(Items.SNIFFER_EGG).setWeight(1)) + .add(LootItem.lootTableItem(Items.TURTLE_EGG).setWeight(3)) + .add(LootItem.lootTableItem(Items.TRIDENT).setWeight(3)) + ) + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(LootItem.lootTableItem(Items.ANGLER_POTTERY_SHERD).setWeight(1)) + .add(LootItem.lootTableItem(Items.SHELTER_POTTERY_SHERD).setWeight(1)) + .add(LootItem.lootTableItem(Items.SNORT_POTTERY_SHERD).setWeight(1)) + .add(LootItem.lootTableItem(Items.BLADE_POTTERY_SHERD).setWeight(1)) + .add(LootItem.lootTableItem(Items.EXPLORER_POTTERY_SHERD).setWeight(1)) + .add(LootItem.lootTableItem(Items.MOURNER_POTTERY_SHERD).setWeight(1)) + .add(LootItem.lootTableItem(Items.PLENTY_POTTERY_SHERD).setWeight(1)) + ); + } + public LootTable.Builder creeperLootTable(){ + return LootTable.lootTable() + .withPool( + LootPool.lootPool() + .setRolls(UniformGenerator.between(1.0F, 3.0F)) + .add(LootItem.lootTableItem(Items.MUSIC_DISC_13).setWeight(1)) + .add(LootItem.lootTableItem(Items.MUSIC_DISC_CAT).setWeight(1)) + .add(LootItem.lootTableItem(Items.MUSIC_DISC_BLOCKS).setWeight(1)) + .add(LootItem.lootTableItem(Items.MUSIC_DISC_CHIRP).setWeight(1)) + .add(LootItem.lootTableItem(Items.MUSIC_DISC_FAR).setWeight(1)) + .add(LootItem.lootTableItem(Items.MUSIC_DISC_MALL).setWeight(1)) + .add(LootItem.lootTableItem(Items.MUSIC_DISC_MELLOHI).setWeight(1)) + .add(LootItem.lootTableItem(Items.MUSIC_DISC_STAL).setWeight(1)) + .add(LootItem.lootTableItem(Items.MUSIC_DISC_STRAD).setWeight(1)) + .add(LootItem.lootTableItem(Items.MUSIC_DISC_WARD).setWeight(1)) + .add(LootItem.lootTableItem(Items.MUSIC_DISC_11).setWeight(1)) + .add(LootItem.lootTableItem(Items.MUSIC_DISC_WAIT).setWeight(1)) + ); + } + public LootTable.Builder silverfishLootTable(){ + return LootTable.lootTable() + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(EmptyLootItem.emptyItem().setWeight(4)) + .add(LootItem.lootTableItem(Items.MUSIC_DISC_RELIC).setWeight(1)) + ) + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(EmptyLootItem.emptyItem().setWeight(4)) + .add(LootItem.lootTableItem(Items.HOST_ARMOR_TRIM_SMITHING_TEMPLATE).setWeight(1)) + .add(LootItem.lootTableItem(Items.RAISER_ARMOR_TRIM_SMITHING_TEMPLATE).setWeight(1)) + .add(LootItem.lootTableItem(Items.SHAPER_ARMOR_TRIM_SMITHING_TEMPLATE).setWeight(1)) + .add(LootItem.lootTableItem(Items.WAYFINDER_ARMOR_TRIM_SMITHING_TEMPLATE).setWeight(1)) + ) + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(LootItem.lootTableItem(Items.BURN_POTTERY_SHERD).setWeight(1)) + .add(LootItem.lootTableItem(Items.DANGER_POTTERY_SHERD).setWeight(1)) + .add(LootItem.lootTableItem(Items.FRIEND_POTTERY_SHERD).setWeight(1)) + .add(LootItem.lootTableItem(Items.HEART_POTTERY_SHERD).setWeight(1)) + .add(LootItem.lootTableItem(Items.HEARTBREAK_POTTERY_SHERD).setWeight(1)) + .add(LootItem.lootTableItem(Items.HOWL_POTTERY_SHERD).setWeight(1)) + .add(LootItem.lootTableItem(Items.SHEAF_POTTERY_SHERD).setWeight(1)) + ); + } + public LootTable.Builder weakBreezeTable(){ + return LootTable.lootTable() + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(LootItem.lootTableItem(Items.TRIAL_KEY).setWeight(1)) + ) + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(LootItem.lootTableItem(Items.OMINOUS_BOTTLE).setWeight(1)) + .apply(SetItemCountFunction.setCount(UniformGenerator.between(0.5F, 2.0F))) + ) + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(EmptyLootItem.emptyItem().setWeight(2)) + .add(LootItem.lootTableItem(Items.GUSTER_POTTERY_SHERD).setWeight(1)) + .add(LootItem.lootTableItem(Items.SCRAPE_POTTERY_SHERD).setWeight(1)) + ) + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(EmptyLootItem.emptyItem().setWeight(7)) + .add(LootItem.lootTableItem(Items.MUSIC_DISC_CREATOR_MUSIC_BOX).setWeight(1)) + ); + } + public LootTable.Builder breezeTable(){ + return LootTable.lootTable() + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(LootItem.lootTableItem(Items.OMINOUS_TRIAL_KEY).setWeight(1)) + ) + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(LootItem.lootTableItem(Items.BREEZE_ROD).setWeight(1)) + .apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F))) + ) + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(EmptyLootItem.emptyItem().setWeight(8)) + .add(LootItem.lootTableItem(Items.BOLT_ARMOR_TRIM_SMITHING_TEMPLATE).setWeight(4)) + .add(LootItem.lootTableItem(Items.GUSTER_BANNER_PATTERN).setWeight(2)) + .add(LootItem.lootTableItem(Items.MUSIC_DISC_PRECIPICE).setWeight(1)) + ); + } + public LootTable.Builder strongBreezeTable(){ + return LootTable.lootTable() + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(LootItem.lootTableItem(Items.HEAVY_CORE).setWeight(1)) + ) + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(EmptyLootItem.emptyItem().setWeight(5)) + .add(LootItem.lootTableItem(Items.FLOW_POTTERY_SHERD).setWeight(4)) + .add(LootItem.lootTableItem(Items.FLOW_ARMOR_TRIM_SMITHING_TEMPLATE).setWeight(3)) + .add(LootItem.lootTableItem(Items.FLOW_BANNER_PATTERN).setWeight(2)) + .add(LootItem.lootTableItem(Items.MUSIC_DISC_CREATOR).setWeight(1)) + ); + } + public LootTable.Builder evokerTable(){ + return LootTable.lootTable() + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(LootItem.lootTableItem(Items.TOTEM_OF_UNDYING).setWeight(1)) + ) + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(EmptyLootItem.emptyItem().setWeight(2)) + .add(LootItem.lootTableItem(Items.VEX_ARMOR_TRIM_SMITHING_TEMPLATE).setWeight(1)) + .add(LootItem.lootTableItem(Items.SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE).setWeight(1)) + ) + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(LootItem.lootTableItem(Items.OMINOUS_BOTTLE).setWeight(1)) + .apply(SetItemCountFunction.setCount(UniformGenerator.between(0.5F, 2.0F))) + ); + } } 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 6a3342d88..e3c5ded7d 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 @@ -28,7 +28,7 @@ public abstract class RitualRecipes extends RecipeProvider { 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"); @@ -91,7 +91,6 @@ public static void ritualRecipes(RecipeOutput recipeOutput) { .unlockedBy("has_otherworld_essence", has(OccultismItems.OTHERWORLD_ESSENCE.get())) .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/resurrect_familiar")); summonRituals(recipeOutput); - } private static void summonRituals(RecipeOutput recipeOutput) { @@ -393,11 +392,11 @@ private static void summonRituals(RecipeOutput recipeOutput) { .entityToSacrifice(OccultismTags.Entities.COWS) .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_wild_afrit")); - RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT.get()), + 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")), 30, - RITUAL_SUMMON, + RITUAL_SUMMON_WILD, PENTACLE_SUMMON_WILD_GREATER_SPIRIT, Ingredient.of(Tags.Items.STORAGE_BLOCKS_COPPER), Ingredient.of(OccultismTags.Items.STORAGE_BLOCK_SILVER), @@ -411,6 +410,168 @@ private static void summonRituals(RecipeOutput recipeOutput) { .entityToSacrifice(OccultismTags.Entities.HUMANS) .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_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")), + 30, + RITUAL_SUMMON_WILD, + PENTACLE_SUMMON_WILD_GREATER_SPIRIT, + Ingredient.of(Items.SAND), + Ingredient.of(Items.SANDSTONE), + Ingredient.of(Items.CHISELED_SANDSTONE), + Ingredient.of(Items.CUT_SANDSTONE), + Ingredient.of(Items.SMOOTH_SANDSTONE), + Ingredient.of(Items.DEAD_BUSH), + Ingredient.of(Items.SAND), + Ingredient.of(Items.SANDSTONE), + Ingredient.of(Items.CHISELED_SANDSTONE), + Ingredient.of(Items.CUT_SANDSTONE), + Ingredient.of(Items.SMOOTH_SANDSTONE), + Ingredient.of(Items.DEAD_BUSH)) + .unlockedBy("has_bound_afrit", has(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT.get())) + .entityToSummon(OccultismEntities.WILD_HORDE_HUSK.get()) + .summonNumber(5) + .entityToSacrificeDisplayName("ritual.occultism.sacrifice.camel") + .entityToSacrifice(OccultismTags.Entities.CAMEL) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_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")), + 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), + 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")); + 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")), + 30, + RITUAL_SUMMON_WILD, + PENTACLE_SUMMON_WILD_GREATER_SPIRIT, + Ingredient.of(Items.TNT), + Ingredient.of(Items.OAK_LEAVES), + Ingredient.of(Items.MOSS_BLOCK), + Ingredient.of(Items.TNT), + Ingredient.of(Items.BIRCH_LEAVES), + Ingredient.of(Items.MOSS_BLOCK), + Ingredient.of(Items.TNT), + Ingredient.of(Items.SPRUCE_LEAVES), + Ingredient.of(Items.MOSS_BLOCK), + Ingredient.of(Items.TNT), + Ingredient.of(Items.JUNGLE_LEAVES), + Ingredient.of(Items.MOSS_BLOCK)) + .unlockedBy("has_bound_afrit", has(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT.get())) + .entityToSummon(OccultismEntities.WILD_HORDE_CREEPER.get()) + .summonNumber(5) + .entityToSacrificeDisplayName("ritual.occultism.sacrifice.pigs") + .entityToSacrifice(OccultismTags.Entities.PIGS) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_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")), + 30, + RITUAL_SUMMON_WILD, + PENTACLE_SUMMON_WILD_GREATER_SPIRIT, + Ingredient.of(Items.SAND), + Ingredient.of(Items.GRAVEL), + Ingredient.of(Items.BRICKS), + Ingredient.of(Items.MUD_BRICKS), + Ingredient.of(Items.STONE_BRICKS), + Ingredient.of(Items.WHITE_TERRACOTTA), + Ingredient.of(Items.DIRT)) + .unlockedBy("has_bound_afrit", has(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT.get())) + .entityToSummon(OccultismEntities.WILD_HORDE_SILVERFISH.get()) + .summonNumber(7) + .itemToUse(Ingredient.of(Items.EGG)) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_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")), + 30, + RITUAL_SUMMON_WILD, + PENTACLE_SUMMON_WILD_GREATER_SPIRIT, + Ingredient.of(Items.OXIDIZED_COPPER), + Ingredient.of(Items.WEATHERED_CHISELED_COPPER), + Ingredient.of(Items.EXPOSED_COPPER_GRATE), + Ingredient.of(Items.CUT_COPPER), + Ingredient.of(Items.TUFF), + Ingredient.of(Items.TUFF), + Ingredient.of(Items.TUFF), + Ingredient.of(Items.TUFF)) + .unlockedBy("has_bound_afrit", has(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT.get())) + .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")); + 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")), + 30, + RITUAL_SUMMON_WILD, + PENTACLE_SUMMON_WILD_GREATER_SPIRIT, + Ingredient.of(Items.LIGHTNING_ROD), + Ingredient.of(Items.COPPER_DOOR), + Ingredient.of(Items.COPPER_TRAPDOOR), + Ingredient.of(Items.COPPER_BULB), + Ingredient.of(Items.POLISHED_TUFF), + Ingredient.of(Items.TUFF_BRICKS)) + .unlockedBy("has_bound_afrit", has(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT.get())) + .entityToSummon(OccultismEntities.POSSESSED_BREEZE.get()) + .entityToSacrificeDisplayName("ritual.occultism.sacrifice.wolfs") + .entityToSacrifice(OccultismTags.Entities.WOLFS) + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/possess_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")), + 30, + RITUAL_SUMMON_WILD, + PENTACLE_SUMMON_WILD_GREATER_SPIRIT, + Ingredient.of(Items.CHISELED_TUFF), + Ingredient.of(Items.CHISELED_TUFF), + Ingredient.of(Items.CHISELED_TUFF), + Ingredient.of(Items.CHISELED_TUFF), + Ingredient.of(Items.CHISELED_TUFF_BRICKS), + Ingredient.of(Items.CHISELED_TUFF_BRICKS), + Ingredient.of(Items.CHISELED_TUFF_BRICKS), + Ingredient.of(Items.CHISELED_TUFF_BRICKS), + Ingredient.of(Items.BREEZE_ROD), + Ingredient.of(Items.BREEZE_ROD), + Ingredient.of(Items.OMINOUS_BOTTLE)) + .unlockedBy("has_bound_afrit", has(OccultismItems.BOOK_OF_BINDING_BOUND_AFRIT.get())) + .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")); + + 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")), + 30, + RITUAL_SUMMON_WILD, + PENTACLE_SUMMON_WILD_GREATER_SPIRIT, + Ingredient.of(Items.OMINOUS_BOTTLE), + 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)) + .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")); + 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")), @@ -445,6 +606,22 @@ private static void summonRituals(RecipeOutput recipeOutput) { .entityToSacrificeDisplayName("ritual.occultism.sacrifice.chicken") .entityToSacrifice(OccultismTags.Entities.CHICKEN) .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/summon_wild_parrot")); + + 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")); } private static void possessRituals(RecipeOutput recipeOutput) { @@ -1103,7 +1280,6 @@ private static void craftingRituals(RecipeOutput recipeOutput) { .unlockedBy("has_bound_marid", has(OccultismItems.BOOK_OF_BINDING_BOUND_MARID.get())) .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/craft_stabilizer_tier4")); - RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(OccultismItems.BOOK_OF_BINDING_BOUND_FOLIOT.get()), new ItemStack(OccultismBlocks.STABLE_WORMHOLE.get()), makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/craft_stable_wormhole")), @@ -1141,7 +1317,28 @@ private static void craftingRituals(RecipeOutput recipeOutput) { Ingredient.of(Tags.Items.GEMS_QUARTZ)) .unlockedBy("has_bound_djinni", has(OccultismItems.BOOK_OF_BINDING_BOUND_DJINNI.get())) .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/craft_storage_remote")); - + RitualRecipeBuilder.ritualRecipeBuilder(Ingredient.of(Items.DIAMOND_BLOCK), + new ItemStack(Items.WILD_ARMOR_TRIM_SMITHING_TEMPLATE), + makeRitualDummy(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_dummy/craft_wild_trim")), + 240, + RITUAL_CRAFT, + PENTACLE_CRAFT_MARID, + Ingredient.of(Items.MOSSY_COBBLESTONE), + Ingredient.of(Items.JUNGLE_SAPLING), + Ingredient.of(Items.BAMBOO), + Ingredient.of(Items.GLISTERING_MELON_SLICE), + Ingredient.of(Items.MOSSY_COBBLESTONE), + Ingredient.of(Items.JUNGLE_SAPLING), + Ingredient.of(Items.BAMBOO), + Ingredient.of(Items.GLISTERING_MELON_SLICE), + Ingredient.of(Items.MOSSY_COBBLESTONE), + 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())) + .entityToSacrifice(OccultismTags.Entities.OCELOT) + .entityToSacrificeDisplayName("ritual.occultism.sacrifice.ocelot") + .save(recipeOutput, ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual/craft_wild_trim")); } private static void minerRecipes(RecipeOutput recipeOutput) { diff --git a/src/main/java/com/klikli_dev/occultism/datagen/recipe/builders/RitualRecipeBuilder.java b/src/main/java/com/klikli_dev/occultism/datagen/recipe/builders/RitualRecipeBuilder.java index 24c7c8946..389f59433 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/recipe/builders/RitualRecipeBuilder.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/recipe/builders/RitualRecipeBuilder.java @@ -49,6 +49,8 @@ public class RitualRecipeBuilder implements RecipeBuilder { @Nullable private Integer spiritMaxAge; @Nullable + private Integer summonNumber; + @Nullable private String entityToSacrificeDisplayName; @Nullable private String command; @@ -113,6 +115,10 @@ public RitualRecipeBuilder spiritMaxAge(int spiritMaxAge){ this.spiritMaxAge=spiritMaxAge; return this; } + public RitualRecipeBuilder summonNumber(int summonNumber){ + this.summonNumber=summonNumber; + return this; + } public RitualRecipeBuilder entityToSacrificeDisplayName(String entityToSacrificeDisplayName){ this.entityToSacrificeDisplayName=entityToSacrificeDisplayName; @@ -131,7 +137,7 @@ public void save(RecipeOutput pRecipeOutput, ResourceLocation pId) { .rewards(AdvancementRewards.Builder.recipe(pId)) .requirements(AdvancementRequirements.Strategy.OR); this.criteria.forEach(advancement$builder::addCriterion); - RitualRecipe recipe = new RitualRecipe(this.pentacleId,this.ritualType,this.ritualDummy,this.output,entityToSummon,this.entityNbt,this.activationIngredient,this.ingredients,this.duration,this.spiritMaxAge==null?-1:this.spiritMaxAge,this.spiritJobType,this.entityToSacrifice==null?null:new RitualRecipe.EntityToSacrifice(this.entityToSacrifice,this.entityToSacrificeDisplayName),this.itemToUse,this.command); + RitualRecipe recipe = new RitualRecipe(this.pentacleId,this.ritualType,this.ritualDummy,this.output,entityToSummon,this.entityNbt,this.activationIngredient,this.ingredients,this.duration,this.spiritMaxAge==null?-1:this.spiritMaxAge,this.summonNumber==null?1:this.summonNumber,this.spiritJobType,this.entityToSacrifice==null?null:new RitualRecipe.EntityToSacrifice(this.entityToSacrifice,this.entityToSacrificeDisplayName),this.itemToUse,this.command); pRecipeOutput.accept(pId, recipe,advancement$builder.build(pId.withPrefix("recipes/ritual/"))); } 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 33646bf9d..dd0fc2e81 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 @@ -48,9 +48,15 @@ private void addPerViamInvenireTags(HolderLookup.Provider provider) { } private void addOccultismTags(HolderLookup.Provider pProvider) { - this.tag(OccultismTags.Entities.AFRIT_ALLIES).add(EntityType.BLAZE).replace(false); - this.tag(OccultismTags.Entities.CUBEMOB).add(EntityType.SLIME).add(EntityType.MAGMA_CUBE).replace(false); - this.tag(OccultismTags.Entities.FLYING_PASSIVE).add(EntityType.BAT) + this.tag(OccultismTags.Entities.AFRIT_ALLIES) + .add(EntityType.BLAZE) + .replace(false); + this.tag(OccultismTags.Entities.CUBEMOB) + .add(EntityType.SLIME) + .add(EntityType.MAGMA_CUBE) + .replace(false); + this.tag(OccultismTags.Entities.FLYING_PASSIVE) + .add(EntityType.BAT) .add(EntityType.PARROT) .add(EntityType.BEE) .add(EntityType.ALLAY) @@ -88,10 +94,18 @@ private void addOccultismTags(HolderLookup.Provider pProvider) { .add(OccultismEntities.DEMONIC_WIFE.get()) .add(OccultismEntities.DEMONIC_HUSBAND.get()).replace(false); - this.tag(OccultismTags.Entities.HUMANS).addTags(OccultismTags.Entities.VILLAGERS).add(EntityType.PLAYER).replace(false); + this.tag(OccultismTags.Entities.HUMANS) + .addTags(OccultismTags.Entities.VILLAGERS) + .add(EntityType.PLAYER) + .replace(false); - this.tag(OccultismTags.Entities.SOUL_GEM_DENY_LIST).add(EntityType.WITHER, EntityType.ENDER_DRAGON).replace(false); - this.tag(OccultismTags.Entities.WILD_HUNT).add(OccultismEntities.WILD_HUNT_SKELETON_TYPE.get()).add(OccultismEntities.WILD_HUNT_WITHER_SKELETON_TYPE.get()).replace(false); + this.tag(OccultismTags.Entities.SOUL_GEM_DENY_LIST) + .add(EntityType.WITHER, EntityType.ENDER_DRAGON) + .replace(false); + this.tag(OccultismTags.Entities.WILD_HUNT) + .add(OccultismEntities.WILD_HUNT_SKELETON_TYPE.get()) + .add(OccultismEntities.WILD_HUNT_WITHER_SKELETON_TYPE.get()) + .replace(false); } @@ -99,6 +113,7 @@ private void addOccultismTags(HolderLookup.Provider pProvider) { private void addCommonTags() { this.tag(Tags.EntityTypes.CAPTURING_NOT_SUPPORTED).addTag(OccultismTags.Entities.SOUL_GEM_DENY_LIST); this.tag(OccultismTags.Entities.SNOW_GOLEM).add(EntityType.SNOW_GOLEM).replace(false); + this.tag(OccultismTags.Entities.IRON_GOLEM).add(EntityType.IRON_GOLEM).replace(false); this.tag(OccultismTags.Entities.AXOLOTL).add(EntityType.AXOLOTL).replace(false); this.tag(OccultismTags.Entities.BATS).add(EntityType.BAT).replace(false); this.tag(OccultismTags.Entities.CHICKEN).add(EntityType.CHICKEN).replace(false); @@ -118,5 +133,10 @@ private void addCommonTags() { this.tag(OccultismTags.Entities.SQUID).add(EntityType.SQUID).add(EntityType.GLOW_SQUID).replace(false); this.tag(OccultismTags.Entities.VILLAGERS).add(EntityType.VILLAGER).add(EntityType.WANDERING_TRADER).replace(false); this.tag(OccultismTags.Entities.ZOMBIES).add(EntityType.ZOMBIE).add(EntityType.ZOMBIE_VILLAGER).add(EntityType.HUSK).add(EntityType.DROWNED).replace(false); + this.tag(OccultismTags.Entities.CAMEL).add(EntityType.CAMEL).replace(false); + 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.VEX).add(EntityType.VEX).replace(false); } } 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 eae44d762..c32a4eb83 100644 --- a/src/main/java/com/klikli_dev/occultism/handlers/ClientSetupEventHandler.java +++ b/src/main/java/com/klikli_dev/occultism/handlers/ClientSetupEventHandler.java @@ -57,6 +57,8 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.monster.Drowned; +import net.minecraft.world.entity.monster.Zombie; import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.ModContainer; @@ -155,6 +157,24 @@ public static void onRegisterEntityRenderers(EntityRenderersEvent.RegisterRender event.registerEntityRenderer(OccultismEntities.WILD_HUNT_WITHER_SKELETON.get(), WitherSkeletonRenderer::new); event.registerEntityRenderer(OccultismEntities.OTHERWORLD_BIRD.get(), OtherworldBirdRenderer::new); + event.registerEntityRenderer(OccultismEntities.WILD_HORDE_HUSK.get(), HuskRenderer::new); + event.registerEntityRenderer(OccultismEntities.WILD_HORDE_DROWNED.get(), DrownedRenderer::new); + event.registerEntityRenderer(OccultismEntities.WILD_HORDE_CREEPER.get(), CreeperRenderer::new); + event.registerEntityRenderer(OccultismEntities.WILD_HORDE_SILVERFISH.get(), SilverfishRenderer::new); + event.registerEntityRenderer(OccultismEntities.POSSESSED_WEAK_BREEZE.get(), BreezeRenderer::new); + event.registerEntityRenderer(OccultismEntities.POSSESSED_BREEZE.get(), BreezeRenderer::new); + event.registerEntityRenderer(OccultismEntities.POSSESSED_STRONG_BREEZE.get(), BreezeRenderer::new); + event.registerEntityRenderer(OccultismEntities.POSSESSED_EVOKER.get(), EvokerRenderer::new); + + event.registerEntityRenderer(OccultismEntities.WILD_ZOMBIE.get(), ZombieRenderer::new); + event.registerEntityRenderer(OccultismEntities.WILD_SKELETON.get(), SkeletonRenderer::new); + event.registerEntityRenderer(OccultismEntities.WILD_SILVERFISH.get(), SilverfishRenderer::new); + event.registerEntityRenderer(OccultismEntities.WILD_SPIDER.get(), SpiderRenderer::new); + event.registerEntityRenderer(OccultismEntities.WILD_BOGGED.get(), BoggedRenderer::new); + event.registerEntityRenderer(OccultismEntities.WILD_SLIME.get(), SlimeRenderer::new); + event.registerEntityRenderer(OccultismEntities.WILD_HUSK.get(), HuskRenderer::new); + event.registerEntityRenderer(OccultismEntities.WILD_STRAY.get(), StrayRenderer::new); + event.registerEntityRenderer(OccultismEntities.WILD_CAVE_SPIDER.get(), CaveSpiderRenderer::new); event.registerEntityRenderer(OccultismEntities.DEMONIC_WIFE.get(), DemonicWifeRenderer::new); event.registerEntityRenderer(OccultismEntities.DEMONIC_HUSBAND.get(), DemonicHusbandRenderer::new); 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 1cb993fab..2b3fc449f 100644 --- a/src/main/java/com/klikli_dev/occultism/registry/OccultismEntities.java +++ b/src/main/java/com/klikli_dev/occultism/registry/OccultismEntities.java @@ -22,10 +22,10 @@ package com.klikli_dev.occultism.registry; -import com.klikli_dev.modonomicon.registry.RegistryObject; import com.klikli_dev.occultism.Occultism; import com.klikli_dev.occultism.common.entity.familiar.*; import com.klikli_dev.occultism.common.entity.possessed.*; +import com.klikli_dev.occultism.common.entity.possessed.horde.*; import com.klikli_dev.occultism.common.entity.spirit.*; import com.klikli_dev.occultism.common.entity.spirit.demonicpartner.husband.DemonicHusband; import com.klikli_dev.occultism.common.entity.spirit.demonicpartner.wife.DemonicWife; @@ -146,6 +146,93 @@ public class OccultismEntities { .sized(0.5F, 0.9F) .clientTrackingRange(8) .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "otherworld_bird").toString())); + public static final Lazy> WILD_HORDE_HUSK_TYPE = + Lazy.of(() -> EntityType.Builder.of(WildHordeHuskEntity::new, MobCategory.MONSTER) + .sized(0.6F, 2.9F) + .clientTrackingRange(8) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "wild_horde_husk").toString())); + public static final Lazy> WILD_HORDE_DROWNED_TYPE = + Lazy.of(() -> EntityType.Builder.of(WildHordeDrownedEntity::new, MobCategory.MONSTER) + .sized(0.6F, 2.9F) + .clientTrackingRange(8) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "wild_horde_drowned").toString())); + public static final Lazy> WILD_HORDE_CREEPER_TYPE = + Lazy.of(() -> EntityType.Builder.of(WildHordeCreeperEntity::new, MobCategory.MONSTER) + .sized(0.8F, 1.4F) + .clientTrackingRange(8) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "wild_horde_creeper").toString())); + public static final Lazy> WILD_HORDE_SILVERFISH_TYPE = + Lazy.of(() -> EntityType.Builder.of(WildHordeSilverfishEntity::new, MobCategory.MONSTER) + .sized(0.2F, 0.15F) + .clientTrackingRange(16) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "wild_horde_silverfish").toString())); + public static final Lazy> POSSESSED_WEAK_BREEZE_TYPE = + Lazy.of(() -> EntityType.Builder.of(PossessedWeakBreezeEntity::new, MobCategory.MONSTER) + .sized(0.4F, 1.18F) + .clientTrackingRange(32) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "possessed_weak_breeze").toString())); + public static final Lazy> POSSESSED_BREEZE_TYPE = + Lazy.of(() -> EntityType.Builder.of(PossessedBreezeEntity::new, MobCategory.MONSTER) + .fireImmune() + .sized(0.9F, 2.65F) + .clientTrackingRange(32) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "possessed_breeze").toString())); + public static final Lazy> POSSESSED_STRONG_BREEZE_TYPE = + Lazy.of(() -> EntityType.Builder.of(PossessedStrongBreezeEntity::new, MobCategory.MONSTER) + .fireImmune() + .sized(1.2F, 3.54F) + .clientTrackingRange(32) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "possessed_strong_breeze").toString())); + public static final Lazy> WILD_ZOMBIE_TYPE = + Lazy.of(() -> EntityType.Builder.of(WildZombieEntity::new, MobCategory.MONSTER) + .sized(0.6F, 1.95F) + .clientTrackingRange(32) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "wild_zombie").toString())); + public static final Lazy> WILD_SKELETON_TYPE = + Lazy.of(() -> EntityType.Builder.of(WildSkeletonEntity::new, MobCategory.MONSTER) + .sized(0.6F, 1.99F) + .clientTrackingRange(32) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "wild_skeleton").toString())); + public static final Lazy> WILD_SILVERFISH_TYPE = + Lazy.of(() -> EntityType.Builder.of(WildSilverfishEntity::new, MobCategory.MONSTER) + .sized(0.4F, 0.3F) + .clientTrackingRange(32) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "wild_silverfish").toString())); + public static final Lazy> WILD_SPIDER_TYPE = + Lazy.of(() -> EntityType.Builder.of(WildSpiderEntity::new, MobCategory.MONSTER) + .sized(0.9F, 1.4F) + .clientTrackingRange(32) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "wild_spider").toString())); + public static final Lazy> WILD_BOGGED_TYPE = + Lazy.of(() -> EntityType.Builder.of(WildBoggedEntity::new, MobCategory.MONSTER) + .sized(0.6F, 1.99F) + .clientTrackingRange(32) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "wild_bogged").toString())); + public static final Lazy> WILD_SLIME_TYPE = + Lazy.of(() -> EntityType.Builder.of(WildSlimeEntity::new, MobCategory.MONSTER) + .sized(1.0F, 1.0F) + .clientTrackingRange(32) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "wild_slime").toString())); + public static final Lazy> WILD_HUSK_TYPE = + Lazy.of(() -> EntityType.Builder.of(WildHuskEntity::new, MobCategory.MONSTER) + .sized(0.6F, 1.95F) + .clientTrackingRange(32) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "wild_husk").toString())); + public static final Lazy> WILD_STRAY_TYPE = + Lazy.of(() -> EntityType.Builder.of(WildStrayEntity::new, MobCategory.MONSTER) + .sized(0.6F, 1.99F) + .clientTrackingRange(32) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "wild_stray").toString())); + public static final Lazy> WILD_CAVE_SPIDER_TYPE = + Lazy.of(() -> EntityType.Builder.of(WildCaveSpiderEntity::new, MobCategory.MONSTER) + .sized(0.5F, 0.7F) + .clientTrackingRange(32) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "wild_cave_spider").toString())); + public static final Lazy> POSSESSED_EVOKER_TYPE = + Lazy.of(() -> EntityType.Builder.of(PossessedEvokerEntity::new, MobCategory.MONSTER) + .sized(0.6F, 1.95F) + .clientTrackingRange(32) + .build(ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "possessed_evoker").toString())); public static final Lazy> GREEDY_FAMILIAR_TYPE = Lazy.of(() -> EntityType.Builder.of(GreedyFamiliarEntity::new, MobCategory.CREATURE) .sized(0.5F, 0.9F) @@ -272,13 +359,50 @@ public class OccultismEntities { ENTITIES.register("possessed_shulker", POSSESSED_SHULKER_TYPE::get); public static final Supplier> POSSESSED_ELDER_GUARDIAN = ENTITIES.register("possessed_elder_guardian", POSSESSED_ELDER_GUARDIAN_TYPE::get); - public static final Supplier> WILD_HUNT_SKELETON = ENTITIES.register("wild_hunt_skeleton", WILD_HUNT_SKELETON_TYPE::get); - public static final Supplier> POSSESSED_WARDEN = 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> WILD_HUNT_SKELETON = + ENTITIES.register("wild_hunt_skeleton", WILD_HUNT_SKELETON_TYPE::get); + public static final Supplier> POSSESSED_WARDEN = + 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> WILD_HUNT_WITHER_SKELETON = ENTITIES.register("wild_hunt_wither_skeleton", WILD_HUNT_WITHER_SKELETON_TYPE::get); public static final Supplier> OTHERWORLD_BIRD = ENTITIES.register("otherworld_bird", OTHERWORLD_BIRD_TYPE::get); + public static final Supplier> WILD_HORDE_HUSK = + ENTITIES.register("wild_horde_husk", WILD_HORDE_HUSK_TYPE::get); + public static final Supplier> WILD_HORDE_DROWNED = + ENTITIES.register("wild_horde_drowned", WILD_HORDE_DROWNED_TYPE::get); + public static final Supplier> WILD_HORDE_CREEPER = + ENTITIES.register("wild_horde_creeper", WILD_HORDE_CREEPER_TYPE::get); + public static final Supplier> WILD_HORDE_SILVERFISH = + ENTITIES.register("wild_horde_silverfish", WILD_HORDE_SILVERFISH_TYPE::get); + public static final Supplier> POSSESSED_WEAK_BREEZE = + ENTITIES.register("possessed_weak_breeze", POSSESSED_WEAK_BREEZE_TYPE::get); + public static final Supplier> POSSESSED_BREEZE = + ENTITIES.register("possessed_breeze", POSSESSED_BREEZE_TYPE::get); + public static final Supplier> POSSESSED_STRONG_BREEZE = + ENTITIES.register("possessed_strong_breeze", POSSESSED_STRONG_BREEZE_TYPE::get); + public static final Supplier> WILD_ZOMBIE = + ENTITIES.register("wild_zombie", WILD_ZOMBIE_TYPE::get); + public static final Supplier> WILD_SKELETON = + ENTITIES.register("wild_skeleton", WILD_SKELETON_TYPE::get); + public static final Supplier> WILD_SILVERFISH = + ENTITIES.register("wild_silverfish", WILD_SILVERFISH_TYPE::get); + public static final Supplier> WILD_SPIDER = + ENTITIES.register("wild_spider", WILD_SPIDER_TYPE::get); + public static final Supplier> WILD_BOGGED = + ENTITIES.register("wild_bogged", WILD_BOGGED_TYPE::get); + public static final Supplier> WILD_SLIME = + ENTITIES.register("wild_slime", WILD_SLIME_TYPE::get); + public static final Supplier> WILD_HUSK = + ENTITIES.register("wild_husk", WILD_HUSK_TYPE::get); + public static final Supplier> WILD_STRAY = + ENTITIES.register("wild_stray", WILD_STRAY_TYPE::get); + public static final Supplier> WILD_CAVE_SPIDER = + ENTITIES.register("wild_cave_spider", WILD_CAVE_SPIDER_TYPE::get); + public static final Supplier> POSSESSED_EVOKER = + ENTITIES.register("possessed_evoker", POSSESSED_EVOKER_TYPE::get); public static final Supplier> GREEDY_FAMILIAR = ENTITIES.register("greedy_familiar", GREEDY_FAMILIAR_TYPE::get); public static final Supplier> BAT_FAMILIAR = 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 cf7b11681..c1240debb 100644 --- a/src/main/java/com/klikli_dev/occultism/registry/OccultismItems.java +++ b/src/main/java/com/klikli_dev/occultism/registry/OccultismItems.java @@ -357,7 +357,22 @@ public class OccultismItems { public static final DeferredItem SPAWN_EGG_POSSESSED_HOGLIN = ITEMS.register("spawn_egg/possessed_hoglin", () -> new DeferredSpawnEggItem(OccultismEntities.POSSESSED_HOGLIN_TYPE::get, 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())); + 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())); + 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())); + 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())); public static final DeferredItem SPAWN_EGG_OTHERWORLD_BIRD = ITEMS.register("spawn_egg/otherworld_bird", () -> new DeferredSpawnEggItem(OccultismEntities.OTHERWORLD_BIRD_TYPE::get, 0x221269, 0x6b56c4, defaultProperties())); @@ -409,6 +424,7 @@ public class OccultismItems { //Ritual Dummy Items static { ITEMS.register("ritual_dummy/custom_ritual", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/craft_wild_trim", () -> new DummyTooltipItem(defaultProperties())); 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())); @@ -466,8 +482,17 @@ public class OccultismItems { 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())); 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 6fdfa77b7..4251f258d 100644 --- a/src/main/java/com/klikli_dev/occultism/registry/OccultismRituals.java +++ b/src/main/java/com/klikli_dev/occultism/registry/OccultismRituals.java @@ -55,9 +55,9 @@ public class OccultismRituals { public static final DeferredHolder SUMMON_SPIRIT_WITH_JOB = RITUAL_FACTORIES.register("summon_spirit_with_job", () -> new RitualFactory(SummonSpiritWithJobRitual::new)); - public static final DeferredHolder SUMMON_WILD_HUNT = - RITUAL_FACTORIES.register("summon_wild_hunt", - () -> new RitualFactory(SummonWildHuntRitual::new)); + public static final DeferredHolder SUMMON_WILD = + RITUAL_FACTORIES.register("summon_wild", + () -> new RitualFactory(SummonWildRitual::new)); public static final DeferredHolder FAMILIAR = RITUAL_FACTORIES.register("familiar", () -> new RitualFactory(FamiliarRitual::new)); 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 ca145b55a..5f6798ab7 100644 --- a/src/main/java/com/klikli_dev/occultism/registry/OccultismTags.java +++ b/src/main/java/com/klikli_dev/occultism/registry/OccultismTags.java @@ -130,6 +130,7 @@ public static class Entities { public static final TagKey> ZOMBIES = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "zombies")); public static final TagKey> BATS = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "bats")); public static final TagKey> SNOW_GOLEM=makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "golems/snow")); + public static final TagKey> IRON_GOLEM=makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "golems/iron")); public static final TagKey> DONKEYS = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "donkeys")); public static final TagKey> FISH = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "fish")); public static final TagKey> GOATS = makeEntityTypeTag(ResourceLocation.fromNamespaceAndPath("c", "goats")); @@ -149,6 +150,11 @@ 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")); } diff --git a/src/main/java/com/klikli_dev/occultism/util/OccultismExtraStreamCodecs.java b/src/main/java/com/klikli_dev/occultism/util/OccultismExtraStreamCodecs.java index d19d662d0..ebfc849c2 100644 --- a/src/main/java/com/klikli_dev/occultism/util/OccultismExtraStreamCodecs.java +++ b/src/main/java/com/klikli_dev/occultism/util/OccultismExtraStreamCodecs.java @@ -1,6 +1,6 @@ package com.klikli_dev.occultism.util; -import com.mojang.datafixers.util.Function14; +import com.mojang.datafixers.util.Function15; import com.mojang.datafixers.util.Function7; import com.mojang.datafixers.util.Function9; import com.mojang.serialization.Codec; @@ -21,7 +21,7 @@ public static StreamCodec> tagKey(ResourceKey TagKey.create(pRegistry, p_203893_), TagKey::location); } - public static StreamCodec composite( + public static StreamCodec composite( final StreamCodec pCodec1, final Function pGetter1, final StreamCodec pCodec2, @@ -50,7 +50,9 @@ public static pGetter13, final StreamCodec pCodec14, final Function pGetter14, - final Function14 pFactory + final StreamCodec pCodec15, + final Function pGetter15, + final Function15 pFactory ) { return new StreamCodec() { @Override @@ -69,7 +71,8 @@ public C decode(B p_330310_) { T12 t12 = pCodec12.decode(p_330310_); T13 t13 = pCodec13.decode(p_330310_); T14 t14 = pCodec14.decode(p_330310_); - return pFactory.apply(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14); + T15 t15 = pCodec15.decode(p_330310_); + return pFactory.apply(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15); } @Override @@ -88,6 +91,7 @@ public void encode(B p_332052_, C p_331912_) { pCodec12.encode(p_332052_, pGetter12.apply(p_331912_)); pCodec13.encode(p_332052_, pGetter13.apply(p_331912_)); pCodec14.encode(p_332052_, pGetter14.apply(p_331912_)); + pCodec15.encode(p_332052_, pGetter15.apply(p_331912_)); } }; } diff --git a/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_breeze.json b/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_breeze.json new file mode 100644 index 000000000..fb8b11e66 --- /dev/null +++ b/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_breeze.json @@ -0,0 +1,3 @@ +{ + "parent": "item/template_spawn_egg" +} diff --git a/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_evoker.json b/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_evoker.json new file mode 100644 index 000000000..fb8b11e66 --- /dev/null +++ b/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_evoker.json @@ -0,0 +1,3 @@ +{ + "parent": "item/template_spawn_egg" +} diff --git a/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_strong_breeze.json b/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_strong_breeze.json new file mode 100644 index 000000000..fb8b11e66 --- /dev/null +++ b/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_strong_breeze.json @@ -0,0 +1,3 @@ +{ + "parent": "item/template_spawn_egg" +} diff --git a/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_weak_breeze.json b/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_weak_breeze.json new file mode 100644 index 000000000..fb8b11e66 --- /dev/null +++ b/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_weak_breeze.json @@ -0,0 +1,3 @@ +{ + "parent": "item/template_spawn_egg" +} diff --git a/src/main/resources/assets/occultism/models/item/spawn_egg/wild_horde_creeper.json b/src/main/resources/assets/occultism/models/item/spawn_egg/wild_horde_creeper.json new file mode 100644 index 000000000..fb8b11e66 --- /dev/null +++ b/src/main/resources/assets/occultism/models/item/spawn_egg/wild_horde_creeper.json @@ -0,0 +1,3 @@ +{ + "parent": "item/template_spawn_egg" +} diff --git a/src/main/resources/assets/occultism/models/item/spawn_egg/wild_horde_drowned.json b/src/main/resources/assets/occultism/models/item/spawn_egg/wild_horde_drowned.json new file mode 100644 index 000000000..fb8b11e66 --- /dev/null +++ b/src/main/resources/assets/occultism/models/item/spawn_egg/wild_horde_drowned.json @@ -0,0 +1,3 @@ +{ + "parent": "item/template_spawn_egg" +} diff --git a/src/main/resources/assets/occultism/models/item/spawn_egg/wild_horde_husk.json b/src/main/resources/assets/occultism/models/item/spawn_egg/wild_horde_husk.json new file mode 100644 index 000000000..fb8b11e66 --- /dev/null +++ b/src/main/resources/assets/occultism/models/item/spawn_egg/wild_horde_husk.json @@ -0,0 +1,3 @@ +{ + "parent": "item/template_spawn_egg" +} diff --git a/src/main/resources/assets/occultism/models/item/spawn_egg/wild_horde_silverfish.json b/src/main/resources/assets/occultism/models/item/spawn_egg/wild_horde_silverfish.json new file mode 100644 index 000000000..fb8b11e66 --- /dev/null +++ b/src/main/resources/assets/occultism/models/item/spawn_egg/wild_horde_silverfish.json @@ -0,0 +1,3 @@ +{ + "parent": "item/template_spawn_egg" +} diff --git a/src/main/resources/assets/occultism/textures/gui/book/allay.png b/src/main/resources/assets/occultism/textures/gui/book/allay.png new file mode 100644 index 000000000..cdf8c8b4b Binary files /dev/null and b/src/main/resources/assets/occultism/textures/gui/book/allay.png differ