删除没用的ToolboxMenu添加
This commit is contained in:
parent
4c207edea5
commit
fe626c7a82
|
|
@ -1,7 +1,6 @@
|
||||||
package com.extendedae_plus.compat;
|
package com.extendedae_plus.compat;
|
||||||
|
|
||||||
import appeng.api.upgrades.IUpgradeInventory;
|
import appeng.api.upgrades.IUpgradeInventory;
|
||||||
import appeng.menu.ToolboxMenu;
|
|
||||||
import net.minecraftforge.fml.ModList;
|
import net.minecraftforge.fml.ModList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -50,8 +49,6 @@ public class UpgradeSlotCompat {
|
||||||
* 兼容性升级菜单接口
|
* 兼容性升级菜单接口
|
||||||
*/
|
*/
|
||||||
public interface IUpgradeableMenuCompat {
|
public interface IUpgradeableMenuCompat {
|
||||||
ToolboxMenu getCompatToolbox();
|
|
||||||
void setCompatToolbox(ToolboxMenu toolbox);
|
|
||||||
IUpgradeInventory getCompatUpgrades();
|
IUpgradeInventory getCompatUpgrades();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,11 @@
|
||||||
package com.extendedae_plus.mixin.ae2.compat;
|
package com.extendedae_plus.mixin.ae2.compat;
|
||||||
|
|
||||||
import appeng.api.upgrades.IUpgradeInventory;
|
import appeng.api.upgrades.IUpgradeInventory;
|
||||||
|
import appeng.api.upgrades.IUpgradeableObject;
|
||||||
import appeng.helpers.patternprovider.PatternProviderLogicHost;
|
import appeng.helpers.patternprovider.PatternProviderLogicHost;
|
||||||
import appeng.menu.AEBaseMenu;
|
import appeng.menu.AEBaseMenu;
|
||||||
import appeng.menu.ToolboxMenu;
|
|
||||||
import appeng.menu.implementations.PatternProviderMenu;
|
import appeng.menu.implementations.PatternProviderMenu;
|
||||||
import com.extendedae_plus.compat.UpgradeSlotCompat;
|
import com.extendedae_plus.compat.UpgradeSlotCompat;
|
||||||
import com.extendedae_plus.util.Logger;
|
|
||||||
import net.minecraft.world.entity.player.Inventory;
|
import net.minecraft.world.entity.player.Inventory;
|
||||||
import net.minecraft.world.inventory.MenuType;
|
import net.minecraft.world.inventory.MenuType;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
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.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
import static com.extendedae_plus.util.Logger.EAP$LOGGER;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PatternProviderMenu的兼容性Mixin
|
* PatternProviderMenu的兼容性Mixin
|
||||||
* 优先级设置为500,低于appflux的默认优先级,避免冲突
|
* 优先级设置为500,低于appflux的默认优先级,避免冲突
|
||||||
*/
|
*/
|
||||||
@Mixin(value = PatternProviderMenu.class, priority = 500, remap = false)
|
@Mixin(value = PatternProviderMenu.class, priority = 500, remap = false)
|
||||||
public abstract class PatternProviderCompatMixin extends AEBaseMenu implements UpgradeSlotCompat.IUpgradeableMenuCompat {
|
public abstract class PatternProviderCompatMixin extends AEBaseMenu implements UpgradeSlotCompat.IUpgradeableMenuCompat {
|
||||||
|
|
||||||
@Unique
|
|
||||||
private ToolboxMenu eap$compatToolbox;
|
|
||||||
|
|
||||||
@Unique
|
@Unique
|
||||||
private IUpgradeInventory eap$compatUpgrades;
|
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",
|
@Inject(method = "<init>(Lnet/minecraft/world/inventory/MenuType;ILnet/minecraft/world/entity/player/Inventory;Lappeng/helpers/patternprovider/PatternProviderLogicHost;)V",
|
||||||
at = @At("TAIL"))
|
at = @At("TAIL"))
|
||||||
private void eap$initCompatUpgrades(MenuType<?> menuType, int id, Inventory playerInventory, PatternProviderLogicHost host, CallbackInfo ci) {
|
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()) {
|
if (UpgradeSlotCompat.shouldEnableUpgradeSlots()) {
|
||||||
// 直接初始化升级功能
|
// 直接初始化升级功能
|
||||||
this.eap$compatToolbox = new ToolboxMenu(this);
|
if (host instanceof IUpgradeableObject upgradeableHost) {
|
||||||
|
|
||||||
if (host instanceof appeng.api.upgrades.IUpgradeableObject upgradeableHost) {
|
|
||||||
this.eap$compatUpgrades = upgradeableHost.getUpgrades();
|
this.eap$compatUpgrades = upgradeableHost.getUpgrades();
|
||||||
this.setupUpgrades(this.eap$compatUpgrades);
|
this.setupUpgrades(this.eap$compatUpgrades);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} 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
|
@Override
|
||||||
public IUpgradeInventory getCompatUpgrades() {
|
public IUpgradeInventory getCompatUpgrades() {
|
||||||
return this.eap$compatUpgrades;
|
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.AEBaseScreen;
|
||||||
import appeng.client.gui.implementations.PatternProviderScreen;
|
import appeng.client.gui.implementations.PatternProviderScreen;
|
||||||
import appeng.client.gui.style.ScreenStyle;
|
import appeng.client.gui.style.ScreenStyle;
|
||||||
import appeng.client.gui.widgets.ToolboxPanel;
|
|
||||||
import appeng.client.gui.widgets.UpgradesPanel;
|
import appeng.client.gui.widgets.UpgradesPanel;
|
||||||
import appeng.core.localization.GuiText;
|
import appeng.core.localization.GuiText;
|
||||||
import appeng.menu.SlotSemantics;
|
import appeng.menu.SlotSemantics;
|
||||||
|
|
@ -28,6 +27,9 @@ import java.util.List;
|
||||||
*/
|
*/
|
||||||
@Mixin(value = PatternProviderScreen.class, priority = 500, remap = false)
|
@Mixin(value = PatternProviderScreen.class, priority = 500, remap = false)
|
||||||
public abstract class PatternProviderScreenCompatMixin<C extends PatternProviderMenu> extends AEBaseScreen<C> {
|
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"))
|
@Inject(method = "<init>", at = @At("TAIL"))
|
||||||
private void eap$initCompatUpgrades(PatternProviderMenu menu, Inventory playerInventory, Component title, ScreenStyle style, CallbackInfo ci) {
|
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);
|
Logger.EAP$LOGGER.error("PatternProviderScreen兼容性升级面板初始化失败", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Unique
|
@Unique
|
||||||
private void eap$addUpgradePanelDirect(PatternProviderMenu menu, ScreenStyle style) {
|
private void eap$addUpgradePanelDirect(PatternProviderMenu menu, ScreenStyle style) {
|
||||||
try {
|
try {
|
||||||
|
|
@ -50,14 +52,6 @@ public abstract class PatternProviderScreenCompatMixin<C extends PatternProvider
|
||||||
this.widgets.add("upgrades", new UpgradesPanel(
|
this.widgets.add("upgrades", new UpgradesPanel(
|
||||||
menu.getSlots(SlotSemantics.UPGRADE),
|
menu.getSlots(SlotSemantics.UPGRADE),
|
||||||
this::eap$getCompatibleUpgrades));
|
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) {
|
} catch (Exception e) {
|
||||||
Logger.EAP$LOGGER.error("直接添加升级面板失败", e);
|
Logger.EAP$LOGGER.error("直接添加升级面板失败", e);
|
||||||
}
|
}
|
||||||
|
|
@ -67,7 +61,7 @@ public abstract class PatternProviderScreenCompatMixin<C extends PatternProvider
|
||||||
private List<Component> eap$getCompatibleUpgrades() {
|
private List<Component> eap$getCompatibleUpgrades() {
|
||||||
var list = new ArrayList<Component>();
|
var list = new ArrayList<Component>();
|
||||||
list.add(GuiText.CompatibleUpgrades.text());
|
list.add(GuiText.CompatibleUpgrades.text());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (menu instanceof UpgradeSlotCompat.IUpgradeableMenuCompat compatMenu) {
|
if (menu instanceof UpgradeSlotCompat.IUpgradeableMenuCompat compatMenu) {
|
||||||
var upgrades = compatMenu.getCompatUpgrades();
|
var upgrades = compatMenu.getCompatUpgrades();
|
||||||
|
|
@ -78,12 +72,7 @@ public abstract class PatternProviderScreenCompatMixin<C extends PatternProvider
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Logger.EAP$LOGGER.error("获取兼容升级列表失败", e);
|
Logger.EAP$LOGGER.error("获取兼容升级列表失败", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
return list;
|
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;
|
private IUpgradeInventory upgrades;
|
||||||
|
|
||||||
@Shadow
|
@Shadow
|
||||||
protected void onUpgradesChanged() {}
|
private void onUpgradesChanged() {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 在InterfaceLogic构造函数末尾注入,增加升级槽数量
|
* 在InterfaceLogic构造函数末尾注入,增加升级槽数量
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user