From f983308b936c54f3331424b0d6d51d8a3b11f415 Mon Sep 17 00:00:00 2001 From: Glease <4586901+Glease@users.noreply.github.com> Date: Sun, 30 Jul 2023 20:26:53 +0800 Subject: enable subclass to allow less voiding mode being set (#2191) * enable subclass to allow less voiding mode being set * fix bug * rename --- .../api/interfaces/modularui/ControllerWithOptionalFeatures.java | 6 ++++-- src/main/java/gregtech/api/interfaces/tileentity/IVoidable.java | 5 +++++ 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'src/main/java/gregtech/api/interfaces') diff --git a/src/main/java/gregtech/api/interfaces/modularui/ControllerWithOptionalFeatures.java b/src/main/java/gregtech/api/interfaces/modularui/ControllerWithOptionalFeatures.java index 3d4ed80f67..22694cdafd 100644 --- a/src/main/java/gregtech/api/interfaces/modularui/ControllerWithOptionalFeatures.java +++ b/src/main/java/gregtech/api/interfaces/modularui/ControllerWithOptionalFeatures.java @@ -6,6 +6,7 @@ import static gregtech.api.metatileentity.BaseTileEntity.TOOLTIP_DELAY; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Set; import net.minecraft.util.StatCollector; @@ -80,9 +81,10 @@ public interface ControllerWithOptionalFeatures extends IVoidable, IRecipeLockab default ButtonWidget createVoidExcessButton(IWidgetBuilder builder) { Widget button = new ButtonWidget().setOnClick((clickData, widget) -> { if (supportsVoidProtection()) { + Set allowed = getAllowedVoidingModes(); switch (clickData.mouseButton) { - case 0 -> setVoidingMode(getVoidingMode().next()); - case 1 -> setVoidingMode(getVoidingMode().previous()); + case 0 -> setVoidingMode(getVoidingMode().nextInCollection(allowed)); + case 1 -> setVoidingMode(getVoidingMode().previousInCollection(allowed)); } widget.notifyTooltipChange(); } diff --git a/src/main/java/gregtech/api/interfaces/tileentity/IVoidable.java b/src/main/java/gregtech/api/interfaces/tileentity/IVoidable.java index f4467a2e8c..72dda0ddec 100644 --- a/src/main/java/gregtech/api/interfaces/tileentity/IVoidable.java +++ b/src/main/java/gregtech/api/interfaces/tileentity/IVoidable.java @@ -1,6 +1,7 @@ package gregtech.api.interfaces.tileentity; import java.util.List; +import java.util.Set; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; @@ -18,6 +19,10 @@ public interface IVoidable { */ boolean supportsVoidProtection(); + default Set getAllowedVoidingModes() { + return VoidingMode.ALL_OPTIONS; + } + /** * @return if this machine is configured to not void excess item. */ -- cgit