删除没用的ToolboxMenu添加
This commit is contained in:
parent
4c207edea5
commit
fe626c7a82
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 = "<init>(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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<C extends PatternProviderMenu> extends AEBaseScreen<C> {
|
||||
public PatternProviderScreenCompatMixin(C menu, Inventory playerInventory, Component title, ScreenStyle style) {
|
||||
super(menu, playerInventory, title, style);
|
||||
}
|
||||
|
||||
@Inject(method = "<init>", 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<C extends PatternProvider
|
|||
Logger.EAP$LOGGER.error("PatternProviderScreen兼容性升级面板初始化失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Unique
|
||||
private void eap$addUpgradePanelDirect(PatternProviderMenu menu, ScreenStyle style) {
|
||||
try {
|
||||
|
|
@ -50,14 +52,6 @@ public abstract class PatternProviderScreenCompatMixin<C extends PatternProvider
|
|||
this.widgets.add("upgrades", new UpgradesPanel(
|
||||
menu.getSlots(SlotSemantics.UPGRADE),
|
||||
this::eap$getCompatibleUpgrades));
|
||||
|
||||
// 添加工具箱面板(如果菜单实现了兼容接口)
|
||||
if (menu instanceof UpgradeSlotCompat.IUpgradeableMenuCompat compatMenu) {
|
||||
var toolbox = compatMenu.getCompatToolbox();
|
||||
if (toolbox != null && toolbox.isPresent()) {
|
||||
this.widgets.add("toolbox", new ToolboxPanel(style, toolbox.getName()));
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Logger.EAP$LOGGER.error("直接添加升级面板失败", e);
|
||||
}
|
||||
|
|
@ -67,7 +61,7 @@ public abstract class PatternProviderScreenCompatMixin<C extends PatternProvider
|
|||
private List<Component> eap$getCompatibleUpgrades() {
|
||||
var list = new ArrayList<Component>();
|
||||
list.add(GuiText.CompatibleUpgrades.text());
|
||||
|
||||
|
||||
try {
|
||||
if (menu instanceof UpgradeSlotCompat.IUpgradeableMenuCompat compatMenu) {
|
||||
var upgrades = compatMenu.getCompatUpgrades();
|
||||
|
|
@ -78,12 +72,7 @@ public abstract class PatternProviderScreenCompatMixin<C extends PatternProvider
|
|||
} catch (Exception e) {
|
||||
Logger.EAP$LOGGER.error("获取兼容升级列表失败", e);
|
||||
}
|
||||
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
// 构造函数,Mixin要求
|
||||
public PatternProviderScreenCompatMixin(C menu, Inventory playerInventory, Component title, ScreenStyle style) {
|
||||
super(menu, playerInventory, title, style);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ public class InterfaceLogicUpgradesMixin {
|
|||
private IUpgradeInventory upgrades;
|
||||
|
||||
@Shadow
|
||||
protected void onUpgradesChanged() {}
|
||||
private void onUpgradesChanged() {}
|
||||
|
||||
/**
|
||||
* 在InterfaceLogic构造函数末尾注入,增加升级槽数量
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user