aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/api/DisplayHelper.java
diff options
context:
space:
mode:
authorDaniel She <shekwancheung0528@gmail.com>2019-05-12 10:55:21 +0800
committerDaniel She <shekwancheung0528@gmail.com>2019-05-12 10:55:21 +0800
commitf51e5af85e26f588cbe2eba2eef728e783201bc8 (patch)
treee490afcfe8974af8a6c65954667bf822505224d4 /src/main/java/me/shedaniel/rei/api/DisplayHelper.java
parent64c240a5a5eb6b4312b86e24ddbaaa70ada49359 (diff)
parentb99108611ea89dc0eda6c433447ce398a98ad4ad (diff)
downloadRoughlyEnoughItems-f51e5af85e26f588cbe2eba2eef728e783201bc8.tar.gz
RoughlyEnoughItems-f51e5af85e26f588cbe2eba2eef728e783201bc8.tar.bz2
RoughlyEnoughItems-f51e5af85e26f588cbe2eba2eef728e783201bc8.zip
Merge branch '1.14-dev' into 1.14
Diffstat (limited to 'src/main/java/me/shedaniel/rei/api/DisplayHelper.java')
-rw-r--r--src/main/java/me/shedaniel/rei/api/DisplayHelper.java91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/main/java/me/shedaniel/rei/api/DisplayHelper.java b/src/main/java/me/shedaniel/rei/api/DisplayHelper.java
index 8234c20b3..51e54302c 100644
--- a/src/main/java/me/shedaniel/rei/api/DisplayHelper.java
+++ b/src/main/java/me/shedaniel/rei/api/DisplayHelper.java
@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
package me.shedaniel.rei.api;
import me.shedaniel.rei.RoughlyEnoughItemsCore;
@@ -10,41 +15,127 @@ import static net.minecraft.util.ActionResult.PASS;
public interface DisplayHelper {
+ /**
+ * Gets the sorted version of all responsible bounds handlers
+ *
+ * @param screenClass the class for checking responsible bounds handlers
+ * @return the sorted list of responsible bounds handlers
+ * @see DisplayHelper#getResponsibleBoundsHandler(Class) for the unsorted version
+ */
List<DisplayBoundsHandler> getSortedBoundsHandlers(Class screenClass);
+ /**
+ * Gets all registered bounds handlers
+ *
+ * @return the list of registered bounds handlers
+ */
List<DisplayBoundsHandler> getAllBoundsHandlers();
+ /**
+ * Gets all responsible bounds handlers
+ *
+ * @param screenClass the class for checking responsible bounds handlers
+ * @return the the list of responsible bounds handlers
+ * @see DisplayHelper#getSortedBoundsHandlers(Class) for the sorted version
+ */
DisplayBoundsHandler getResponsibleBoundsHandler(Class screenClass);
+ /**
+ * Registers a bounds handler
+ *
+ * @param handler the handler to register
+ */
void registerBoundsHandler(DisplayBoundsHandler handler);
+ /**
+ * Gets the base bounds handler api for exclusion zones
+ *
+ * @return the base bounds handler
+ */
BaseBoundsHandler getBaseBoundsHandler();
public static interface DisplayBoundsHandler<T> {
+ /**
+ * An empty rectangle
+ */
public static final Rectangle EMPTY = new Rectangle();
+ /**
+ * Gets the base supported class for the bounds handler
+ *
+ * @return
+ */
Class getBaseSupportedClass();
+ /**
+ * Gets the left bounds of the overlay
+ *
+ * @param screen the current screen
+ * @return the left bounds
+ */
Rectangle getLeftBounds(T screen);
+ /**
+ * Gets the right bounds of the overlay
+ *
+ * @param screen the current screen
+ * @return the right bounds
+ */
Rectangle getRightBounds(T screen);
+ /**
+ * Checks if item slot can fit the screen
+ *
+ * @param isOnRightSide whether the user has set the overlay to the right
+ * @param left the left x coordinates of the stack
+ * @param top the top y coordinates for the stack
+ * @param screen the current screen
+ * @param fullBounds the current bounds
+ * @return whether the item slot can fit
+ * @see BaseBoundsHandler#registerExclusionZones(Class, BaseBoundsHandler.ExclusionZoneSupplier) for easier api
+ */
default ActionResult canItemSlotWidgetFit(boolean isOnRightSide, int left, int top, T screen, Rectangle fullBounds) {
return PASS;
}
+ /**
+ * Checks if mouse is inside the overlay
+ *
+ * @param isOnRightSide whether the user has set the overlay to the right
+ * @param mouseX mouse's x coordinates
+ * @param mouseY mouse's y coordinates
+ * @return whether mouse is inside the overlay
+ */
default ActionResult isInZone(boolean isOnRightSide, double mouseX, double mouseY) {
return PASS;
}
+ /**
+ * Gets the item list bounds by the overlay bounds
+ *
+ * @param rectangle the overlay bounds
+ * @return the item list bounds
+ */
default Rectangle getItemListArea(Rectangle rectangle) {
return new Rectangle(rectangle.x + 2, rectangle.y + 24, rectangle.width - 4, rectangle.height - (RoughlyEnoughItemsCore.getConfigManager().getConfig().sideSearchField ? 27 + 22 : 27));
}
+ /**
+ * Checks if REI should recalculate the overlay bounds
+ *
+ * @param isOnRightSide whether the user has set the overlay to the right
+ * @param rectangle the current overlay bounds
+ * @return whether REI should recalculate the overlay bounds
+ */
default boolean shouldRecalculateArea(boolean isOnRightSide, Rectangle rectangle) {
return false;
}
+ /**
+ * Gets the priority of the handler, the higher it is, the earlier it is called.
+ *
+ * @return the priority in float
+ */
default float getPriority() {
return 0f;
}