From 5e2eccadbd91171c01cdb209d1338bcfb7786b1c Mon Sep 17 00:00:00 2001 From: shedaniel Date: Thu, 2 Jan 2020 14:31:16 +0800 Subject: 3.3 Fix #58 Close #134 Close #158 Fix #227 --- .../shedaniel/rei/impl/BaseBoundsHandlerImpl.java | 30 +++++++++++----------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'src/main/java/me/shedaniel/rei/impl/BaseBoundsHandlerImpl.java') diff --git a/src/main/java/me/shedaniel/rei/impl/BaseBoundsHandlerImpl.java b/src/main/java/me/shedaniel/rei/impl/BaseBoundsHandlerImpl.java index 54a4813f0..ae4cb24df 100644 --- a/src/main/java/me/shedaniel/rei/impl/BaseBoundsHandlerImpl.java +++ b/src/main/java/me/shedaniel/rei/impl/BaseBoundsHandlerImpl.java @@ -22,32 +22,32 @@ import java.util.function.Supplier; @Deprecated @Internal public class BaseBoundsHandlerImpl implements BaseBoundsHandler { - + private static final Comparator RECTANGLE_COMPARER = Comparator.comparingLong(Rectangle::hashCode); - + private long lastArea = -1; private List, Float>, Supplier>>> 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(); } - + @Override public float getPriority() { return -5f; } - + @Override public ActionResult isInZone(double mouseX, double mouseY) { Class screenClass = MinecraftClient.getInstance().currentScreen.getClass(); @@ -59,7 +59,7 @@ public class BaseBoundsHandlerImpl implements BaseBoundsHandler { } return ActionResult.PASS; } - + @Override public boolean shouldRecalculateArea(boolean isOnRightSide, Rectangle rectangle) { long current = currentHashCode(isOnRightSide); @@ -68,12 +68,12 @@ public class BaseBoundsHandlerImpl implements BaseBoundsHandler { lastArea = current; return true; } - + private long currentHashCode(boolean isOnRightSide) { DisplayHelper.DisplayBoundsHandler handler = 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 screenClass = screen.getClass(); @@ -86,7 +86,7 @@ public class BaseBoundsHandlerImpl implements BaseBoundsHandler { } return ActionResult.PASS; } - + @Override public List getExclusionZones(Class currentScreenClass, boolean sort) { List rectangles = Lists.newArrayList(); @@ -98,22 +98,22 @@ public class BaseBoundsHandlerImpl implements BaseBoundsHandler { rectangles.sort(RECTANGLE_COMPARER); return rectangles; } - + @Override public int supplierSize() { return list.size(); } - + @Override public void registerExclusionZones(Class screenClass, Supplier> supplier) { list.add(new Pair<>(new Pair<>(screenClass, 0f), supplier)); } - + private long areasHashCode(Rectangle rectangle, List exclusionZones) { int hashCode = 31 + (rectangle == null ? 0 : rectangle.hashCode()); for (Rectangle e : exclusionZones) hashCode = 31 * hashCode + (e == null ? 0 : e.hashCode()); return hashCode; } - + } -- cgit