aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api')
-rw-r--r--src/main/java/gregtech/api/gui/modularui/GT_UITextures.java13
-rw-r--r--src/main/java/gregtech/api/gui/widgets/GT_DisabledWhileActiveButton.java104
-rw-r--r--src/main/java/gregtech/api/recipe/check/CheckRecipeResultRegistry.java7
3 files changed, 124 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/gui/modularui/GT_UITextures.java b/src/main/java/gregtech/api/gui/modularui/GT_UITextures.java
index 83aeb1d029..19bf3ca3f4 100644
--- a/src/main/java/gregtech/api/gui/modularui/GT_UITextures.java
+++ b/src/main/java/gregtech/api/gui/modularui/GT_UITextures.java
@@ -281,6 +281,8 @@ public class GT_UITextures {
.fullImage(GregTech.ID, "gui/overlay_button/batch_mode_off_disabled");
public static final UITexture OVERLAY_BUTTON_FORBIDDEN = UITexture
.fullImage(GregTech.ID, "gui/overlay_button/forbidden");
+ public static final UITexture OVERLAY_BUTTON_LOCKED = UITexture
+ .fullImage(GregTech.ID, "gui/overlay_button/lock_small");
public static final UITexture OVERLAY_BUTTON_DOWN_TIERING_ON = UITexture
.fullImage(GregTech.ID, "gui/overlay_button/down_tiering_on");
public static final UITexture OVERLAY_BUTTON_DOWN_TIERING_OFF = UITexture
@@ -366,6 +368,17 @@ public class GT_UITextures {
.fullImage(GregTech.ID, "gui/overlay_button/use_processing_state.png");
public static final UITexture OVERLAY_BUTTON_USE_INVERTED_PROCESSING_STATE = UITexture
.fullImage(GregTech.ID, "gui/overlay_button/use_inverted_processing_state.png");
+ public static final UITexture OVERLAY_CHUNK_LOADING = UITexture
+ .fullImage(GregTech.ID, "gui/overlay_button/chunkloading");
+ public static final UITexture OVERLAY_CHUNK_LOADING_OFF = UITexture
+ .fullImage(GregTech.ID, "gui/overlay_button/chunkloading_off");
+ public static final UITexture OVERLAY_WORK_AREA = UITexture.fullImage(GregTech.ID, "gui/overlay_button/work_area");
+ public static final UITexture OVERLAY_REPLACE_COBBLE_ON = UITexture
+ .fullImage(GregTech.ID, "gui/overlay_button/replace_cobble_on");
+ public static final UITexture OVERLAY_REPLACE_COBBLE_OFF = UITexture
+ .fullImage(GregTech.ID, "gui/overlay_button/replace_cobble_off");
+ public static final UITexture OVERLAY_RETRACT_PIPE = UITexture
+ .fullImage(GregTech.ID, "gui/overlay_button/retract_pipes");
/**
* Can adjust size as needed.
diff --git a/src/main/java/gregtech/api/gui/widgets/GT_DisabledWhileActiveButton.java b/src/main/java/gregtech/api/gui/widgets/GT_DisabledWhileActiveButton.java
new file mode 100644
index 0000000000..e86589ac2a
--- /dev/null
+++ b/src/main/java/gregtech/api/gui/widgets/GT_DisabledWhileActiveButton.java
@@ -0,0 +1,104 @@
+package gregtech.api.gui.widgets;
+
+import java.lang.ref.WeakReference;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+import java.util.function.BiConsumer;
+import java.util.function.Supplier;
+
+import net.minecraft.util.StatCollector;
+
+import org.jetbrains.annotations.NotNull;
+
+import com.google.common.collect.ImmutableList;
+import com.gtnewhorizons.modularui.api.drawable.IDrawable;
+import com.gtnewhorizons.modularui.api.screen.ModularWindow;
+import com.gtnewhorizons.modularui.api.widget.Widget;
+import com.gtnewhorizons.modularui.common.widget.ButtonWidget;
+import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget;
+
+import gregtech.api.gui.modularui.GT_UITextures;
+import gregtech.api.interfaces.tileentity.IMachineProgress;
+
+public class GT_DisabledWhileActiveButton extends ButtonWidget {
+
+ @NotNull
+ private final WeakReference<IMachineProgress> machineRef;
+
+ public GT_DisabledWhileActiveButton(@NotNull IMachineProgress machine, @NotNull ModularWindow.Builder builder) {
+ super();
+ machineRef = new WeakReference<>(machine);
+
+ super.attachSyncer(
+ new FakeSyncWidget.BooleanSyncer(() -> isMachineActive().orElse(true), a -> {}),
+ builder,
+ (widget, aBoolean) -> widget.notifyTooltipChange());
+
+ super.dynamicTooltip(this::generateTooltip);
+ }
+
+ @NotNull
+ @Override
+ public ButtonWidget setOnClick(@NotNull BiConsumer<ClickData, Widget> clickAction) {
+ return super.setOnClick((clickData, widget) -> isMachineActive().ifPresent(isActive -> {
+ if (!isActive) {
+ clickAction.accept(clickData, widget);
+ }
+ }));
+ }
+
+ @NotNull
+ @Override
+ public Widget setBackground(@NotNull IDrawable... drawables) {
+ return super.setBackground(() -> appendLockedOverlay(drawables));
+ }
+
+ @NotNull
+ @Override
+ public Widget setBackground(@NotNull Supplier<IDrawable[]> drawablesSupplier) {
+ return super.setBackground(() -> appendLockedOverlay(drawablesSupplier.get()));
+ }
+
+ @NotNull
+ @Override
+ public Widget dynamicTooltip(@NotNull Supplier<List<String>> dynamicTooltip) {
+ return super.dynamicTooltip(() -> {
+ ImmutableList.Builder<String> tooltips = ImmutableList.<String>builder()
+ .addAll(dynamicTooltip.get());
+ tooltips.addAll(generateTooltip());
+
+ return tooltips.build();
+ });
+ }
+
+ @NotNull
+ private Optional<Boolean> isMachineActive() {
+ return Optional.ofNullable(machineRef.get())
+ .map(IMachineProgress::isActive);
+ }
+
+ @NotNull
+ private IDrawable[] appendLockedOverlay(@NotNull IDrawable[] drawables) {
+ return isMachineActive().map(isActive -> {
+ if (isActive) {
+ final IDrawable[] copy = Arrays.copyOf(drawables, drawables.length + 1);
+ copy[drawables.length] = GT_UITextures.OVERLAY_BUTTON_LOCKED;
+ return copy;
+ }
+ return drawables;
+ })
+ .orElse(drawables);
+ }
+
+ @NotNull
+ private List<String> generateTooltip() {
+ return isMachineActive().map(isActive -> {
+ if (isActive) {
+ return ImmutableList.of(StatCollector.translateToLocal("GT5U.gui.button.forbidden_while_running"));
+ }
+ return ImmutableList.<String>of();
+ })
+ .orElse(ImmutableList.of());
+ }
+}
diff --git a/src/main/java/gregtech/api/recipe/check/CheckRecipeResultRegistry.java b/src/main/java/gregtech/api/recipe/check/CheckRecipeResultRegistry.java
index aa129bab86..ad0d56708e 100644
--- a/src/main/java/gregtech/api/recipe/check/CheckRecipeResultRegistry.java
+++ b/src/main/java/gregtech/api/recipe/check/CheckRecipeResultRegistry.java
@@ -84,6 +84,13 @@ public final class CheckRecipeResultRegistry {
* Machine had an internal error
*/
public static final CheckRecipeResult INTERNAL_ERROR = SimpleCheckRecipeResult.ofFailure("internal_error");
+ /** Multiblock ore drill has no drilling fluid */
+ public static final CheckRecipeResult NO_DRILLING_FLUID = SimpleCheckRecipeResult.ofFailure("no_drilling_fluid");
+ /** Multiblock drill is missing mining pipe */
+ public static final CheckRecipeResult MISSING_MINING_PIPE = SimpleCheckRecipeResult.ofFailure("no_mining_pipe");
+ /** Concrete backfiller is out of concrete */
+ public static final CheckRecipeResult BACKFILLER_NO_CONCRETE = SimpleCheckRecipeResult
+ .ofFailure("backfiller_no_concrete");
/**
* Cannot process recipe because the machine cannot handle required EUt.