feat: 抽离按钮创建方法
This commit is contained in:
parent
57781edbf3
commit
a6b60ebbb9
|
|
@ -1,6 +1,5 @@
|
||||||
package com.extendedae_plus.mixin.advancedae.client.gui;
|
package com.extendedae_plus.mixin.advancedae.client.gui;
|
||||||
|
|
||||||
import appeng.api.config.Settings;
|
|
||||||
import appeng.api.config.YesNo;
|
import appeng.api.config.YesNo;
|
||||||
import appeng.client.gui.AEBaseScreen;
|
import appeng.client.gui.AEBaseScreen;
|
||||||
import appeng.client.gui.style.ScreenStyle;
|
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 org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import java.util.List;
|
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;
|
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);
|
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
|
@Unique
|
||||||
private void eap$syncInitialState(AdvPatternProviderMenu menu) {
|
private void eap$syncInitialState(AdvPatternProviderMenu menu) {
|
||||||
|
|
@ -97,7 +76,7 @@ public abstract class AdvPatternProviderScreenMixin extends AEBaseScreen<AdvPatt
|
||||||
@Unique
|
@Unique
|
||||||
private void eap$createWidgets() {
|
private void eap$createWidgets() {
|
||||||
// 高级阻挡
|
// 高级阻挡
|
||||||
this.eap$AdvancedBlockingToggle = eap$createToggle(
|
this.eap$AdvancedBlockingToggle = createToggle(
|
||||||
eap$AdvancedBlockingEnabled,
|
eap$AdvancedBlockingEnabled,
|
||||||
() -> ModNetwork.CHANNEL.sendToServer(new ToggleAdvancedBlockingC2SPacket()),
|
() -> ModNetwork.CHANNEL.sendToServer(new ToggleAdvancedBlockingC2SPacket()),
|
||||||
() -> {
|
() -> {
|
||||||
|
|
@ -112,7 +91,7 @@ public abstract class AdvPatternProviderScreenMixin extends AEBaseScreen<AdvPatt
|
||||||
this.addToLeftToolbar(this.eap$AdvancedBlockingToggle);
|
this.addToLeftToolbar(this.eap$AdvancedBlockingToggle);
|
||||||
|
|
||||||
// 智能翻倍
|
// 智能翻倍
|
||||||
this.eap$SmartDoublingToggle = eap$createToggle(
|
this.eap$SmartDoublingToggle = createToggle(
|
||||||
eap$SmartDoublingEnabled,
|
eap$SmartDoublingEnabled,
|
||||||
() -> ModNetwork.CHANNEL.sendToServer(new ToggleSmartDoublingC2SPacket()),
|
() -> ModNetwork.CHANNEL.sendToServer(new ToggleSmartDoublingC2SPacket()),
|
||||||
() -> {
|
() -> {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package com.extendedae_plus.mixin.advancedae.client.gui;
|
package com.extendedae_plus.mixin.advancedae.client.gui;
|
||||||
|
|
||||||
import appeng.api.config.Settings;
|
|
||||||
import appeng.api.config.YesNo;
|
import appeng.api.config.YesNo;
|
||||||
import appeng.client.gui.AEBaseScreen;
|
import appeng.client.gui.AEBaseScreen;
|
||||||
import appeng.client.gui.style.ScreenStyle;
|
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 org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import java.util.List;
|
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;
|
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);
|
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
|
@Unique
|
||||||
private void eap$syncInitialState(AdvPatternProviderMenu menu) {
|
private void eap$syncInitialState(AdvPatternProviderMenu menu) {
|
||||||
|
|
@ -98,7 +77,7 @@ public abstract class SmallAdvPatternProviderScreenMixin extends AEBaseScreen<Sm
|
||||||
@Unique
|
@Unique
|
||||||
private void eap$createWidgets() {
|
private void eap$createWidgets() {
|
||||||
// 高级阻挡
|
// 高级阻挡
|
||||||
this.eap$AdvancedBlockingToggle = eap$createToggle(
|
this.eap$AdvancedBlockingToggle = createToggle(
|
||||||
eap$AdvancedBlockingEnabled,
|
eap$AdvancedBlockingEnabled,
|
||||||
() -> ModNetwork.CHANNEL.sendToServer(new ToggleAdvancedBlockingC2SPacket()),
|
() -> ModNetwork.CHANNEL.sendToServer(new ToggleAdvancedBlockingC2SPacket()),
|
||||||
() -> {
|
() -> {
|
||||||
|
|
@ -113,7 +92,7 @@ public abstract class SmallAdvPatternProviderScreenMixin extends AEBaseScreen<Sm
|
||||||
this.addToLeftToolbar(this.eap$AdvancedBlockingToggle);
|
this.addToLeftToolbar(this.eap$AdvancedBlockingToggle);
|
||||||
|
|
||||||
// 智能翻倍
|
// 智能翻倍
|
||||||
this.eap$SmartDoublingToggle = eap$createToggle(
|
this.eap$SmartDoublingToggle = createToggle(
|
||||||
eap$SmartDoublingEnabled,
|
eap$SmartDoublingEnabled,
|
||||||
() -> ModNetwork.CHANNEL.sendToServer(new ToggleSmartDoublingC2SPacket()),
|
() -> ModNetwork.CHANNEL.sendToServer(new ToggleSmartDoublingC2SPacket()),
|
||||||
() -> {
|
() -> {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package com.extendedae_plus.mixin.ae2.client.gui;
|
package com.extendedae_plus.mixin.ae2.client.gui;
|
||||||
|
|
||||||
import appeng.api.config.Settings;
|
|
||||||
import appeng.api.config.YesNo;
|
import appeng.api.config.YesNo;
|
||||||
import appeng.client.gui.AEBaseScreen;
|
import appeng.client.gui.AEBaseScreen;
|
||||||
import appeng.client.gui.implementations.PatternProviderScreen;
|
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 org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import java.util.List;
|
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;
|
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);
|
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
|
@Unique
|
||||||
private void eap$syncInitialState(C menu) {
|
private void eap$syncInitialState(C menu) {
|
||||||
|
|
@ -100,7 +79,7 @@ public abstract class PatternProviderScreenMixin<C extends PatternProviderMenu>
|
||||||
@Unique
|
@Unique
|
||||||
private void eap$createWidgets() {
|
private void eap$createWidgets() {
|
||||||
// 高级阻挡
|
// 高级阻挡
|
||||||
this.eap$AdvancedBlockingToggle = eap$createToggle(
|
this.eap$AdvancedBlockingToggle = createToggle(
|
||||||
eap$AdvancedBlockingEnabled,
|
eap$AdvancedBlockingEnabled,
|
||||||
() -> ModNetwork.CHANNEL.sendToServer(new ToggleAdvancedBlockingC2SPacket()),
|
() -> ModNetwork.CHANNEL.sendToServer(new ToggleAdvancedBlockingC2SPacket()),
|
||||||
() -> {
|
() -> {
|
||||||
|
|
@ -115,7 +94,7 @@ public abstract class PatternProviderScreenMixin<C extends PatternProviderMenu>
|
||||||
this.addToLeftToolbar(this.eap$AdvancedBlockingToggle);
|
this.addToLeftToolbar(this.eap$AdvancedBlockingToggle);
|
||||||
|
|
||||||
// 智能翻倍
|
// 智能翻倍
|
||||||
this.eap$SmartDoublingToggle = eap$createToggle(
|
this.eap$SmartDoublingToggle = createToggle(
|
||||||
eap$SmartDoublingEnabled,
|
eap$SmartDoublingEnabled,
|
||||||
() -> ModNetwork.CHANNEL.sendToServer(new ToggleSmartDoublingC2SPacket()),
|
() -> ModNetwork.CHANNEL.sendToServer(new ToggleSmartDoublingC2SPacket()),
|
||||||
() -> {
|
() -> {
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,22 @@
|
||||||
package com.extendedae_plus.util;
|
package com.extendedae_plus.util;
|
||||||
|
|
||||||
|
import appeng.api.config.Settings;
|
||||||
|
import appeng.api.config.YesNo;
|
||||||
import appeng.api.crafting.PatternDetailsHelper;
|
import appeng.api.crafting.PatternDetailsHelper;
|
||||||
import appeng.api.stacks.GenericStack;
|
import appeng.api.stacks.GenericStack;
|
||||||
import appeng.client.gui.me.patternaccess.PatternContainerRecord;
|
import appeng.client.gui.me.patternaccess.PatternContainerRecord;
|
||||||
import appeng.client.gui.me.patternaccess.PatternSlot;
|
import appeng.client.gui.me.patternaccess.PatternSlot;
|
||||||
|
import appeng.client.gui.widgets.SettingToggleButton;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.gui.Font;
|
import net.minecraft.client.gui.Font;
|
||||||
import net.minecraft.client.gui.GuiGraphics;
|
import net.minecraft.client.gui.GuiGraphics;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.world.inventory.Slot;
|
import net.minecraft.world.inventory.Slot;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -184,4 +189,19 @@ public class GuiUtil {
|
||||||
int backgroundColor = withAlpha(rainbowRgb, 0x3C);
|
int backgroundColor = withAlpha(rainbowRgb, 0x3C);
|
||||||
drawSlotBox(guiGraphics, sx, sy, borderColor, backgroundColor);
|
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();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user