From 0292fa5317106c46a39cd39e9664936f807b6270 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sat, 20 Mar 2021 17:20:54 +0800 Subject: Refactor exclusion zones, wrap JEI exclusion zones Signed-off-by: shedaniel --- .../rei/api/registry/screen/DisplayBoundsProvider.java | 13 ------------- .../shedaniel/rei/api/registry/screen/ExclusionZones.java | 7 +++---- .../rei/api/registry/screen/ExclusionZonesProvider.java | 10 ++++++++++ .../rei/api/registry/screen/FocusedStackProvider.java | 3 ++- .../shedaniel/rei/api/registry/screen/ScreenRegistry.java | 5 +++-- 5 files changed, 18 insertions(+), 20 deletions(-) create mode 100644 api/src/main/java/me/shedaniel/rei/api/registry/screen/ExclusionZonesProvider.java (limited to 'api') diff --git a/api/src/main/java/me/shedaniel/rei/api/registry/screen/DisplayBoundsProvider.java b/api/src/main/java/me/shedaniel/rei/api/registry/screen/DisplayBoundsProvider.java index 007aded8c..049df6379 100644 --- a/api/src/main/java/me/shedaniel/rei/api/registry/screen/DisplayBoundsProvider.java +++ b/api/src/main/java/me/shedaniel/rei/api/registry/screen/DisplayBoundsProvider.java @@ -24,7 +24,6 @@ package me.shedaniel.rei.api.registry.screen; import me.shedaniel.math.Rectangle; -import net.minecraft.client.gui.screens.Screen; public interface DisplayBoundsProvider extends OverlayDecider { /** @@ -32,16 +31,4 @@ public interface DisplayBoundsProvider extends OverlayDecider { * @return the boundary of the base container panel. */ Rectangle getScreenBounds(T screen); - - /** - * Gets the base supported class for the bounds handler - * - * @return the base class - */ - Class getBaseSupportedClass(); - - @Override - default boolean isHandingScreen(Class screen) { - return getBaseSupportedClass().isAssignableFrom(screen); - } } \ No newline at end of file diff --git a/api/src/main/java/me/shedaniel/rei/api/registry/screen/ExclusionZones.java b/api/src/main/java/me/shedaniel/rei/api/registry/screen/ExclusionZones.java index d564a6080..415407646 100644 --- a/api/src/main/java/me/shedaniel/rei/api/registry/screen/ExclusionZones.java +++ b/api/src/main/java/me/shedaniel/rei/api/registry/screen/ExclusionZones.java @@ -28,7 +28,6 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import java.util.List; -import java.util.function.Supplier; @Environment(EnvType.CLIENT) public interface ExclusionZones extends OverlayDecider { @@ -49,8 +48,8 @@ public interface ExclusionZones extends OverlayDecider { /** * Register an exclusion zone * - * @param screenClass the screen - * @param supplier the exclusion zone supplier, returns the list of exclusion zones + * @param screenClass the screen class + * @param provider the exclusion zone provider, returns a collection of exclusion zones */ - void register(Class screenClass, Supplier> supplier); + void register(Class screenClass, ExclusionZonesProvider provider); } diff --git a/api/src/main/java/me/shedaniel/rei/api/registry/screen/ExclusionZonesProvider.java b/api/src/main/java/me/shedaniel/rei/api/registry/screen/ExclusionZonesProvider.java new file mode 100644 index 000000000..99f86703f --- /dev/null +++ b/api/src/main/java/me/shedaniel/rei/api/registry/screen/ExclusionZonesProvider.java @@ -0,0 +1,10 @@ +package me.shedaniel.rei.api.registry.screen; + +import me.shedaniel.math.Rectangle; + +import java.util.Collection; + +@FunctionalInterface +public interface ExclusionZonesProvider { + Collection provide(T screen); +} diff --git a/api/src/main/java/me/shedaniel/rei/api/registry/screen/FocusedStackProvider.java b/api/src/main/java/me/shedaniel/rei/api/registry/screen/FocusedStackProvider.java index 6e0c682fd..2d31a4a4a 100644 --- a/api/src/main/java/me/shedaniel/rei/api/registry/screen/FocusedStackProvider.java +++ b/api/src/main/java/me/shedaniel/rei/api/registry/screen/FocusedStackProvider.java @@ -23,6 +23,7 @@ package me.shedaniel.rei.api.registry.screen; +import me.shedaniel.math.Point; import me.shedaniel.rei.api.ingredient.EntryStack; import net.minecraft.client.gui.screens.Screen; import net.minecraft.world.InteractionResultHolder; @@ -38,7 +39,7 @@ public interface FocusedStackProvider extends Comparable { } @NotNull - InteractionResultHolder> provide(Screen screen); + InteractionResultHolder> provide(Screen screen, Point mouse); @Override default int compareTo(@NotNull FocusedStackProvider o) { diff --git a/api/src/main/java/me/shedaniel/rei/api/registry/screen/ScreenRegistry.java b/api/src/main/java/me/shedaniel/rei/api/registry/screen/ScreenRegistry.java index b4d89b033..4484e5050 100644 --- a/api/src/main/java/me/shedaniel/rei/api/registry/screen/ScreenRegistry.java +++ b/api/src/main/java/me/shedaniel/rei/api/registry/screen/ScreenRegistry.java @@ -23,6 +23,7 @@ package me.shedaniel.rei.api.registry.screen; +import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.gui.config.DisplayPanelLocation; import me.shedaniel.rei.api.ingredient.EntryStack; @@ -55,7 +56,7 @@ public interface ScreenRegistry extends Reloadable { * * @return the list of registered overlay deciders */ - List getDeciders(Class screenClass); + List getDeciders(R screen); /** * Gets all registered overlay deciders @@ -81,7 +82,7 @@ public interface ScreenRegistry extends Reloadable { */ Rectangle getOverlayBounds(DisplayPanelLocation location, T screen); - @Nullable EntryStack getFocusedStack(T screen); + @Nullable EntryStack getFocusedStack(T screen, Point mouse); ExclusionZones exclusionZones(); -- cgit