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 --- .../java/me/shedaniel/rei/impl/ExclusionZonesImpl.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'runtime/src/main/java/me/shedaniel/rei/impl/ExclusionZonesImpl.java') diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/ExclusionZonesImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/ExclusionZonesImpl.java index 8bdd2c472..e7cc29564 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/ExclusionZonesImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/ExclusionZonesImpl.java @@ -29,6 +29,7 @@ import com.google.common.collect.Multimap; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.gui.config.DisplayPanelLocation; import me.shedaniel.rei.api.registry.screen.ExclusionZones; +import me.shedaniel.rei.api.registry.screen.ExclusionZonesProvider; import me.shedaniel.rei.api.registry.screen.ScreenRegistry; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -49,7 +50,7 @@ public class ExclusionZonesImpl implements ExclusionZones { private static final Comparator RECTANGLE_COMPARER = Comparator.comparingLong(Rectangle::hashCode); private long lastArea = -1; - private Multimap, Supplier>> list = HashMultimap.create(); + private Multimap, Supplier>> list = HashMultimap.create(); @Override public boolean isHandingScreen(Class screen) { @@ -65,9 +66,9 @@ public class ExclusionZonesImpl implements ExclusionZones { public InteractionResult isInZone(double mouseX, double mouseY) { Class screenClass = Minecraft.getInstance().screen.getClass(); - for (Map.Entry, Collection>>> collectionEntry : list.asMap().entrySet()) { + for (Map.Entry, Collection>>> collectionEntry : list.asMap().entrySet()) { if (collectionEntry.getKey().isAssignableFrom(screenClass)) { - for (Supplier> listSupplier : collectionEntry.getValue()) { + for (Supplier> listSupplier : collectionEntry.getValue()) { for (Rectangle zone : listSupplier.get()) { if (zone.contains(mouseX, mouseY)) { return InteractionResult.FAIL; @@ -97,9 +98,9 @@ public class ExclusionZonesImpl implements ExclusionZones { @Override public List getExclusionZones(Class currentScreenClass, boolean sort) { List rectangles = Lists.newArrayList(); - for (Map.Entry, Collection>>> collectionEntry : list.asMap().entrySet()) { + for (Map.Entry, Collection>>> collectionEntry : list.asMap().entrySet()) { if (collectionEntry.getKey().isAssignableFrom(currentScreenClass)) { - for (Supplier> listSupplier : collectionEntry.getValue()) { + for (Supplier> listSupplier : collectionEntry.getValue()) { rectangles.addAll(listSupplier.get()); } } @@ -116,8 +117,8 @@ public class ExclusionZonesImpl implements ExclusionZones { } @Override - public void register(Class screenClass, Supplier> supplier) { - list.put(screenClass, supplier); + public void register(Class screenClass, ExclusionZonesProvider provider) { + list.put(screenClass, () -> ((ExclusionZonesProvider) provider).provide((T) Minecraft.getInstance().screen)); } private long areasHashCode(Rectangle rectangle, List exclusionZones) { -- cgit