aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/impl/BaseBoundsHandlerImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/shedaniel/rei/impl/BaseBoundsHandlerImpl.java')
-rw-r--r--src/main/java/me/shedaniel/rei/impl/BaseBoundsHandlerImpl.java40
1 files changed, 10 insertions, 30 deletions
diff --git a/src/main/java/me/shedaniel/rei/impl/BaseBoundsHandlerImpl.java b/src/main/java/me/shedaniel/rei/impl/BaseBoundsHandlerImpl.java
index 679041fa8..eacc92a96 100644
--- a/src/main/java/me/shedaniel/rei/impl/BaseBoundsHandlerImpl.java
+++ b/src/main/java/me/shedaniel/rei/impl/BaseBoundsHandlerImpl.java
@@ -27,6 +27,9 @@ import com.google.common.collect.Lists;
import me.shedaniel.math.Rectangle;
import me.shedaniel.rei.api.BaseBoundsHandler;
import me.shedaniel.rei.api.DisplayHelper;
+import me.shedaniel.rei.gui.config.DisplayPanelLocation;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.util.ActionResult;
@@ -38,6 +41,7 @@ import java.util.List;
import java.util.function.Supplier;
@ApiStatus.Internal
+@Environment(EnvType.CLIENT)
public class BaseBoundsHandlerImpl implements BaseBoundsHandler {
private static final Comparator<? super Rectangle> RECTANGLE_COMPARER = Comparator.comparingLong(Rectangle::hashCode);
@@ -46,18 +50,8 @@ public class BaseBoundsHandlerImpl implements BaseBoundsHandler {
private List<Pair<Pair<Class<?>, Float>, Supplier<List<Rectangle>>>> list = Lists.newArrayList();
@Override
- public Class<?> getBaseSupportedClass() {
- return Screen.class;
- }
-
- @Override
- public Rectangle getLeftBounds(Screen screen) {
- return new Rectangle();
- }
-
- @Override
- public Rectangle getRightBounds(Screen screen) {
- return new Rectangle();
+ public boolean isHandingScreen(Class<?> screen) {
+ return Screen.class.isAssignableFrom(screen);
}
@Override
@@ -78,30 +72,16 @@ public class BaseBoundsHandlerImpl implements BaseBoundsHandler {
}
@Override
- public boolean shouldRecalculateArea(boolean isOnRightSide, Rectangle rectangle) {
- long current = currentHashCode(isOnRightSide);
+ public boolean shouldRecalculateArea(DisplayPanelLocation location, Rectangle rectangle) {
+ long current = currentHashCode(location);
if (lastArea == current)
return false;
lastArea = current;
return true;
}
- private long currentHashCode(boolean isOnRightSide) {
- DisplayHelper.DisplayBoundsHandler<Screen> handler = (DisplayHelper.DisplayBoundsHandler<Screen>) DisplayHelper.getInstance().getResponsibleBoundsHandler(MinecraftClient.getInstance().currentScreen.getClass());
- return areasHashCode(isOnRightSide ? handler.getRightBounds(MinecraftClient.getInstance().currentScreen) : handler.getLeftBounds(MinecraftClient.getInstance().currentScreen), getExclusionZones(MinecraftClient.getInstance().currentScreen.getClass(), false));
- }
-
- @Override
- public ActionResult canItemSlotWidgetFit(int left, int top, Screen screen, Rectangle fullBounds) {
- Class<? extends Screen> screenClass = screen.getClass();
- for (Pair<Pair<Class<?>, Float>, Supplier<List<Rectangle>>> pair : list) {
- if (pair.getLeft().getLeft().isAssignableFrom(screenClass))
- for (Rectangle zone : pair.getRight().get()) {
- if (left + 18 >= zone.x && top + 18 >= zone.y && left <= zone.getMaxX() && top <= zone.getMaxY())
- return ActionResult.FAIL;
- }
- }
- return ActionResult.PASS;
+ private long currentHashCode(DisplayPanelLocation location) {
+ return areasHashCode(DisplayHelper.getInstance().getOverlayBounds(location, MinecraftClient.getInstance().currentScreen), getExclusionZones(MinecraftClient.getInstance().currentScreen.getClass(), false));
}
@Override