Datapacks
Ritual recipes, spell rosters, colors, spawns, loot and every other data file and tag the mod reads, plus its config.
Ritual recipes
Rituals are data driven and shown in JEI, so you can add your own ritual recipes with a datapack:
{
"type": "alshanex_familiars:ritual_recipe",
"central_item": {
"item": "minecraft:sniffer_egg"
},
"inputs": [
{ "ingredient": { "item": "irons_spellbooks:legendary_ink" }, "count": 1, "consume": true },
{ "ingredient": { "item": "alshanex_familiars:pet_soul" }, "count": 1, "consume": true },
{ "ingredient": { "item": "irons_spellbooks:arcane_rune" }, "count": 1, "consume": true },
{ "ingredient": { "item": "irons_spellbooks:magic_cloth" }, "count": 1, "consume": true }
],
"result": {
"id": "familiarslib:familiar_egg",
"components": { "familiarslib:familiar_type": "alshanex_familiars:archmage_pet" }
},
"particle_type": "minecraft:end_rod"
}- central_item: the item set on the Ritual Core. Like any ingredient, it can be an item or a tag (
"tag": "c:gems"). It's always used up. - inputs: the items on the statues. There must be exactly 4.
- ingredient: an item or a tag.
- count: optional, defaults to 1. Keep it at 1, since statues hold one item.
- consume: optional, defaults to
true. Withfalse, the item stays on its statue.
- result: the item the ritual produces, with optional
countandcomponents. For a typed Familiar Egg, usefamiliarslib:familiar_eggwith thefamiliarslib:familiar_typecomponent set to the familiar's entity id (see Color slots for the ids). It also works for familiars without a default egg ritual, such asalshanex_familiars:cleric_pet, and for familiars from other mods. - particle_type: optional, defaults to ash particles. Particle types that need extra settings fall back to enchant particles.
Recipe files go in data/alshanex_familiars/recipe/ritual_recipes/. The egg rituals keep their old shard file names (archmage_shard.json, druid_shard.json...), so a datapack replacing those files still replaces the right ritual.
When the result is an Identity Vessel, it copies the identity of a filled vessel on one of the statues. A filled vessel only counts for a non-consumed vessel ingredient.
Shrinking recipes
This mod's shrinking recipes (armor plates, tiny shield, resist essences...) are in data/alshanex_familiars/recipe/shrinking/ and use the Familiars Lib type familiarslib:shrinking_recipe. The recipe format is on the Familiars Lib page.
Familiar spell rosters
You can change which spells each familiar casts with a datapack editing its spell tags, in data/alshanex_familiars/tags/irons_spellbooks/spells/. There is a folder per familiar:
| Familiar | Folder | Tag example |
|---|---|---|
| Archmage | archmage/ | alshanex_familiars:archmage/attack |
| Lightning Mage | mage/ | alshanex_familiars:mage/attack |
| Summoner | summoner/ | alshanex_familiars:summoner/attack |
| Necromancer | necromancer/ | alshanex_familiars:necromancer/attack |
| Hunter | hunter/ | alshanex_familiars:hunter/attack |
| Druid | druid/ | alshanex_familiars:druid/attack |
| Illusionist | illusionist/ | alshanex_familiars:illusionist/attack |
| Plague Doctor | plague/ | alshanex_familiars:plague/attack |
| Scorcher | scorcher/ | alshanex_familiars:scorcher/attack |
| Cleric | cleric/ | alshanex_familiars:cleric/attack |
| Bard | bard/ | alshanex_familiars:bard/attack |
| Frostling | frostling/ | alshanex_familiars:frostling/attack |
| Dragoon | dragon_warrior/ | alshanex_familiars:dragon_warrior/attack |
Each folder has these tags:
- attack
- defense
- movement
- support
- buffing (cleric only)
- healing (cleric only)
Add or remove any spells from these tags, with "replace": false to add or "replace": true to replace the list. For example, to give the frostling Icicle as an attack spell, ship data/alshanex_familiars/tags/irons_spellbooks/spells/frostling/attack.json:
{ "replace": false, "values": ["irons_spellbooks:icicle"] }The Familiar Compendium's spell icons follow these tags. The cleric's healing and buffing tags feed its support behavior (healing and buffing allies), separately from its combat spells. Signature spells (such as the lightning mage's Electric Rain or the frostling's Ice Age, see each familiar's Battle line) are added on top of the tags and can't be changed with a datapack.
Scroll rerolls
These spell tags, in the same folder, control what archmages can reroll at the Scroll Reroll Station:
| Tag | Effect |
|---|---|
alshanex_familiars:archmage_cannot_reroll | Scrolls of these spells are never rerolled |
alshanex_familiars:archmage_cannot_create | These spells never come out of a reroll |
alshanex_familiars:station_only_roll | These spells can come out of the Scroll Reroll Station even if they normally can't be crafted or looted, or are in archmage_cannot_create |
Otherwise, a reroll can produce any enabled spell that can be crafted or looted. station_only_roll lists this mod's own spells; to add yours, ship the file with "replace": false:
{ "replace": false, "values": ["othermod:their_spell"] }Tag changes made with /reload reach running stations within about 10 seconds.
Ability tags
| Tag | Type | Used by |
|---|---|---|
alshanex_familiars:necromancer_ability_blacklist | Entity | Undead the necromancer's Undead Chaos ignores |
alshanex_familiars:druid_growables | Block | Blocks the druid's Overgrowth bonemeals |
alshanex_familiars:druid_cannot_breed | Entity | Animals the druid's Nature's Blessing won't breed |
alshanex_familiars:freezeable_entities | Entity | Entities the frostling's ice spells can freeze |
alshanex_familiars:block_freeze_blacklist, freeze_destroyable, freeze_ignore | Block | How the frostling's ice spells treat blocks |
alshanex_familiars:unlocks_revival | Entity | Killing one of these grants Learn Necromancy, which unlocks mana revival. Contains the Dead King (and GameTech's hard Dead King, if installed) |
Item tags used by recipes
| Tag | Used by |
|---|---|
alshanex_familiars:familiar_shards | The Tome of Familiar Alignment recipe. Lists the old shards |
alshanex_familiars:familiar_trinkets | The Pandora's Box recipe |
alshanex_familiars:familiar_upgrades | Lists the Tiny Shield, Life Gem, Rusty Helmet and Strange Mushroom |
Familiars Lib has more tags used by these familiars, such as the illusionist's pickpocketing and the hunter's marking (see Familiars Lib).
Biome colors
The druid, hunter and scorcher take their spawn colors from these folders. The file format and matching rules are on the Familiars Lib page.
| Familiar | Folder | Color fields |
|---|---|---|
| Druid | familiar_colors/druid | wood, leaf |
| Hunter | familiar_colors/hunter | hat, dog |
| Scorcher | familiar_colors/scorcher | color |
The hunter's crossbow has no folder of its own: it reads the druid's files and uses their wood color, so changing the druid's wood colors changes the crossbow too.
The default files are in data/alshanex_familiars/familiar_colors/. A datapack file with the same path replaces a default one, and any other file in these folders is added to them. For example:
{
"entries": [
{ "biome": "#c:is_forest", "wood": "#8B6A44", "leaf": "#6FAE3F" },
{ "biome": "#c:is_snowy", "wood": "#6B4E33", "leaf": "#B4D3CB" },
{ "biome": "minecraft:dark_forest", "wood": "#5C4129", "leaf": "#3F7A2A" }
]
}Color slots
For override files, these are each familiar's slots:
| Familiar | Entity id | Slot 0 | Slot 1 | Slot 2 | Slot 3 | Slot 4 |
|---|---|---|---|---|---|---|
| Archmage | alshanex_familiars:archmage_pet | Clothes | Eyes | |||
| Lightning Mage | alshanex_familiars:mage_pet | Clothes | Eyes | |||
| Dragoon | alshanex_familiars:dragon_warrior_pet | Clothes | Eyes | |||
| Druid | alshanex_familiars:druid_pet | Wood | Leaves | Eyes | ||
| Hunter | alshanex_familiars:hunter_pet | Hat | Dog | Crossbow | Eyes | Dog eyes |
| Illusionist | alshanex_familiars:illusionist_pet | Hat | Eyes | |||
| Necromancer | alshanex_familiars:necromancer_pet | Clothes | Eyes | Skull eyes | ||
| Plague Doctor | alshanex_familiars:plague_pet | Eyes | Lantern | |||
| Scorcher | alshanex_familiars:scorcher_pet | Colored details | Eyes | |||
| Summoner | alshanex_familiars:summoner_pet | Clothes | Eyes | |||
| Cleric | alshanex_familiars:cleric_pet | Clothes | Eyes | |||
| Bard | alshanex_familiars:bard_pet | Clothes | Eyes | Hat | ||
| Frostling | alshanex_familiars:frostling_pet | Ice | Eyes |
Rules for the eyes and second parts need "shrunk": true to react to shrunk dyes (see Familiars Lib).
The #alshanex_familiars:familiars entity tag contains every familiar of this mod.
The default override rules (shriving stone, logs, leaves and ice blocks) are added to data/familiarslib/familiar_color_overrides/overrides.json with "replace": false, so a datapack can add to them or replace them. For example, to make magma blocks give the frostling a fiery ice:
{ "familiar": "alshanex_familiars:frostling_pet", "item": "minecraft:magma_block",
"layers": { "0": "#E8743B" }, "sound": "minecraft:block.glass.place" }Cosmetic weapon tags
| Tag | Default contents |
|---|---|
alshanex_familiars:familiar_weapons/archmage_pet | #irons_spellbooks:staff |
alshanex_familiars:familiar_weapons/druid_pet | #irons_spellbooks:staff |
alshanex_familiars:familiar_weapons/mage_pet | #irons_spellbooks:staff |
alshanex_familiars:familiar_weapons/summoner_pet | #curios:spellbook |
alshanex_familiars:familiar_weapons/dragon_warrior_pet | #minecraft:swords, #minecraft:axes, minecraft:mace, #c:tools/mace, #c:tools/melee_weapon, #c:tools/spear |
All of them are added to familiarslib:familiar_weapons, so their items can be shrunk into cosmetics.
Spawn biomes
The lightning mage, druid, hunter, frostling, scorcher and dragoon spawn naturally in the biomes of their spawn biome tag, for example data/alshanex_familiars/tags/worldgen/biome/druid_pet_spawns_in.json (the dragoon's is dragon_warrior_pet_spawns_in). The archmage, summoner and necromancer live in their structures. The spawn rules also require the block below to be in the familiar's *_spawnable_on block tag (mage_spawnable_on, archmage_spawnable_on, summoner_spawnable_on, necromancer_spawnable_on, hunter_spawnable_on, druid_spawnable_on, scorcher_spawnable_on and frostling_spawnable_on). If you add biome colors for new biomes and want familiars to spawn there, update both.
Structures and world tags
Structures are normal data-driven worldgen, so a datapack can change where and how often they appear by replacing these files:
| Structure | Structure file | Structure set | Biome tag (where it can generate) |
|---|---|---|---|
| Origin Island | worldgen/structure/origin_island.json | worldgen/structure_set/origin_island.json (concentric rings, like strongholds) | has_structure/origin_island (oceans) |
| Hunters' Campsite | worldgen/structure/hunter_campsite.json | worldgen/structure_set/hunter_campsite.json (spacing 40, separation 10) | has_structure/hunter_campsite (forests, except groves) |
| Graveyard | worldgen/structure/graveyard.json | worldgen/structure_set/graveyard.json (spacing 20, separation 5) | has_structure/graveyard (soul sand valleys) |
| Archmage's Settlement | worldgen/structure/end_laboratory.json | worldgen/structure_set/end_laboratory.json (spacing 25, separation 10) | has_structure/end_laboratory (End City biomes) |
All of them are in data/alshanex_familiars/, and the biome tags in data/alshanex_familiars/tags/worldgen/biome/. The Origin Island prefers the biomes in origin_island_biased_to (deep oceans).
| Tag | Type | Used by |
|---|---|---|
alshanex_familiars:memory_fragment_located | Structure | What thrown Memory Fragments lead to. Contains the Origin Island |
alshanex_familiars:explorer_map_located | Structure | What the Furled Map from the Origin Island points to. Contains the Hunters' Campsite |
Loot
This mod adds its items to other loot tables through global loot modifiers, listed in data/neoforge/loot_modifiers/global_loot_modifiers.json. Each modifier appends one of this mod's loot tables:
| Added to | Modifier | Loot table it appends |
|---|---|---|
| Chests (Ancient City, weaponsmith, End City, Evoker Fort, Jungle Temple, Mountain Tower, Pyromancer Tower, Priest House, Woodland Mansion, Impaled Icebreaker, Ice Spider Den) | alshanex_familiars:chest_loot/<name>_modifier | alshanex_familiars:chests/inserts/additional_<name>_loot |
| Mob drops (magic creatures' power essence, Mooshroom mushrooms, Cave Spider fangs, Ender Dragon's Dragon Tear) and actions (shearing bogged, Sniffer finds) | alshanex_familiars:entity_loot/... | alshanex_familiars:entities/... |
To change what's added, replace the appended loot table (for example data/alshanex_familiars/loot_table/chests/inserts/additional_ancient_city_loot.json). To stop a modifier entirely, replace its file in data/alshanex_familiars/loot_modifiers/ with conditions that never match, or replace the loot table with an empty one. This mod's own structures use their own chest loot tables in data/alshanex_familiars/loot_table/.
Familiar Guide
The Familiar Guide is built from resource pack files, so modpacks and addons can add their own chapters and pages, or change the existing ones. Changes reload with F3+T.
- Chapters:
assets/<namespace>/guide/categories/<name>.json - Entries:
assets/<namespace>/guide/entries/<path>.json(subfolders are allowed)
Any namespace works. A file with the same path as a built-in one replaces it. A broken file or page is logged and skipped; the rest of the guide still loads.
A chapter:
{
"name": "guide.mypack.category.extras",
"description": "guide.mypack.category.extras.desc",
"icon": "minecraft:amethyst_shard",
"sort": 50
}An entry:
{
"name": "guide.mypack.extras.my_item",
"category": "mypack:extras",
"icon": "mymod:my_item",
"sort": 0,
"items": ["mymod:my_item"],
"pages": [
{ "type": "spotlight", "item": "mymod:my_item", "text": "guide.mypack.extras.my_item.0" },
{ "type": "crafting", "recipe": "mymod:my_item", "text": "guide.mypack.extras.my_item.1" }
]
}| Field | Meaning |
|---|---|
name, description, title, text | Translation keys. A key that doesn't exist is shown as written, so plain text works while drafting |
category | The chapter id: the chapter file's namespace and name (mypack:extras for assets/mypack/guide/categories/extras.json) |
icon | An item id, or an item stack object ({"id": ..., "count": ..., "components": {...}}). Defaults to a book |
sort | Order within its list (lowest first, then by name). Defaults to 0 |
items | Items this entry explains: clicking them anywhere in the guide opens it. Items shown on spotlight pages are added automatically. If two entries claim an item, the one with the lowest sort wins |
required_mods | A list of mod ids. On a chapter, entry or single page, hides it unless all those mods are installed |
The entry's first page shows the entry name as its title unless it has its own. Text that doesn't fit a page continues on the next one. Every page type accepts an optional title and text:
| Type | Shows | Fields |
|---|---|---|
text | Text only | |
spotlight | A big item with its name | item |
image | A picture, scaled down to fit | image (texture path), width and height (size of the PNG, default 256), border (default true), center (default false; only on pages without text) |
crafting | A crafting grid recipe, read from the game | recipe |
ritual | A ritual recipe, with kept items framed in green | recipe |
shrinking | Shrinking station recipes | recipe or recipes (recipe ids), and/or inputs (example items run through whichever shrinking recipe accepts them) |
smithing | Smithing rows written in the JSON | rows: list of {template, base, addition, result} (or those fields directly for one row) |
cauldron | Alchemist cauldron rows written in the JSON | rows: list of {base, input, result} (or those fields directly) |
entity | A live entity preview that follows the mouse | entity, scale (default 35), height (default 90), y_offset |
item_grid | A grid of items, each linking to its entry | items (item ids or item stack objects, for example typed eggs), columns (default 7) |
layout | A top-down block layout | pattern (rows of characters; . and spaces are ground), key (character → item, or {"color": "#RRGGBB", "label": "key"}) |
Items from mods that aren't installed are skipped on smithing, cauldron, item_grid, shrinking and layout pages. Code addons can register new page types with GuidePageTypes.register(type, parser) during client setup.
Retexturing colored parts
Every colored part is drawn from its own pair of textures in assets/alshanex_familiars/textures/entity/layers/, so a resource pack can reshape or reshade them. Each pair is <name>.png (the original look) and <name>_bw.png (the grayscale version that gets tinted); glowing parts such as eyes also have _glowmask versions. Some examples:
| Familiar | Layer files |
|---|---|
| Archmage | archmage_pet_clothes_layer, archmage_pet_eyes_layer |
| Lightning Mage | mage_pet_clothes_layer, mage_pet_eyes_layer |
| Druid | druid_pet_wood_layer, druid_pet_leaf_layer, druid_pet_eyes_layer |
| Hunter | hunter_pet_hat_layer, hunter_pet_dog_layer, hunter_pet_crossbow_layer, hunter_pet_eyes_layer, plus the dog's eyes |
| Plague Doctor | plague_pet_eyes_layer, plague_pet_lantern_layer |
| Dragoon | dragoon_clothes_layer, dragoon_eyes_layer |
| Illusionist | illusionist_pet_hat_layer (also used by its decoys) |
The other familiars follow the same <familiar>_pet_<part>_layer pattern; the full list is in the mod's jar. The base familiar textures are in textures/entity/ (for example druid_pet.png), with the layer areas cut out. If you change which pixels a layer covers, update the base texture to match. The rules for making layer textures are on the Familiars Lib page.
Config
In the mod's config file:
| Option | Default | Description |
|---|---|---|
stunTimePerFamiliar | 5 | Seconds a familiar is stunned by the Familiologist set's last stand, per summoned familiar |
The familiar limit and other shared options are in the Familiars Lib config.
