aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me
diff options
context:
space:
mode:
authorSebastian Hartte <sebastian@hartte.de>2020-07-13 01:56:42 +0200
committerSebastian Hartte <sebastian@hartte.de>2020-07-13 01:56:42 +0200
commit3333b14ee3d6d770fa4ea3f39620a7683254120d (patch)
tree97cdcb44110f97aade47f0bd8c6a93ec5d10a667 /src/main/java/me
parent627b2524ee1111a020a38928818858cd8f1bd804 (diff)
downloadRoughlyEnoughItems-3333b14ee3d6d770fa4ea3f39620a7683254120d.tar.gz
RoughlyEnoughItems-3333b14ee3d6d770fa4ea3f39620a7683254120d.tar.bz2
RoughlyEnoughItems-3333b14ee3d6d770fa4ea3f39620a7683254120d.zip
Adds a result that will return to the actual screen
on success.
Diffstat (limited to 'src/main/java/me')
-rw-r--r--src/main/java/me/shedaniel/rei/api/AutoTransferHandler.java35
-rw-r--r--src/main/java/me/shedaniel/rei/impl/InternalWidgets.java6
2 files changed, 32 insertions, 9 deletions
diff --git a/src/main/java/me/shedaniel/rei/api/AutoTransferHandler.java b/src/main/java/me/shedaniel/rei/api/AutoTransferHandler.java
index 85eb02553..df1afc053 100644
--- a/src/main/java/me/shedaniel/rei/api/AutoTransferHandler.java
+++ b/src/main/java/me/shedaniel/rei/api/AutoTransferHandler.java
@@ -47,7 +47,11 @@ public interface AutoTransferHandler {
static Result createSuccessful() {
return new ResultImpl();
}
-
+
+ static Result createSuccessfulReturnToScreen() {
+ return new ResultImpl(true, true, true);
+ }
+
static Result createNotApplicable() {
return new ResultImpl(false);
}
@@ -71,6 +75,12 @@ public interface AutoTransferHandler {
int getColor();
boolean isSuccessful();
+
+ /**
+ * Applicable if {@link #isSuccessful()} is true. Will return
+ * to the previous screen rather than staying open.
+ */
+ boolean isReturnToScreen();
boolean isApplicable();
@@ -111,21 +121,25 @@ public interface AutoTransferHandler {
@ApiStatus.Internal
final class ResultImpl implements Result {
- private boolean successful, applicable;
+ private boolean successful, applicable, returnToScreen;
private String errorKey;
private IntList integers = new IntArrayList();
private int color;
private ResultImpl() {
- this.successful = true;
- this.applicable = true;
+ this(true, true, false);
}
public ResultImpl(boolean applicable) {
- this.successful = false;
+ this(false, applicable, false);
+ }
+
+ public ResultImpl(boolean successful, boolean applicable, boolean returnToScreen) {
+ this.successful = successful;
this.applicable = applicable;
+ this.returnToScreen = returnToScreen;
}
-
+
public ResultImpl(String errorKey, IntList integers, int color) {
this.successful = false;
this.applicable = true;
@@ -144,12 +158,17 @@ public interface AutoTransferHandler {
public boolean isSuccessful() {
return successful;
}
-
+
@Override
public boolean isApplicable() {
return applicable;
}
-
+
+ @Override
+ public boolean isReturnToScreen() {
+ return returnToScreen;
+ }
+
@Override
public String getErrorKey() {
return errorKey;
diff --git a/src/main/java/me/shedaniel/rei/impl/InternalWidgets.java b/src/main/java/me/shedaniel/rei/impl/InternalWidgets.java
index e6b04a84d..307b3cffc 100644
--- a/src/main/java/me/shedaniel/rei/impl/InternalWidgets.java
+++ b/src/main/java/me/shedaniel/rei/impl/InternalWidgets.java
@@ -65,8 +65,12 @@ public final class InternalWidgets {
for (AutoTransferHandler autoTransferHandler : RecipeHelper.getInstance().getSortedAutoCraftingHandler())
try {
AutoTransferHandler.Result result = autoTransferHandler.handle(context);
- if (result.isSuccessful())
+ if (result.isSuccessful()) {
+ if (result.isReturnToScreen()) {
+ break; // Same as failing, but doesn't ask other handlers
+ }
return;
+ }
} catch (Exception e) {
e.printStackTrace();
}