diff --git a/src/main/java/com/extendedae_plus/mixin/advancedae/client/gui/AdvPatternProviderScreenMixin.java b/src/main/java/com/extendedae_plus/mixin/advancedae/client/gui/AdvPatternProviderScreenMixin.java index 065b503..a9f1f7e 100644 --- a/src/main/java/com/extendedae_plus/mixin/advancedae/client/gui/AdvPatternProviderScreenMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/advancedae/client/gui/AdvPatternProviderScreenMixin.java @@ -1,6 +1,5 @@ package com.extendedae_plus.mixin.advancedae.client.gui; -import appeng.api.config.Settings; import appeng.api.config.YesNo; import appeng.client.gui.AEBaseScreen; import appeng.client.gui.style.ScreenStyle; @@ -25,8 +24,8 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.List; -import java.util.function.Supplier; +import static com.extendedae_plus.util.GuiUtil.createToggle; import static com.extendedae_plus.util.Logger.EAP$LOGGER; /** @@ -56,26 +55,6 @@ public abstract class AdvPatternProviderScreenMixin extends AEBaseScreen eap$createToggle(boolean initial, - Runnable onClick, - Supplier> tooltipSupplier) { - return new SettingToggleButton<>( - Settings.BLOCKING_MODE, - initial ? YesNo.YES : YesNo.NO, - (btn, backwards) -> onClick.run() - ) { - @Override - public List getTooltipMessage() { - return tooltipSupplier.get(); - } - }; - } - /** 同步服务端状态(初始化时调用) */ @Unique private void eap$syncInitialState(AdvPatternProviderMenu menu) { @@ -97,7 +76,7 @@ public abstract class AdvPatternProviderScreenMixin extends AEBaseScreen ModNetwork.CHANNEL.sendToServer(new ToggleAdvancedBlockingC2SPacket()), () -> { @@ -112,7 +91,7 @@ public abstract class AdvPatternProviderScreenMixin extends AEBaseScreen ModNetwork.CHANNEL.sendToServer(new ToggleSmartDoublingC2SPacket()), () -> { diff --git a/src/main/java/com/extendedae_plus/mixin/advancedae/client/gui/SmallAdvPatternProviderScreenMixin.java b/src/main/java/com/extendedae_plus/mixin/advancedae/client/gui/SmallAdvPatternProviderScreenMixin.java index 45aaade..7b945bb 100644 --- a/src/main/java/com/extendedae_plus/mixin/advancedae/client/gui/SmallAdvPatternProviderScreenMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/advancedae/client/gui/SmallAdvPatternProviderScreenMixin.java @@ -1,6 +1,5 @@ package com.extendedae_plus.mixin.advancedae.client.gui; -import appeng.api.config.Settings; import appeng.api.config.YesNo; import appeng.client.gui.AEBaseScreen; import appeng.client.gui.style.ScreenStyle; @@ -26,8 +25,8 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.List; -import java.util.function.Supplier; +import static com.extendedae_plus.util.GuiUtil.createToggle; import static com.extendedae_plus.util.Logger.EAP$LOGGER; /** @@ -57,26 +56,6 @@ public abstract class SmallAdvPatternProviderScreenMixin extends AEBaseScreen eap$createToggle(boolean initial, - Runnable onClick, - Supplier> tooltipSupplier) { - return new SettingToggleButton<>( - Settings.BLOCKING_MODE, - initial ? YesNo.YES : YesNo.NO, - (btn, backwards) -> onClick.run() - ) { - @Override - public List getTooltipMessage() { - return tooltipSupplier.get(); - } - }; - } - /** 同步服务端状态(初始化时调用) */ @Unique private void eap$syncInitialState(AdvPatternProviderMenu menu) { @@ -98,7 +77,7 @@ public abstract class SmallAdvPatternProviderScreenMixin extends AEBaseScreen ModNetwork.CHANNEL.sendToServer(new ToggleAdvancedBlockingC2SPacket()), () -> { @@ -113,7 +92,7 @@ public abstract class SmallAdvPatternProviderScreenMixin extends AEBaseScreen ModNetwork.CHANNEL.sendToServer(new ToggleSmartDoublingC2SPacket()), () -> { diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/PatternProviderScreenMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/PatternProviderScreenMixin.java index d8a906f..1ab9c66 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/PatternProviderScreenMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/PatternProviderScreenMixin.java @@ -1,6 +1,5 @@ package com.extendedae_plus.mixin.ae2.client.gui; -import appeng.api.config.Settings; import appeng.api.config.YesNo; import appeng.client.gui.AEBaseScreen; import appeng.client.gui.implementations.PatternProviderScreen; @@ -27,8 +26,8 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.List; -import java.util.function.Supplier; +import static com.extendedae_plus.util.GuiUtil.createToggle; import static com.extendedae_plus.util.Logger.EAP$LOGGER; /** @@ -59,26 +58,6 @@ public abstract class PatternProviderScreenMixin super(menu, playerInventory, title, style); } - /* ---------------------------- 工具方法 ---------------------------- */ - /** - * 创建一个带有自定义点击事件和 tooltip 的切换按钮 - */ - @Unique - private SettingToggleButton eap$createToggle(boolean initial, - Runnable onClick, - Supplier> tooltipSupplier) { - return new SettingToggleButton<>( - Settings.BLOCKING_MODE, - initial ? YesNo.YES : YesNo.NO, - (btn, backwards) -> onClick.run() - ) { - @Override - public List getTooltipMessage() { - return tooltipSupplier.get(); - } - }; - } - /** 同步服务端状态(初始化时调用) */ @Unique private void eap$syncInitialState(C menu) { @@ -100,7 +79,7 @@ public abstract class PatternProviderScreenMixin @Unique private void eap$createWidgets() { // 高级阻挡 - this.eap$AdvancedBlockingToggle = eap$createToggle( + this.eap$AdvancedBlockingToggle = createToggle( eap$AdvancedBlockingEnabled, () -> ModNetwork.CHANNEL.sendToServer(new ToggleAdvancedBlockingC2SPacket()), () -> { @@ -115,7 +94,7 @@ public abstract class PatternProviderScreenMixin this.addToLeftToolbar(this.eap$AdvancedBlockingToggle); // 智能翻倍 - this.eap$SmartDoublingToggle = eap$createToggle( + this.eap$SmartDoublingToggle = createToggle( eap$SmartDoublingEnabled, () -> ModNetwork.CHANNEL.sendToServer(new ToggleSmartDoublingC2SPacket()), () -> { diff --git a/src/main/java/com/extendedae_plus/util/GuiUtil.java b/src/main/java/com/extendedae_plus/util/GuiUtil.java index 1c804d9..e56393b 100644 --- a/src/main/java/com/extendedae_plus/util/GuiUtil.java +++ b/src/main/java/com/extendedae_plus/util/GuiUtil.java @@ -1,17 +1,22 @@ package com.extendedae_plus.util; +import appeng.api.config.Settings; +import appeng.api.config.YesNo; import appeng.api.crafting.PatternDetailsHelper; import appeng.api.stacks.GenericStack; import appeng.client.gui.me.patternaccess.PatternContainerRecord; import appeng.client.gui.me.patternaccess.PatternSlot; +import appeng.client.gui.widgets.SettingToggleButton; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.network.chat.Component; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; import java.util.List; import java.util.Set; +import java.util.function.Supplier; /** @@ -184,4 +189,19 @@ public class GuiUtil { int backgroundColor = withAlpha(rainbowRgb, 0x3C); drawSlotBox(guiGraphics, sx, sy, borderColor, backgroundColor); } + + public static SettingToggleButton createToggle(boolean initial, + Runnable onClick, + Supplier> tooltipSupplier) { + return new SettingToggleButton<>( + Settings.BLOCKING_MODE, + initial ? YesNo.YES : YesNo.NO, + (btn, backwards) -> onClick.run() + ) { + @Override + public List getTooltipMessage() { + return tooltipSupplier.get(); + } + }; + } } \ No newline at end of file