From fe626c7a82d63a65fffc3125031bd0859e8f3c51 Mon Sep 17 00:00:00 2001 From: C-H716 <1536152356@qq.com> Date: Thu, 30 Oct 2025 18:31:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=B2=A1=E7=94=A8=E7=9A=84To?= =?UTF-8?q?olboxMenu=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../compat/UpgradeSlotCompat.java | 3 -- .../compat/PatternProviderCompatMixin.java | 38 ++++++------------- .../PatternProviderScreenCompatMixin.java | 23 +++-------- .../helpers/InterfaceLogicUpgradesMixin.java | 2 +- 4 files changed, 18 insertions(+), 48 deletions(-) diff --git a/src/main/java/com/extendedae_plus/compat/UpgradeSlotCompat.java b/src/main/java/com/extendedae_plus/compat/UpgradeSlotCompat.java index 96382dd..69ba585 100644 --- a/src/main/java/com/extendedae_plus/compat/UpgradeSlotCompat.java +++ b/src/main/java/com/extendedae_plus/compat/UpgradeSlotCompat.java @@ -1,7 +1,6 @@ package com.extendedae_plus.compat; import appeng.api.upgrades.IUpgradeInventory; -import appeng.menu.ToolboxMenu; import net.minecraftforge.fml.ModList; /** @@ -50,8 +49,6 @@ public class UpgradeSlotCompat { * 兼容性升级菜单接口 */ public interface IUpgradeableMenuCompat { - ToolboxMenu getCompatToolbox(); - void setCompatToolbox(ToolboxMenu toolbox); IUpgradeInventory getCompatUpgrades(); } } diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/compat/PatternProviderCompatMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/compat/PatternProviderCompatMixin.java index db7ef04..2f11276 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/compat/PatternProviderCompatMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/compat/PatternProviderCompatMixin.java @@ -1,12 +1,11 @@ package com.extendedae_plus.mixin.ae2.compat; import appeng.api.upgrades.IUpgradeInventory; +import appeng.api.upgrades.IUpgradeableObject; import appeng.helpers.patternprovider.PatternProviderLogicHost; import appeng.menu.AEBaseMenu; -import appeng.menu.ToolboxMenu; import appeng.menu.implementations.PatternProviderMenu; import com.extendedae_plus.compat.UpgradeSlotCompat; -import com.extendedae_plus.util.Logger; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.MenuType; import org.spongepowered.asm.mixin.Mixin; @@ -15,19 +14,21 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import static com.extendedae_plus.util.Logger.EAP$LOGGER; + /** * PatternProviderMenu的兼容性Mixin * 优先级设置为500,低于appflux的默认优先级,避免冲突 */ @Mixin(value = PatternProviderMenu.class, priority = 500, remap = false) public abstract class PatternProviderCompatMixin extends AEBaseMenu implements UpgradeSlotCompat.IUpgradeableMenuCompat { - - @Unique - private ToolboxMenu eap$compatToolbox; - @Unique private IUpgradeInventory eap$compatUpgrades; - + + public PatternProviderCompatMixin(MenuType menuType, int id, Inventory playerInventory, Object host) { + super(menuType, id, playerInventory, host); + } + @Inject(method = "(Lnet/minecraft/world/inventory/MenuType;ILnet/minecraft/world/entity/player/Inventory;Lappeng/helpers/patternprovider/PatternProviderLogicHost;)V", at = @At("TAIL")) private void eap$initCompatUpgrades(MenuType menuType, int id, Inventory playerInventory, PatternProviderLogicHost host, CallbackInfo ci) { @@ -35,36 +36,19 @@ public abstract class PatternProviderCompatMixin extends AEBaseMenu implements U // 检测是否应该启用升级卡槽功能 if (UpgradeSlotCompat.shouldEnableUpgradeSlots()) { // 直接初始化升级功能 - this.eap$compatToolbox = new ToolboxMenu(this); - - if (host instanceof appeng.api.upgrades.IUpgradeableObject upgradeableHost) { + if (host instanceof IUpgradeableObject upgradeableHost) { this.eap$compatUpgrades = upgradeableHost.getUpgrades(); this.setupUpgrades(this.eap$compatUpgrades); } } } catch (Exception e) { // 静默处理异常,确保不会因为升级功能导致崩溃 - Logger.EAP$LOGGER.error("PatternProviderMenu兼容性升级初始化失败", e); + EAP$LOGGER.error("PatternProviderMenu兼容性升级初始化失败", e); } } - - @Override - public ToolboxMenu getCompatToolbox() { - return this.eap$compatToolbox; - } - - @Override - public void setCompatToolbox(ToolboxMenu toolbox) { - this.eap$compatToolbox = toolbox; - } - + @Override public IUpgradeInventory getCompatUpgrades() { return this.eap$compatUpgrades; } - - // 构造函数,Mixin要求 - public PatternProviderCompatMixin(MenuType menuType, int id, Inventory playerInventory, Object host) { - super(menuType, id, playerInventory, host); - } } diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/compat/PatternProviderScreenCompatMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/compat/PatternProviderScreenCompatMixin.java index 32b450f..63313ed 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/compat/PatternProviderScreenCompatMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/compat/PatternProviderScreenCompatMixin.java @@ -4,7 +4,6 @@ import appeng.api.upgrades.Upgrades; import appeng.client.gui.AEBaseScreen; import appeng.client.gui.implementations.PatternProviderScreen; import appeng.client.gui.style.ScreenStyle; -import appeng.client.gui.widgets.ToolboxPanel; import appeng.client.gui.widgets.UpgradesPanel; import appeng.core.localization.GuiText; import appeng.menu.SlotSemantics; @@ -28,6 +27,9 @@ import java.util.List; */ @Mixin(value = PatternProviderScreen.class, priority = 500, remap = false) public abstract class PatternProviderScreenCompatMixin extends AEBaseScreen { + public PatternProviderScreenCompatMixin(C menu, Inventory playerInventory, Component title, ScreenStyle style) { + super(menu, playerInventory, title, style); + } @Inject(method = "", at = @At("TAIL")) private void eap$initCompatUpgrades(PatternProviderMenu menu, Inventory playerInventory, Component title, ScreenStyle style, CallbackInfo ci) { @@ -42,7 +44,7 @@ public abstract class PatternProviderScreenCompatMixin eap$getCompatibleUpgrades() { var list = new ArrayList(); list.add(GuiText.CompatibleUpgrades.text()); - + try { if (menu instanceof UpgradeSlotCompat.IUpgradeableMenuCompat compatMenu) { var upgrades = compatMenu.getCompatUpgrades(); @@ -78,12 +72,7 @@ public abstract class PatternProviderScreenCompatMixin