@Override public void update(EntityWorld entityWorld, float deltaSeconds) { ComponentMapObserver observer = entityWorld.requestObserver(this, TriggeredEffectComponent.class); for (int entity : observer.getRemoved().getEntitiesWithAll(TriggeredEffectComponent.class)) { int effectEntity = observer .getRemoved() .getComponent(entity, TriggeredEffectComponent.class) .getEffectEntity(); CleanupUtil.tryCleanupEntity(entityWorld, effectEntity); } for (int effectTriggerEntity : entityWorld.getEntitiesWithAll(TriggerSourceComponent.class)) { int sourceEntity = entityWorld .getComponent(effectTriggerEntity, TriggerSourceComponent.class) .getSourceEntity(); if (!entityWorld.hasEntity(sourceEntity)) { int effectEntity = entityWorld .getComponent(effectTriggerEntity, TriggeredEffectComponent.class) .getEffectEntity(); CleanupUtil.tryCleanupEntity(entityWorld, effectEntity); entityWorld.removeEntity(effectTriggerEntity); } } }