package jalse.entities; import java.util.Objects; import java.util.function.Supplier; class RecursiveEntityListener implements EntityListener { private final Supplier<EntityListener> supplier; private final int depth; RecursiveEntityListener(final Supplier<EntityListener> supplier, final int depth) { this.supplier = Objects.requireNonNull(supplier); this.depth = depth; } @Override public void entityCreated(final EntityEvent event) { if (depth > 0) { final Entity e = event.getEntity(); e.addEntityListener(supplier.get()); e.addEntityListener(new RecursiveEntityListener(supplier, depth - 1)); } } }