docsReading time: 2 minutes
General
Basics
- Getting Started
- Game API
- Input API
- Configuration
- Tile Maps
- Resource Management
- Entity Framework
- Control Entities
- User Interface
- utiLITI
- Deployment
- Savegames
- Libraries and Tools
- Glossary
Advanced
- The Particle System
- Dynamic Lighting
- Static Lighting
- Performance Optimization
- Custom MapObjectLoaders
- String Localization
- Object Serialization
- Utility Classes
- Network Communication
- Advanced Entity Knowledge
Tutorials
Messaging System
The Messaging System allows entities to communicate with each other through messages and events. This decouples entity behavior and enables reactive game logic.
Entity Messages
Send messages between entities:
// Send message to specific entity
entity.sendMessage("targetEntity", "ATTACK", damageData);
// Broadcast message to all entities
Game.world().environment().broadcastMessage("LEVEL_COMPLETE");Receiving Messages
Implement message handling:
public class TriggerEntity extends Entity implements IMessageReceiver {
@Override
public void sendMessage(Object sender, String message) {
if ("ACTIVATE".equals(message)) {
activate();
}
}
private void activate() {
// Handle activation
}
}Entity Events
Subscribe to entity lifecycle events:
// When entity is added to environment
entity.onAdded(e -> {
System.out.println("Entity spawned!");
});
// When entity is removed
entity.onRemoved(e -> {
System.out.println("Entity destroyed!");
});Combat Events
Listen for combat-related events:
CombatEntity combatEntity = ...;
// When hit by attack
combatEntity.onHit(event -> {
int damage = event.getDamage();
System.out.println("Took " + damage + " damage!");
});
// When entity dies
combatEntity.onDeath(event -> {
System.out.println("Entity died!");
spawnLoot();
});
// When entity is resurrected
combatEntity.onResurrect(event -> {
System.out.println("Entity revived!");
});Collision Events
Handle collision events:
CollisionEntity colliding = ...;
colliding.onCollision(event -> {
IEntity other = event.getInvolvedEntities().stream()
.filter(e -> e != colliding)
.findFirst()
.orElse(null);
if (other != null) {
handleCollision(other);
}
});Movement Events
Track entity movement:
MobileEntity mobile = ...;
mobile.onMoved(event -> {
// Entity position changed
checkForTriggers();
});Custom Events
Define custom event types:
public class GameEvent {
private String type;
private Object data;
public GameEvent(String type, Object data) {
this.type = type;
this.data = data;
}
public String getType() { return type; }
public Object getData() { return data; }
}
// Fire custom event
entity.fireEvent(new GameEvent("POWERUP_COLLECTED", powerupType));Event Listeners
Add and remove listeners dynamically:
// Add listener
Consumer<HitEvent> listener = event -> handleHit(event);
combatEntity.onHit(listener);
// Remove listener (keep reference)
combatEntity.removeHitListener(listener);Environment Events
Listen for environment-level events:
// When environment is loaded
Game.world().onLoaded(env -> {
initializeLevel();
});
// When environment is unloaded
Game.world().onUnloaded(env -> {
cleanupLevel();
});
// When entity is added to environment
Game.world().environment().onEntityAdded(e -> {
System.out.println("Entity added: " + e.getEntity().getName());
});Trigger System
Triggers are special entities that fire events when entered:
Trigger trigger = Game.world().environment().getTrigger("myTrigger");
trigger.onActivated(e -> {
// Player entered trigger zone
spawnEnemies();
});See Also
- Entity Controllers – Controller overview
- Entity Framework – Entity system
- Behavior Controller – AI reactions
Last updated 1 day ago
Feedback / Collaborate
