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