Compatibility
Apoli ships integrations with a number of other mods. Each one is a gated module: install the other mod and Apoli adds types or changes its behaviour for it, and leave it out and nothing changes. Apoli never depends on any of them.
Supported mods
| Mod | Section | What it adds |
|---|---|---|
| Simple Voice Chat | Birdsong | Types from the Birdsong addon that react to who is talking, how loudly and what they say. |
| Trinkets, Accessories, Curios | Accessories | Accessory slots, control over equipping and unequipping, and slot conditions. |
| Figura | Figura | Lets apoli:modify_player_model use a Figura avatar. |
| Icarus | Icarus | The apoli:wings flight power. |
| Hardcore Revival | Hardcore Revival | Knockout and revive triggers, actions and a condition. |
| WoodWalkers | WoodWalkers | Conditions, actions and powers that read and drive a player's shape. |
| Pufferfish's Skills | Pufferfish's Skills | Apoli powers and resources as Skills rewards, and Skills categories as skill trees. |
| KubeJS | KubeJS | The scripting runtime behind the apoli:script types. |
| Not Enough Recipe Book | Not Enough Recipe Book | No new types. Keeps power-gated recipes working with the recipe book removed. |
| 3D Skin Layers, Ears | Skin Rendering | No new types. Makes their skin geometry follow the model and colour powers. |
| Entity Model Features and CEM packs | Custom Entity Models | No new types. Runs the render powers on top of packs like Fresh Animations. |
| Sodium, Lithium, Flywheel, BadOptimizations and others | Performance Mods | No new types. Keeps the render powers working with the mods that replace parts of vanilla rendering. |
| Sable | Sable | No new types. Makes phasing, walking on fluid and ropes work with Sable's sub-levels. |
| Better Combat | Better Combat | No new types. Prevents a crash in its attack handling. |
| Ledger, Indexor | Block Logging | No new types. Names the power and origin behind a logged block edit. |
| You're in Grave Danger | You're in Grave Danger | No new types. Puts power inventories in the grave and adds a grave inscription. |
| Gravestones | Gravestones | No new types. The same for Pneumono's Gravestones. |
| GraveStone Mod | GraveStone Mod | No new types. The same for the GraveStone Mod on NeoForge. |
Two kinds of gating
Registration-gated types are only registered when the other mod is loaded. Using one in a data pack without that mod is a load error for that power, exactly like a mistyped type ID. Everything under Accessories, Icarus, Hardcore Revival and WoodWalkers works this way.
Behaviour-gated types are always registered and always load, but do nothing useful without the other mod: conditions read false and triggers never fire. The KubeJS types work this way, so a pack that uses them stays loadable on a server without KubeJS. Birdsong's voice types are behaviour-gated on Simple Voice Chat, and the Birdsong overview explains what their IDs do on a server without Birdsong itself.
Pufferfish's Skills sits in between. Its reward types are only registered with Skills installed, but they live in Skills' own category files, so nothing in an Apoli pack fails to load without it. The other integrations add no types of their own, and only change how existing types behave when the other mod is installed.
Check the section for the mod you are targeting, since each type page says which kind it is.
Writing your own
If you are building an addon and want the same pattern for a mod Apoli doesn't cover, see Writing compat.