Code Patterns

Copy-paste examples for common plugin tasks. Commands, events, ECS, GUI, and more.

← Back to Patterns
ecs

Ref Validation

Always validate entity references before use since entities can be deleted at any time.

Example Code

java
// Store Refs, never raw entity data
private Ref<EntityStore> targetRef;

public void setTarget(Ref<EntityStore> ref) {
    this.targetRef = ref;
}

public void processTarget(Store<EntityStore> store) {
    // Always check validity before use
    if (targetRef == null || !targetRef.isValid()) {
        targetRef = null;  // Clear invalid ref
        return;
    }

    // Safe to use now
    Player target = store.getComponent(targetRef, Player.getComponentType());
    if (target != null) {
        // Process target...
    }
}

// Alternative: validate() throws exception if invalid
public void mustHaveTarget() {
    targetRef.validate();  // Throws "Invalid entity reference!" if deleted
    // Only reached if valid
}