How apace100/apoli works
Apoli is a Fabric mod that lets datapacks attach data-driven powers to entities. The main workflow is defining power data, resolving it into registered power types, assigning powers to entity components, then applying them as gameplay events occur. Powers cover actions, restrictions, attribute and movement changes, resources, effects, crafting, and rendering; client/server networking synchronizes relevant state and active-power requests. The sampled mixins confirm component-backed gameplay hooks and client activation. Other subsystem links reflect the README and source tree; unsampled internals are represented without asserting unverified call chains.
Main entry points: PowerHolderComponent.java Entity power component · ApoliClient.java Client initialization · power Power behaviors · networking Power packets
Components 17
Power definitions
- Global power sets
src/main/java/io/github/apace100/apoli/global/GlobalPowerSetLoader.java - Power types
src/main/java/io/github/apace100/apoli/power/PowerTypeRegistry.java - Power factories
src/main/java/io/github/apace100/apoli/power/factory/PowerFactories.java
Power runtime
- Power behaviors
src/main/java/io/github/apace100/apoli/power - Entity power component
src/main/java/io/github/apace100/apoli/component/PowerHolderComponent.java - Power commands
src/main/java/io/github/apace100/apoli/command/PowerCommand.java - Global power utilities
src/main/java/io/github/apace100/apoli/global/GlobalPowerSetUtil.java
Gameplay hooks
- Gameplay mixins
src/main/java/io/github/apace100/apoli/mixin - Action factories
src/main/java/io/github/apace100/apoli/power/factory/action
Client and server
- Server initialization
src/main/java/io/github/apace100/apoli/ApoliServer.java - Client initialization
src/main/java/io/github/apace100/apoli/ApoliClient.java - Power packets
src/main/java/io/github/apace100/apoli/networking
Client presentation
- Power HUD
src/main/java/io/github/apace100/apoli/screen - Client gameplay hooks
src/main/java/io/github/apace100/apoli/mixin/LightmapTextureManagerMixin.java
Other components
- Datapacks
- Player
- Minecraft runtime
Connections 22
- Datapacks → Global power sets: provides data
- Datapacks → Power types: defines powers
- Power types → Power factories: resolves types
- Power factories → Power behaviors: creates powers
- Entity power component → Power behaviors: holds powers
- Power commands → Entity power component: operates on
- Global power utilities → Entity power component: applies sets
- Gameplay mixins → Entity power component: queries powers
- Gameplay mixins → Power behaviors: executes behavior
- Power behaviors → Action factories: uses actions
- Server initialization → Power packets: registers packets
- Client initialization → Power packets: registers packets
- Client initialization → Power HUD: registers renderer
- Client initialization → Client gameplay hooks: initializes client
- Player → Power commands: issues commands
- Player → Client initialization: activates powers
- Client initialization → Entity power component: reads powers
- Client initialization → Power packets: sends activation
- Power packets → Entity power component: syncs powers
- Gameplay mixins → Minecraft runtime: modifies gameplay
- Power HUD → Minecraft runtime: renders status
- Client gameplay hooks → Entity power component: reads powers