feat: 抽离按钮创建方法

This commit is contained in:
C-H716 2025-10-09 13:18:44 +08:00
parent 57781edbf3
commit a6b60ebbb9
4 changed files with 29 additions and 72 deletions

View File

@ -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<AdvPatt
super(menu, playerInventory, title, style);
}
/* ---------------------------- 工具方法 ---------------------------- */
/**
* 创建一个带有自定义点击事件和 tooltip 的切换按钮
*/
@Unique
private SettingToggleButton<YesNo> eap$createToggle(boolean initial,
Runnable onClick,
Supplier<List<Component>> tooltipSupplier) {
return new SettingToggleButton<>(
Settings.BLOCKING_MODE,
initial ? YesNo.YES : YesNo.NO,
(btn, backwards) -> onClick.run()
) {
@Override
public List<Component> getTooltipMessage() {
return tooltipSupplier.get();
}
};
}
/** 同步服务端状态(初始化时调用) */
@Unique
private void eap$syncInitialState(AdvPatternProviderMenu menu) {
@ -97,7 +76,7 @@ public abstract class AdvPatternProviderScreenMixin extends AEBaseScreen<AdvPatt
@Unique
private void eap$createWidgets() {
// 高级阻挡
this.eap$AdvancedBlockingToggle = eap$createToggle(
this.eap$AdvancedBlockingToggle = createToggle(
eap$AdvancedBlockingEnabled,
() -> ModNetwork.CHANNEL.sendToServer(new ToggleAdvancedBlockingC2SPacket()),
() -> {
@ -112,7 +91,7 @@ public abstract class AdvPatternProviderScreenMixin extends AEBaseScreen<AdvPatt
this.addToLeftToolbar(this.eap$AdvancedBlockingToggle);
// 智能翻倍
this.eap$SmartDoublingToggle = eap$createToggle(
this.eap$SmartDoublingToggle = createToggle(
eap$SmartDoublingEnabled,
() -> ModNetwork.CHANNEL.sendToServer(new ToggleSmartDoublingC2SPacket()),
() -> {

View File

@ -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<Sm
super(menu, playerInventory, title, style);
}
/* ---------------------------- 工具方法 ---------------------------- */
/**
* 创建一个带有自定义点击事件和 tooltip 的切换按钮
*/
@Unique
private SettingToggleButton<YesNo> eap$createToggle(boolean initial,
Runnable onClick,
Supplier<List<Component>> tooltipSupplier) {
return new SettingToggleButton<>(
Settings.BLOCKING_MODE,
initial ? YesNo.YES : YesNo.NO,
(btn, backwards) -> onClick.run()
) {
@Override
public List<Component> getTooltipMessage() {
return tooltipSupplier.get();
}
};
}
/** 同步服务端状态(初始化时调用) */
@Unique
private void eap$syncInitialState(AdvPatternProviderMenu menu) {
@ -98,7 +77,7 @@ public abstract class SmallAdvPatternProviderScreenMixin extends AEBaseScreen<Sm
@Unique
private void eap$createWidgets() {
// 高级阻挡
this.eap$AdvancedBlockingToggle = eap$createToggle(
this.eap$AdvancedBlockingToggle = createToggle(
eap$AdvancedBlockingEnabled,
() -> ModNetwork.CHANNEL.sendToServer(new ToggleAdvancedBlockingC2SPacket()),
() -> {
@ -113,7 +92,7 @@ public abstract class SmallAdvPatternProviderScreenMixin extends AEBaseScreen<Sm
this.addToLeftToolbar(this.eap$AdvancedBlockingToggle);
// 智能翻倍
this.eap$SmartDoublingToggle = eap$createToggle(
this.eap$SmartDoublingToggle = createToggle(
eap$SmartDoublingEnabled,
() -> ModNetwork.CHANNEL.sendToServer(new ToggleSmartDoublingC2SPacket()),
() -> {

View File

@ -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<C extends PatternProviderMenu>
super(menu, playerInventory, title, style);
}
/* ---------------------------- 工具方法 ---------------------------- */
/**
* 创建一个带有自定义点击事件和 tooltip 的切换按钮
*/
@Unique
private SettingToggleButton<YesNo> eap$createToggle(boolean initial,
Runnable onClick,
Supplier<List<Component>> tooltipSupplier) {
return new SettingToggleButton<>(
Settings.BLOCKING_MODE,
initial ? YesNo.YES : YesNo.NO,
(btn, backwards) -> onClick.run()
) {
@Override
public List<Component> getTooltipMessage() {
return tooltipSupplier.get();
}
};
}
/** 同步服务端状态(初始化时调用) */
@Unique
private void eap$syncInitialState(C menu) {
@ -100,7 +79,7 @@ public abstract class PatternProviderScreenMixin<C extends PatternProviderMenu>
@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<C extends PatternProviderMenu>
this.addToLeftToolbar(this.eap$AdvancedBlockingToggle);
// 智能翻倍
this.eap$SmartDoublingToggle = eap$createToggle(
this.eap$SmartDoublingToggle = createToggle(
eap$SmartDoublingEnabled,
() -> ModNetwork.CHANNEL.sendToServer(new ToggleSmartDoublingC2SPacket()),
() -> {

View File

@ -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<YesNo> createToggle(boolean initial,
Runnable onClick,
Supplier<List<Component>> tooltipSupplier) {
return new SettingToggleButton<>(
Settings.BLOCKING_MODE,
initial ? YesNo.YES : YesNo.NO,
(btn, backwards) -> onClick.run()
) {
@Override
public List<Component> getTooltipMessage() {
return tooltipSupplier.get();
}
};
}
}