From a6b60ebbb9835f7cb5759a2642924b57348343ab Mon Sep 17 00:00:00 2001 From: C-H716 <1536152356@qq.com> Date: Thu, 9 Oct 2025 13:18:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8A=BD=E7=A6=BB=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/AdvPatternProviderScreenMixin.java | 27 +++---------------- .../SmallAdvPatternProviderScreenMixin.java | 27 +++---------------- .../gui/PatternProviderScreenMixin.java | 27 +++---------------- .../com/extendedae_plus/util/GuiUtil.java | 20 ++++++++++++++ 4 files changed, 29 insertions(+), 72 deletions(-) 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