Reference: Events
All Library of Exile custom events are ExileEventCaller<T> instances on ExileEvents.
Registering a listener
ExileEvents.SOME_EVENT.register(new EventConsumer<SomeEventClass>() {
@Override
public void accept(SomeEventClass e) {
// handle event
}
});
Listeners are ordered by callOrder(). Override that method on your EventConsumer to control
priority relative to other mods.
Event index
Entity events
| Caller |
Event type |
Fields |
Notes |
LIVING_ENTITY_TICK |
OnEntityTick |
entity |
Every tick per living entity |
GRAB_MOB_AFFIXES |
GrabMobAffixesEvent |
en, add(ExileAffixData) |
Called at tick 3 and every 20t |
MOB_EXP_DROP |
OnMobExpDrop |
mobKilled, exp |
When a mob drops XP |
MOB_DEATH |
OnMobDeath |
mob, killer |
Any mob death |
MOB_KILLED_BY_PLAYER |
OnMobKilledByPlayer |
mob, player |
Mob killed specifically by a player |
IS_KILLED_ENTITY_VALID |
IsEntityKilledValid |
isValid (cancelable) |
Validity check for kill credit |
Player events
| Caller |
Event type |
Fields |
Notes |
ON_PLAYER_LOGIN |
OnPlayerLogin |
player |
After placeNewPlayer (mixin) |
PLAYER_DEATH |
OnPlayerDeath |
player |
When a player dies |
SETUP_LOOT_CHANCE |
OnSetupLootChance |
mobKilled, player, lootChance |
Before loot is determined |
Loot events
| Caller |
Event type |
Fields |
Notes |
ON_CHEST_LOOTED |
OnChestLooted |
player, ctx, inventory, pos |
RandomizableContainerBlockEntity fills |
PLAYER_MINE_ORE |
PlayerMineOreEvent |
state, player, pos, itemsToAddToDrop |
Non-farm block mined |
PLAYER_MINE_FARMABLE |
PlayerMineFarmableBlockEvent |
state, player, pos, droppedItems |
Farm block mined |
Damage events
| Caller |
Event type |
Fields |
Notes |
DAMAGE_BEFORE_CALC |
OnDamageEntity |
source, damage, mob |
Before damage calculation |
DAMAGE_AFTER_CALC |
OnDamageEntity |
source, damage, mob |
After damage calculation |
DAMAGE_BEFORE_APPLIED |
OnDamageEntity |
source, damage, mob |
In LivingEntity.actuallyHurt (mixin) |
Registry events
| Caller |
Event type |
Fields |
Notes |
EXILE_REGISTRY_GATHER |
ExileRegistryEvent |
type, add(), addSeriazable() |
Once per ExileRegistryType during FMLCommonSetupEvent |
ON_REGISTER_TO_DATABASE |
OnRegisterToDatabase |
item, type |
Fires for every entry registration |
AFTER_DATABASE_LOADED |
AfterDatabaseLoaded |
— |
After all datapacks finish loading |
DATAPACK_GSON_ADAPTER_REGISTRY |
DatapackGsonAdapterEvent |
registerAdapter(ada) |
At Gson construction; register custom adapters |
Map / dimension events
| Caller |
Event type |
Fields |
Notes |
PROCESS_DATA_BLOCK |
OnProcessMapDataBlock |
dataBlock, key, pos, world, nbt |
After a data block runs |
PROCESS_CHUNK_DATA |
OnProcessChunkData |
p, struc, cp |
Chunk data processed |
GRAB_LIB_MAP_DATA |
GrabLibMapData |
level, pos, data |
Retrieve map data for a position |
DUNGEON_DATA_BLOCK_PLACED |
DungeonDataBlockPlaced |
levelAccessor, pos, blockInfo, structureId |
Data block placed during gen |
Randomness events
| Caller |
Event type |
Fields |
Notes |
PREDETERMINED_RANDOM |
PredeterminedRandomEvent |
— |
Seeded random events |
Cancelable events
IS_KILLED_ENTITY_VALID is cancelable. Set event.isValid = false to deny kill credit.
Other events are informational or additive; cancellation is not supported.
Forge events (not on ExileEvents)
Some hooks are exposed via standard Forge events. Register with:
ApiForgeEvents.registerForgeEvent(SomeForgeEvent.class, event -> { ... })
// or via @SubscribeEvent on a registered event handler class
Relevant Forge events used by the library:
| Forge event |
Purpose |
OnTeleportToLeagueEvent |
Player teleported to a league dimension |
AddReloadListenerEvent |
JSON datapack reload listeners are registered here |
OnDatapackSyncEvent |
Triggers ON_LOGIN packet sends on player join or /reload |
FMLCommonSetupEvent |
EXILE_REGISTRY_GATHER is fired per type here |