Untitled

 avatar
unknown
plain_text
4 months ago
2.6 kB
9
Indexable
@Override
    public void bindXEIWidget(UIElement widget, Content content, IO io) {
        if (widget instanceof ItemSlot itemSlot) {
            var ingredient = of(content.content);

            var items = ingredient.getItems();
            if (items.length == 0) return;
            if (items.length == 1) {
                itemSlot.setItem(items[0]);
            } else {
                itemSlot.bindDataSource(ScrollDataSource.of(Arrays.stream(items).toList()));
            }

            // xei
            var ingredientIO = switch (io) {
                case IN -> IngredientIO.INPUT;
                case OUT -> IngredientIO.OUTPUT;
                default -> IngredientIO.NONE;
            };

            if (ingredientIO == IngredientIO.NONE) return;

            if (LDLib2.isJeiLoaded()) {
                JEISupport.recipeIngredient(itemSlot, ingredientIO, ingredient);
            }
            if (LDLib2.isReiLoaded()) {
                REISupport.recipeIngredient(itemSlot, ingredientIO, ingredient);
            }
            if (LDLib2.isEmiLoaded()) {
                EMISupport.recipeIngredient(itemSlot, ingredientIO, ingredient);
            }

            itemSlot.xeiRecipeSlot(ingredientIO, content.chance);
        }
    }

    // region XEI Support
    public static class JEISupport {
        public static void recipeIngredient(ItemSlot itemSlot, IngredientIO io, SizedIngredient ingredient) {
            LDLibJEIPlugin.recipeIngredient(itemSlot, io, () -> Arrays.stream(ingredient.getItems())
                    .map(itemStack -> LDLibJEIPlugin.createTypedIngredient(VanillaTypes.ITEM_STACK, itemStack))
                    .filter(Optional::isPresent)
                    .map(Optional::get)
                    .collect(Collectors.toList()));
        }
    }

    public static class REISupport {
        public static void recipeIngredient(ItemSlot itemSlot, IngredientIO io, SizedIngredient ingredient) {
            LDLibREIPlugin.recipeIngredient(itemSlot, io, () -> Arrays.stream(ingredient.getItems())
                    .map(EntryIngredients::of)
                    .toList()
            );
        }
    }

    public static class EMISupport {
        public static void recipeIngredient(ItemSlot itemSlot, IngredientIO io, SizedIngredient ingredient) {
            LDLibEMIPlugin.recipeIngredient(itemSlot, io, () -> Arrays.stream(ingredient.getItems())
                    .map(EmiStack::of)
                    .collect(Collectors.toList())
            );
        }
    }
    // endregion
Editor is loading...
Leave a Comment