inventory-framework
inventory-framework copied to clipboard
Find a better way to check this "noneMatch" to remove isContainedWithin from bui...
since slot can be re-defined on render and this interceptor runs before it
https://github.com/DevNatan/inventory-framework/blob/65ac795921f974459d1da9597f162bef79d63735/inventory-framework-core/src/main/java/me/devnatan/inventoryframework/pipeline/AvailableSlotInterceptor.java#L124
}
}
final BiFunction<Integer, Integer, ComponentFactory> factory = availableSlotFactories.get(i);
result.add(factory.apply(i, slot));
}
return result;
}
private boolean isSlotNotAvailableForAutoFilling(IFRenderContext context, int slot) {
if (!context.getContainer().getType().canPlayerInteractOn(slot)) return true;
// fast path -- check for already rendered items
if (context.getContainer().hasItem(slot)) return true;
// we need to check component factories since components don't have been yet rendered
// TODO Find a better way to check this "noneMatch" to remove isContainedWithin from builder
// since slot can be re-defined on render and this interceptor runs before it
return context.getComponentFactories().stream()
.filter(componentFactory -> componentFactory instanceof ItemComponentBuilder)
.map(componentFactory -> (ItemComponentBuilder<?, ?>) componentFactory)
.anyMatch(itemBuilder -> itemBuilder.isContainedWithin(slot));
}
}