inventory-framework icon indicating copy to clipboard operation
inventory-framework copied to clipboard

Find a better way to check this "noneMatch" to remove isContainedWithin from bui...

Open github-actions[bot] opened this issue 1 year ago • 0 comments

since slot can be re-defined on render and this interceptor runs before it

https://github.com/DevNatan/inventory-framework/blob/ea9b4baa26e76b7f413bd316b97af2b0b34e6b3b/inventory-framework-core/src/main/java/me/devnatan/inventoryframework/pipeline/AvailableSlotInterceptor.java#L124


                }
            }

            final BiFunction<Integer, Integer, ComponentBuilder> 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.getNotRenderedComponents().stream()
                .filter(componentFactory -> componentFactory instanceof ItemComponentBuilder)
                .map(componentFactory -> (ItemComponentBuilder) componentFactory)
                .anyMatch(itemBuilder -> itemBuilder.isContainedWithin(slot));
    }
}

github-actions[bot] avatar Dec 09 '23 16:12 github-actions[bot]