package com.livingworld.events;

/**
 * Functional interface for receiving Living World simulation events.
 *
 * <p>This interface is implemented by components that need to react to events
 * generated during the simulation tick cycle. Ecosystem modules and other
 * simulation components can implement this to subscribe to specific event types.</p>
 */
@FunctionalInterface
public interface LivingWorldEventListener {

    /**
     * Callback invoked when a Living World event occurs.
     *
     * <p>The default implementation does nothing, allowing {@code @Override}
     * implementations to handle only relevant events while ignoring others.</p>
     *
     * @param event the event that occurred (never null)
     */
    void onEvent(LivingWorldEvent event);
}