diff --git a/src/generated/resources/assets/occultism/lang/en_us.json b/src/generated/resources/assets/occultism/lang/en_us.json index e12b3af03..fa4e02f13 100644 --- a/src/generated/resources/assets/occultism/lang/en_us.json +++ b/src/generated/resources/assets/occultism/lang/en_us.json @@ -492,19 +492,19 @@ "book.occultism.dictionary_of_spirits.pentacles.possess_afrit.intro.text": "**Purpose:** Afrit Possession\n\\\n\\\n**Abras' Commanding Conjure** is a modified version of [#](ad03fc)Abras' Conjure[#]() that allows possessing entities, and thus summoning familiars.\n", "book.occultism.dictionary_of_spirits.pentacles.possess_afrit.intro.title": "Abras' Commanding Conjure", "book.occultism.dictionary_of_spirits.pentacles.possess_afrit.name": "Abras' Commanding Conjure", - "book.occultism.dictionary_of_spirits.pentacles.possess_afrit.uses.text": "- [Guardian Familiar](entry://familiar_rituals/familiar_guardian)\n", + "book.occultism.dictionary_of_spirits.pentacles.possess_afrit.uses.text": "- [Guardian Familiar](entry://familiar_rituals/familiar_guardian)\n- [Possessed Shulker](entry://possession_rituals/possess_shulker)\n- [Possessed Elder Guardian](entry://possession_rituals/possess_elder_guardian)\n", "book.occultism.dictionary_of_spirits.pentacles.possess_afrit.uses.title": "Uses", "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.intro.text": "**Purpose:** Djinni Possession\n\\\n\\\n**Ihagan's Enthrallment** forces [#](ad03fc)Djinn[#]() to possess a nearby creature. This pentacle does not lead to permanent imprisonment, the spirit and possessed creature will perish within a short period of time.\n", "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.intro.title": "Ihagan's Enthrallment", "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.name": "Ihagan's Enthrallment", - "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.uses.text": "- [Possessed Enderman](entry://possession_rituals/possess_enderman)\n- [Possessed Ghast](entry://possession_rituals/possess_ghast)\n- [Drikwing Familiar](entry://familiar_rituals/familiar_otherworld_bird)\n- [Bat Familiar](entry://familiar_rituals/familiar_bat)\n- [Cthulhu Familiar](entry://familiar_rituals/familiar_cthulhu)\n- [Devil Familiar](entry://familiar_rituals/familiar_devil)\n- [Dragon Familiar](entry://familiar_rituals/familiar_dragon)\n- [Headless Ratman Familiar](entry://familiar_rituals/familiar_headless)\n- [Chimera Familiar](entry://familiar_rituals/familiar_chimera)\n- [Beholder Familiar](entry://familiar_rituals/familiar_beholder)\n", + "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.uses.text": "- [Possessed Enderman](entry://possession_rituals/possess_enderman)\n- [Possessed Ghast](entry://possession_rituals/possess_ghast)\n- [Possessed Weak Shulker](entry://possession_rituals/possess_weak_shulker)\n- [Drikwing Familiar](entry://familiar_rituals/familiar_otherworld_bird)\n- [Bat Familiar](entry://familiar_rituals/familiar_bat)\n- [Cthulhu Familiar](entry://familiar_rituals/familiar_cthulhu)\n- [Devil Familiar](entry://familiar_rituals/familiar_devil)\n- [Dragon Familiar](entry://familiar_rituals/familiar_dragon)\n- [Headless Ratman Familiar](entry://familiar_rituals/familiar_headless)\n- [Chimera Familiar](entry://familiar_rituals/familiar_chimera)\n", "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.uses.title": "Uses", - "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.uses2.text": "- [Fairy Familiar](entry://familiar_rituals/familiar_fairy)\n", + "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.uses2.text": "- [Beholder Familiar](entry://familiar_rituals/familiar_beholder)\n- [Fairy Familiar](entry://familiar_rituals/familiar_fairy)\n", "book.occultism.dictionary_of_spirits.pentacles.possess_djinni.uses2.title": "Uses", "book.occultism.dictionary_of_spirits.pentacles.possess_foliot.intro.text": "**Purpose:** Foliot Possession\n\\\n\\\n**Hedyrin's Lure** attracts [#](ad03fc)Foliot[#]() and forces them to possess a nearby creature. This pentacle does not lead to permanent imprisonment, the spirit and possessed creature will perish within a short period of time.\n", "book.occultism.dictionary_of_spirits.pentacles.possess_foliot.intro.title": "Hedyrin's Lure", "book.occultism.dictionary_of_spirits.pentacles.possess_foliot.name": "Hedyrin's Lure", - "book.occultism.dictionary_of_spirits.pentacles.possess_foliot.uses.text": "- [Possessed Endermite](entry://possession_rituals/possess_endermite)\n- [Possessed Skeleton](entry://possession_rituals/possess_skeleton)\n- [Parrot Familiar](entry://familiar_rituals/familiar_parrot)\n- [Greedy Familiar](entry://familiar_rituals/familiar_greedy)\n- [Deer Familiar](entry://familiar_rituals/familiar_deer)\n- [Blacksmith Familiar](entry://familiar_rituals/familiar_blacksmith)\n- [Beaver Familiar](entry://familiar_rituals/familiar_beaver)\n", + "book.occultism.dictionary_of_spirits.pentacles.possess_foliot.uses.text": "- [Possessed Endermite](entry://possession_rituals/possess_endermite)\n- [Possessed Skeleton](entry://possession_rituals/possess_skeleton)\n- [Possessed Phantom](entry://possession_rituals/possess_phantom)\n- [Parrot Familiar](entry://familiar_rituals/familiar_parrot)\n- [Greedy Familiar](entry://familiar_rituals/familiar_greedy)\n- [Deer Familiar](entry://familiar_rituals/familiar_deer)\n- [Blacksmith Familiar](entry://familiar_rituals/familiar_blacksmith)\n- [Beaver Familiar](entry://familiar_rituals/familiar_beaver)\n", "book.occultism.dictionary_of_spirits.pentacles.possess_foliot.uses.title": "Uses", "book.occultism.dictionary_of_spirits.pentacles.summon_afrit.intro.text": "**Purpose:** Summon an [#](ad03fc)Afrit[#]()\n\\\n\\\n**Abras' Conjure** is one of the few pentacles capable of (mostly) safely summoning an [#](ad03fc)Afrit[#](). While the requirement of a wither skeleton skull makes it comparatively expensive, the additional calling potential is required to reach these high-power spirits.\n", "book.occultism.dictionary_of_spirits.pentacles.summon_afrit.intro.title": "Abras' Conjure", @@ -540,6 +540,9 @@ "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_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", "book.occultism.dictionary_of_spirits.possession_rituals.possess_enderman.description.text": "In this ritual an [#](ad03fc)Enderman[#]() is spawned using the life energy of a [#](ad03fc)Pig[#]() and immediately possessed by the summoned [#](ad03fc)Djinni[#](). The [#](ad03fc)Possessed Enderman[#]() will always drop at least one [](item://minecraft:ender_pearl) when killed.\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_enderman.entity.text": "**Drops**: 1-3x [](item://minecraft:ender_pearl)\n", "book.occultism.dictionary_of_spirits.possession_rituals.possess_enderman.name": "Possessed Enderman", @@ -549,9 +552,18 @@ "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_phantom.description.text": "In this ritual a [#](ad03fc)Phantom[#]() is spawned using the life energy of a [#](ad03fc)Flying Passive Mob[#]() and immediately possessed by the summoned [#](ad03fc)Foliot[#](). The [#](ad03fc)Possessed Phantom[#]() will always drop at least one [](item://minecraft:phantom_membrane) when killed. Using this ritual is easy to trap the phantom and you can has comfy sleep.\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_phantom.entity.text": "**Drops**: 1-4x [](item://minecraft:phantom_membrane)\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_phantom.name": "Possessed Phantom", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_shulker.description.text": "In this ritual a [#](ad03fc)Shulker[#]() is spawned using the life energy of a [#](ad03fc)Cube Mob[#]() and immediately possessed by the summoned [#](ad03fc)Afrit[#](). The [#](ad03fc)Possessed Shulker[#]() will always drop at least one [](item://minecraft:shulker_shell) when killed. You can use vanilla shulker multiplication to get normal shulkers but their have less chance to drop shells.\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_shulker.entity.text": "**Drops**: 1-2x [](item://minecraft:shulker_shell);\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_shulker.name": "Possessed Shulker", "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_weak_shulker.description.text": "In this ritual a [#](ad03fc)Shulker[#]() is spawned using the life energy of a [#](ad03fc)Cube Mob[#]() and immediately possessed by the summoned [#](ad03fc)Djinni[#](). The [#](ad03fc)Possessed Weak Shulker[#]() will always drop at least one [](item://minecraft:chorus_fruit) when killed and as a chance to drop [](item://minecraft:shulker_shell). You can use vanilla shulker multiplication to get normal shulkers with more chance to drop their shells.\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_weak_shulker.entity.text": "**Drops**: 1-3x [](item://minecraft:chorus_fruit);\nand as 10% to drop a [](item://minecraft:shulker_shell);\n", + "book.occultism.dictionary_of_spirits.possession_rituals.possess_weak_shulker.name": "Possessed Weak Shulker", "book.occultism.dictionary_of_spirits.possession_rituals.return_to_rituals.name": "Return to Rituals Category", "book.occultism.dictionary_of_spirits.rituals.crafting_rituals.name": "Binding Rituals", "book.occultism.dictionary_of_spirits.rituals.familiar_rituals.name": "Familiar Rituals", @@ -769,10 +781,14 @@ "entity.occultism.marid": "Marid", "entity.occultism.mummy_familiar": "Mummy Familiar", "entity.occultism.otherworld_bird": "Drikwing", + "entity.occultism.possessed_elder_guardian": "Possessed Elder Guardian", "entity.occultism.possessed_enderman": "Possessed Enderman", "entity.occultism.possessed_endermite": "Possessed Endermite", "entity.occultism.possessed_ghast": "Possessed Ghast", + "entity.occultism.possessed_phantom": "Possessed Phantom", + "entity.occultism.possessed_shulker": "Possessed Shulker", "entity.occultism.possessed_skeleton": "Possessed Skeleton", + "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", @@ -1012,14 +1028,22 @@ "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_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", "item.occultism.ritual_dummy.possess_enderman.tooltip": "The possessed Enderman will always drop at least one ender pearl when killed.", "item.occultism.ritual_dummy.possess_endermite": "Ritual: Summon Possessed Endermite", "item.occultism.ritual_dummy.possess_endermite.tooltip": "The possessed Endermite drops End Stone.", "item.occultism.ritual_dummy.possess_ghast": "Ritual: Summon Possessed Ghast", "item.occultism.ritual_dummy.possess_ghast.tooltip": "The possessed Ghast will always drop at least one ghast tear when killed.", + "item.occultism.ritual_dummy.possess_phantom": "Ritual: Summon Possessed Phantom", + "item.occultism.ritual_dummy.possess_phantom.tooltip": "The possessed Phantom will always drop at least one phantom membrane when killed and is easy to trap.", + "item.occultism.ritual_dummy.possess_shulker": "Ritual: Summon Possessed Shulker", + "item.occultism.ritual_dummy.possess_shulker.tooltip": "The possessed shulker will always drop at least one shulker shell when killed.", "item.occultism.ritual_dummy.possess_skeleton": "Ritual: Summon Possessed Skeleton", "item.occultism.ritual_dummy.possess_skeleton.tooltip": " The possessed Skeleton is immune to daylight and always drop at least one Skeleton Skull when killed.", + "item.occultism.ritual_dummy.possess_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.summon_afrit_crusher": "Ritual: Summon Afrit Crusher", "item.occultism.ritual_dummy.summon_afrit_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 tier crushers.", "item.occultism.ritual_dummy.summon_afrit_rain_weather": "Ritual: Rainy Weather", @@ -1091,9 +1115,14 @@ "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_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_ghast": "Possessed Ghast 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_weak_shulker": "Possessed Weak Shulker 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", @@ -1374,6 +1403,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_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.", + "ritual.occultism.possess_elder_guardian.started": "Started summoning possessed elder_guardian.", "ritual.occultism.possess_enderman.conditions": "Not all requirements for this ritual are met.", "ritual.occultism.possess_enderman.finished": "Summoned possessed enderman successfully.", "ritual.occultism.possess_enderman.interrupted": "Summoning of possessed enderman interrupted.", @@ -1386,14 +1419,29 @@ "ritual.occultism.possess_ghast.finished": "Summoned possessed ghast successfully.", "ritual.occultism.possess_ghast.interrupted": "Summoning of possessed ghast interrupted.", "ritual.occultism.possess_ghast.started": "Started summoning possessed ghast.", + "ritual.occultism.possess_phantom.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.possess_phantom.finished": "Summoned possessed phantom successfully.", + "ritual.occultism.possess_phantom.interrupted": "Summoning of possessed phantom interrupted.", + "ritual.occultism.possess_phantom.started": "Started summoning possessed phantom.", + "ritual.occultism.possess_shulker.conditions": "Not all requirements for this ritual are met.", + "ritual.occultism.possess_shulker.finished": "Summoned possessed shulker successfully.", + "ritual.occultism.possess_shulker.interrupted": "Summoning of possessed shulker interrupted.", + "ritual.occultism.possess_shulker.started": "Started summoning possessed shulker.", "ritual.occultism.possess_skeleton.conditions": "Not all requirements for this ritual are met.", "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_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.ritual_help": "§lInvalid ritual!§r\nWere you trying to perform ritual: \"%s\"? Missing items:\n%s", "ritual.occultism.sacrifice.bats": "Bat", "ritual.occultism.sacrifice.chicken": "Chicken", "ritual.occultism.sacrifice.cows": "Cow", + "ritual.occultism.sacrifice.cubemob": "Slime or Magma Cube", + "ritual.occultism.sacrifice.fishs": "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.llamas": "Llama", diff --git a/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_elder_guardian.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_elder_guardian.json new file mode 100644 index 000000000..1a5442cc2 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_elder_guardian.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_phantom.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_phantom.json new file mode 100644 index 000000000..1a5442cc2 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_phantom.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_shulker.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_shulker.json new file mode 100644 index 000000000..1a5442cc2 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_shulker.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_shulker.json b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_weak_shulker.json new file mode 100644 index 000000000..1a5442cc2 --- /dev/null +++ b/src/generated/resources/assets/occultism/models/item/ritual_dummy/possess_weak_shulker.json @@ -0,0 +1,3 @@ +{ + "parent": "occultism:item/ritual_dummy" +} \ No newline at end of file diff --git a/src/generated/resources/data/occultism/loot_tables/entities/possessed_phantom.json b/src/generated/resources/data/occultism/loot_tables/entities/possessed_phantom.json new file mode 100644 index 000000000..3ec052da5 --- /dev/null +++ b/src/generated/resources/data/occultism/loot_tables/entities/possessed_phantom.json @@ -0,0 +1,35 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "minecraft:phantom_membrane" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "occultism:entities/possessed_phantom" +} \ 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 new file mode 100644 index 000000000..9b080a14d --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_elder_guardian.json @@ -0,0 +1,51 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "occultism:possession_rituals", + "condition": { + "type": "modonomicon:true" + }, + "description": "", + "hide_while_locked": false, + "icon": "minecraft:heart_of_the_sea", + "name": "book.occultism.dictionary_of_spirits.possession_rituals.possess_elder_guardian.name", + "pages": [ + { + "type": "modonomicon:entity", + "anchor": "", + "default_rotation": -45.0, + "entity_id": "occultism:possessed_elder_guardian", + "name": "", + "offset": 0.0, + "rotate": true, + "scale": 0.5, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_elder_guardian.entity.text" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "recipe_id_1": "occultism:ritual/possess_elder_guardian", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_elder_guardian.description.text", + "title": "", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "occultism:possession_rituals/overview", + "line_enabled": true, + "line_reversed": false + } + ], + "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/possess_phantom.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_phantom.json new file mode 100644 index 000000000..24b731e5d --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_phantom.json @@ -0,0 +1,51 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "occultism:possession_rituals", + "condition": { + "type": "modonomicon:true" + }, + "description": "", + "hide_while_locked": false, + "icon": "minecraft:phantom_membrane", + "name": "book.occultism.dictionary_of_spirits.possession_rituals.possess_phantom.name", + "pages": [ + { + "type": "modonomicon:entity", + "anchor": "", + "default_rotation": -45.0, + "entity_id": "occultism:possessed_phantom", + "name": "", + "offset": 0.0, + "rotate": true, + "scale": 0.5, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_phantom.entity.text" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "recipe_id_1": "occultism:ritual/possess_phantom", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_phantom.description.text", + "title": "", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "occultism:possession_rituals/overview", + "line_enabled": true, + "line_reversed": false + } + ], + "x": 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_shulker.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_shulker.json new file mode 100644 index 000000000..5c4b5ea3e --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_shulker.json @@ -0,0 +1,51 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "occultism:possession_rituals", + "condition": { + "type": "modonomicon:true" + }, + "description": "", + "hide_while_locked": false, + "icon": "minecraft:shulker_shell", + "name": "book.occultism.dictionary_of_spirits.possession_rituals.possess_shulker.name", + "pages": [ + { + "type": "modonomicon:entity", + "anchor": "", + "default_rotation": -45.0, + "entity_id": "occultism:possessed_shulker", + "name": "", + "offset": 0.0, + "rotate": true, + "scale": 0.5, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_shulker.entity.text" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "recipe_id_1": "occultism:ritual/possess_shulker", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_shulker.description.text", + "title": "", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "occultism:possession_rituals/overview", + "line_enabled": true, + "line_reversed": false + } + ], + "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/possess_weak_shulker.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_weak_shulker.json new file mode 100644 index 000000000..776ca8249 --- /dev/null +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/possession_rituals/possess_weak_shulker.json @@ -0,0 +1,51 @@ +{ + "background_u_index": 0, + "background_v_index": 0, + "category": "occultism:possession_rituals", + "condition": { + "type": "modonomicon:true" + }, + "description": "", + "hide_while_locked": false, + "icon": "minecraft:chorus_fruit", + "name": "book.occultism.dictionary_of_spirits.possession_rituals.possess_weak_shulker.name", + "pages": [ + { + "type": "modonomicon:entity", + "anchor": "", + "default_rotation": -45.0, + "entity_id": "occultism:possessed_weak_shulker", + "name": "", + "offset": 0.0, + "rotate": true, + "scale": 0.5, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_weak_shulker.entity.text" + }, + { + "type": "occultism:ritual_recipe", + "anchor": "", + "recipe_id_1": "occultism:ritual/possess_weak_shulker", + "text": "", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:text", + "anchor": "", + "show_title_separator": true, + "text": "book.occultism.dictionary_of_spirits.possession_rituals.possess_weak_shulker.description.text", + "title": "", + "use_markdown_in_title": false + } + ], + "parents": [ + { + "draw_arrow": true, + "entry": "occultism:possession_rituals/overview", + "line_enabled": true, + "line_reversed": false + } + ], + "x": 0, + "y": 1 +} \ 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 0d4bf2fc3..d9b0b10ae 100644 --- a/src/main/java/com/klikli_dev/occultism/Occultism.java +++ b/src/main/java/com/klikli_dev/occultism/Occultism.java @@ -26,10 +26,7 @@ import com.klikli_dev.occultism.client.render.ThirdEyeEffectRenderer; import com.klikli_dev.occultism.common.DebugHelper; import com.klikli_dev.occultism.common.entity.familiar.*; -import com.klikli_dev.occultism.common.entity.possessed.PossessedEndermanEntity; -import com.klikli_dev.occultism.common.entity.possessed.PossessedEndermiteEntity; -import com.klikli_dev.occultism.common.entity.possessed.PossessedGhastEntity; -import com.klikli_dev.occultism.common.entity.possessed.PossessedSkeletonEntity; +import com.klikli_dev.occultism.common.entity.possessed.*; import com.klikli_dev.occultism.common.entity.spirit.*; import com.klikli_dev.occultism.config.OccultismClientConfig; import com.klikli_dev.occultism.config.OccultismCommonConfig; @@ -134,6 +131,10 @@ private void onEntityAttributeCreation(final EntityAttributeCreationEvent event) event.put(OccultismEntities.POSSESSED_SKELETON_TYPE.get(), PossessedSkeletonEntity.createAttributes().build()); event.put(OccultismEntities.POSSESSED_ENDERMAN_TYPE.get(), PossessedEndermanEntity.createAttributes().build()); event.put(OccultismEntities.POSSESSED_GHAST_TYPE.get(), PossessedGhastEntity.createAttributes().build()); + event.put(OccultismEntities.POSSESSED_PHANTOM_TYPE.get(), PossessedPhantomEntity.createAttributes().build()); + event.put(OccultismEntities.POSSESSED_WEAK_SHULKER_TYPE.get(), PossessedWeakShulkerEntity.createAttributes().build()); + event.put(OccultismEntities.POSSESSED_SHULKER_TYPE.get(), PossessedShulkerEntity.createAttributes().build()); + event.put(OccultismEntities.POSSESSED_ELDER_GUARDIAN_TYPE.get(), PossessedElderGuardianEntity.createAttributes().build()); event.put(OccultismEntities.WILD_HUNT_SKELETON_TYPE.get(), WildHuntSkeletonEntity.createAttributes().build()); event.put(OccultismEntities.WILD_HUNT_WITHER_SKELETON_TYPE.get(), WildHuntWitherSkeletonEntity.createAttributes().build()); event.put(OccultismEntities.OTHERWORLD_BIRD_TYPE.get(), OtherworldBirdEntity.createAttributes().build()); diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedElderGuardianEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedElderGuardianEntity.java new file mode 100644 index 000000000..b328eb89c --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedElderGuardianEntity.java @@ -0,0 +1,49 @@ +/* + * MIT License + * + * Copyright 2020 klikli-dev + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and + * associated documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT + * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.klikli_dev.occultism.common.entity.possessed; + +import 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.ElderGuardian; +import net.minecraft.world.level.Level; + +public class PossessedElderGuardianEntity extends ElderGuardian { + + public PossessedElderGuardianEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return ElderGuardian.createAttributes() + .add(Attributes.MAX_HEALTH, 160.0); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + //endregion Static Methods +} diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedPhantomEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedPhantomEntity.java new file mode 100644 index 000000000..f2e082e87 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedPhantomEntity.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; + +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.monster.Phantom; +import net.minecraft.world.entity.monster.Zombie; +import net.minecraft.world.level.Level; + +public class PossessedPhantomEntity extends Phantom { + + public PossessedPhantomEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Zombie.createAttributes(); + } + + @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/PossessedShulkerEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedShulkerEntity.java new file mode 100644 index 000000000..e8c145c94 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedShulkerEntity.java @@ -0,0 +1,49 @@ +/* + * MIT License + * + * Copyright 2020 klikli-dev + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and + * associated documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT + * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.klikli_dev.occultism.common.entity.possessed; + +import 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.Shulker; +import net.minecraft.world.level.Level; + +public class PossessedShulkerEntity extends Shulker { + + public PossessedShulkerEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Shulker.createAttributes() + .add(Attributes.MAX_HEALTH, 40.0); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + //endregion Static Methods +} diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedWeakShulkerEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedWeakShulkerEntity.java new file mode 100644 index 000000000..dd29f28c0 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/common/entity/possessed/PossessedWeakShulkerEntity.java @@ -0,0 +1,49 @@ +/* + * MIT License + * + * Copyright 2020 klikli-dev + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and + * associated documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT + * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.klikli_dev.occultism.common.entity.possessed; + +import 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.Shulker; +import net.minecraft.world.level.Level; + +public class PossessedWeakShulkerEntity extends Shulker { + + public PossessedWeakShulkerEntity(EntityType type, + Level worldIn) { + super(type, worldIn); + } + + //region Static Methods + public static AttributeSupplier.Builder createAttributes() { + return Shulker.createAttributes() + .add(Attributes.MAX_HEALTH, 10.0); + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + //endregion Static Methods +} 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 202edf517..f8cdc1f1f 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/OccultismBookProvider.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/OccultismBookProvider.java @@ -4633,9 +4633,9 @@ private BookCategoryModel makePossessionRitualsSubcategory() { "___________________________", "___________________________", "___________________________", - "_______D_E_A_______________", + "_______D_E_A_I_L___________", "___r_o_____________________", - "_______F_G_H_______________", + "_______F_G_H_J_K___________", "___________________________", "___________________________", "___________________________" @@ -4654,6 +4654,14 @@ private BookCategoryModel makePossessionRitualsSubcategory() { possessGhast.withParent(BookEntryParentModel.create(overview.getId())); var possessSkeleton = this.makePossessSkeletonEntry(entryMap, 'G'); possessSkeleton.withParent(BookEntryParentModel.create(overview.getId())); + var possessPhantom = this.makePossessPhantomEntry(entryMap, 'I'); + possessPhantom.withParent(BookEntryParentModel.create(overview.getId())); + var possessWeakShulker = this.makePossessWeakShulkerEntry(entryMap, 'J'); + possessWeakShulker.withParent(BookEntryParentModel.create(overview.getId())); + var possessShulker = this.makePossessShulkerEntry(entryMap, 'K'); + possessShulker.withParent(BookEntryParentModel.create(overview.getId())); + var possessElderGuardian = this.makePossessElderGuardianEntry(entryMap, 'L'); + possessElderGuardian.withParent(BookEntryParentModel.create(overview.getId())); this.context().category("summoning_rituals"); //re-use the entries from the summoning rituals category var possessWitherSkeleton = this.makeWitherSkullEntry(entryMap, 'H'); @@ -4668,6 +4676,10 @@ private BookCategoryModel makePossessionRitualsSubcategory() { possessEndermite.withCondition(BookTrueConditionModel.builder().build()); possessGhast.withCondition(BookTrueConditionModel.builder().build()); possessSkeleton.withCondition(BookTrueConditionModel.builder().build()); + possessPhantom.withCondition(BookTrueConditionModel.builder().build()); + possessWeakShulker.withCondition(BookTrueConditionModel.builder().build()); + possessShulker.withCondition(BookTrueConditionModel.builder().build()); + possessElderGuardian.withCondition(BookTrueConditionModel.builder().build()); possessWitherSkeleton.withCondition(BookTrueConditionModel.builder().build()); afritEssence.withCondition(BookTrueConditionModel.builder().build()); @@ -4681,6 +4693,10 @@ private BookCategoryModel makePossessionRitualsSubcategory() { possessEndermite, possessGhast, possessSkeleton, + possessPhantom, + possessWeakShulker, + possessShulker, + possessElderGuardian, possessWitherSkeleton, afritEssence ); @@ -4830,6 +4846,165 @@ private BookEntryModel makePossessSkeletonEntry(CategoryEntryMap entryMap, char description ); } + + private BookEntryModel makePossessPhantomEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("possess_phantom"); + this.lang.add(this.context().entryName(), "Possessed Phantom"); + + this.context().page("entity"); + var entity = BookEntityPageModel.builder() + .withEntityId("occultism:possessed_phantom") + .withScale(0.5f) + .withText(this.context().pageText()) + .build(); + this.lang.add(this.context().pageText(), + """ + **Drops**: 1-4x [](item://minecraft:phantom_membrane) + """); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.builder() + .withRecipeId1(this.modLoc("ritual/possess_phantom")) + .build(); + + this.context().page("description"); + var description = BookTextPageModel.builder() + .withText(this.context().pageText()) + .build(); + this.lang.add(this.context().pageText(), + """ + In this ritual a [#](%1$s)Phantom[#]() is spawned using the life energy of a [#](%1$s)Flying Passive Mob[#]() and immediately possessed by the summoned [#](%1$s)Foliot[#](). The [#](%1$s)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. + """.formatted(COLOR_PURPLE)); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(ForgeRegistries.ITEMS.getKey(Items.PHANTOM_MEMBRANE).toString()) + .withLocation(entryMap.get(icon)) + .withPages( + entity, + ritual, + description + ); + } + + private BookEntryModel makePossessWeakShulkerEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("possess_weak_shulker"); + this.lang.add(this.context().entryName(), "Possessed Weak Shulker"); + + this.context().page("entity"); + var entity = BookEntityPageModel.builder() + .withEntityId("occultism:possessed_weak_shulker") + .withScale(0.5f) + .withText(this.context().pageText()) + .build(); + this.lang.add(this.context().pageText(), + """ + **Drops**: 1-3x [](item://minecraft:chorus_fruit); + and as 10% to drop a [](item://minecraft:shulker_shell); + """); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.builder() + .withRecipeId1(this.modLoc("ritual/possess_weak_shulker")) + .build(); + + this.context().page("description"); + var description = BookTextPageModel.builder() + .withText(this.context().pageText()) + .build(); + this.lang.add(this.context().pageText(), + """ + In this ritual a [#](%1$s)Shulker[#]() is spawned using the life energy of a [#](%1$s)Cube Mob[#]() and immediately possessed by the summoned [#](%1$s)Djinni[#](). The [#](%1$s)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. + """.formatted(COLOR_PURPLE)); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(ForgeRegistries.ITEMS.getKey(Items.CHORUS_FRUIT).toString()) + .withLocation(entryMap.get(icon)) + .withPages( + entity, + ritual, + description + ); + } + + private BookEntryModel makePossessShulkerEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("possess_shulker"); + this.lang.add(this.context().entryName(), "Possessed Shulker"); + + this.context().page("entity"); + var entity = BookEntityPageModel.builder() + .withEntityId("occultism:possessed_shulker") + .withScale(0.5f) + .withText(this.context().pageText()) + .build(); + this.lang.add(this.context().pageText(), + """ + **Drops**: 1-2x [](item://minecraft:shulker_shell); + """); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.builder() + .withRecipeId1(this.modLoc("ritual/possess_shulker")) + .build(); + + this.context().page("description"); + var description = BookTextPageModel.builder() + .withText(this.context().pageText()) + .build(); + this.lang.add(this.context().pageText(), + """ + In this ritual a [#](%1$s)Shulker[#]() is spawned using the life energy of a [#](%1$s)Cube Mob[#]() and immediately possessed by the summoned [#](%1$s)Afrit[#](). The [#](%1$s)Possessed Shulker[#]() will always drop at least one [](item://minecraft:shulker_shell) when killed. You can use vanilla shulker multiplication to get normal shulkers but their have less chance to drop shells. + """.formatted(COLOR_PURPLE)); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(ForgeRegistries.ITEMS.getKey(Items.SHULKER_SHELL).toString()) + .withLocation(entryMap.get(icon)) + .withPages( + entity, + ritual, + description + ); + } + + private BookEntryModel makePossessElderGuardianEntry(CategoryEntryMap entryMap, char icon) { + this.context().entry("possess_elder_guardian"); + this.lang.add(this.context().entryName(), "Possessed Elder Guardian"); + + this.context().page("entity"); + var entity = BookEntityPageModel.builder() + .withEntityId("occultism:possessed_elder_guardian") + .withScale(0.5f) + .withText(this.context().pageText()) + .build(); + this.lang.add(this.context().pageText(), + """ + **Drops**: 2-4x [](item://minecraft:nautilus_shell); + and as 40% to drop a [](item://minecraft:heart_of_the_sea); + Also commom Elder Guardian loot; + """); + + this.context().page("ritual"); + var ritual = BookRitualRecipePageModel.builder() + .withRecipeId1(this.modLoc("ritual/possess_elder_guardian")) + .build(); + + this.context().page("description"); + var description = BookTextPageModel.builder() + .withText(this.context().pageText()) + .build(); + this.lang.add(this.context().pageText(), + """ + In this ritual a [#](%1$s)Elder Guardian[#]() is spawned using the life energy of a [#](%1$s)Fish[#]() and immediately possessed by the summoned [#](%1$s)Afrit[#](). The [#](%1$s)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. + """.formatted(COLOR_PURPLE)); + + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) + .withIcon(ForgeRegistries.ITEMS.getKey(Items.HEART_OF_THE_SEA).toString()) + .withLocation(entryMap.get(icon)) + .withPages( + entity, + ritual, + description + ); + } //endregion //region Familiar 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 6dfc2463a..bffaaccc7 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 @@ -222,6 +222,11 @@ private void addItems() { this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_ENDERMITE, "Possessed Endermite Spawn Egg"); this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_SKELETON, "Possessed Skeleton Spawn Egg"); this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_ENDERMAN, "Possessed Enderman Spawn Egg"); + this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_GHAST, "Possessed Ghast Spawn Egg"); + this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_PHANTOM, "Possessed Phantom Spawn Egg"); + this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_WEAK_SHULKER, "Possessed Weak Shulker Spawn Egg"); + this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_SHULKER, "Possessed Shulker Spawn Egg"); + this.addItem(OccultismItems.SPAWN_EGG_POSSESSED_ELDER_GUARDIAN, "Possessed Elder Guardian Spawn Egg"); this.addItem(OccultismItems.SPAWN_EGG_WILD_HUNT_SKELETON, "Wild Hunt Skeleton Spawn Egg"); this.addItem(OccultismItems.SPAWN_EGG_WILD_HUNT_WITHER_SKELETON, "Wild Hunt Wither Skeleton Spawn Egg"); this.addItem(OccultismItems.SPAWN_EGG_OTHERWORLD_BIRD, "Drikwing Spawn Egg"); @@ -302,6 +307,10 @@ private void addEntities() { this.addEntityType(OccultismEntities.POSSESSED_SKELETON, "Possessed Skeleton"); this.addEntityType(OccultismEntities.POSSESSED_ENDERMAN, "Possessed Enderman"); this.addEntityType(OccultismEntities.POSSESSED_GHAST, "Possessed Ghast"); + this.addEntityType(OccultismEntities.POSSESSED_PHANTOM, "Possessed Phantom"); + this.addEntityType(OccultismEntities.POSSESSED_WEAK_SHULKER, "Possessed Weak Shulker"); + this.addEntityType(OccultismEntities.POSSESSED_SHULKER, "Possessed Shulker"); + this.addEntityType(OccultismEntities.POSSESSED_ELDER_GUARDIAN, "Possessed Elder Guardian"); this.addEntityType(OccultismEntities.WILD_HUNT_SKELETON, "Wild Hunt Skeleton"); this.addEntityType(OccultismEntities.WILD_HUNT_WITHER_SKELETON, "Wild Hunt Wither Skeleton"); this.addEntityType(OccultismEntities.OTHERWORLD_BIRD, "Drikwing"); @@ -388,6 +397,9 @@ private void addMiscTranslations() { this.add("ritual.occultism.sacrifice.llamas", "Llama"); this.add("ritual.occultism.sacrifice.snow_golem", "Snow 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.fishs", "Any Fish"); //Network Message this.add("network.messages.occultism.request_order.order_received", "Order received!"); @@ -623,6 +635,22 @@ private void addRitualMessages() { this.add("ritual.occultism.possess_ghast.started", "Started summoning possessed ghast."); this.add("ritual.occultism.possess_ghast.finished", "Summoned possessed ghast successfully."); this.add("ritual.occultism.possess_ghast.interrupted", "Summoning of possessed ghast interrupted."); + this.add("ritual.occultism.possess_phantom.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.possess_phantom.started", "Started summoning possessed phantom."); + 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_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."); + this.add("ritual.occultism.possess_shulker.interrupted", "Summoning of possessed shulker interrupted."); + this.add("ritual.occultism.possess_elder_guardian.conditions", "Not all requirements for this ritual are met."); + this.add("ritual.occultism.possess_elder_guardian.started", "Started summoning possessed elder_guardian."); + this.add("ritual.occultism.possess_elder_guardian.finished", "Summoned possessed elder_guardian successfully."); + this.add("ritual.occultism.possess_elder_guardian.interrupted", "Summoning of possessed elder_guardian interrupted."); this.add("ritual.occultism.familiar_otherworld_bird.conditions", "Not all requirements for this ritual are met."); this.add("ritual.occultism.familiar_otherworld_bird.started", "Started summoning drikwing familiar."); this.add("ritual.occultism.familiar_otherworld_bird.finished", "Summoned drikwing familiar successfully."); @@ -1095,6 +1123,7 @@ Now it is time to place the ingredients you see on the next page in the (regular """ - [Possessed Endermite](entry://possession_rituals/possess_endermite) - [Possessed Skeleton](entry://possession_rituals/possess_skeleton) + - [Possessed Phantom](entry://possession_rituals/possess_phantom) - [Parrot Familiar](entry://familiar_rituals/familiar_parrot) - [Greedy Familiar](entry://familiar_rituals/familiar_greedy) - [Deer Familiar](entry://familiar_rituals/familiar_deer) @@ -1123,6 +1152,7 @@ Now it is time to place the ingredients you see on the next page in the (regular """ - [Possessed Enderman](entry://possession_rituals/possess_enderman) - [Possessed Ghast](entry://possession_rituals/possess_ghast) + - [Possessed Weak Shulker](entry://possession_rituals/possess_weak_shulker) - [Drikwing Familiar](entry://familiar_rituals/familiar_otherworld_bird) - [Bat Familiar](entry://familiar_rituals/familiar_bat) - [Cthulhu Familiar](entry://familiar_rituals/familiar_cthulhu) @@ -1130,13 +1160,13 @@ Now it is time to place the ingredients you see on the next page in the (regular - [Dragon Familiar](entry://familiar_rituals/familiar_dragon) - [Headless Ratman Familiar](entry://familiar_rituals/familiar_headless) - [Chimera Familiar](entry://familiar_rituals/familiar_chimera) - - [Beholder Familiar](entry://familiar_rituals/familiar_beholder) """.formatted(COLOR_PURPLE)); helper.page("uses2"); this.add(helper.pageTitle(), "Uses"); this.add(helper.pageText(), """ + - [Beholder Familiar](entry://familiar_rituals/familiar_beholder) - [Fairy Familiar](entry://familiar_rituals/familiar_fairy) """.formatted(COLOR_PURPLE)); @@ -1160,6 +1190,8 @@ Now it is time to place the ingredients you see on the next page in the (regular this.add(helper.pageText(), """ - [Guardian Familiar](entry://familiar_rituals/familiar_guardian) + - [Possessed Shulker](entry://possession_rituals/possess_shulker) + - [Possessed Elder Guardian](entry://possession_rituals/possess_elder_guardian) """.formatted(COLOR_PURPLE)); helper.entry("craft_foliot"); @@ -2882,6 +2914,14 @@ private void addRitualDummies() { this.add("item.occultism.ritual_dummy.possess_skeleton.tooltip", " The possessed Skeleton is immune to daylight and always drop at least one Skeleton Skull when killed."); this.add("item.occultism.ritual_dummy.possess_ghast", "Ritual: Summon Possessed Ghast"); this.add("item.occultism.ritual_dummy.possess_ghast.tooltip", "The possessed Ghast will always drop at least one ghast tear when killed."); + this.add("item.occultism.ritual_dummy.possess_phantom", "Ritual: Summon Possessed Phantom"); + this.add("item.occultism.ritual_dummy.possess_phantom.tooltip", "The possessed Phantom will always drop at least one phantom membrane when killed and is easy to trap."); + this.add("item.occultism.ritual_dummy.possess_weak_shulker", "Ritual: Summon Possessed Weak Shulker"); + this.add("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."); + this.add("item.occultism.ritual_dummy.possess_shulker", "Ritual: Summon Possessed Shulker"); + this.add("item.occultism.ritual_dummy.possess_shulker.tooltip", "The possessed shulker will always drop at least one shulker shell when killed."); + this.add("item.occultism.ritual_dummy.possess_elder_guardian", "Ritual: Summon Possessed Elder Guardian"); + this.add("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."); this.add("item.occultism.ritual_dummy.summon_afrit_rain_weather", "Ritual: Rainy Weather"); this.add("item.occultism.ritual_dummy.summon_afrit_rain_weather.tooltip", "Summons an bound Afrit that creates rain."); this.add("item.occultism.ritual_dummy.summon_afrit_thunder_weather", "Ritual: Thunderstorm"); 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 be520eb24..e2250ce66 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 @@ -68,6 +68,15 @@ public void generate() { .apply( LootingEnchantFunction.lootingMultiplier(UniformGenerator.between(0.0F, 1.0F)))))); + //Guaranteed phantom membrane drop for phantom + this.add(OccultismEntities.POSSESSED_PHANTOM_TYPE.get(), + LootTable.lootTable().withPool( + LootPool.lootPool().setRolls(ConstantValue.exactly(1)) + .add(LootItem.lootTableItem(Items.PHANTOM_MEMBRANE) + .apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0f, 4.0F))) + .apply(LootingEnchantFunction.lootingMultiplier( + UniformGenerator.between(0.0F, 1.0F)))))); + //Essence drop from wild afrit this.add(OccultismEntities.AFRIT_WILD_TYPE.get(), LootTable.lootTable().withPool( 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 e919c9e92..d9e0cc3d9 100644 --- a/src/main/java/com/klikli_dev/occultism/handlers/ClientSetupEventHandler.java +++ b/src/main/java/com/klikli_dev/occultism/handlers/ClientSetupEventHandler.java @@ -136,9 +136,12 @@ public static void onRegisterEntityRenderers(EntityRenderersEvent.RegisterRender event.registerEntityRenderer(OccultismEntities.POSSESSED_SKELETON.get(), SkeletonRenderer::new); event.registerEntityRenderer(OccultismEntities.POSSESSED_ENDERMAN.get(), EndermanRenderer::new); event.registerEntityRenderer(OccultismEntities.POSSESSED_GHAST.get(), GhastRenderer::new); + event.registerEntityRenderer(OccultismEntities.POSSESSED_PHANTOM.get(), PhantomRenderer::new); + event.registerEntityRenderer(OccultismEntities.POSSESSED_WEAK_SHULKER.get(), ShulkerRenderer::new); + event.registerEntityRenderer(OccultismEntities.POSSESSED_SHULKER.get(), ShulkerRenderer::new); + event.registerEntityRenderer(OccultismEntities.POSSESSED_ELDER_GUARDIAN.get(), ElderGuardianRenderer::new); event.registerEntityRenderer(OccultismEntities.WILD_HUNT_SKELETON.get(), SkeletonRenderer::new); - event.registerEntityRenderer(OccultismEntities.WILD_HUNT_WITHER_SKELETON.get(), - WitherSkeletonRenderer::new); + event.registerEntityRenderer(OccultismEntities.WILD_HUNT_WITHER_SKELETON.get(), WitherSkeletonRenderer::new); event.registerEntityRenderer(OccultismEntities.OTHERWORLD_BIRD.get(), OtherworldBirdRenderer::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 bd0286323..6d6219455 100644 --- a/src/main/java/com/klikli_dev/occultism/registry/OccultismEntities.java +++ b/src/main/java/com/klikli_dev/occultism/registry/OccultismEntities.java @@ -24,10 +24,7 @@ import com.klikli_dev.occultism.Occultism; import com.klikli_dev.occultism.common.entity.familiar.*; -import com.klikli_dev.occultism.common.entity.possessed.PossessedEndermanEntity; -import com.klikli_dev.occultism.common.entity.possessed.PossessedEndermiteEntity; -import com.klikli_dev.occultism.common.entity.possessed.PossessedGhastEntity; -import com.klikli_dev.occultism.common.entity.possessed.PossessedSkeletonEntity; +import com.klikli_dev.occultism.common.entity.possessed.*; import com.klikli_dev.occultism.common.entity.spirit.*; import com.klikli_dev.occultism.util.StaticUtil; import net.minecraft.world.entity.EntityType; @@ -92,7 +89,30 @@ public class OccultismEntities { .sized(4.0F, 4.0F) .clientTrackingRange(10) .build(StaticUtil.modLoc("possessed_ghast").toString())); - + public static final NonNullLazy> POSSESSED_PHANTOM_TYPE = + NonNullLazy.of(() -> EntityType.Builder.of(PossessedPhantomEntity::new, MobCategory.MONSTER) + .fireImmune() + .sized(0.9F, 0.5F) + .clientTrackingRange(16) + .build(StaticUtil.modLoc("possessed_phantom").toString())); + public static final NonNullLazy> POSSESSED_WEAK_SHULKER_TYPE = + NonNullLazy.of(() -> EntityType.Builder.of(PossessedWeakShulkerEntity::new, MobCategory.MONSTER) + .fireImmune() + .sized(1F, 1F) + .clientTrackingRange(8) + .build(StaticUtil.modLoc("possessed_weak_shulker").toString())); + public static final NonNullLazy> POSSESSED_SHULKER_TYPE = + NonNullLazy.of(() -> EntityType.Builder.of(PossessedShulkerEntity::new, MobCategory.MONSTER) + .fireImmune() + .sized(1F, 1F) + .clientTrackingRange(8) + .build(StaticUtil.modLoc("possessed_shulker").toString())); + public static final NonNullLazy> POSSESSED_ELDER_GUARDIAN_TYPE = + NonNullLazy.of(() -> EntityType.Builder.of(PossessedElderGuardianEntity::new, MobCategory.MONSTER) + .fireImmune() + .sized(2F, 2F) + .clientTrackingRange(24) + .build(StaticUtil.modLoc("possessed_elder_guardian").toString())); public static final NonNullLazy> WILD_HUNT_SKELETON_TYPE = NonNullLazy.of(() -> EntityType.Builder.of(WildHuntSkeletonEntity::new, MobCategory.MONSTER) .sized(0.6F, 2.9F) @@ -224,6 +244,14 @@ public class OccultismEntities { ENTITIES.register("possessed_enderman", POSSESSED_ENDERMAN_TYPE::get); public static final RegistryObject> POSSESSED_GHAST = ENTITIES.register("possessed_ghast", POSSESSED_GHAST_TYPE::get); + public static final RegistryObject> POSSESSED_PHANTOM = + ENTITIES.register("possessed_phantom", POSSESSED_PHANTOM_TYPE::get); + public static final RegistryObject> POSSESSED_WEAK_SHULKER = + ENTITIES.register("possessed_weak_shulker", POSSESSED_WEAK_SHULKER_TYPE::get); + public static final RegistryObject> POSSESSED_SHULKER = + ENTITIES.register("possessed_shulker", POSSESSED_SHULKER_TYPE::get); + public static final RegistryObject> POSSESSED_ELDER_GUARDIAN = + ENTITIES.register("possessed_elder_guardian", POSSESSED_ELDER_GUARDIAN_TYPE::get); public static final RegistryObject> WILD_HUNT_SKELETON = ENTITIES.register("wild_hunt_skeleton", WILD_HUNT_SKELETON_TYPE::get); public static final RegistryObject> WILD_HUNT_WITHER_SKELETON = 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 e2c3486f5..a6abc8571 100644 --- a/src/main/java/com/klikli_dev/occultism/registry/OccultismItems.java +++ b/src/main/java/com/klikli_dev/occultism/registry/OccultismItems.java @@ -315,7 +315,16 @@ public class OccultismItems { () -> new ForgeSpawnEggItem(OccultismEntities.POSSESSED_SKELETON_TYPE::get, 0xC1C1C1, 0x494949, defaultProperties())); public static final RegistryObject SPAWN_EGG_POSSESSED_ENDERMAN = ITEMS.register("spawn_egg/possessed_enderman", () -> new ForgeSpawnEggItem(OccultismEntities.POSSESSED_ENDERMAN_TYPE::get, 0x161616, 0x0, defaultProperties())); - + public static final RegistryObject SPAWN_EGG_POSSESSED_GHAST = ITEMS.register("spawn_egg/possessed_ghast", + () -> new ForgeSpawnEggItem(OccultismEntities.POSSESSED_GHAST_TYPE::get, 0xe2e2e2, 0xC1C1C1, defaultProperties())); + public static final RegistryObject SPAWN_EGG_POSSESSED_PHANTOM = ITEMS.register("spawn_egg/possessed_phantom", + () -> new ForgeSpawnEggItem(OccultismEntities.POSSESSED_PHANTOM_TYPE::get, 0x3f4c81, 0x6ccc00, defaultProperties())); + public static final RegistryObject SPAWN_EGG_POSSESSED_WEAK_SHULKER = ITEMS.register("spawn_egg/possessed_weak_shulker", + () -> new ForgeSpawnEggItem(OccultismEntities.POSSESSED_WEAK_SHULKER_TYPE::get, 0x8c628c, 0x342638, defaultProperties())); + public static final RegistryObject SPAWN_EGG_POSSESSED_SHULKER = ITEMS.register("spawn_egg/possessed_shulker", + () -> new ForgeSpawnEggItem(OccultismEntities.POSSESSED_SHULKER_TYPE::get, 0x8c628c, 0x342638, defaultProperties())); + public static final RegistryObject SPAWN_EGG_POSSESSED_ELDER_GUARDIAN = ITEMS.register("spawn_egg/possessed_elder_guardian", + () -> new ForgeSpawnEggItem(OccultismEntities.POSSESSED_ELDER_GUARDIAN_TYPE::get, 0xb5b3a3, 0x4b4d60, defaultProperties())); public static final RegistryObject SPAWN_EGG_WILD_HUNT_SKELETON = ITEMS.register("spawn_egg/wild_hunt_skeleton", () -> new ForgeSpawnEggItem(OccultismEntities.WILD_HUNT_SKELETON_TYPE::get, 12698049, 4802889, defaultProperties())); public static final RegistryObject SPAWN_EGG_WILD_HUNT_WITHER_SKELETON = ITEMS.register("spawn_egg/wild_hunt_wither_skeleton", @@ -401,6 +410,10 @@ public class OccultismItems { ITEMS.register("ritual_dummy/possess_endermite", () -> new DummyTooltipItem(defaultProperties())); ITEMS.register("ritual_dummy/possess_skeleton", () -> new DummyTooltipItem(defaultProperties())); ITEMS.register("ritual_dummy/possess_ghast", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/possess_phantom", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/possess_weak_shulker", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/possess_shulker", () -> new DummyTooltipItem(defaultProperties())); + ITEMS.register("ritual_dummy/possess_elder_guardian", () -> new DummyTooltipItem(defaultProperties())); ITEMS.register("ritual_dummy/summon_afrit_rain_weather", () -> new DummyTooltipItem(defaultProperties())); ITEMS.register("ritual_dummy/summon_afrit_thunder_weather", () -> new DummyTooltipItem(defaultProperties())); ITEMS.register("ritual_dummy/summon_djinni_clear_weather", () -> new DummyTooltipItem(defaultProperties())); diff --git a/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_elder_guardian.json b/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_elder_guardian.json new file mode 100644 index 000000000..fb8b11e66 --- /dev/null +++ b/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_elder_guardian.json @@ -0,0 +1,3 @@ +{ + "parent": "item/template_spawn_egg" +} diff --git a/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_ghast.json b/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_ghast.json new file mode 100644 index 000000000..fb8b11e66 --- /dev/null +++ b/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_ghast.json @@ -0,0 +1,3 @@ +{ + "parent": "item/template_spawn_egg" +} diff --git a/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_phantom.json b/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_phantom.json new file mode 100644 index 000000000..fb8b11e66 --- /dev/null +++ b/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_phantom.json @@ -0,0 +1,3 @@ +{ + "parent": "item/template_spawn_egg" +} diff --git a/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_shulker.json b/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_shulker.json new file mode 100644 index 000000000..fb8b11e66 --- /dev/null +++ b/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_shulker.json @@ -0,0 +1,3 @@ +{ + "parent": "item/template_spawn_egg" +} diff --git a/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_weak_shulker.json b/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_weak_shulker.json new file mode 100644 index 000000000..fb8b11e66 --- /dev/null +++ b/src/main/resources/assets/occultism/models/item/spawn_egg/possessed_weak_shulker.json @@ -0,0 +1,3 @@ +{ + "parent": "item/template_spawn_egg" +} diff --git a/src/main/resources/data/occultism/loot_tables/entities/possessed_elder_guardian.json b/src/main/resources/data/occultism/loot_tables/entities/possessed_elder_guardian.json new file mode 100644 index 000000000..fc5d26a3c --- /dev/null +++ b/src/main/resources/data/occultism/loot_tables/entities/possessed_elder_guardian.json @@ -0,0 +1,187 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "bonus_rolls": 0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:prismarine_shard", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 0, + "max": 2 + }, + "add": false + }, + { + "function": "minecraft:looting_enchant", + "count": { + "type": "minecraft:uniform", + "min": 0, + "max": 1 + } + } + ] + } + ] + }, + { + "rolls": 1, + "bonus_rolls": 0, + "entries": [ + { + "type": "minecraft:item", + "weight": 3, + "name": "minecraft:cod", + "functions": [ + { + "function": "minecraft:looting_enchant", + "count": { + "type": "minecraft:uniform", + "min": 0, + "max": 1 + } + }, + { + "function": "minecraft:furnace_smelt", + "conditions": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "flags": { + "is_on_fire": true + } + } + } + ] + } + ] + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:prismarine_crystals", + "functions": [ + { + "function": "minecraft:looting_enchant", + "count": { + "type": "minecraft:uniform", + "min": 0, + "max": 1 + } + } + ] + }, + { + "type": "minecraft:empty" + } + ] + }, + { + "rolls": 1, + "bonus_rolls": 0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:wet_sponge" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + } + ] + }, + { + "rolls": 1, + "bonus_rolls": 0, + "entries": [ + { + "type": "minecraft:loot_table", + "name": "minecraft:gameplay/fishing/fish", + "functions": [ + { + "function": "minecraft:furnace_smelt", + "conditions": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "flags": { + "is_on_fire": true + } + } + } + ] + } + ] + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + }, + { + "condition": "minecraft:random_chance_with_looting", + "chance": 0.025, + "looting_multiplier": 0.01 + } + ] + }, + { + "rolls": 1, + "bonus_rolls": 0, + "entries": [ + { + "type": "minecraft:empty", + "weight": 4 + }, + { + "type": "minecraft:item", + "name": "minecraft:tide_armor_trim_smithing_template" + } + ] + }, + { + "rolls": 1, + "bonus_rolls": 0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:nautilus_shell", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 2, + "max": 4 + } + } + ] + } + ] + }, + { + "rolls": 1, + "bonus_rolls": 0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:heart_of_the_sea", + "conditions": [ + { + "condition": "minecraft:random_chance", + "chance": 0.4 + } + ] + } + ] + } + ] +} diff --git a/src/main/resources/data/occultism/loot_tables/entities/possessed_shulker.json b/src/main/resources/data/occultism/loot_tables/entities/possessed_shulker.json new file mode 100644 index 000000000..e6ed667e2 --- /dev/null +++ b/src/main/resources/data/occultism/loot_tables/entities/possessed_shulker.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "bonus_rolls": 0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:shulker_shell" + } + ], + "conditions": [ + { + "condition": "minecraft:random_chance_with_looting", + "chance": 0.25, + "looting_multiplier": 0.1 + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:shulker_shell" + } + ] + } + ] +} diff --git a/src/main/resources/data/occultism/loot_tables/entities/possessed_weak_shulker.json b/src/main/resources/data/occultism/loot_tables/entities/possessed_weak_shulker.json new file mode 100644 index 000000000..fa3dfc303 --- /dev/null +++ b/src/main/resources/data/occultism/loot_tables/entities/possessed_weak_shulker.json @@ -0,0 +1,67 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:shulker_shell", + "functions": [ + { + "function": "minecraft:set_count", + "count": 1 + } + ], + "conditions": [ + { + "condition": "minecraft:random_chance", + "chance": 0.1 + } + ] + } + ], + "functions": [ + { + "function": "minecraft:looting_enchant", + "count": 1, + "limit": 1, + "conditions": [ + { + "condition": "minecraft:random_chance", + "chance": 0.1 + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:chorus_fruit", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 3 + } + } + ] + } + ], + "functions": [ + { + "function": "minecraft:looting_enchant", + "count": { + "min": 1, + "max": 3 + }, + "limit": 6 + } + ] + } + ] +} diff --git a/src/main/resources/data/occultism/recipes/ritual/possess_elder_guardian.json b/src/main/resources/data/occultism/recipes/ritual/possess_elder_guardian.json new file mode 100644 index 000000000..c6da7bf40 --- /dev/null +++ b/src/main/resources/data/occultism/recipes/ritual/possess_elder_guardian.json @@ -0,0 +1,60 @@ +{ + "type": "occultism:ritual", + "ritual_type": "occultism:summon", + "activation_item": { + "item": "occultism:book_of_binding_bound_afrit" + }, + "pentacle_id": "occultism:possess_afrit", + "duration": 90, + "entity_to_sacrifice": { + "tag": "occultism:fishs", + "display_name": "ritual.occultism.sacrifice.fishs" + }, + "entity_to_summon": "occultism:possessed_elder_guardian", + "ritual_dummy": { + "item": "occultism:ritual_dummy/possess_elder_guardian" + }, + "ingredients": [ + { + "item": "minecraft:oxidized_copper" + }, + { + "item": "minecraft:prismarine" + }, + { + "item": "minecraft:prismarine_bricks" + }, + { + "item": "minecraft:dark_prismarine" + }, + { + "item": "minecraft:wet_sponge" + }, + { + "item": "minecraft:sea_lantern" + }, + { + "item": "minecraft:water_bucket" + }, + { + "item": "minecraft:water_bucket" + }, + { + "item": "minecraft:water_bucket" + }, + { + "tag": "forge:gems/emerald" + } + ], + "result": { + "item": "minecraft:heart_of_the_sea", + "nbt": { + "display": { + "Lore": [ + "[{\"translate\":\"item.occultism.ritual_dummy.possess_elder_guardian.tooltip\"}]" + ], + "Name": "[{\"translate\":\"item.occultism.ritual_dummy.possess_elder_guardian\"}]" + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/occultism/recipes/ritual/possess_phantom.json b/src/main/resources/data/occultism/recipes/ritual/possess_phantom.json new file mode 100644 index 000000000..161942698 --- /dev/null +++ b/src/main/resources/data/occultism/recipes/ritual/possess_phantom.json @@ -0,0 +1,42 @@ +{ + "type": "occultism:ritual", + "ritual_type": "occultism:summon", + "activation_item": { + "item": "occultism:book_of_binding_bound_foliot" + }, + "pentacle_id": "occultism:possess_foliot", + "duration": 30, + "entity_to_sacrifice": { + "tag": "occultism:flying_passive", + "display_name": "ritual.occultism.sacrifice.flying_passive" + }, + "entity_to_summon": "occultism:possessed_phantom", + "ritual_dummy": { + "item": "occultism:ritual_dummy/possess_phantom" + }, + "ingredients": [ + { + "tag": "forge:leather" + }, + { + "tag": "forge:feathers" + }, + { + "tag": "forge:leather" + }, + { + "tag": "forge:feathers" + } + ], + "result": { + "item": "minecraft:phantom_membrane", + "nbt": { + "display": { + "Lore": [ + "[{\"translate\":\"item.occultism.ritual_dummy.possess_phantom.tooltip\"}]" + ], + "Name": "[{\"translate\":\"item.occultism.ritual_dummy.possess_phantom\"}]" + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/occultism/recipes/ritual/possess_shulker.json b/src/main/resources/data/occultism/recipes/ritual/possess_shulker.json new file mode 100644 index 000000000..406e43b9d --- /dev/null +++ b/src/main/resources/data/occultism/recipes/ritual/possess_shulker.json @@ -0,0 +1,42 @@ +{ + "type": "occultism:ritual", + "ritual_type": "occultism:summon", + "activation_item": { + "item": "occultism:book_of_binding_bound_afrit" + }, + "pentacle_id": "occultism:possess_afrit", + "duration": 60, + "entity_to_sacrifice": { + "tag": "occultism:cubemob", + "display_name": "ritual.occultism.sacrifice.cubemob" + }, + "entity_to_summon": "occultism:possessed_shulker", + "ritual_dummy": { + "item": "occultism:ritual_dummy/possess_shulker" + }, + "ingredients": [ + { + "item": "minecraft:dragon_breath" + }, + { + "tag": "forge:obsidian" + }, + { + "tag": "forge:end_stones" + }, + { + "item": "minecraft:purple_glazed_terracotta" + } + ], + "result": { + "item": "minecraft:shulker_shell", + "nbt": { + "display": { + "Lore": [ + "[{\"translate\":\"item.occultism.ritual_dummy.possess_shulker.tooltip\"}]" + ], + "Name": "[{\"translate\":\"item.occultism.ritual_dummy.possess_shulker\"}]" + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/occultism/recipes/ritual/possess_weak_shulker.json b/src/main/resources/data/occultism/recipes/ritual/possess_weak_shulker.json new file mode 100644 index 000000000..4305a7f65 --- /dev/null +++ b/src/main/resources/data/occultism/recipes/ritual/possess_weak_shulker.json @@ -0,0 +1,42 @@ +{ + "type": "occultism:ritual", + "ritual_type": "occultism:summon", + "activation_item": { + "item": "occultism:book_of_binding_bound_djinni" + }, + "pentacle_id": "occultism:possess_djinni", + "duration": 60, + "entity_to_sacrifice": { + "tag": "occultism:cubemob", + "display_name": "ritual.occultism.sacrifice.cubemob" + }, + "entity_to_summon": "occultism:possessed_weak_shulker", + "ritual_dummy": { + "item": "occultism:ritual_dummy/possess_weak_shulker" + }, + "ingredients": [ + { + "tag": "forge:ender_pearls" + }, + { + "item": "minecraft:purple_concrete" + }, + { + "tag": "forge:end_stones" + }, + { + "item": "minecraft:magenta_concrete" + } + ], + "result": { + "item": "minecraft:chorus_fruit", + "nbt": { + "display": { + "Lore": [ + "[{\"translate\":\"item.occultism.ritual_dummy.possess_weak_shulker.tooltip\"}]" + ], + "Name": "[{\"translate\":\"item.occultism.ritual_dummy.possess_weak_shulker\"}]" + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/occultism/recipes/ritual/summon_wild_parrot.json b/src/main/resources/data/occultism/recipes/ritual/summon_wild_parrot.json index 01206d777..8edd8f34c 100644 --- a/src/main/resources/data/occultism/recipes/ritual/summon_wild_parrot.json +++ b/src/main/resources/data/occultism/recipes/ritual/summon_wild_parrot.json @@ -2,7 +2,7 @@ "type": "occultism:ritual", "ritual_type": "occultism:summon", "activation_item": { - "item": "occultism:book_of_binding_bound_djinni" + "item": "occultism:book_of_binding_bound_foliot" }, "pentacle_id": "occultism:possess_foliot", "duration": 30, diff --git a/src/main/resources/data/occultism/tags/entity_types/cubemob.json b/src/main/resources/data/occultism/tags/entity_types/cubemob.json new file mode 100644 index 000000000..92a98133f --- /dev/null +++ b/src/main/resources/data/occultism/tags/entity_types/cubemob.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "minecraft:slime", + "minecraft:magma_cube" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/occultism/tags/entity_types/fishs.json b/src/main/resources/data/occultism/tags/entity_types/fishs.json new file mode 100644 index 000000000..49436922c --- /dev/null +++ b/src/main/resources/data/occultism/tags/entity_types/fishs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "minecraft:cod", + "minecraft:salmon", + "minecraft:pufferfish", + "minecraft:tropical_fish" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/occultism/tags/entity_types/flying_passive.json b/src/main/resources/data/occultism/tags/entity_types/flying_passive.json new file mode 100644 index 000000000..6ee1dc823 --- /dev/null +++ b/src/main/resources/data/occultism/tags/entity_types/flying_passive.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "minecraft:bat", + "minecraft:bee", + "minecraft:parrot", + "minecraft:allay" + ] +} \ No newline at end of file