From f5c23d37adb57c4428a8a58e4cc892a6b2e83c30 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Tue, 16 Mar 2021 21:09:24 +0800 Subject: Implement IIngredientFilter, IRecipeManagerPlugin and IGuiIngredientGroup#set, fix IDrawableBuilder with padding Signed-off-by: shedaniel --- .../me/shedaniel/rei/api/ButtonAreaSupplier.java | 2 +- .../rei/api/registry/display/DisplayRegistry.java | 31 ++++++++++++++++------ 2 files changed, 24 insertions(+), 9 deletions(-) (limited to 'api/src/main/java/me') diff --git a/api/src/main/java/me/shedaniel/rei/api/ButtonAreaSupplier.java b/api/src/main/java/me/shedaniel/rei/api/ButtonAreaSupplier.java index 65116400e..323b8d810 100644 --- a/api/src/main/java/me/shedaniel/rei/api/ButtonAreaSupplier.java +++ b/api/src/main/java/me/shedaniel/rei/api/ButtonAreaSupplier.java @@ -31,7 +31,7 @@ import me.shedaniel.math.Rectangle; @FunctionalInterface public interface ButtonAreaSupplier { static ButtonAreaSupplier defaultArea() { - return bounds -> new Rectangle(bounds.getMaxX() - 16, bounds.getMaxY() - 16, 10, 10); + return bounds -> new Rectangle(bounds.getMaxX() + 2, bounds.getMaxY() - 16, 10, 10); } /** diff --git a/api/src/main/java/me/shedaniel/rei/api/registry/display/DisplayRegistry.java b/api/src/main/java/me/shedaniel/rei/api/registry/display/DisplayRegistry.java index 9451eac96..4b970ebd5 100644 --- a/api/src/main/java/me/shedaniel/rei/api/registry/display/DisplayRegistry.java +++ b/api/src/main/java/me/shedaniel/rei/api/registry/display/DisplayRegistry.java @@ -31,9 +31,8 @@ import me.shedaniel.rei.api.registry.Reloadable; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.Container; -import net.minecraft.world.item.crafting.Recipe; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Collections; import java.util.List; @@ -81,6 +80,13 @@ public interface DisplayRegistry extends RecipeManagerContext, Reloadable { return getAllDisplays().getOrDefault(categoryId, Collections.emptyList()); } + /** + * Registers a global category-less display generator + * + * @param generator the generator to register + */ + void registerGlobalDisplayGenerator(LiveDisplayGenerator generator); + /** * Registers a display generator * @@ -94,15 +100,22 @@ public interface DisplayRegistry extends RecipeManagerContext, Reloadable { * * @return an unmodifiable map of display generators */ - Map>> getAllDisplayGenerators(); + Map>> getCategoryDisplayGenerators(); + + /** + * Returns an unmodifiable list of category-less display generators + * + * @return an unmodifiable list of category-less display generators + */ + List> getGlobalDisplayGenerators(); /** * Returns the list of display generators for a category * * @return the list of display generators */ - default List> getDisplayGenerators(ResourceLocation categoryId) { - return getAllDisplayGenerators().getOrDefault(categoryId, Collections.emptyList()); + default List> getCategoryDisplayGenerators(ResourceLocation categoryId) { + return getCategoryDisplayGenerators().getOrDefault(categoryId, Collections.emptyList()); } /** @@ -137,9 +150,11 @@ public interface DisplayRegistry extends RecipeManagerContext, Reloadable { */ List getVisibilityPredicates(); - default , D extends Display> void registerRecipes(Class recipeClass, Function mappingFunction) { - registerRecipes(recipe -> recipeClass.isAssignableFrom(recipe.getClass()), mappingFunction); + default void registerFiller(Class typeClass, Function mappingFunction) { + registerFiller(typeClass, typeClass::isInstance, mappingFunction); } - , D extends Display> void registerRecipes(Predicate recipeFilter, Function mappingFunction); + void registerFiller(Class typeClass, Predicate predicate, Function mappingFunction); + + @Nullable Display tryFillDisplay(T value); } -- cgit