aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/enums
diff options
context:
space:
mode:
authorGlease <4586901+Glease@users.noreply.github.com>2023-07-30 20:26:53 +0800
committerGitHub <noreply@github.com>2023-07-30 14:26:53 +0200
commitf983308b936c54f3331424b0d6d51d8a3b11f415 (patch)
treeeabcbe297913884a7acc2997d7464d5fb355d2f2 /src/main/java/gregtech/api/enums
parent9812da7aabe91ce96d9ece08f792912aa7d1882c (diff)
downloadGT5-Unofficial-f983308b936c54f3331424b0d6d51d8a3b11f415.tar.gz
GT5-Unofficial-f983308b936c54f3331424b0d6d51d8a3b11f415.tar.bz2
GT5-Unofficial-f983308b936c54f3331424b0d6d51d8a3b11f415.zip
enable subclass to allow less voiding mode being set (#2191)
* enable subclass to allow less voiding mode being set * fix bug * rename
Diffstat (limited to 'src/main/java/gregtech/api/enums')
-rw-r--r--src/main/java/gregtech/api/enums/VoidingMode.java34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/enums/VoidingMode.java b/src/main/java/gregtech/api/enums/VoidingMode.java
index 47f837daac..8ae9dda57d 100644
--- a/src/main/java/gregtech/api/enums/VoidingMode.java
+++ b/src/main/java/gregtech/api/enums/VoidingMode.java
@@ -1,5 +1,9 @@
package gregtech.api.enums;
+import java.util.Collection;
+import java.util.EnumSet;
+import java.util.Set;
+
import javax.annotation.Nonnull;
import com.gtnewhorizons.modularui.api.drawable.UITexture;
@@ -27,6 +31,18 @@ public enum VoidingMode {
*/
VOID_ALL(false, false, GT_UITextures.BUTTON_STANDARD_PRESSED, GT_UITextures.OVERLAY_BUTTON_VOID_EXCESS_ALL, "all");
+ /**
+ * Default set of voiding mode you will probably support.
+ */
+ public static final Set<VoidingMode> ALL_OPTIONS = EnumSet.allOf(VoidingMode.class);
+ /**
+ * Set of voiding mode you will probably support if your machine has no item output
+ */
+ public static final Set<VoidingMode> FLUID_ONLY_MODES = EnumSet.of(VOID_FLUID, VOID_NONE);
+ /**
+ * Set of voiding mode you will probably support if your machine has no fluid output
+ */
+ public static final Set<VoidingMode> ITEM_ONLY_MODES = EnumSet.of(VOID_ITEM, VOID_NONE);
public final boolean protectItem;
public final boolean protectFluid;
public final UITexture buttonTexture;
@@ -54,6 +70,24 @@ public enum VoidingMode {
return values()[(ordinal() + values().length - 1) % values().length];
}
+ public VoidingMode nextInCollection(Collection<VoidingMode> allowed) {
+ if (allowed.isEmpty()) throw new IllegalArgumentException("nothing allowed");
+ VoidingMode ret = this;
+ do {
+ ret = ret.next();
+ } while (!allowed.contains(ret));
+ return ret;
+ }
+
+ public VoidingMode previousInCollection(Collection<VoidingMode> allowed) {
+ if (allowed.isEmpty()) throw new IllegalArgumentException("nothing allowed");
+ VoidingMode ret = this;
+ do {
+ ret = ret.previous();
+ } while (!allowed.contains(ret));
+ return ret;
+ }
+
/**
* Do not use this for loading mode from TEs, to prevent mode being shifted when new mode is added.
*/