diff --git a/src/main/java/gregtech/api/cover/CoverWithUI.java b/src/main/java/gregtech/api/cover/CoverWithUI.java index 8802f23fc2f..b557e38cced 100644 --- a/src/main/java/gregtech/api/cover/CoverWithUI.java +++ b/src/main/java/gregtech/api/cover/CoverWithUI.java @@ -33,6 +33,9 @@ import com.cleanroommc.modularui.widgets.ToggleButton; import com.cleanroommc.modularui.widgets.layout.Flow; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; + +import java.util.function.BooleanSupplier; public interface CoverWithUI extends Cover, IUIHolder, IGuiHolder { @@ -117,6 +120,18 @@ default ParentWidget createSettingsRow() { return new ParentWidget<>().height(16).widthRel(1.0f).marginBottom(2); } + /** + * Create a dynamic lang key that switches between {@code cover.generic.enabled} and {@code cover.generic.disabled} + * depending on the result of the given boolean supplier.
+ * + * @param keyBase the base of the lang key to use. {@code .enabled} and {@code .disabled} will be appended. + */ + default IKey createEnabledKey(@NotNull String keyBase, @NotNull BooleanSupplier enabledState) { + String enabled = keyBase + ".enabled"; + String disabled = keyBase + ".disabled"; + return IKey.lang(() -> enabledState.getAsBoolean() ? enabled : disabled); + } + default int getIncrementValue(MouseData data) { int adjust = 1; if (data.shift) adjust *= 4; diff --git a/src/main/java/gregtech/common/covers/CoverFluidFilter.java b/src/main/java/gregtech/common/covers/CoverFluidFilter.java index e178b0441de..d5d7ae1086e 100644 --- a/src/main/java/gregtech/common/covers/CoverFluidFilter.java +++ b/src/main/java/gregtech/common/covers/CoverFluidFilter.java @@ -166,10 +166,9 @@ public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMan .coverChildrenHeight() .setEnabledIf(b -> getFilterMode() != FluidFilterMode.FILTER_BOTH) .child(new ToggleButton() - .overlay(IKey.dynamic(() -> IKey.lang(allowFlow ? - "cover.generic.enabled" : - "cover.generic.disabled").get()) - .color(Color.WHITE.main).shadow(false)) + .overlay(createEnabledKey("cover.generic", () -> this.allowFlow) + .color(Color.WHITE.main) + .shadow(false)) .tooltip(tooltip -> tooltip .addLine(IKey.lang("cover.filter.allow_flow.tooltip"))) .size(72, 18) diff --git a/src/main/java/gregtech/common/covers/CoverFluidVoiding.java b/src/main/java/gregtech/common/covers/CoverFluidVoiding.java index 750a97de15f..a1374655bdf 100644 --- a/src/main/java/gregtech/common/covers/CoverFluidVoiding.java +++ b/src/main/java/gregtech/common/covers/CoverFluidVoiding.java @@ -24,7 +24,6 @@ import codechicken.lib.render.pipeline.IVertexOperation; import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Matrix4; -import com.cleanroommc.modularui.api.drawable.IKey; import com.cleanroommc.modularui.factory.GuiData; import com.cleanroommc.modularui.factory.SidedPosGuiData; import com.cleanroommc.modularui.screen.ModularPanel; @@ -79,16 +78,14 @@ public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMan @Override protected ParentWidget createUI(GuiData data, PanelSyncManager syncManager) { - var isWorking = new BooleanSyncValue(this::isWorkingEnabled, this::setWorkingEnabled); + BooleanSyncValue isWorking = new BooleanSyncValue(this::isWorkingEnabled, this::setWorkingEnabled); return super.createUI(data, syncManager) .child(Flow.row().height(18).widthRel(1f) .marginBottom(2) .child(new ToggleButton() .value(isWorking) - .overlay(IKey.dynamic(() -> IKey.lang(this.isWorkingAllowed ? - "behaviour.soft_hammer.enabled" : - "behaviour.soft_hammer.disabled").get()) + .overlay(createEnabledKey("behaviour.soft_hammer", () -> this.isWorkingAllowed) .color(Color.WHITE.darker(1))) .widthRel(0.6f) .left(0))); diff --git a/src/main/java/gregtech/common/covers/CoverItemFilter.java b/src/main/java/gregtech/common/covers/CoverItemFilter.java index 35a418d50cd..274afc462d3 100644 --- a/src/main/java/gregtech/common/covers/CoverItemFilter.java +++ b/src/main/java/gregtech/common/covers/CoverItemFilter.java @@ -168,10 +168,9 @@ public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMan .coverChildrenHeight() .setEnabledIf(b -> getFilterMode() != ItemFilterMode.FILTER_BOTH) .child(new ToggleButton() - .overlay(IKey.dynamic(() -> IKey.lang(allowFlow ? - "cover.generic.enabled" : - "cover.generic.disabled").get()) - .color(Color.WHITE.main).shadow(false)) + .overlay(createEnabledKey("cover.generic", () -> this.allowFlow) + .color(Color.WHITE.main) + .shadow(false)) .tooltip(tooltip -> tooltip .addLine(IKey.lang("cover.filter.allow_flow.tooltip"))) .size(72, 18) diff --git a/src/main/java/gregtech/common/covers/CoverItemVoiding.java b/src/main/java/gregtech/common/covers/CoverItemVoiding.java index 234ebb70fcc..95cfa8c8241 100644 --- a/src/main/java/gregtech/common/covers/CoverItemVoiding.java +++ b/src/main/java/gregtech/common/covers/CoverItemVoiding.java @@ -21,7 +21,6 @@ import codechicken.lib.render.pipeline.IVertexOperation; import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Matrix4; -import com.cleanroommc.modularui.api.drawable.IKey; import com.cleanroommc.modularui.factory.GuiData; import com.cleanroommc.modularui.factory.SidedPosGuiData; import com.cleanroommc.modularui.screen.ModularPanel; @@ -80,16 +79,14 @@ public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMan @Override protected ParentWidget createUI(GuiData data, PanelSyncManager guiSyncManager) { - var isWorking = new BooleanSyncValue(this::isWorkingEnabled, this::setWorkingEnabled); + BooleanSyncValue isWorking = new BooleanSyncValue(this::isWorkingEnabled, this::setWorkingEnabled); return super.createUI(data, guiSyncManager) .child(Flow.row().height(18).widthRel(1f) .marginBottom(2) .child(new ToggleButton() .value(isWorking) - .overlay(IKey.dynamic(() -> IKey.lang(this.isWorkingAllowed ? - "behaviour.soft_hammer.enabled" : - "behaviour.soft_hammer.disabled").get()) + .overlay(createEnabledKey("behaviour.soft_hammer", () -> this.isWorkingAllowed) .color(Color.WHITE.darker(1))) .widthRel(0.6f) .left(0)));