From 3ed49ae1c50ca7ee116538bfac69ba220223cb02 Mon Sep 17 00:00:00 2001
From: C-H716 <1536152356@qq.com>
Date: Fri, 22 Aug 2025 00:24:31 +0800
Subject: [PATCH 1/2] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=A1=B9=E7=9B=AE?=
=?UTF-8?q?=E7=BB=93=E6=9E=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../extendedae_plus/client/InputEvents.java | 18 +++---
...ContainerPatternEncodingTermMenuMixin.java | 8 +--
.../mixin/{ => ae2}/MEStorageMenuMixin.java | 13 ++--
.../PatternEncodingTermMenuMixin.java | 35 +++++------
.../PatternEncodingTermScreenMixin.java | 29 ++++-----
.../mixin/ae2/PatternProviderScreenMixin.java | 13 ++--
.../mixin/{ => ae2}/SlotGridLayoutMixin.java | 4 +-
.../accessor/AEBaseScreenAccessor.java | 7 +--
.../accessor/AEBaseScreenInvoker.java | 5 +-
.../accessor/MEStorageMenuAccessor.java | 12 ++--
.../accessor/MEStorageScreenAccessor.java | 9 ++-
.../PatternEncodingTermMenuAccessor.java | 2 +-
.../PatternProviderLogicAccessor.java | 7 +--
...ernProviderLogicPatternInputsAccessor.java | 7 +--
.../PatternProviderMenuAdvancedAccessor.java | 7 +--
...tainerUWirelessExPatternTerminalMixin.java | 3 +-
.../ContainerExPatternProviderMixin.java | 13 ++--
.../ContainerExPatternTerminalMixin.java | 6 +-
...ntainerWirelessExPatternTerminalMixin.java | 5 +-
.../GuiExPatternProviderMixin.java | 8 +--
.../GuiExPatternTerminalMixin.java | 13 ++--
.../HighlightButtonMixin.java | 2 +-
.../PartExPatternProviderMixin.java | 2 +-
.../TileExPatternProviderMixin.java | 2 +-
.../ToggleAdvancedBlockingC2SPacket.java | 11 ++--
.../util/ExtendedAEPatternUploadUtil.java | 60 +++++++++----------
.../resources/extendedae_plus.mixins.json | 49 ++++++++-------
27 files changed, 159 insertions(+), 191 deletions(-)
rename src/main/java/com/extendedae_plus/mixin/{ => ae2}/ContainerPatternEncodingTermMenuMixin.java (99%)
rename src/main/java/com/extendedae_plus/mixin/{ => ae2}/MEStorageMenuMixin.java (97%)
rename src/main/java/com/extendedae_plus/mixin/{ => ae2}/PatternEncodingTermMenuMixin.java (97%)
rename src/main/java/com/extendedae_plus/mixin/{ => ae2}/PatternEncodingTermScreenMixin.java (98%)
rename src/main/java/com/extendedae_plus/mixin/{ => ae2}/SlotGridLayoutMixin.java (97%)
rename src/main/java/com/extendedae_plus/mixin/{ => ae2}/accessor/AEBaseScreenAccessor.java (89%)
rename src/main/java/com/extendedae_plus/mixin/{ => ae2}/accessor/AEBaseScreenInvoker.java (86%)
rename src/main/java/com/extendedae_plus/mixin/{ => ae2}/accessor/MEStorageMenuAccessor.java (94%)
rename src/main/java/com/extendedae_plus/mixin/{ => ae2}/accessor/MEStorageScreenAccessor.java (90%)
rename src/main/java/com/extendedae_plus/mixin/{ => ae2}/accessor/PatternEncodingTermMenuAccessor.java (90%)
rename src/main/java/com/extendedae_plus/mixin/{ => ae2}/accessor/PatternProviderLogicAccessor.java (88%)
rename src/main/java/com/extendedae_plus/mixin/{ => ae2}/accessor/PatternProviderLogicPatternInputsAccessor.java (88%)
rename src/main/java/com/extendedae_plus/mixin/{ => ae2}/accessor/PatternProviderMenuAdvancedAccessor.java (88%)
rename src/main/java/com/extendedae_plus/mixin/{ => ae2WTlib}/ContainerUWirelessExPatternTerminalMixin.java (96%)
rename src/main/java/com/extendedae_plus/mixin/{ => extendedae}/ContainerExPatternProviderMixin.java (98%)
rename src/main/java/com/extendedae_plus/mixin/{ => extendedae}/ContainerExPatternTerminalMixin.java (98%)
rename src/main/java/com/extendedae_plus/mixin/{ => extendedae}/ContainerWirelessExPatternTerminalMixin.java (96%)
rename src/main/java/com/extendedae_plus/mixin/{ => extendedae}/GuiExPatternProviderMixin.java (99%)
rename src/main/java/com/extendedae_plus/mixin/{ => extendedae}/GuiExPatternTerminalMixin.java (98%)
rename src/main/java/com/extendedae_plus/mixin/{ => extendedae}/HighlightButtonMixin.java (98%)
rename src/main/java/com/extendedae_plus/mixin/{ => extendedae}/PartExPatternProviderMixin.java (95%)
rename src/main/java/com/extendedae_plus/mixin/{ => extendedae}/TileExPatternProviderMixin.java (95%)
diff --git a/src/main/java/com/extendedae_plus/client/InputEvents.java b/src/main/java/com/extendedae_plus/client/InputEvents.java
index e45e7dd..9bae0b6 100644
--- a/src/main/java/com/extendedae_plus/client/InputEvents.java
+++ b/src/main/java/com/extendedae_plus/client/InputEvents.java
@@ -1,19 +1,16 @@
package com.extendedae_plus.client;
-import java.util.Optional;
-
-import org.lwjgl.glfw.GLFW;
-
+import appeng.api.stacks.GenericStack;
+import appeng.client.gui.me.common.MEStorageScreen;
+import appeng.integration.modules.jei.GenericEntryStackHelper;
import com.extendedae_plus.ExtendedAEPlus;
import com.extendedae_plus.integration.jei.JeiRuntimeProxy;
+import com.extendedae_plus.mixin.ae2.accessor.MEStorageScreenAccessor;
import com.extendedae_plus.network.ModNetwork;
import com.extendedae_plus.network.OpenCraftFromJeiC2SPacket;
import com.extendedae_plus.network.PullFromJeiOrCraftC2SPacket;
-
-import appeng.api.stacks.GenericStack;
-import appeng.integration.modules.jei.GenericEntryStackHelper;
-import mezz.jei.api.ingredients.ITypedIngredient;
import mezz.jei.api.constants.VanillaTypes;
+import mezz.jei.api.ingredients.ITypedIngredient;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.world.item.ItemStack;
@@ -21,8 +18,9 @@ import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.ScreenEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
-import appeng.client.gui.me.common.MEStorageScreen;
-import com.extendedae_plus.mixin.accessor.MEStorageScreenAccessor;
+import org.lwjgl.glfw.GLFW;
+
+import java.util.Optional;
@Mod.EventBusSubscriber(modid = ExtendedAEPlus.MODID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.FORGE)
public final class InputEvents {
diff --git a/src/main/java/com/extendedae_plus/mixin/ContainerPatternEncodingTermMenuMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/ContainerPatternEncodingTermMenuMixin.java
similarity index 99%
rename from src/main/java/com/extendedae_plus/mixin/ContainerPatternEncodingTermMenuMixin.java
rename to src/main/java/com/extendedae_plus/mixin/ae2/ContainerPatternEncodingTermMenuMixin.java
index 40f6266..0cd3947 100644
--- a/src/main/java/com/extendedae_plus/mixin/ContainerPatternEncodingTermMenuMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/ContainerPatternEncodingTermMenuMixin.java
@@ -1,18 +1,18 @@
-package com.extendedae_plus.mixin;
+package com.extendedae_plus.mixin.ae2;
+import appeng.api.crafting.PatternDetailsHelper;
import appeng.menu.me.items.PatternEncodingTermMenu;
import appeng.menu.slot.RestrictedInputSlot;
-import appeng.api.crafting.PatternDetailsHelper;
import appeng.parts.encoding.EncodingMode;
+import com.extendedae_plus.util.ExtendedAEPatternUploadUtil;
import com.glodblock.github.glodium.network.packet.sync.IActionHolder;
import com.glodblock.github.glodium.network.packet.sync.Paras;
-import com.extendedae_plus.util.ExtendedAEPatternUploadUtil;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.player.Player;
import org.jetbrains.annotations.NotNull;
import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.Shadow;
+import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
diff --git a/src/main/java/com/extendedae_plus/mixin/MEStorageMenuMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/MEStorageMenuMixin.java
similarity index 97%
rename from src/main/java/com/extendedae_plus/mixin/MEStorageMenuMixin.java
rename to src/main/java/com/extendedae_plus/mixin/ae2/MEStorageMenuMixin.java
index 73c083b..bb1d402 100644
--- a/src/main/java/com/extendedae_plus/mixin/MEStorageMenuMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/MEStorageMenuMixin.java
@@ -1,21 +1,20 @@
-package com.extendedae_plus.mixin;
+package com.extendedae_plus.mixin.ae2;
+import appeng.api.config.Setting;
+import appeng.api.util.IConfigManager;
+import appeng.menu.me.common.MEStorageMenu;
+import com.extendedae_plus.mixin.ae2.accessor.MEStorageMenuAccessor;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-import appeng.api.util.IConfigManager;
-import appeng.menu.me.common.MEStorageMenu;
-import com.extendedae_plus.mixin.accessor.MEStorageMenuAccessor;
-import appeng.api.config.Setting;
-
/**
* 修复:当服务端 ConfigManager 注册了额外设置(例如 TERMINAL_SHOW_PATTERN_PROVIDERS)
* 而客户端 clientCM 未注册时,AE2 在同步环节会对 clientCM 执行 getSetting,
* 进而抛出 UnsupportedSettingException。
- *
+ *
* 方案:在服务端首次 broadcastChanges 时,仅为“客户端缺失”的设置执行注册补齐,且占位值与服务端不同,
* 以确保 AE2 后续仍会发送 ConfigValuePacket 完成真正的值同步,避免影响排序等行为。
*/
diff --git a/src/main/java/com/extendedae_plus/mixin/PatternEncodingTermMenuMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/PatternEncodingTermMenuMixin.java
similarity index 97%
rename from src/main/java/com/extendedae_plus/mixin/PatternEncodingTermMenuMixin.java
rename to src/main/java/com/extendedae_plus/mixin/ae2/PatternEncodingTermMenuMixin.java
index d17f475..cd01f0e 100644
--- a/src/main/java/com/extendedae_plus/mixin/PatternEncodingTermMenuMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/PatternEncodingTermMenuMixin.java
@@ -1,30 +1,25 @@
-package com.extendedae_plus.mixin;
+package com.extendedae_plus.mixin.ae2;
+import appeng.api.inventories.InternalInventory;
+import appeng.api.networking.energy.IEnergySource;
+import appeng.api.stacks.AEItemKey;
+import appeng.api.stacks.AEKey;
+import appeng.api.storage.MEStorage;
+import appeng.api.storage.StorageHelper;
+import appeng.core.definitions.AEItems;
+import appeng.helpers.IPatternTerminalMenuHost;
+import appeng.menu.me.common.MEStorageMenu;
+import appeng.menu.me.items.PatternEncodingTermMenu;
+import appeng.menu.slot.RestrictedInputSlot;
+import com.extendedae_plus.mixin.ae2.accessor.MEStorageMenuAccessor;
+import net.minecraft.world.entity.player.Inventory;
+import net.minecraft.world.inventory.MenuType;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-import org.jetbrains.annotations.Nullable;
-
-import net.minecraft.world.entity.player.Inventory;
-import net.minecraft.world.inventory.MenuType;
-
-import appeng.api.inventories.InternalInventory;
-import appeng.api.networking.energy.IEnergySource;
-import appeng.api.storage.MEStorage;
-import appeng.api.storage.StorageHelper;
-import appeng.api.stacks.AEItemKey;
-import appeng.api.stacks.AEKey;
-import appeng.core.definitions.AEItems;
-import appeng.helpers.IPatternTerminalMenuHost;
-import appeng.menu.me.items.PatternEncodingTermMenu;
-import appeng.api.networking.security.IActionSource;
-import appeng.menu.slot.RestrictedInputSlot;
-import appeng.menu.me.common.MEStorageMenu;
-import com.extendedae_plus.mixin.accessor.MEStorageMenuAccessor;
-
@Mixin(PatternEncodingTermMenu.class)
public abstract class PatternEncodingTermMenuMixin {
diff --git a/src/main/java/com/extendedae_plus/mixin/PatternEncodingTermScreenMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/PatternEncodingTermScreenMixin.java
similarity index 98%
rename from src/main/java/com/extendedae_plus/mixin/PatternEncodingTermScreenMixin.java
rename to src/main/java/com/extendedae_plus/mixin/ae2/PatternEncodingTermScreenMixin.java
index 09ac8be..4743df6 100644
--- a/src/main/java/com/extendedae_plus/mixin/PatternEncodingTermScreenMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/PatternEncodingTermScreenMixin.java
@@ -1,28 +1,25 @@
-package com.extendedae_plus.mixin;
+package com.extendedae_plus.mixin.ae2;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Unique;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-import net.minecraft.client.gui.components.Tooltip;
-import net.minecraft.client.gui.GuiGraphics;
-import net.minecraft.client.renderer.Rect2i;
-import net.minecraft.network.chat.Component;
-
-import appeng.client.gui.Icon;
import appeng.client.gui.AEBaseScreen;
+import appeng.client.gui.Icon;
import appeng.client.gui.me.items.PatternEncodingTermScreen;
import appeng.client.gui.style.ScreenStyle;
import appeng.client.gui.style.WidgetStyle;
import appeng.client.gui.widgets.IconButton;
import appeng.menu.AEBaseMenu;
-
-import com.extendedae_plus.network.ModNetwork;
-import com.extendedae_plus.mixin.accessor.AEBaseScreenAccessor;
import com.extendedae_plus.mixin.accessor.AbstractContainerScreenAccessor;
import com.extendedae_plus.mixin.accessor.ScreenAccessor;
+import com.extendedae_plus.mixin.ae2.accessor.AEBaseScreenAccessor;
+import com.extendedae_plus.network.ModNetwork;
+import net.minecraft.client.gui.GuiGraphics;
+import net.minecraft.client.gui.components.Tooltip;
+import net.minecraft.client.renderer.Rect2i;
+import net.minecraft.network.chat.Component;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Unique;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
/**
* 在图样编码终端界面加入一个上传按钮:
diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/PatternProviderScreenMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/PatternProviderScreenMixin.java
index 29f1bc9..4b749bf 100644
--- a/src/main/java/com/extendedae_plus/mixin/ae2/PatternProviderScreenMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/PatternProviderScreenMixin.java
@@ -6,6 +6,12 @@ import appeng.client.gui.implementations.PatternProviderScreen;
import appeng.client.gui.style.ScreenStyle;
import appeng.client.gui.widgets.ToggleButton;
import appeng.menu.implementations.PatternProviderMenu;
+import com.extendedae_plus.api.PatternProviderMenuAdvancedSync;
+import com.extendedae_plus.client.ClientAdvancedBlockingState;
+import com.extendedae_plus.mixin.ae2.accessor.PatternProviderLogicAccessor;
+import com.extendedae_plus.mixin.ae2.accessor.PatternProviderMenuAdvancedAccessor;
+import com.extendedae_plus.network.ModNetwork;
+import com.extendedae_plus.network.ToggleAdvancedBlockingC2SPacket;
import net.minecraft.network.chat.Component;
import net.minecraft.world.entity.player.Inventory;
import org.spongepowered.asm.mixin.Mixin;
@@ -14,13 +20,6 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-import com.extendedae_plus.api.PatternProviderMenuAdvancedSync;
-import com.extendedae_plus.network.ModNetwork;
-import com.extendedae_plus.network.ToggleAdvancedBlockingC2SPacket;
-import com.extendedae_plus.client.ClientAdvancedBlockingState;
-import com.extendedae_plus.mixin.accessor.PatternProviderMenuAdvancedAccessor;
-import com.extendedae_plus.mixin.accessor.PatternProviderLogicAccessor;
-
/**
* 为 AE2 原版样板供应器界面添加“高级阻挡模式”按钮(仅客户端UI反馈)。
* - 位于左侧工具栏
diff --git a/src/main/java/com/extendedae_plus/mixin/SlotGridLayoutMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/SlotGridLayoutMixin.java
similarity index 97%
rename from src/main/java/com/extendedae_plus/mixin/SlotGridLayoutMixin.java
rename to src/main/java/com/extendedae_plus/mixin/ae2/SlotGridLayoutMixin.java
index 705b720..e4a9eff 100644
--- a/src/main/java/com/extendedae_plus/mixin/SlotGridLayoutMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/SlotGridLayoutMixin.java
@@ -1,7 +1,7 @@
-package com.extendedae_plus.mixin;
+package com.extendedae_plus.mixin.ae2;
-import appeng.client.gui.layout.SlotGridLayout;
import appeng.client.Point;
+import appeng.client.gui.layout.SlotGridLayout;
import net.minecraft.client.Minecraft;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
diff --git a/src/main/java/com/extendedae_plus/mixin/accessor/AEBaseScreenAccessor.java b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/AEBaseScreenAccessor.java
similarity index 89%
rename from src/main/java/com/extendedae_plus/mixin/accessor/AEBaseScreenAccessor.java
rename to src/main/java/com/extendedae_plus/mixin/ae2/accessor/AEBaseScreenAccessor.java
index bdcad30..d9aa61a 100644
--- a/src/main/java/com/extendedae_plus/mixin/accessor/AEBaseScreenAccessor.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/AEBaseScreenAccessor.java
@@ -1,11 +1,10 @@
-package com.extendedae_plus.mixin.accessor;
-
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
+package com.extendedae_plus.mixin.ae2.accessor;
import appeng.client.gui.AEBaseScreen;
import appeng.client.gui.style.ScreenStyle;
import appeng.menu.AEBaseMenu;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(value = AEBaseScreen.class, remap = false)
public interface AEBaseScreenAccessor {
diff --git a/src/main/java/com/extendedae_plus/mixin/accessor/AEBaseScreenInvoker.java b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/AEBaseScreenInvoker.java
similarity index 86%
rename from src/main/java/com/extendedae_plus/mixin/accessor/AEBaseScreenInvoker.java
rename to src/main/java/com/extendedae_plus/mixin/ae2/accessor/AEBaseScreenInvoker.java
index 46317d3..0ec30f9 100644
--- a/src/main/java/com/extendedae_plus/mixin/accessor/AEBaseScreenInvoker.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/AEBaseScreenInvoker.java
@@ -1,9 +1,8 @@
-package com.extendedae_plus.mixin.accessor;
-
-import org.spongepowered.asm.mixin.Mixin;
+package com.extendedae_plus.mixin.ae2.accessor;
import appeng.client.gui.AEBaseScreen;
import appeng.menu.AEBaseMenu;
+import org.spongepowered.asm.mixin.Mixin;
@Mixin(AEBaseScreen.class)
public interface AEBaseScreenInvoker {
diff --git a/src/main/java/com/extendedae_plus/mixin/accessor/MEStorageMenuAccessor.java b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/MEStorageMenuAccessor.java
similarity index 94%
rename from src/main/java/com/extendedae_plus/mixin/accessor/MEStorageMenuAccessor.java
rename to src/main/java/com/extendedae_plus/mixin/ae2/accessor/MEStorageMenuAccessor.java
index 0d7a184..a3662ac 100644
--- a/src/main/java/com/extendedae_plus/mixin/accessor/MEStorageMenuAccessor.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/MEStorageMenuAccessor.java
@@ -1,14 +1,12 @@
-package com.extendedae_plus.mixin.accessor;
-
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-import org.jetbrains.annotations.Nullable;
+package com.extendedae_plus.mixin.ae2.accessor;
import appeng.api.networking.energy.IEnergySource;
import appeng.api.storage.MEStorage;
-import appeng.menu.me.common.MEStorageMenu;
import appeng.api.util.IConfigManager;
+import appeng.menu.me.common.MEStorageMenu;
+import org.jetbrains.annotations.Nullable;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(MEStorageMenu.class)
public interface MEStorageMenuAccessor {
diff --git a/src/main/java/com/extendedae_plus/mixin/accessor/MEStorageScreenAccessor.java b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/MEStorageScreenAccessor.java
similarity index 90%
rename from src/main/java/com/extendedae_plus/mixin/accessor/MEStorageScreenAccessor.java
rename to src/main/java/com/extendedae_plus/mixin/ae2/accessor/MEStorageScreenAccessor.java
index d16ef19..e277e1a 100644
--- a/src/main/java/com/extendedae_plus/mixin/accessor/MEStorageScreenAccessor.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/MEStorageScreenAccessor.java
@@ -1,11 +1,10 @@
-package com.extendedae_plus.mixin.accessor;
-
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-import org.spongepowered.asm.mixin.gen.Invoker;
+package com.extendedae_plus.mixin.ae2.accessor;
import appeng.client.gui.me.common.MEStorageScreen;
import appeng.client.gui.widgets.AETextField;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
+import org.spongepowered.asm.mixin.gen.Invoker;
@Mixin(value = MEStorageScreen.class, remap = false)
public interface MEStorageScreenAccessor {
diff --git a/src/main/java/com/extendedae_plus/mixin/accessor/PatternEncodingTermMenuAccessor.java b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternEncodingTermMenuAccessor.java
similarity index 90%
rename from src/main/java/com/extendedae_plus/mixin/accessor/PatternEncodingTermMenuAccessor.java
rename to src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternEncodingTermMenuAccessor.java
index 2070091..a65aac2 100644
--- a/src/main/java/com/extendedae_plus/mixin/accessor/PatternEncodingTermMenuAccessor.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternEncodingTermMenuAccessor.java
@@ -1,4 +1,4 @@
-package com.extendedae_plus.mixin.accessor;
+package com.extendedae_plus.mixin.ae2.accessor;
import appeng.menu.me.items.PatternEncodingTermMenu;
import appeng.menu.slot.RestrictedInputSlot;
diff --git a/src/main/java/com/extendedae_plus/mixin/accessor/PatternProviderLogicAccessor.java b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderLogicAccessor.java
similarity index 88%
rename from src/main/java/com/extendedae_plus/mixin/accessor/PatternProviderLogicAccessor.java
rename to src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderLogicAccessor.java
index 7818382..732c3fc 100644
--- a/src/main/java/com/extendedae_plus/mixin/accessor/PatternProviderLogicAccessor.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderLogicAccessor.java
@@ -1,10 +1,9 @@
-package com.extendedae_plus.mixin.accessor;
-
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
+package com.extendedae_plus.mixin.ae2.accessor;
import appeng.helpers.patternprovider.PatternProviderLogic;
import appeng.helpers.patternprovider.PatternProviderLogicHost;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(PatternProviderLogic.class)
public interface PatternProviderLogicAccessor {
diff --git a/src/main/java/com/extendedae_plus/mixin/accessor/PatternProviderLogicPatternInputsAccessor.java b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderLogicPatternInputsAccessor.java
similarity index 88%
rename from src/main/java/com/extendedae_plus/mixin/accessor/PatternProviderLogicPatternInputsAccessor.java
rename to src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderLogicPatternInputsAccessor.java
index 1c6701c..a7f1158 100644
--- a/src/main/java/com/extendedae_plus/mixin/accessor/PatternProviderLogicPatternInputsAccessor.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderLogicPatternInputsAccessor.java
@@ -1,13 +1,12 @@
-package com.extendedae_plus.mixin.accessor;
+package com.extendedae_plus.mixin.ae2.accessor;
+import appeng.api.stacks.AEKey;
+import appeng.helpers.patternprovider.PatternProviderLogic;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
import java.util.Set;
-import appeng.api.stacks.AEKey;
-import appeng.helpers.patternprovider.PatternProviderLogic;
-
@Mixin(PatternProviderLogic.class)
public interface PatternProviderLogicPatternInputsAccessor {
@Accessor("patternInputs")
diff --git a/src/main/java/com/extendedae_plus/mixin/accessor/PatternProviderMenuAdvancedAccessor.java b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderMenuAdvancedAccessor.java
similarity index 88%
rename from src/main/java/com/extendedae_plus/mixin/accessor/PatternProviderMenuAdvancedAccessor.java
rename to src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderMenuAdvancedAccessor.java
index af5c494..2f62d09 100644
--- a/src/main/java/com/extendedae_plus/mixin/accessor/PatternProviderMenuAdvancedAccessor.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderMenuAdvancedAccessor.java
@@ -1,11 +1,10 @@
-package com.extendedae_plus.mixin.accessor;
+package com.extendedae_plus.mixin.ae2.accessor;
+import appeng.helpers.patternprovider.PatternProviderLogic;
+import appeng.menu.implementations.PatternProviderMenu;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
-import appeng.menu.implementations.PatternProviderMenu;
-import appeng.helpers.patternprovider.PatternProviderLogic;
-
@Mixin(PatternProviderMenu.class)
public interface PatternProviderMenuAdvancedAccessor {
@Accessor("logic")
diff --git a/src/main/java/com/extendedae_plus/mixin/ContainerUWirelessExPatternTerminalMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2WTlib/ContainerUWirelessExPatternTerminalMixin.java
similarity index 96%
rename from src/main/java/com/extendedae_plus/mixin/ContainerUWirelessExPatternTerminalMixin.java
rename to src/main/java/com/extendedae_plus/mixin/ae2WTlib/ContainerUWirelessExPatternTerminalMixin.java
index 83178e8..ac08574 100644
--- a/src/main/java/com/extendedae_plus/mixin/ContainerUWirelessExPatternTerminalMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2WTlib/ContainerUWirelessExPatternTerminalMixin.java
@@ -1,6 +1,5 @@
-package com.extendedae_plus.mixin;
+package com.extendedae_plus.mixin.ae2WTlib;
-import appeng.api.util.IConfigurableObject;
import com.extendedae_plus.util.ExtendedAEPatternUploadUtil;
import com.glodblock.github.extendedae.xmod.wt.ContainerUWirelessExPAT;
import com.glodblock.github.extendedae.xmod.wt.HostUWirelessExPAT;
diff --git a/src/main/java/com/extendedae_plus/mixin/ContainerExPatternProviderMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/ContainerExPatternProviderMixin.java
similarity index 98%
rename from src/main/java/com/extendedae_plus/mixin/ContainerExPatternProviderMixin.java
rename to src/main/java/com/extendedae_plus/mixin/extendedae/ContainerExPatternProviderMixin.java
index 9ed0c22..540d9c5 100644
--- a/src/main/java/com/extendedae_plus/mixin/ContainerExPatternProviderMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/extendedae/ContainerExPatternProviderMixin.java
@@ -1,28 +1,27 @@
-package com.extendedae_plus.mixin;
+package com.extendedae_plus.mixin.extendedae;
+import appeng.api.crafting.PatternDetailsHelper;
+import appeng.api.stacks.GenericStack;
+import appeng.crafting.pattern.AEProcessingPattern;
+import appeng.crafting.pattern.EncodedPatternItem;
import appeng.helpers.patternprovider.PatternProviderLogicHost;
import appeng.menu.SlotSemantics;
import appeng.menu.guisync.GuiSync;
import appeng.menu.implementations.PatternProviderMenu;
import appeng.menu.slot.AppEngSlot;
-import appeng.crafting.pattern.EncodedPatternItem;
-import appeng.crafting.pattern.AEProcessingPattern;
-import appeng.api.stacks.GenericStack;
-import appeng.api.crafting.PatternDetailsHelper;
import com.glodblock.github.extendedae.container.ContainerExPatternProvider;
import com.glodblock.github.glodium.network.packet.sync.IActionHolder;
import com.glodblock.github.glodium.network.packet.sync.Paras;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.inventory.MenuType;
import net.minecraft.world.inventory.Slot;
+import org.jetbrains.annotations.NotNull;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-import org.jetbrains.annotations.NotNull;
-import java.lang.reflect.Field;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
diff --git a/src/main/java/com/extendedae_plus/mixin/ContainerExPatternTerminalMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/ContainerExPatternTerminalMixin.java
similarity index 98%
rename from src/main/java/com/extendedae_plus/mixin/ContainerExPatternTerminalMixin.java
rename to src/main/java/com/extendedae_plus/mixin/extendedae/ContainerExPatternTerminalMixin.java
index 566c413..ff94b52 100644
--- a/src/main/java/com/extendedae_plus/mixin/ContainerExPatternTerminalMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/extendedae/ContainerExPatternTerminalMixin.java
@@ -1,12 +1,13 @@
-package com.extendedae_plus.mixin;
+package com.extendedae_plus.mixin.extendedae;
+import appeng.api.util.IConfigurableObject;
import appeng.menu.guisync.GuiSync;
import com.extendedae_plus.util.ExtendedAEPatternUploadUtil;
-import appeng.api.util.IConfigurableObject;
import com.glodblock.github.extendedae.container.ContainerExPatternTerminal;
import com.glodblock.github.glodium.network.packet.sync.IActionHolder;
import com.glodblock.github.glodium.network.packet.sync.Paras;
import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.world.entity.player.Player;
import org.jetbrains.annotations.NotNull;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
@@ -16,7 +17,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.util.Map;
import java.util.function.Consumer;
-import net.minecraft.world.entity.player.Player;
@Mixin(ContainerExPatternTerminal.class)
public abstract class ContainerExPatternTerminalMixin implements IActionHolder {
diff --git a/src/main/java/com/extendedae_plus/mixin/ContainerWirelessExPatternTerminalMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/ContainerWirelessExPatternTerminalMixin.java
similarity index 96%
rename from src/main/java/com/extendedae_plus/mixin/ContainerWirelessExPatternTerminalMixin.java
rename to src/main/java/com/extendedae_plus/mixin/extendedae/ContainerWirelessExPatternTerminalMixin.java
index 65abf96..168715a 100644
--- a/src/main/java/com/extendedae_plus/mixin/ContainerWirelessExPatternTerminalMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/extendedae/ContainerWirelessExPatternTerminalMixin.java
@@ -1,9 +1,8 @@
-package com.extendedae_plus.mixin;
+package com.extendedae_plus.mixin.extendedae;
-import appeng.api.util.IConfigurableObject;
import com.extendedae_plus.util.ExtendedAEPatternUploadUtil;
-import com.glodblock.github.extendedae.container.ContainerWirelessExPAT;
import com.glodblock.github.extendedae.common.me.itemhost.HostWirelessExPAT;
+import com.glodblock.github.extendedae.container.ContainerWirelessExPAT;
import com.glodblock.github.glodium.network.packet.sync.IActionHolder;
import com.glodblock.github.glodium.network.packet.sync.Paras;
import net.minecraft.server.level.ServerPlayer;
diff --git a/src/main/java/com/extendedae_plus/mixin/GuiExPatternProviderMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/GuiExPatternProviderMixin.java
similarity index 99%
rename from src/main/java/com/extendedae_plus/mixin/GuiExPatternProviderMixin.java
rename to src/main/java/com/extendedae_plus/mixin/extendedae/GuiExPatternProviderMixin.java
index 752c06d..22990b7 100644
--- a/src/main/java/com/extendedae_plus/mixin/GuiExPatternProviderMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/extendedae/GuiExPatternProviderMixin.java
@@ -1,18 +1,16 @@
-package com.extendedae_plus.mixin;
+package com.extendedae_plus.mixin.extendedae;
import appeng.client.gui.Icon;
import appeng.client.gui.implementations.PatternProviderScreen;
import appeng.client.gui.style.PaletteColor;
import appeng.client.gui.style.ScreenStyle;
-import appeng.client.gui.widgets.VerticalButtonBar;
import appeng.menu.SlotSemantics;
import com.extendedae_plus.NewIcon;
-import com.extendedae_plus.util.PatternProviderUIHelper;
import com.glodblock.github.extendedae.client.button.ActionEPPButton;
-import com.glodblock.github.extendedae.network.EPPNetworkHandler;
-import com.glodblock.github.glodium.network.packet.CGenericPacket;
import com.glodblock.github.extendedae.client.gui.GuiExPatternProvider;
import com.glodblock.github.extendedae.container.ContainerExPatternProvider;
+import com.glodblock.github.extendedae.network.EPPNetworkHandler;
+import com.glodblock.github.glodium.network.packet.CGenericPacket;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font;
import net.minecraft.client.gui.GuiGraphics;
diff --git a/src/main/java/com/extendedae_plus/mixin/GuiExPatternTerminalMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/GuiExPatternTerminalMixin.java
similarity index 98%
rename from src/main/java/com/extendedae_plus/mixin/GuiExPatternTerminalMixin.java
rename to src/main/java/com/extendedae_plus/mixin/extendedae/GuiExPatternTerminalMixin.java
index 1214f00..4143ffc 100644
--- a/src/main/java/com/extendedae_plus/mixin/GuiExPatternTerminalMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/extendedae/GuiExPatternTerminalMixin.java
@@ -1,22 +1,19 @@
-package com.extendedae_plus.mixin;
+package com.extendedae_plus.mixin.extendedae;
-import appeng.client.gui.Icon;
+import appeng.api.crafting.PatternDetailsHelper;
import appeng.client.gui.AEBaseScreen;
+import appeng.client.gui.Icon;
import appeng.client.gui.style.ScreenStyle;
import appeng.client.gui.widgets.IconButton;
-import com.extendedae_plus.util.ExtendedAEPatternUploadUtil;
+import com.glodblock.github.extendedae.client.gui.GuiExPatternTerminal;
+import com.glodblock.github.extendedae.container.ContainerExPatternTerminal;
import com.glodblock.github.extendedae.network.EPPNetworkHandler;
import com.glodblock.github.glodium.network.packet.CGenericPacket;
-import com.glodblock.github.extendedae.client.gui.GuiExPatternTerminal;
-import com.glodblock.github.extendedae.client.gui.GuiWirelessExPAT;
-import com.glodblock.github.extendedae.container.ContainerExPatternTerminal;
import net.minecraft.client.gui.components.Tooltip;
import net.minecraft.network.chat.Component;
-import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.inventory.Slot;
import net.minecraft.world.item.ItemStack;
-import appeng.api.crafting.PatternDetailsHelper;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
diff --git a/src/main/java/com/extendedae_plus/mixin/HighlightButtonMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/HighlightButtonMixin.java
similarity index 98%
rename from src/main/java/com/extendedae_plus/mixin/HighlightButtonMixin.java
rename to src/main/java/com/extendedae_plus/mixin/extendedae/HighlightButtonMixin.java
index 135d4d7..8d69174 100644
--- a/src/main/java/com/extendedae_plus/mixin/HighlightButtonMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/extendedae/HighlightButtonMixin.java
@@ -1,4 +1,4 @@
-package com.extendedae_plus.mixin;
+package com.extendedae_plus.mixin.extendedae;
import com.glodblock.github.extendedae.client.button.HighlightButton;
import com.glodblock.github.extendedae.client.gui.GuiExPatternTerminal;
diff --git a/src/main/java/com/extendedae_plus/mixin/PartExPatternProviderMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/PartExPatternProviderMixin.java
similarity index 95%
rename from src/main/java/com/extendedae_plus/mixin/PartExPatternProviderMixin.java
rename to src/main/java/com/extendedae_plus/mixin/extendedae/PartExPatternProviderMixin.java
index b6e4997..5b69fb6 100644
--- a/src/main/java/com/extendedae_plus/mixin/PartExPatternProviderMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/extendedae/PartExPatternProviderMixin.java
@@ -1,4 +1,4 @@
-package com.extendedae_plus.mixin;
+package com.extendedae_plus.mixin.extendedae;
import com.extendedae_plus.config.ModConfigs;
import com.glodblock.github.extendedae.common.parts.PartExPatternProvider;
diff --git a/src/main/java/com/extendedae_plus/mixin/TileExPatternProviderMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/TileExPatternProviderMixin.java
similarity index 95%
rename from src/main/java/com/extendedae_plus/mixin/TileExPatternProviderMixin.java
rename to src/main/java/com/extendedae_plus/mixin/extendedae/TileExPatternProviderMixin.java
index 5dd0d12..1740b24 100644
--- a/src/main/java/com/extendedae_plus/mixin/TileExPatternProviderMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/extendedae/TileExPatternProviderMixin.java
@@ -1,4 +1,4 @@
-package com.extendedae_plus.mixin;
+package com.extendedae_plus.mixin.extendedae;
import com.extendedae_plus.config.ModConfigs;
import com.glodblock.github.extendedae.common.tileentities.TileExPatternProvider;
diff --git a/src/main/java/com/extendedae_plus/network/ToggleAdvancedBlockingC2SPacket.java b/src/main/java/com/extendedae_plus/network/ToggleAdvancedBlockingC2SPacket.java
index 100cf9d..070e2ff 100644
--- a/src/main/java/com/extendedae_plus/network/ToggleAdvancedBlockingC2SPacket.java
+++ b/src/main/java/com/extendedae_plus/network/ToggleAdvancedBlockingC2SPacket.java
@@ -1,17 +1,16 @@
package com.extendedae_plus.network;
+import appeng.menu.implementations.PatternProviderMenu;
+import com.extendedae_plus.api.AdvancedBlockingHolder;
+import com.extendedae_plus.mixin.ae2.accessor.PatternProviderLogicAccessor;
+import com.extendedae_plus.mixin.ae2.accessor.PatternProviderMenuAdvancedAccessor;
import net.minecraft.network.FriendlyByteBuf;
-import net.minecraftforge.network.NetworkEvent;
import net.minecraft.server.level.ServerPlayer;
import net.minecraftforge.network.NetworkDirection;
+import net.minecraftforge.network.NetworkEvent;
import java.util.function.Supplier;
-import appeng.menu.implementations.PatternProviderMenu;
-import com.extendedae_plus.mixin.accessor.PatternProviderMenuAdvancedAccessor;
-import com.extendedae_plus.api.AdvancedBlockingHolder;
-import com.extendedae_plus.mixin.accessor.PatternProviderLogicAccessor;
-
/**
* C2S:切换高级阻挡模式。
* 不含额外负载,直接基于玩家当前打开的 PatternProviderMenu 进行切换。
diff --git a/src/main/java/com/extendedae_plus/util/ExtendedAEPatternUploadUtil.java b/src/main/java/com/extendedae_plus/util/ExtendedAEPatternUploadUtil.java
index ef505b8..14923c8 100644
--- a/src/main/java/com/extendedae_plus/util/ExtendedAEPatternUploadUtil.java
+++ b/src/main/java/com/extendedae_plus/util/ExtendedAEPatternUploadUtil.java
@@ -1,46 +1,40 @@
package com.extendedae_plus.util;
-import appeng.api.inventories.InternalInventory;
-import appeng.api.crafting.PatternDetailsHelper;
import appeng.api.crafting.IPatternDetails;
+import appeng.api.crafting.PatternDetailsHelper;
+import appeng.api.inventories.InternalInventory;
import appeng.api.networking.IGrid;
import appeng.api.networking.IGridNode;
+import appeng.core.definitions.AEItems;
+import appeng.crafting.pattern.AECraftingPattern;
import appeng.helpers.patternprovider.PatternContainer;
import appeng.menu.implementations.PatternAccessTermMenu;
import appeng.menu.me.items.PatternEncodingTermMenu;
-import appeng.crafting.pattern.AECraftingPattern;
-import appeng.core.definitions.AEItems;
import appeng.util.inv.FilteredInternalInventory;
import appeng.util.inv.filter.IAEItemFilter;
-import net.minecraft.server.level.ServerPlayer;
-import net.minecraft.world.item.ItemStack;
-import net.minecraft.network.chat.Component;
-
-import java.lang.reflect.Field;
-import java.util.Map;
-import java.util.Set;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.concurrent.ConcurrentHashMap;
-import java.nio.file.Path;
-import java.nio.file.Files;
-import java.io.IOException;
-
+import com.extendedae_plus.mixin.ae2.accessor.PatternEncodingTermMenuAccessor;
import com.glodblock.github.extendedae.common.tileentities.matrix.TileAssemblerMatrixBase;
-import net.minecraftforge.common.capabilities.ForgeCapabilities;
-import net.minecraftforge.fml.loading.FMLPaths;
-import net.minecraftforge.items.IItemHandler;
-
-import net.minecraft.core.registries.BuiltInRegistries;
-import net.minecraft.resources.ResourceLocation;
-import net.minecraft.world.item.crafting.Recipe;
-import net.minecraft.world.item.crafting.RecipeType;
-
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
+import net.minecraft.core.registries.BuiltInRegistries;
+import net.minecraft.network.chat.Component;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.crafting.Recipe;
+import net.minecraft.world.item.crafting.RecipeType;
+import net.minecraftforge.common.capabilities.ForgeCapabilities;
+import net.minecraftforge.fml.loading.FMLPaths;
+import net.minecraftforge.items.IItemHandler;
+
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
/**
* ExtendedAE扩展样板管理终端专用的样板上传工具类
@@ -431,7 +425,7 @@ public class ExtendedAEPatternUploadUtil {
}
// 读取已编码槽位的物品
- var encodedSlot = ((com.extendedae_plus.mixin.accessor.PatternEncodingTermMenuAccessor) (Object) menu)
+ var encodedSlot = ((PatternEncodingTermMenuAccessor) (Object) menu)
.epp$getEncodedPatternSlot();
ItemStack stack = encodedSlot.getItem();
if (stack.isEmpty() || !PatternDetailsHelper.isEncodedPattern(stack)) {
@@ -465,7 +459,7 @@ public class ExtendedAEPatternUploadUtil {
player.sendSystemMessage(Component.literal("ExtendedAE Plus: 装配矩阵已存在相同样板,已跳过上传并返还空白样板"));
}
try {
- var accessor = (com.extendedae_plus.mixin.accessor.PatternEncodingTermMenuAccessor) (Object) menu;
+ var accessor = (PatternEncodingTermMenuAccessor) (Object) menu;
var blankSlot = accessor.epp$getBlankPatternSlot();
ItemStack blanks = AEItems.BLANK_PATTERN.stack(stack.getCount());
if (blankSlot != null && blankSlot.mayPlace(blanks)) {
@@ -982,7 +976,7 @@ public class ExtendedAEPatternUploadUtil {
return false;
}
// 读取已编码槽位的物品(通过 accessor)
- var encodedSlot = ((com.extendedae_plus.mixin.accessor.PatternEncodingTermMenuAccessor) (Object) menu)
+ var encodedSlot = ((PatternEncodingTermMenuAccessor) (Object) menu)
.epp$getEncodedPatternSlot();
ItemStack stack = encodedSlot.getItem();
if (stack.isEmpty() || !PatternDetailsHelper.isEncodedPattern(stack)) {
@@ -1054,7 +1048,7 @@ public class ExtendedAEPatternUploadUtil {
if (player == null || menu == null) {
return false;
}
- var encodedSlot = ((com.extendedae_plus.mixin.accessor.PatternEncodingTermMenuAccessor) (Object) menu)
+ var encodedSlot = ((PatternEncodingTermMenuAccessor) (Object) menu)
.epp$getEncodedPatternSlot();
ItemStack stack = encodedSlot.getItem();
if (stack.isEmpty() || !PatternDetailsHelper.isEncodedPattern(stack)) {
@@ -1192,7 +1186,7 @@ public class ExtendedAEPatternUploadUtil {
var container = list.get(index);
if (container == null) return false;
- var encodedSlot = ((com.extendedae_plus.mixin.accessor.PatternEncodingTermMenuAccessor) (Object) menu)
+ var encodedSlot = ((PatternEncodingTermMenuAccessor) (Object) menu)
.epp$getEncodedPatternSlot();
ItemStack stack = encodedSlot.getItem();
if (stack.isEmpty() || !PatternDetailsHelper.isEncodedPattern(stack)) {
diff --git a/src/main/resources/extendedae_plus.mixins.json b/src/main/resources/extendedae_plus.mixins.json
index 5d011cd..7b3369a 100644
--- a/src/main/resources/extendedae_plus.mixins.json
+++ b/src/main/resources/extendedae_plus.mixins.json
@@ -4,36 +4,39 @@
"compatibilityLevel": "JAVA_17",
"minVersion": "0.8",
"client": [
- "GuiExPatternProviderMixin",
- "SlotGridLayoutMixin",
- "GuiExPatternTerminalMixin",
- "HighlightButtonMixin",
"PickFromWirelessMixin",
- "PatternEncodingTermScreenMixin",
- "ae2.PatternProviderScreenMixin",
- "jei.EncodePatternTransferHandlerMixin",
- "ae2.QuartzCuttingKnifeItemMixin",
- "accessor.AEBaseScreenAccessor",
"accessor.AbstractContainerScreenAccessor",
"accessor.ScreenAccessor",
- "accessor.MEStorageScreenAccessor"
+ "accessor.ScreenInvoker",
+ "ae2.PatternEncodingTermScreenMixin",
+ "ae2.PatternProviderScreenMixin",
+ "ae2.QuartzCuttingKnifeItemMixin",
+ "ae2.SlotGridLayoutMixin",
+ "ae2.accessor.AEBaseScreenAccessor",
+ "ae2.accessor.AEBaseScreenInvoker",
+ "ae2.accessor.MEStorageScreenAccessor",
+ "extendedae.GuiExPatternProviderMixin",
+ "extendedae.GuiExPatternTerminalMixin",
+ "extendedae.HighlightButtonMixin",
+ "jei.EncodePatternTransferHandlerMixin"
],
"mixins": [
- "ContainerExPatternProviderMixin",
- "ContainerExPatternTerminalMixin",
- "ContainerWirelessExPatternTerminalMixin",
- "ContainerUWirelessExPatternTerminalMixin",
- "TileExPatternProviderMixin",
- "PartExPatternProviderMixin",
- "PatternEncodingTermMenuMixin",
- "ContainerPatternEncodingTermMenuMixin",
- "MEStorageMenuMixin",
- "accessor.MEStorageMenuAccessor",
- "accessor.PatternEncodingTermMenuAccessor",
+ "ae2.ContainerPatternEncodingTermMenuMixin",
+ "ae2.MEStorageMenuMixin",
+ "ae2.PatternEncodingTermMenuMixin",
"ae2.PatternProviderLogicAdvancedMixin",
"ae2.PatternProviderMenuAdvancedMixin",
- "accessor.PatternProviderMenuAdvancedAccessor",
- "accessor.PatternProviderLogicAccessor"
+ "ae2.accessor.MEStorageMenuAccessor",
+ "ae2.accessor.PatternEncodingTermMenuAccessor",
+ "ae2.accessor.PatternProviderLogicAccessor",
+ "ae2.accessor.PatternProviderLogicPatternInputsAccessor",
+ "ae2.accessor.PatternProviderMenuAdvancedAccessor",
+ "ae2WTlib.ContainerUWirelessExPatternTerminalMixin",
+ "extendedae.ContainerExPatternProviderMixin",
+ "extendedae.ContainerExPatternTerminalMixin",
+ "extendedae.ContainerWirelessExPatternTerminalMixin",
+ "extendedae.PartExPatternProviderMixin",
+ "extendedae.TileExPatternProviderMixin"
],
"injectors": {
"defaultRequire": 1
From cd01e21c26d2f3ca39a2ae294cb171e3bfb65c96 Mon Sep 17 00:00:00 2001
From: C-H716 <1536152356@qq.com>
Date: Fri, 22 Aug 2025 01:21:18 +0800
Subject: [PATCH 2/2] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=85=A8=E9=83=A8?=
=?UTF-8?q?=E5=89=8D=E7=BC=80=E4=B8=BAeap=EF=BC=81=E4=BC=98=E5=8C=96?=
=?UTF-8?q?=E9=83=A8=E5=88=86=E4=B8=9C=E8=A5=BF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
build.gradle | 9 ++
.../com/extendedae_plus/ExtendedAEPlus.java | 21 ++--
.../java/com/extendedae_plus/NewIcon.java | 1 -
.../api/AdvancedBlockingHolder.java | 6 +
.../api/PatternProviderMenuAdvancedSync.java | 2 +-
.../extendedae_plus/client/InputEvents.java | 4 +-
.../client/ui/ProviderSelectScreen.java | 6 +-
.../wireless/WirelessTransceiverBlock.java | 10 +-
.../WirelessTransceiverBlockEntity.java | 13 +-
.../com/extendedae_plus/hooks/WrenchHook.java | 2 +-
.../extendedae_plus/init/ModCreativeTabs.java | 2 +-
.../com/extendedae_plus/init/ModItems.java | 1 -
.../integration/jei/ExtendedAEJeiPlugin.java | 3 +-
.../integration/jei/JeiRuntimeProxy.java | 9 +-
.../menu/host/CuriosWTMenuHost.java | 16 +--
.../host/CuriosWirelessTerminalMenuHost.java | 12 +-
.../menu/locator/CuriosItemLocator.java | 24 ++--
.../mixin/PickFromWirelessMixin.java | 24 ++--
.../AbstractContainerScreenAccessor.java | 13 +-
.../mixin/accessor/ScreenAccessor.java | 13 +-
.../mixin/accessor/ScreenInvoker.java | 7 +-
...ContainerPatternEncodingTermMenuMixin.java | 21 ++--
.../mixin/ae2/MEStorageMenuMixin.java | 17 ++-
.../ae2/PatternEncodingTermMenuMixin.java | 29 ++---
.../ae2/PatternEncodingTermScreenMixin.java | 116 +++++++++---------
.../PatternProviderLogicAdvancedMixin.java | 34 +++--
.../ae2/PatternProviderMenuAdvancedMixin.java | 37 +++---
.../mixin/ae2/PatternProviderScreenMixin.java | 70 ++++++-----
.../ae2/QuartzCuttingKnifeItemMixin.java | 6 +-
.../ae2/accessor/AEBaseScreenAccessor.java | 2 +-
.../ae2/accessor/MEStorageScreenAccessor.java | 4 +-
.../PatternEncodingTermMenuAccessor.java | 4 +-
.../PatternProviderLogicAccessor.java | 2 +-
...ernProviderLogicPatternInputsAccessor.java | 2 +-
.../PatternProviderMenuAdvancedAccessor.java | 2 +-
...tainerUWirelessExPatternTerminalMixin.java | 12 +-
.../mixin/api/AdvancedBlockingHolder.java | 6 -
.../ContainerExPatternProviderMixin.java | 50 ++++----
.../ContainerExPatternTerminalMixin.java | 18 +--
...ntainerWirelessExPatternTerminalMixin.java | 8 +-
.../extendedae/GuiExPatternProviderMixin.java | 24 ++--
.../extendedae/HighlightButtonMixin.java | 4 +-
.../PartExPatternProviderMixin.java | 2 +-
.../TileExPatternProviderMixin.java | 2 +-
.../extendedae_plus/network/ModNetwork.java | 7 +-
.../network/OpenCraftFromJeiC2SPacket.java | 15 +--
.../network/PickFromWirelessC2SPacket.java | 33 +++--
.../network/ProvidersListS2CPacket.java | 3 +-
.../network/PullFromJeiOrCraftC2SPacket.java | 32 +++--
.../RequestProvidersListC2SPacket.java | 13 +-
.../ToggleAdvancedBlockingC2SPacket.java | 8 +-
...loadEncodedPatternToProviderC2SPacket.java | 7 +-
.../util/ExtendedAEPatternUploadUtil.java | 10 +-
.../util/PatternProviderDataUtil.java | 3 +-
.../util/PatternProviderUIHelper.java | 4 +-
.../util/WirelessTerminalLocator.java | 15 +--
.../wireless/WirelessMasterRegistry.java | 3 +-
57 files changed, 388 insertions(+), 435 deletions(-)
create mode 100644 src/main/java/com/extendedae_plus/api/AdvancedBlockingHolder.java
rename src/main/java/com/extendedae_plus/{mixin => }/api/PatternProviderMenuAdvancedSync.java (65%)
delete mode 100644 src/main/java/com/extendedae_plus/mixin/api/AdvancedBlockingHolder.java
diff --git a/build.gradle b/build.gradle
index 883aff1..20fc150 100644
--- a/build.gradle
+++ b/build.gradle
@@ -94,6 +94,15 @@ dependencies {
modCompileOnly "curse.maven:just-enough-characters-250702:6680042"
}
+// 忽略所有过时警告
+gradle.projectsEvaluated {
+ tasks.withType(JavaCompile).tap {
+ configureEach {
+ options.compilerArgs << "-Xlint:-deprecation"
+ }
+ }
+}
+
processResources {
inputs.property 'version', project.version
diff --git a/src/main/java/com/extendedae_plus/ExtendedAEPlus.java b/src/main/java/com/extendedae_plus/ExtendedAEPlus.java
index 7bb28f9..6c848ca 100644
--- a/src/main/java/com/extendedae_plus/ExtendedAEPlus.java
+++ b/src/main/java/com/extendedae_plus/ExtendedAEPlus.java
@@ -1,19 +1,20 @@
package com.extendedae_plus;
+
+import appeng.menu.locator.MenuLocators;
+import com.extendedae_plus.config.ModConfigs;
+import com.extendedae_plus.init.ModBlockEntities;
+import com.extendedae_plus.init.ModBlocks;
+import com.extendedae_plus.init.ModCreativeTabs;
+import com.extendedae_plus.init.ModItems;
+import com.extendedae_plus.menu.locator.CuriosItemLocator;
+import com.extendedae_plus.network.ModNetwork;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.IEventBus;
+import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.fml.config.ModConfig;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
-import net.minecraftforge.fml.ModLoadingContext;
-import net.minecraftforge.fml.config.ModConfig;
-import com.extendedae_plus.config.ModConfigs;
-import com.extendedae_plus.init.ModBlocks;
-import com.extendedae_plus.init.ModBlockEntities;
-import com.extendedae_plus.init.ModItems;
-import com.extendedae_plus.init.ModCreativeTabs;
-import com.extendedae_plus.network.ModNetwork;
-import com.extendedae_plus.menu.locator.CuriosItemLocator;
-import appeng.menu.locator.MenuLocators;
/**
* ExtendedAE Plus 主mod类
diff --git a/src/main/java/com/extendedae_plus/NewIcon.java b/src/main/java/com/extendedae_plus/NewIcon.java
index 34825bb..8535a1f 100644
--- a/src/main/java/com/extendedae_plus/NewIcon.java
+++ b/src/main/java/com/extendedae_plus/NewIcon.java
@@ -1,7 +1,6 @@
package com.extendedae_plus;
import appeng.client.gui.style.Blitter;
-import com.glodblock.github.extendedae.ExtendedAE;
import net.minecraft.resources.ResourceLocation;
public class NewIcon {
diff --git a/src/main/java/com/extendedae_plus/api/AdvancedBlockingHolder.java b/src/main/java/com/extendedae_plus/api/AdvancedBlockingHolder.java
new file mode 100644
index 0000000..4473601
--- /dev/null
+++ b/src/main/java/com/extendedae_plus/api/AdvancedBlockingHolder.java
@@ -0,0 +1,6 @@
+package com.extendedae_plus.api;
+
+public interface AdvancedBlockingHolder {
+ boolean eap$getAdvancedBlocking();
+ void eap$setAdvancedBlocking(boolean value);
+}
diff --git a/src/main/java/com/extendedae_plus/mixin/api/PatternProviderMenuAdvancedSync.java b/src/main/java/com/extendedae_plus/api/PatternProviderMenuAdvancedSync.java
similarity index 65%
rename from src/main/java/com/extendedae_plus/mixin/api/PatternProviderMenuAdvancedSync.java
rename to src/main/java/com/extendedae_plus/api/PatternProviderMenuAdvancedSync.java
index e987d45..f43f52c 100644
--- a/src/main/java/com/extendedae_plus/mixin/api/PatternProviderMenuAdvancedSync.java
+++ b/src/main/java/com/extendedae_plus/api/PatternProviderMenuAdvancedSync.java
@@ -1,5 +1,5 @@
package com.extendedae_plus.api;
public interface PatternProviderMenuAdvancedSync {
- boolean ext$getAdvancedBlockingSynced();
+ boolean eap$getAdvancedBlockingSynced();
}
diff --git a/src/main/java/com/extendedae_plus/client/InputEvents.java b/src/main/java/com/extendedae_plus/client/InputEvents.java
index 9bae0b6..4c5634e 100644
--- a/src/main/java/com/extendedae_plus/client/InputEvents.java
+++ b/src/main/java/com/extendedae_plus/client/InputEvents.java
@@ -109,8 +109,8 @@ public final class InputEvents {
if (screen instanceof MEStorageScreen> me) {
try {
MEStorageScreenAccessor acc = (MEStorageScreenAccessor) (Object) me;
- acc.ext$getSearchField().setValue(name);
- acc.ext$setSearchText(name); // 同步到 Repo 并刷新
+ acc.eap$getSearchField().setValue(name);
+ acc.eap$setSearchText(name); // 同步到 Repo 并刷新
event.setCanceled(true);
return;
} catch (Throwable ignored) {
diff --git a/src/main/java/com/extendedae_plus/client/ui/ProviderSelectScreen.java b/src/main/java/com/extendedae_plus/client/ui/ProviderSelectScreen.java
index 7266314..9f6a6db 100644
--- a/src/main/java/com/extendedae_plus/client/ui/ProviderSelectScreen.java
+++ b/src/main/java/com/extendedae_plus/client/ui/ProviderSelectScreen.java
@@ -8,11 +8,7 @@ import net.minecraft.client.gui.components.EditBox;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.chat.Component;
-import java.util.ArrayList;
-import java.util.Objects;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* 简单的供应器选择弹窗。
diff --git a/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlock.java b/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlock.java
index 839bb28..0f0c9fc 100644
--- a/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlock.java
+++ b/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlock.java
@@ -1,10 +1,12 @@
package com.extendedae_plus.content.wireless;
+
+import com.extendedae_plus.init.ModBlockEntities;
import net.minecraft.core.BlockPos;
-import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.chat.Component;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
-import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.item.Items;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.EntityBlock;
@@ -13,10 +15,6 @@ import net.minecraft.world.level.block.entity.BlockEntityTicker;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.BlockHitResult;
-import org.jetbrains.annotations.Nullable;
-import com.extendedae_plus.init.ModBlockEntities;
-import net.minecraft.world.item.Items;
-import net.minecraft.network.chat.Component;
public class WirelessTransceiverBlock extends Block implements EntityBlock {
public WirelessTransceiverBlock(Properties props) {
diff --git a/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlockEntity.java b/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlockEntity.java
index f2fe607..c8e4c6d 100644
--- a/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlockEntity.java
+++ b/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlockEntity.java
@@ -1,23 +1,20 @@
package com.extendedae_plus.content.wireless;
-import appeng.api.networking.GridHelper;
-import appeng.api.networking.IGridNode;
-import appeng.api.networking.IGridNodeListener;
-import appeng.api.networking.IManagedGridNode;
-import appeng.api.networking.IInWorldGridNodeHost;
+import appeng.api.networking.*;
+import com.extendedae_plus.init.ModBlockEntities;
+import com.extendedae_plus.init.ModItems;
import com.extendedae_plus.wireless.IWirelessEndpoint;
import com.extendedae_plus.wireless.WirelessMasterLink;
import com.extendedae_plus.wireless.WirelessSlaveLink;
-import com.extendedae_plus.init.ModBlockEntities;
-import com.extendedae_plus.init.ModItems;
import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
-import net.minecraft.core.Direction;
import org.jetbrains.annotations.Nullable;
+
import java.util.EnumSet;
/**
diff --git a/src/main/java/com/extendedae_plus/hooks/WrenchHook.java b/src/main/java/com/extendedae_plus/hooks/WrenchHook.java
index b74cecd..093b6cc 100644
--- a/src/main/java/com/extendedae_plus/hooks/WrenchHook.java
+++ b/src/main/java/com/extendedae_plus/hooks/WrenchHook.java
@@ -1,5 +1,6 @@
package com.extendedae_plus.hooks;
+import appeng.util.InteractionUtil;
import com.extendedae_plus.ExtendedAEPlus;
import com.extendedae_plus.content.wireless.WirelessTransceiverBlockEntity;
import net.minecraft.network.chat.Component;
@@ -15,7 +16,6 @@ import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.eventbus.api.Event;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
-import appeng.util.InteractionUtil;
@Mod.EventBusSubscriber(modid = ExtendedAEPlus.MODID)
public final class WrenchHook {
diff --git a/src/main/java/com/extendedae_plus/init/ModCreativeTabs.java b/src/main/java/com/extendedae_plus/init/ModCreativeTabs.java
index 9aa25c1..5919514 100644
--- a/src/main/java/com/extendedae_plus/init/ModCreativeTabs.java
+++ b/src/main/java/com/extendedae_plus/init/ModCreativeTabs.java
@@ -1,10 +1,10 @@
package com.extendedae_plus.init;
import com.extendedae_plus.ExtendedAEPlus;
+import net.minecraft.core.registries.Registries;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraftforge.registries.DeferredRegister;
-import net.minecraft.core.registries.Registries;
import net.minecraftforge.registries.RegistryObject;
public final class ModCreativeTabs {
diff --git a/src/main/java/com/extendedae_plus/init/ModItems.java b/src/main/java/com/extendedae_plus/init/ModItems.java
index da6d880..c3424b2 100644
--- a/src/main/java/com/extendedae_plus/init/ModItems.java
+++ b/src/main/java/com/extendedae_plus/init/ModItems.java
@@ -2,7 +2,6 @@ package com.extendedae_plus.init;
import com.extendedae_plus.ExtendedAEPlus;
import net.minecraft.world.item.BlockItem;
-import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
diff --git a/src/main/java/com/extendedae_plus/integration/jei/ExtendedAEJeiPlugin.java b/src/main/java/com/extendedae_plus/integration/jei/ExtendedAEJeiPlugin.java
index 9320caf..1294f17 100644
--- a/src/main/java/com/extendedae_plus/integration/jei/ExtendedAEJeiPlugin.java
+++ b/src/main/java/com/extendedae_plus/integration/jei/ExtendedAEJeiPlugin.java
@@ -1,12 +1,11 @@
package com.extendedae_plus.integration.jei;
+import com.extendedae_plus.ExtendedAEPlus;
import mezz.jei.api.IModPlugin;
import mezz.jei.api.JeiPlugin;
import mezz.jei.api.runtime.IJeiRuntime;
import net.minecraft.resources.ResourceLocation;
-import com.extendedae_plus.ExtendedAEPlus;
-
@JeiPlugin
public class ExtendedAEJeiPlugin implements IModPlugin {
private static final ResourceLocation UID = new ResourceLocation(ExtendedAEPlus.MODID, "jei_plugin");
diff --git a/src/main/java/com/extendedae_plus/integration/jei/JeiRuntimeProxy.java b/src/main/java/com/extendedae_plus/integration/jei/JeiRuntimeProxy.java
index 45ce817..1eb864a 100644
--- a/src/main/java/com/extendedae_plus/integration/jei/JeiRuntimeProxy.java
+++ b/src/main/java/com/extendedae_plus/integration/jei/JeiRuntimeProxy.java
@@ -1,15 +1,14 @@
package com.extendedae_plus.integration.jei;
-import java.util.Optional;
-
-import javax.annotation.Nullable;
-
-import mezz.jei.api.ingredients.ITypedIngredient;
import mezz.jei.api.constants.VanillaTypes;
+import mezz.jei.api.ingredients.ITypedIngredient;
import mezz.jei.api.runtime.IBookmarkOverlay;
import mezz.jei.api.runtime.IIngredientListOverlay;
import mezz.jei.api.runtime.IJeiRuntime;
+import javax.annotation.Nullable;
+import java.util.Optional;
+
/**
* 线程安全地缓存并访问 JEI Runtime。
*/
diff --git a/src/main/java/com/extendedae_plus/menu/host/CuriosWTMenuHost.java b/src/main/java/com/extendedae_plus/menu/host/CuriosWTMenuHost.java
index 80775ee..febf797 100644
--- a/src/main/java/com/extendedae_plus/menu/host/CuriosWTMenuHost.java
+++ b/src/main/java/com/extendedae_plus/menu/host/CuriosWTMenuHost.java
@@ -1,19 +1,15 @@
package com.extendedae_plus.menu.host;
-import java.util.function.BiConsumer;
-
-import org.jetbrains.annotations.Nullable;
-
-import net.minecraft.world.entity.player.Player;
-import net.minecraft.world.inventory.AbstractContainerMenu;
-import net.minecraft.world.item.ItemStack;
-
import appeng.menu.ISubMenu;
import de.mari_023.ae2wtlib.terminal.WTMenuHost;
-
-// Curios API
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.inventory.AbstractContainerMenu;
+import net.minecraft.world.item.ItemStack;
+import org.jetbrains.annotations.Nullable;
import top.theillusivec4.curios.api.type.inventory.ICurioStacksHandler;
+import java.util.function.BiConsumer;
+
/**
* 针对 Curios 槽位的 ae2wtlib WTMenuHost 适配器:
* - 复用 wtlib 的量子卡跨维/跨距逻辑(rangeCheck/isQuantumLinked)。
diff --git a/src/main/java/com/extendedae_plus/menu/host/CuriosWirelessTerminalMenuHost.java b/src/main/java/com/extendedae_plus/menu/host/CuriosWirelessTerminalMenuHost.java
index d7a46a4..caf31e9 100644
--- a/src/main/java/com/extendedae_plus/menu/host/CuriosWirelessTerminalMenuHost.java
+++ b/src/main/java/com/extendedae_plus/menu/host/CuriosWirelessTerminalMenuHost.java
@@ -1,17 +1,11 @@
package com.extendedae_plus.menu.host;
-import org.jetbrains.annotations.Nullable;
-
+import appeng.api.storage.ISubMenuHost;
+import appeng.helpers.WirelessTerminalMenuHost;
+import appeng.menu.ISubMenu;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.item.ItemStack;
-
-import appeng.api.implementations.menuobjects.ItemMenuHost;
-import appeng.helpers.WirelessTerminalMenuHost;
-import appeng.menu.ISubMenu;
-import appeng.api.storage.ISubMenuHost;
-
-// Curios API
import top.theillusivec4.curios.api.type.inventory.ICurioStacksHandler;
/**
diff --git a/src/main/java/com/extendedae_plus/menu/locator/CuriosItemLocator.java b/src/main/java/com/extendedae_plus/menu/locator/CuriosItemLocator.java
index 2988cd8..4b00cab 100644
--- a/src/main/java/com/extendedae_plus/menu/locator/CuriosItemLocator.java
+++ b/src/main/java/com/extendedae_plus/menu/locator/CuriosItemLocator.java
@@ -1,27 +1,21 @@
package com.extendedae_plus.menu.locator;
-import org.jetbrains.annotations.Nullable;
-
-import net.minecraft.network.FriendlyByteBuf;
-import net.minecraft.world.entity.player.Player;
-import net.minecraft.world.item.ItemStack;
-
import appeng.api.implementations.menuobjects.IMenuItem;
import appeng.api.implementations.menuobjects.ItemMenuHost;
import appeng.helpers.WirelessTerminalMenuHost;
import appeng.items.tools.powered.WirelessTerminalItem;
import appeng.menu.MenuOpener;
-import appeng.menu.me.common.MEStorageMenu;
import appeng.menu.locator.MenuLocator;
-import com.extendedae_plus.menu.host.CuriosWirelessTerminalMenuHost;
-
-// ae2wtlib
-import de.mari_023.ae2wtlib.wut.WUTHandler;
-import de.mari_023.ae2wtlib.wut.WTDefinition;
-import de.mari_023.ae2wtlib.terminal.WTMenuHost;
+import appeng.menu.me.common.MEStorageMenu;
import com.extendedae_plus.menu.host.CuriosWTMenuHost;
-
-// Curios API (软依赖)
+import com.extendedae_plus.menu.host.CuriosWirelessTerminalMenuHost;
+import de.mari_023.ae2wtlib.terminal.WTMenuHost;
+import de.mari_023.ae2wtlib.wut.WTDefinition;
+import de.mari_023.ae2wtlib.wut.WUTHandler;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.item.ItemStack;
+import org.jetbrains.annotations.Nullable;
import top.theillusivec4.curios.api.CuriosApi;
import top.theillusivec4.curios.api.type.inventory.ICurioStacksHandler;
diff --git a/src/main/java/com/extendedae_plus/mixin/PickFromWirelessMixin.java b/src/main/java/com/extendedae_plus/mixin/PickFromWirelessMixin.java
index 526fd42..56fe87f 100644
--- a/src/main/java/com/extendedae_plus/mixin/PickFromWirelessMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/PickFromWirelessMixin.java
@@ -1,22 +1,20 @@
package com.extendedae_plus.mixin;
+import com.extendedae_plus.network.ModNetwork;
+import com.extendedae_plus.network.PickFromWirelessC2SPacket;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.player.LocalPlayer;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.level.GameType;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.phys.BlockHitResult;
+import net.minecraft.world.phys.HitResult;
+import net.minecraft.world.phys.Vec3;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.player.LocalPlayer;
-import net.minecraft.world.level.GameType;
-import net.minecraft.world.phys.BlockHitResult;
-import net.minecraft.world.phys.Vec3;
-import net.minecraft.world.phys.HitResult;
-import net.minecraft.world.item.ItemStack;
-import net.minecraft.world.level.block.state.BlockState;
-
-import com.extendedae_plus.network.ModNetwork;
-import com.extendedae_plus.network.PickFromWirelessC2SPacket;
// no client-side WCT gating; server will check presence (including Curios)
@@ -26,7 +24,7 @@ public class PickFromWirelessMixin {
@Shadow public HitResult hitResult;
@Inject(method = "pickBlock", at = @At("HEAD"), cancellable = true)
- private void extendedae_plus$pickFromAeWireless(CallbackInfo ci) {
+ private void eap$pickFromAeWireless(CallbackInfo ci) {
if (this.player == null || this.hitResult == null || this.hitResult.getType() != HitResult.Type.BLOCK) {
return;
}
diff --git a/src/main/java/com/extendedae_plus/mixin/accessor/AbstractContainerScreenAccessor.java b/src/main/java/com/extendedae_plus/mixin/accessor/AbstractContainerScreenAccessor.java
index 9e46c7e..27b50a0 100644
--- a/src/main/java/com/extendedae_plus/mixin/accessor/AbstractContainerScreenAccessor.java
+++ b/src/main/java/com/extendedae_plus/mixin/accessor/AbstractContainerScreenAccessor.java
@@ -1,15 +1,14 @@
package com.extendedae_plus.mixin.accessor;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
import net.minecraft.world.inventory.AbstractContainerMenu;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(AbstractContainerScreen.class)
public interface AbstractContainerScreenAccessor {
- @Accessor("leftPos") int extendedae_plus$getLeftPos();
- @Accessor("topPos") int extendedae_plus$getTopPos();
- @Accessor("imageWidth") int extendedae_plus$getImageWidth();
- @Accessor("imageHeight") int extendedae_plus$getImageHeight();
+ @Accessor("leftPos") int eap$getLeftPos();
+ @Accessor("topPos") int eap$getTopPos();
+ @Accessor("imageWidth") int eap$getImageWidth();
+ @Accessor("imageHeight") int eap$getImageHeight();
}
diff --git a/src/main/java/com/extendedae_plus/mixin/accessor/ScreenAccessor.java b/src/main/java/com/extendedae_plus/mixin/accessor/ScreenAccessor.java
index c3e6b90..62f7f0f 100644
--- a/src/main/java/com/extendedae_plus/mixin/accessor/ScreenAccessor.java
+++ b/src/main/java/com/extendedae_plus/mixin/accessor/ScreenAccessor.java
@@ -1,19 +1,18 @@
package com.extendedae_plus.mixin.accessor;
-import java.util.List;
-
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
import net.minecraft.client.gui.components.Renderable;
import net.minecraft.client.gui.components.events.GuiEventListener;
import net.minecraft.client.gui.screens.Screen;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
+
+import java.util.List;
@Mixin(Screen.class)
public interface ScreenAccessor {
@Accessor("renderables")
- List extendedae_plus$getRenderables();
+ List eap$getRenderables();
@Accessor("children")
- List extendedae_plus$getChildren();
+ List eap$getChildren();
}
diff --git a/src/main/java/com/extendedae_plus/mixin/accessor/ScreenInvoker.java b/src/main/java/com/extendedae_plus/mixin/accessor/ScreenInvoker.java
index ee64dfe..5da1111 100644
--- a/src/main/java/com/extendedae_plus/mixin/accessor/ScreenInvoker.java
+++ b/src/main/java/com/extendedae_plus/mixin/accessor/ScreenInvoker.java
@@ -1,14 +1,13 @@
package com.extendedae_plus.mixin.accessor;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Invoker;
-
import net.minecraft.client.gui.components.Renderable;
import net.minecraft.client.gui.components.events.GuiEventListener;
import net.minecraft.client.gui.screens.Screen;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Invoker;
@Mixin(Screen.class)
public interface ScreenInvoker {
@Invoker("addRenderableWidget")
- W extendedae_plus$invokeAddRenderableWidget(W widget);
+ W eap$invokeAddRenderableWidget(W widget);
}
diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/ContainerPatternEncodingTermMenuMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/ContainerPatternEncodingTermMenuMixin.java
index 0cd3947..f11413f 100644
--- a/src/main/java/com/extendedae_plus/mixin/ae2/ContainerPatternEncodingTermMenuMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/ContainerPatternEncodingTermMenuMixin.java
@@ -20,6 +20,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.util.Map;
import java.util.function.Consumer;
+import static com.extendedae_plus.util.ExtendedAELogger.LOGGER;
/**
* 给 AE2 的 PatternEncodingTermMenu 增加一个通用动作持有者,实现接收 EPP 的 CGenericPacket 动作。
* 注册动作 "upload_to_matrix":仅上传“合成图样”到 ExtendedAE 装配矩阵。
@@ -28,7 +29,7 @@ import java.util.function.Consumer;
public abstract class ContainerPatternEncodingTermMenuMixin implements IActionHolder {
@Unique
- private final Map> actions = createHolder();
+ private final Map> eap$actions = createHolder();
@Unique
private Player epp$player;
@@ -37,7 +38,7 @@ public abstract class ContainerPatternEncodingTermMenuMixin implements IActionHo
private RestrictedInputSlot encodedPatternSlot;
@Unique
- private void epp$scheduleUploadWithRetry(ServerPlayer sp, PatternEncodingTermMenu menu, int attemptsLeft) {
+ private void eap$scheduleUploadWithRetry(ServerPlayer sp, PatternEncodingTermMenu menu, int attemptsLeft) {
sp.server.execute(() -> {
try {
if (attemptsLeft < 0) {
@@ -49,26 +50,25 @@ public abstract class ContainerPatternEncodingTermMenuMixin implements IActionHo
} else {
// 槽位可能尚未同步到位,继续下一 tick 重试
if (attemptsLeft > 0) {
- epp$scheduleUploadWithRetry(sp, menu, attemptsLeft - 1);
- } else {
-
+ eap$scheduleUploadWithRetry(sp, menu, attemptsLeft - 1);
}
}
} catch (Throwable t) {
+ LOGGER.error("Error uploading pattern to matrix", t);
}
});
}
// AE2 终端主构造:PatternEncodingTermMenu(int id, Inventory ip, IPatternTerminalMenuHost host)
@Inject(method = "(ILnet/minecraft/world/entity/player/Inventory;Lappeng/helpers/IPatternTerminalMenuHost;)V", at = @At("TAIL"), remap = false)
- private void epp$ctorA(int id, net.minecraft.world.entity.player.Inventory ip, appeng.helpers.IPatternTerminalMenuHost host, CallbackInfo ci) {
+ private void eap$ctorA(int id, net.minecraft.world.entity.player.Inventory ip, appeng.helpers.IPatternTerminalMenuHost host, CallbackInfo ci) {
this.epp$player = ip.player;
// 不再注册任何上传相关动作
}
// AE2 另一个构造:PatternEncodingTermMenu(MenuType, int, Inventory, IPatternTerminalMenuHost, boolean)
@Inject(method = "(Lnet/minecraft/world/inventory/MenuType;ILnet/minecraft/world/entity/player/Inventory;Lappeng/helpers/IPatternTerminalMenuHost;Z)V", at = @At("TAIL"), remap = false)
- private void epp$ctorB(net.minecraft.world.inventory.MenuType> menuType, int id, net.minecraft.world.entity.player.Inventory ip, appeng.helpers.IPatternTerminalMenuHost host, boolean bindInventory, CallbackInfo ci) {
+ private void eap$ctorB(net.minecraft.world.inventory.MenuType> menuType, int id, net.minecraft.world.entity.player.Inventory ip, appeng.helpers.IPatternTerminalMenuHost host, boolean bindInventory, CallbackInfo ci) {
this.epp$player = ip.player;
// 不再注册任何上传相关动作
}
@@ -76,12 +76,12 @@ public abstract class ContainerPatternEncodingTermMenuMixin implements IActionHo
@NotNull
@Override
public Map> getActionMap() {
- return this.actions;
+ return this.eap$actions;
}
// 服务器端:在 encode() 执行完毕后,如果已编码槽位存在样板且当前为“合成模式”,则上传到装配矩阵
@Inject(method = "encode", at = @At("TAIL"), remap = false)
- private void epp$serverUploadAfterEncode(CallbackInfo ci) {
+ private void eap$serverUploadAfterEncode(CallbackInfo ci) {
try {
if (!(this.epp$player instanceof ServerPlayer sp)) {
return; // 仅服务器执行
@@ -104,10 +104,11 @@ public abstract class ContainerPatternEncodingTermMenuMixin implements IActionHo
sp.server.execute(() -> {
try {
ExtendedAEPatternUploadUtil.uploadFromEncodingMenuToMatrix(sp, menu);
- } catch (Throwable t) {
+ } catch (Throwable ignored) {
}
});
} catch (Throwable t) {
+ LOGGER.error("Error uploading pattern to matrix", t);
}
}
}
diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/MEStorageMenuMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/MEStorageMenuMixin.java
index bb1d402..5668fbd 100644
--- a/src/main/java/com/extendedae_plus/mixin/ae2/MEStorageMenuMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/MEStorageMenuMixin.java
@@ -22,12 +22,12 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
public abstract class MEStorageMenuMixin {
@Unique
- private boolean extendedae_plus$settingsMirrored = false;
+ private boolean eap$settingsMirrored = false;
@Inject(method = "broadcastChanges", at = @At("HEAD"))
- private void extendedae_plus$mirrorServerSettingsToClient(CallbackInfo ci) {
+ private void eap$mirrorServerSettingsToClient(CallbackInfo ci) {
var self = (MEStorageMenu) (Object) this;
- if (this.extendedae_plus$settingsMirrored) {
+ if (this.eap$settingsMirrored) {
return;
}
try {
@@ -50,30 +50,29 @@ public abstract class MEStorageMenuMixin {
if (!clientHasSetting) {
try {
Object serverValue = server.getSetting(setting);
- Object placeholder = extendedae_plus$chooseDifferentEnumValue(serverValue);
+ Object placeholder = eap$chooseDifferentEnumValue(serverValue);
if (placeholder == null) {
// 若无法选择不同的占位值(例如只有一个枚举常量),则退回服务端值
placeholder = serverValue;
}
// 使用辅助方法,统一进行受检的泛型转换后再注册
- extendedae_plus$registerSettingCompat(client, setting, placeholder);
+ eap$registerSettingCompat(client, setting, placeholder);
} catch (Throwable ignore) {
// 防御:不让异常影响主流程
}
}
}
- this.extendedae_plus$settingsMirrored = true;
+ this.eap$settingsMirrored = true;
} catch (Throwable t) {
// 防御:绝不让同步失败导致崩溃
}
}
@Unique
- private Object extendedae_plus$chooseDifferentEnumValue(Object serverValue) {
+ private Object eap$chooseDifferentEnumValue(Object serverValue) {
if (!(serverValue instanceof Enum> sv)) {
return null;
}
- @SuppressWarnings("unchecked")
Class extends Enum>> enumClass = sv.getDeclaringClass();
Object[] constants = enumClass.getEnumConstants();
if (constants == null || constants.length == 0) {
@@ -89,7 +88,7 @@ public abstract class MEStorageMenuMixin {
@Unique
@SuppressWarnings({"unchecked", "rawtypes"})
- private static > void extendedae_plus$registerSettingCompat(
+ private static > void eap$registerSettingCompat(
IConfigManager client, Setting> setting, Object value) {
// 前置校验:仅处理枚举类型的设置值
if (!(value instanceof Enum>)) {
diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/PatternEncodingTermMenuMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/PatternEncodingTermMenuMixin.java
index cd01f0e..546bea0 100644
--- a/src/main/java/com/extendedae_plus/mixin/ae2/PatternEncodingTermMenuMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/PatternEncodingTermMenuMixin.java
@@ -16,6 +16,7 @@ import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.inventory.MenuType;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
+import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@@ -24,14 +25,14 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
public abstract class PatternEncodingTermMenuMixin {
// 防止重复执行
- @org.spongepowered.asm.mixin.Unique
- private boolean extendedae_plus$blankAutoFilled = false;
+ @Unique
+ private boolean eap$blankAutoFilled = false;
@Shadow
private RestrictedInputSlot blankPatternSlot;
- @org.spongepowered.asm.mixin.Unique
- private void extendedae_plus$tryFill(IPatternTerminalMenuHost host, Inventory ip) {
+ @Unique
+ private void eap$tryFill(IPatternTerminalMenuHost host, Inventory ip) {
try {
var self = (PatternEncodingTermMenu) (Object) this;
var player = ip.player;
@@ -87,22 +88,22 @@ public abstract class PatternEncodingTermMenuMixin {
@Inject(method = "(Lnet/minecraft/world/inventory/MenuType;ILnet/minecraft/world/entity/player/Inventory;Lappeng/helpers/IPatternTerminalMenuHost;Z)V",
at = @At("TAIL"))
- private void extendedae_plus$autoFillBlankPattern(MenuType> menuType, int id, Inventory ip,
- IPatternTerminalMenuHost host, boolean bindInventory,
- CallbackInfo ci) {
- extendedae_plus$tryFill(host, ip);
+ private void eap$autoFillBlankPattern(MenuType> menuType, int id, Inventory ip,
+ IPatternTerminalMenuHost host, boolean bindInventory,
+ CallbackInfo ci) {
+ eap$tryFill(host, ip);
}
@Inject(method = "(ILnet/minecraft/world/entity/player/Inventory;Lappeng/helpers/IPatternTerminalMenuHost;)V",
at = @At("TAIL"))
- private void extendedae_plus$autoFillCtor3(int id, Inventory ip, IPatternTerminalMenuHost host, CallbackInfo ci) {
- extendedae_plus$tryFill(host, ip);
+ private void eap$autoFillCtor3(int id, Inventory ip, IPatternTerminalMenuHost host, CallbackInfo ci) {
+ eap$tryFill(host, ip);
}
// 在首次 broadcastChanges 后再尝试一次,避免构造时网络未激活
@Inject(method = "broadcastChanges", at = @At("TAIL"))
- private void extendedae_plus$retryFillAfterPower(CallbackInfo ci) {
- if (this.extendedae_plus$blankAutoFilled) {
+ private void eap$retryFillAfterPower(CallbackInfo ci) {
+ if (this.eap$blankAutoFilled) {
return;
}
// 仅在服务器端执行
@@ -127,7 +128,7 @@ public abstract class PatternEncodingTermMenuMixin {
int space = Math.max(0, limit - current.getCount());
space = Math.min(space, AEItems.BLANK_PATTERN.asItem().getMaxStackSize());
if (space <= 0) {
- this.extendedae_plus$blankAutoFilled = true;
+ this.eap$blankAutoFilled = true;
return;
}
@@ -149,6 +150,6 @@ public abstract class PatternEncodingTermMenuMixin {
if (leftover > 0) {
StorageHelper.poweredInsert(power, storage, blankKey, leftover, self.getActionSource());
}
- this.extendedae_plus$blankAutoFilled = true;
+ this.eap$blankAutoFilled = true;
}
}
diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/PatternEncodingTermScreenMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/PatternEncodingTermScreenMixin.java
index 4743df6..b0985a3 100644
--- a/src/main/java/com/extendedae_plus/mixin/ae2/PatternEncodingTermScreenMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/PatternEncodingTermScreenMixin.java
@@ -30,19 +30,19 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
public abstract class PatternEncodingTermScreenMixin {
@Unique
- private IconButton extendedae_plus$uploadBtn;
+ private IconButton eap$uploadBtn;
@Inject(method = "init", at = @At("TAIL"))
- private void extendedae_plus$addUploadButton(CallbackInfo ci) {
+ private void eap$addUploadButton(CallbackInfo ci) {
// 仅在图样编码终端界面中添加按钮
if (!(((Object) this) instanceof PatternEncodingTermScreen)) {
return;
}
// 复用已存在的按钮实例,避免重复创建
- if (extendedae_plus$uploadBtn == null) {
- extendedae_plus$uploadBtn = new IconButton(btn -> ModNetwork.CHANNEL
+ if (eap$uploadBtn == null) {
+ eap$uploadBtn = new IconButton(btn -> ModNetwork.CHANNEL
.sendToServer(new com.extendedae_plus.network.RequestProvidersListC2SPacket())) {
- private final float extendedae_plus$scale = 0.75f; // 约 12x12
+ private final float eap$scale = 0.75f; // 约 12x12
@Override
protected Icon getIcon() {
@@ -60,8 +60,8 @@ public abstract class PatternEncodingTermScreenMixin {
}
// 动态更新宽高用于聚焦边框/命中框
- this.width = Math.round(16 * extendedae_plus$scale);
- this.height = Math.round(16 * extendedae_plus$scale);
+ this.width = Math.round(16 * eap$scale);
+ this.height = Math.round(16 * eap$scale);
com.mojang.blaze3d.systems.RenderSystem.disableDepthTest();
com.mojang.blaze3d.systems.RenderSystem.enableBlend();
@@ -76,7 +76,7 @@ public abstract class PatternEncodingTermScreenMixin {
var pose = guiGraphics.pose();
pose.pushPose();
pose.translate(getX(), getY(), 0.0F);
- pose.scale(extendedae_plus$scale, extendedae_plus$scale, 1.f);
+ pose.scale(eap$scale, eap$scale, 1.f);
if (!this.isDisableBackground()) {
Icon.TOOLBAR_BUTTON_BACKGROUND.getBlitter().dest(0, 0).blit(guiGraphics);
}
@@ -89,20 +89,20 @@ public abstract class PatternEncodingTermScreenMixin {
@Override
public Rect2i getTooltipArea() {
- return new Rect2i(getX(), getY(), Math.round(16 * extendedae_plus$scale), Math.round(16 * extendedae_plus$scale));
+ return new Rect2i(getX(), getY(), Math.round(16 * eap$scale), Math.round(16 * eap$scale));
}
};
- extendedae_plus$uploadBtn.setTooltip(Tooltip.create(Component.translatable("extendedae_plus.button.choose_provider")));
+ eap$uploadBtn.setTooltip(Tooltip.create(Component.translatable("extendedae_plus.button.choose_provider")));
}
// 解析 encodePattern 的样式位置
try {
- ScreenStyle style = ((AEBaseScreenAccessor>) (Object) this).extendedae_plus$getStyle();
+ ScreenStyle style = ((AEBaseScreenAccessor>) (Object) this).eap$getStyle();
WidgetStyle ws = style.getWidget("encodePattern");
- int leftPos = ((AbstractContainerScreenAccessor>) (Object) this).extendedae_plus$getLeftPos();
- int topPos = ((AbstractContainerScreenAccessor>) (Object) this).extendedae_plus$getTopPos();
- int imageWidth = ((AbstractContainerScreenAccessor>) (Object) this).extendedae_plus$getImageWidth();
- int imageHeight = ((AbstractContainerScreenAccessor>) (Object) this).extendedae_plus$getImageHeight();
+ int leftPos = ((AbstractContainerScreenAccessor>) (Object) this).eap$getLeftPos();
+ int topPos = ((AbstractContainerScreenAccessor>) (Object) this).eap$getTopPos();
+ int imageWidth = ((AbstractContainerScreenAccessor>) (Object) this).eap$getImageWidth();
+ int imageHeight = ((AbstractContainerScreenAccessor>) (Object) this).eap$getImageHeight();
Rect2i bounds = new Rect2i(leftPos, topPos, imageWidth, imageHeight);
var pos = ws.resolve(bounds);
int baseW = ws.getWidth() > 0 ? ws.getWidth() : 16;
@@ -110,79 +110,79 @@ public abstract class PatternEncodingTermScreenMixin {
int targetW = Math.max(10, Math.round(baseW * 0.75f));
int targetH = Math.max(10, Math.round(baseH * 0.75f));
// 缩小为原尺寸的 0.75(稍微变大于 8x8)
- extendedae_plus$uploadBtn.setWidth(targetW);
- extendedae_plus$uploadBtn.setHeight(targetH);
+ eap$uploadBtn.setWidth(targetW);
+ eap$uploadBtn.setHeight(targetH);
// 仍位于其左侧,但整体向右微移(减小间距)约 2px
- extendedae_plus$uploadBtn.setX(pos.getX() - targetW); // 原为 -targetW - 2,再右移 2px
- extendedae_plus$uploadBtn.setY(pos.getY());
+ eap$uploadBtn.setX(pos.getX() - targetW); // 原为 -targetW - 2,再右移 2px
+ eap$uploadBtn.setY(pos.getY());
} catch (Throwable t) {
// 回退:放在界面右侧大致位置,避免不可见
- extendedae_plus$uploadBtn.setWidth(12);
- extendedae_plus$uploadBtn.setHeight(12);
- int leftPos = ((AbstractContainerScreenAccessor>) (Object) this).extendedae_plus$getLeftPos();
- int topPos = ((AbstractContainerScreenAccessor>) (Object) this).extendedae_plus$getTopPos();
- int imageWidth = ((AbstractContainerScreenAccessor>) (Object) this).extendedae_plus$getImageWidth();
- extendedae_plus$uploadBtn.setX(leftPos + imageWidth - 12 - 8 + 2); // 向右微移 2px
- extendedae_plus$uploadBtn.setY(topPos + 88);
+ eap$uploadBtn.setWidth(12);
+ eap$uploadBtn.setHeight(12);
+ int leftPos = ((AbstractContainerScreenAccessor>) (Object) this).eap$getLeftPos();
+ int topPos = ((AbstractContainerScreenAccessor>) (Object) this).eap$getTopPos();
+ int imageWidth = ((AbstractContainerScreenAccessor>) (Object) this).eap$getImageWidth();
+ eap$uploadBtn.setX(leftPos + imageWidth - 12 - 8 + 2); // 向右微移 2px
+ eap$uploadBtn.setY(topPos + 88);
}
// 直接向 renderables / children 列表添加,避免依赖受保护方法
var accessor = (ScreenAccessor) (Object) this;
- var renderables = accessor.extendedae_plus$getRenderables();
- var children = accessor.extendedae_plus$getChildren();
- if (!renderables.contains(extendedae_plus$uploadBtn)) {
- renderables.add(extendedae_plus$uploadBtn);
+ var renderables = accessor.eap$getRenderables();
+ var children = accessor.eap$getChildren();
+ if (!renderables.contains(eap$uploadBtn)) {
+ renderables.add(eap$uploadBtn);
}
- if (!children.contains(extendedae_plus$uploadBtn)) {
- children.add(extendedae_plus$uploadBtn);
+ if (!children.contains(eap$uploadBtn)) {
+ children.add(eap$uploadBtn);
}
}
@Inject(method = "containerTick", at = @At("TAIL"))
- private void extendedae_plus$ensureUploadButton(CallbackInfo ci) {
+ private void eap$ensureUploadButton(CallbackInfo ci) {
if (!(((Object) this) instanceof PatternEncodingTermScreen)) {
return;
}
- if (extendedae_plus$uploadBtn == null) {
+ if (eap$uploadBtn == null) {
return;
}
- var renderables2 = ((ScreenAccessor) (Object) this).extendedae_plus$getRenderables();
- if (!renderables2.contains(extendedae_plus$uploadBtn)) {
+ var renderables2 = ((ScreenAccessor) (Object) this).eap$getRenderables();
+ if (!renderables2.contains(eap$uploadBtn)) {
// 被其它模组清空/替换后,重新计算一次位置并补回
try {
- ScreenStyle style = ((AEBaseScreenAccessor>) (Object) this).extendedae_plus$getStyle();
+ ScreenStyle style = ((AEBaseScreenAccessor>) (Object) this).eap$getStyle();
WidgetStyle ws = style.getWidget("encodePattern");
- int leftPos = ((AbstractContainerScreenAccessor>) (Object) this).extendedae_plus$getLeftPos();
- int topPos = ((AbstractContainerScreenAccessor>) (Object) this).extendedae_plus$getTopPos();
- int imageWidth = ((AbstractContainerScreenAccessor>) (Object) this).extendedae_plus$getImageWidth();
- int imageHeight = ((AbstractContainerScreenAccessor>) (Object) this).extendedae_plus$getImageHeight();
+ int leftPos = ((AbstractContainerScreenAccessor>) (Object) this).eap$getLeftPos();
+ int topPos = ((AbstractContainerScreenAccessor>) (Object) this).eap$getTopPos();
+ int imageWidth = ((AbstractContainerScreenAccessor>) (Object) this).eap$getImageWidth();
+ int imageHeight = ((AbstractContainerScreenAccessor>) (Object) this).eap$getImageHeight();
Rect2i bounds = new Rect2i(leftPos, topPos, imageWidth, imageHeight);
var pos = ws.resolve(bounds);
int baseW = ws.getWidth() > 0 ? ws.getWidth() : 16;
int baseH = ws.getHeight() > 0 ? ws.getHeight() : 16;
int targetW = Math.max(10, Math.round(baseW * 0.75f));
int targetH = Math.max(10, Math.round(baseH * 0.75f));
- extendedae_plus$uploadBtn.setWidth(targetW);
- extendedae_plus$uploadBtn.setHeight(targetH);
- extendedae_plus$uploadBtn.setX(pos.getX() - targetW); // 原为 -targetW - 2,再右移 2px
- extendedae_plus$uploadBtn.setY(pos.getY());
+ eap$uploadBtn.setWidth(targetW);
+ eap$uploadBtn.setHeight(targetH);
+ eap$uploadBtn.setX(pos.getX() - targetW); // 原为 -targetW - 2,再右移 2px
+ eap$uploadBtn.setY(pos.getY());
} catch (Throwable t) {
- int leftPos = ((AbstractContainerScreenAccessor>) (Object) this).extendedae_plus$getLeftPos();
- int topPos = ((AbstractContainerScreenAccessor>) (Object) this).extendedae_plus$getTopPos();
- int imageWidth = ((AbstractContainerScreenAccessor>) (Object) this).extendedae_plus$getImageWidth();
- extendedae_plus$uploadBtn.setWidth(12);
- extendedae_plus$uploadBtn.setHeight(12);
- extendedae_plus$uploadBtn.setX(leftPos + imageWidth - 12 - 8 + 2);
- extendedae_plus$uploadBtn.setY(topPos + 88);
+ int leftPos = ((AbstractContainerScreenAccessor>) (Object) this).eap$getLeftPos();
+ int topPos = ((AbstractContainerScreenAccessor>) (Object) this).eap$getTopPos();
+ int imageWidth = ((AbstractContainerScreenAccessor>) (Object) this).eap$getImageWidth();
+ eap$uploadBtn.setWidth(12);
+ eap$uploadBtn.setHeight(12);
+ eap$uploadBtn.setX(leftPos + imageWidth - 12 - 8 + 2);
+ eap$uploadBtn.setY(topPos + 88);
}
var accessor2 = (ScreenAccessor) (Object) this;
- var r = accessor2.extendedae_plus$getRenderables();
- var c = accessor2.extendedae_plus$getChildren();
- if (!r.contains(extendedae_plus$uploadBtn)) {
- r.add(extendedae_plus$uploadBtn);
+ var r = accessor2.eap$getRenderables();
+ var c = accessor2.eap$getChildren();
+ if (!r.contains(eap$uploadBtn)) {
+ r.add(eap$uploadBtn);
}
- if (!c.contains(extendedae_plus$uploadBtn)) {
- c.add(extendedae_plus$uploadBtn);
+ if (!c.contains(eap$uploadBtn)) {
+ c.add(eap$uploadBtn);
}
}
}
diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/PatternProviderLogicAdvancedMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/PatternProviderLogicAdvancedMixin.java
index bdfd509..dcd67d3 100644
--- a/src/main/java/com/extendedae_plus/mixin/ae2/PatternProviderLogicAdvancedMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/PatternProviderLogicAdvancedMixin.java
@@ -1,13 +1,12 @@
package com.extendedae_plus.mixin.ae2;
-import java.util.Collections;
-
import appeng.api.crafting.IPatternDetails;
import appeng.api.crafting.IPatternDetails.IInput;
import appeng.api.stacks.AEKey;
+import appeng.api.stacks.GenericStack;
import appeng.helpers.patternprovider.PatternProviderLogic;
import appeng.helpers.patternprovider.PatternProviderTarget;
-import appeng.api.stacks.GenericStack;
+import com.extendedae_plus.api.AdvancedBlockingHolder;
import net.minecraft.nbt.CompoundTag;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
@@ -16,7 +15,7 @@ import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-import com.extendedae_plus.api.AdvancedBlockingHolder;
+import java.util.Collections;
@Mixin(PatternProviderLogic.class)
public class PatternProviderLogicAdvancedMixin implements AdvancedBlockingHolder {
@@ -24,34 +23,33 @@ public class PatternProviderLogicAdvancedMixin implements AdvancedBlockingHolder
private static final String EPP_ADV_BLOCKING_KEY = "epp_advanced_blocking";
@Unique
- private boolean epp$advancedBlocking = false;
+ private boolean eap$advancedBlocking = false;
@Override
- public boolean ext$getAdvancedBlocking() {
- return epp$advancedBlocking;
+ public boolean eap$getAdvancedBlocking() {
+ return eap$advancedBlocking;
}
@Override
- public void ext$setAdvancedBlocking(boolean value) {
- this.epp$advancedBlocking = value;
+ public void eap$setAdvancedBlocking(boolean value) {
+ this.eap$advancedBlocking = value;
}
@Inject(method = "writeToNBT", at = @At("TAIL"), remap = false)
- private void epp$writeAdvancedToNbt(CompoundTag tag, CallbackInfo ci) {
- tag.putBoolean(EPP_ADV_BLOCKING_KEY, this.epp$advancedBlocking);
+ private void eap$writeAdvancedToNbt(CompoundTag tag, CallbackInfo ci) {
+ tag.putBoolean(EPP_ADV_BLOCKING_KEY, this.eap$advancedBlocking);
}
@Inject(method = "readFromNBT", at = @At("TAIL"), remap = false)
- private void epp$readAdvancedFromNbt(CompoundTag tag, CallbackInfo ci) {
+ private void eap$readAdvancedFromNbt(CompoundTag tag, CallbackInfo ci) {
if (tag.contains(EPP_ADV_BLOCKING_KEY)) {
- this.epp$advancedBlocking = tag.getBoolean(EPP_ADV_BLOCKING_KEY);
- } else {
+ this.eap$advancedBlocking = tag.getBoolean(EPP_ADV_BLOCKING_KEY);
}
}
// 在 pushPattern 中,重定向对 adapter.containsPatternInput(...) 的调用
@Redirect(method = "pushPattern", at = @At(value = "INVOKE", target = "Lappeng/helpers/patternprovider/PatternProviderTarget;containsPatternInput(Ljava/util/Set;)Z"), remap = false)
- private boolean epp$redirectBlockingContains(PatternProviderTarget adapter,
+ private boolean eap$redirectBlockingContains(PatternProviderTarget adapter,
java.util.Set patternInputs,
IPatternDetails patternDetails,
appeng.api.stacks.KeyCounter[] inputHolder) {
@@ -62,8 +60,8 @@ public class PatternProviderLogicAdvancedMixin implements AdvancedBlockingHolder
}
// 仅当高级阻挡启用时启用“匹配则不阻挡”
- if (this.epp$advancedBlocking) {
- if (epp$targetFullyMatchesPatternInputs(adapter, patternDetails)) {
+ if (this.eap$advancedBlocking) {
+ if (eap$targetFullyMatchesPatternInputs(adapter, patternDetails)) {
// 返回 false 表示“不包含阻挡关键物”,从而不触发 continue,允许发配
return false;
}
@@ -73,7 +71,7 @@ public class PatternProviderLogicAdvancedMixin implements AdvancedBlockingHolder
}
@Unique
- private boolean epp$targetFullyMatchesPatternInputs(PatternProviderTarget adapter, IPatternDetails patternDetails) {
+ private boolean eap$targetFullyMatchesPatternInputs(PatternProviderTarget adapter, IPatternDetails patternDetails) {
for (IInput in : patternDetails.getInputs()) {
boolean slotMatched = false;
for (GenericStack candidate : in.getPossibleInputs()) {
diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/PatternProviderMenuAdvancedMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/PatternProviderMenuAdvancedMixin.java
index 83f0942..2809ac4 100644
--- a/src/main/java/com/extendedae_plus/mixin/ae2/PatternProviderMenuAdvancedMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/PatternProviderMenuAdvancedMixin.java
@@ -1,20 +1,22 @@
package com.extendedae_plus.mixin.ae2;
-import appeng.menu.implementations.PatternProviderMenu;
import appeng.helpers.patternprovider.PatternProviderLogic;
-import appeng.menu.guisync.GuiSync;
import appeng.helpers.patternprovider.PatternProviderLogicHost;
+import appeng.menu.guisync.GuiSync;
+import appeng.menu.implementations.PatternProviderMenu;
+import com.extendedae_plus.api.AdvancedBlockingHolder;
+import com.extendedae_plus.api.PatternProviderMenuAdvancedSync;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.inventory.MenuType;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
+import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
-import com.extendedae_plus.api.AdvancedBlockingHolder;
-import com.extendedae_plus.api.PatternProviderMenuAdvancedSync;
+import static com.extendedae_plus.util.ExtendedAELogger.LOGGER;
@Mixin(PatternProviderMenu.class)
public abstract class PatternProviderMenuAdvancedMixin implements PatternProviderMenuAdvancedSync {
@@ -25,58 +27,61 @@ public abstract class PatternProviderMenuAdvancedMixin implements PatternProvide
protected PatternProviderLogic logic;
// 选择一个未占用的 GUI 同步 id(AE2 已用到 7),这里使用 20 以避冲突
+ @Unique
@GuiSync(20)
- public boolean eppAdvancedBlocking = false;
+ public boolean eap$AdvancedBlocking = false;
@Inject(method = "broadcastChanges", at = @At("HEAD"))
- private void epp$syncAdvancedBlocking(CallbackInfo ci) {
+ private void eap$syncAdvancedBlocking(CallbackInfo ci) {
if (this.isServerSide()) {
var l = this.logic;
if (l instanceof AdvancedBlockingHolder holder) {
- this.eppAdvancedBlocking = holder.ext$getAdvancedBlocking();
+ this.eap$AdvancedBlocking = holder.eap$getAdvancedBlocking();
}
}
}
@Inject(method = "broadcastChanges", at = @At("TAIL"))
- private void epp$syncAdvancedBlockingTail(CallbackInfo ci) {
+ private void eap$syncAdvancedBlockingTail(CallbackInfo ci) {
}
// 构造器尾注入(public ctor)
@Inject(method = "(ILnet/minecraft/world/entity/player/Inventory;Lappeng/helpers/patternprovider/PatternProviderLogicHost;)V", at = @At("TAIL"))
- private void epp$initAdvancedSync_Public(int id, Inventory playerInventory, PatternProviderLogicHost host, CallbackInfo ci) {
+ private void eap$initAdvancedSync_Public(int id, Inventory playerInventory, PatternProviderLogicHost host, CallbackInfo ci) {
try {
var l = this.logic;
if (l instanceof AdvancedBlockingHolder holder) {
- this.eppAdvancedBlocking = holder.ext$getAdvancedBlocking();
+ this.eap$AdvancedBlocking = holder.eap$getAdvancedBlocking();
}
} catch (Throwable t) {
+ LOGGER.error("Error initializing advanced sync", t);
}
}
// 构造器尾注入(protected ctor with MenuType)
@Inject(method = "(Lnet/minecraft/world/inventory/MenuType;ILnet/minecraft/world/entity/player/Inventory;Lappeng/helpers/patternprovider/PatternProviderLogicHost;)V", at = @At("TAIL"))
- private void epp$initAdvancedSync_Protected(MenuType extends PatternProviderMenu> menuType, int id, Inventory playerInventory, PatternProviderLogicHost host, CallbackInfo ci) {
+ private void eap$initAdvancedSync_Protected(MenuType extends PatternProviderMenu> menuType, int id, Inventory playerInventory, PatternProviderLogicHost host, CallbackInfo ci) {
try {
var l = this.logic;
if (l instanceof AdvancedBlockingHolder holder) {
- this.eppAdvancedBlocking = holder.ext$getAdvancedBlocking();
+ this.eap$AdvancedBlocking = holder.eap$getAdvancedBlocking();
}
} catch (Throwable t) {
+ LOGGER.error("Error initializing advanced sync", t);
}
}
@Override
- public boolean ext$getAdvancedBlockingSynced() {
- return this.eppAdvancedBlocking;
+ public boolean eap$getAdvancedBlockingSynced() {
+ return this.eap$AdvancedBlocking;
}
// 调试:当 Screen 每帧读取这些 getter 时打印,验证 Mixin 是否生效
@Inject(method = "getBlockingMode", at = @At("HEAD"), remap = false)
- private void epp$debug_getBlockingMode(CallbackInfoReturnable> cir) {
+ private void eap$debug_getBlockingMode(CallbackInfoReturnable> cir) {
}
@Inject(method = "getShowInAccessTerminal", at = @At("HEAD"), remap = false)
- private void epp$debug_getShowInAccessTerminal(CallbackInfoReturnable> cir) {
+ private void eap$debug_getShowInAccessTerminal(CallbackInfoReturnable> cir) {
}
}
diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/PatternProviderScreenMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/PatternProviderScreenMixin.java
index 4b749bf..99db84b 100644
--- a/src/main/java/com/extendedae_plus/mixin/ae2/PatternProviderScreenMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/PatternProviderScreenMixin.java
@@ -20,6 +20,7 @@ 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.ExtendedAELogger.LOGGER;
/**
* 为 AE2 原版样板供应器界面添加“高级阻挡模式”按钮(仅客户端UI反馈)。
* - 位于左侧工具栏
@@ -30,40 +31,41 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
public abstract class PatternProviderScreenMixin extends AEBaseScreen {
@Unique
- private ToggleButton eppAdvancedBlockingToggle;
+ private ToggleButton eap$AdvancedBlockingToggle;
@Unique
- private boolean eppAdvancedBlockingEnabled = false;
+ private boolean eap$AdvancedBlockingEnabled = false;
@Unique
- private String eppProviderKey = null;
+ private String eap$ProviderKey = null;
public PatternProviderScreenMixin(C menu, Inventory playerInventory, Component title, ScreenStyle style) {
super(menu, playerInventory, title, style);
}
@Inject(method = "", at = @At("RETURN"))
- private void epp$initAdvancedBlocking(C menu, Inventory playerInventory, Component title, ScreenStyle style, CallbackInfo ci) {
+ private void eap$initAdvancedBlocking(C menu, Inventory playerInventory, Component title, ScreenStyle style, CallbackInfo ci) {
// 计算供应器唯一键:维度ID + 方块坐标
try {
- var logic = ((PatternProviderMenuAdvancedAccessor) menu).ext$logic();
- var host = ((PatternProviderLogicAccessor) logic).ext$host();
+ var logic = ((PatternProviderMenuAdvancedAccessor) menu).eap$logic();
+ var host = ((PatternProviderLogicAccessor) logic).eap$host();
var be = host.getBlockEntity();
var level = be.getLevel();
String dimId = level.dimension().location().toString();
long posLong = be.getBlockPos().asLong();
- this.eppProviderKey = ClientAdvancedBlockingState.key(dimId, posLong);
+ this.eap$ProviderKey = ClientAdvancedBlockingState.key(dimId, posLong);
} catch (Throwable t) {
+ LOGGER.error("Error initializing advanced sync", t);
}
// 优先使用该供应器最近一次 S2C 状态;否则回退读取 @GuiSync 初始化
- if (this.eppProviderKey != null && ClientAdvancedBlockingState.has(this.eppProviderKey)) {
- this.eppAdvancedBlockingEnabled = ClientAdvancedBlockingState.get(this.eppProviderKey);
+ if (this.eap$ProviderKey != null && ClientAdvancedBlockingState.has(this.eap$ProviderKey)) {
+ this.eap$AdvancedBlockingEnabled = ClientAdvancedBlockingState.get(this.eap$ProviderKey);
} else if (menu instanceof PatternProviderMenuAdvancedSync sync) {
- this.eppAdvancedBlockingEnabled = sync.ext$getAdvancedBlockingSynced();
+ this.eap$AdvancedBlockingEnabled = sync.eap$getAdvancedBlockingSynced();
}
// 使用 ToggleButton 以便在 YES/NO 图标与提示之间动态切换
- this.eppAdvancedBlockingToggle = new ToggleButton(
+ this.eap$AdvancedBlockingToggle = new ToggleButton(
Icon.BLOCKING_MODE_YES,
Icon.BLOCKING_MODE_NO,
// 提示文本:名称与说明
@@ -71,67 +73,67 @@ public abstract class PatternProviderScreenMixin
Component.literal("高级阻挡模式:当开启时,执行更严格的阻挡判定"),
(state) -> {
// 客户端立即反馈:切换图标/提示
- this.eppAdvancedBlockingEnabled = state;
- this.eppAdvancedBlockingToggle.setState(state);
+ this.eap$AdvancedBlockingEnabled = state;
+ this.eap$AdvancedBlockingToggle.setState(state);
// 发送 C2S 切换请求
ModNetwork.CHANNEL.sendToServer(new ToggleAdvancedBlockingC2SPacket());
// 可根据状态调整提示文本(演示性:开启/关闭不同第二行)
if (state) {
- this.eppAdvancedBlockingToggle.setTooltipOn(java.util.List.of(
+ this.eap$AdvancedBlockingToggle.setTooltipOn(java.util.List.of(
Component.literal("高级阻挡模式"),
Component.literal("高级阻挡模式:已开启")));
- this.eppAdvancedBlockingToggle.setTooltipOff(java.util.List.of(
+ this.eap$AdvancedBlockingToggle.setTooltipOff(java.util.List.of(
Component.literal("高级阻挡模式"),
Component.literal("高级阻挡模式:已开启")));
} else {
- this.eppAdvancedBlockingToggle.setTooltipOn(java.util.List.of(
+ this.eap$AdvancedBlockingToggle.setTooltipOn(java.util.List.of(
Component.literal("高级阻挡模式"),
Component.literal("高级阻挡模式:已关闭")));
- this.eppAdvancedBlockingToggle.setTooltipOff(java.util.List.of(
+ this.eap$AdvancedBlockingToggle.setTooltipOff(java.util.List.of(
Component.literal("高级阻挡模式"),
Component.literal("高级阻挡模式:已关闭")));
}
}
);
- this.eppAdvancedBlockingToggle.setState(this.eppAdvancedBlockingEnabled);
+ this.eap$AdvancedBlockingToggle.setState(this.eap$AdvancedBlockingEnabled);
// 初始 tooltip
- this.eppAdvancedBlockingToggle.setTooltipOn(java.util.List.of(
+ this.eap$AdvancedBlockingToggle.setTooltipOn(java.util.List.of(
Component.literal("高级阻挡模式"),
- Component.literal(this.eppAdvancedBlockingEnabled ? "高级阻挡模式:已开启" : "高级阻挡模式:已关闭")
+ Component.literal(this.eap$AdvancedBlockingEnabled ? "高级阻挡模式:已开启" : "高级阻挡模式:已关闭")
));
- this.eppAdvancedBlockingToggle.setTooltipOff(java.util.List.of(
+ this.eap$AdvancedBlockingToggle.setTooltipOff(java.util.List.of(
Component.literal("高级阻挡模式"),
- Component.literal(this.eppAdvancedBlockingEnabled ? "高级阻挡模式:已开启" : "高级阻挡模式:已关闭")
+ Component.literal(this.eap$AdvancedBlockingEnabled ? "高级阻挡模式:已开启" : "高级阻挡模式:已关闭")
));
- this.addToLeftToolbar(this.eppAdvancedBlockingToggle);
+ this.addToLeftToolbar(this.eap$AdvancedBlockingToggle);
}
// 每帧刷新:从菜单同步布尔值,保持按钮状态一致
@Inject(method = "updateBeforeRender", at = @At("TAIL"), remap = false)
- private void epp$updateAdvancedBlocking(CallbackInfo ci) {
+ private void eap$updateAdvancedBlocking(CallbackInfo ci) {
// 打印一条轻量 tick 日志以确认该方法被调用(频繁输出可在验证后移除)
// System.out.println("[EPP][CLIENT] updateBeforeRender tick, local=" + this.eppAdvancedBlockingEnabled);
- if (this.eppAdvancedBlockingToggle == null) return;
+ if (this.eap$AdvancedBlockingToggle == null) return;
- boolean desired = this.eppAdvancedBlockingEnabled;
+ boolean desired = this.eap$AdvancedBlockingEnabled;
// 优先使用该供应器最近一次 S2C 值
- if (this.eppProviderKey != null && ClientAdvancedBlockingState.has(this.eppProviderKey)) {
- desired = ClientAdvancedBlockingState.get(this.eppProviderKey);
+ if (this.eap$ProviderKey != null && ClientAdvancedBlockingState.has(this.eap$ProviderKey)) {
+ desired = ClientAdvancedBlockingState.get(this.eap$ProviderKey);
} else if (this.menu instanceof PatternProviderMenuAdvancedSync sync) {
- desired = sync.ext$getAdvancedBlockingSynced();
+ desired = sync.eap$getAdvancedBlockingSynced();
}
- if (desired != this.eppAdvancedBlockingEnabled) {
- this.eppAdvancedBlockingEnabled = desired;
- this.eppAdvancedBlockingToggle.setState(desired);
+ if (desired != this.eap$AdvancedBlockingEnabled) {
+ this.eap$AdvancedBlockingEnabled = desired;
+ this.eap$AdvancedBlockingToggle.setState(desired);
// 同步 tooltip 二行提示
- this.eppAdvancedBlockingToggle.setTooltipOn(java.util.List.of(
+ this.eap$AdvancedBlockingToggle.setTooltipOn(java.util.List.of(
Component.literal("高级阻挡模式"),
Component.literal(desired ? "高级阻挡模式:已开启" : "高级阻挡模式:已关闭")
));
- this.eppAdvancedBlockingToggle.setTooltipOff(java.util.List.of(
+ this.eap$AdvancedBlockingToggle.setTooltipOff(java.util.List.of(
Component.literal("高级阻挡模式"),
Component.literal(desired ? "高级阻挡模式:已开启" : "高级阻挡模式:已关闭")
));
diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/QuartzCuttingKnifeItemMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/QuartzCuttingKnifeItemMixin.java
index 5e1aadc..53b2e1f 100644
--- a/src/main/java/com/extendedae_plus/mixin/ae2/QuartzCuttingKnifeItemMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/QuartzCuttingKnifeItemMixin.java
@@ -23,8 +23,6 @@ import net.minecraft.world.phys.HitResult;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.fml.ModList;
import org.lwjgl.glfw.GLFW;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
@@ -38,6 +36,8 @@ import java.lang.reflect.Method;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicBoolean;
+import static com.extendedae_plus.util.ExtendedAELogger.LOGGER;
+
/**
* 为 AE2 石英切割刀添加:潜行 + 右键 指向世界中的方块/部件(如线缆)时,复制其名称到剪贴板。
*
@@ -48,8 +48,6 @@ import java.util.concurrent.atomic.AtomicBoolean;
*/
@Mixin(value = QuartzCuttingKnifeItem.class)
public abstract class QuartzCuttingKnifeItemMixin {
- private static final Logger LOGGER = LoggerFactory.getLogger("ExtendedAEPlus");
-
@Inject(method = "use", at = @At("HEAD"), cancellable = true)
private void eap$copyNameOnShiftRightClick(Level level, Player player, InteractionHand hand,
CallbackInfoReturnable> cir) {
diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/accessor/AEBaseScreenAccessor.java b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/AEBaseScreenAccessor.java
index d9aa61a..bf0924b 100644
--- a/src/main/java/com/extendedae_plus/mixin/ae2/accessor/AEBaseScreenAccessor.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/AEBaseScreenAccessor.java
@@ -9,5 +9,5 @@ import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(value = AEBaseScreen.class, remap = false)
public interface AEBaseScreenAccessor {
@Accessor(value = "style", remap = false)
- ScreenStyle extendedae_plus$getStyle();
+ ScreenStyle eap$getStyle();
}
diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/accessor/MEStorageScreenAccessor.java b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/MEStorageScreenAccessor.java
index e277e1a..6b8fa2c 100644
--- a/src/main/java/com/extendedae_plus/mixin/ae2/accessor/MEStorageScreenAccessor.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/MEStorageScreenAccessor.java
@@ -9,8 +9,8 @@ import org.spongepowered.asm.mixin.gen.Invoker;
@Mixin(value = MEStorageScreen.class, remap = false)
public interface MEStorageScreenAccessor {
@Accessor("searchField")
- AETextField ext$getSearchField();
+ AETextField eap$getSearchField();
@Invoker("setSearchText")
- void ext$setSearchText(String text);
+ void eap$setSearchText(String text);
}
diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternEncodingTermMenuAccessor.java b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternEncodingTermMenuAccessor.java
index a65aac2..908962c 100644
--- a/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternEncodingTermMenuAccessor.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternEncodingTermMenuAccessor.java
@@ -8,8 +8,8 @@ import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(PatternEncodingTermMenu.class)
public interface PatternEncodingTermMenuAccessor {
@Accessor("encodedPatternSlot")
- RestrictedInputSlot epp$getEncodedPatternSlot();
+ RestrictedInputSlot eap$getEncodedPatternSlot();
@Accessor("blankPatternSlot")
- RestrictedInputSlot epp$getBlankPatternSlot();
+ RestrictedInputSlot eap$getBlankPatternSlot();
}
diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderLogicAccessor.java b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderLogicAccessor.java
index 732c3fc..7cba84b 100644
--- a/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderLogicAccessor.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderLogicAccessor.java
@@ -8,5 +8,5 @@ import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(PatternProviderLogic.class)
public interface PatternProviderLogicAccessor {
@Accessor("host")
- PatternProviderLogicHost ext$host();
+ PatternProviderLogicHost eap$host();
}
diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderLogicPatternInputsAccessor.java b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderLogicPatternInputsAccessor.java
index a7f1158..2b898b5 100644
--- a/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderLogicPatternInputsAccessor.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderLogicPatternInputsAccessor.java
@@ -10,5 +10,5 @@ import java.util.Set;
@Mixin(PatternProviderLogic.class)
public interface PatternProviderLogicPatternInputsAccessor {
@Accessor("patternInputs")
- Set ext$patternInputs();
+ Set eap$patternInputs();
}
diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderMenuAdvancedAccessor.java b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderMenuAdvancedAccessor.java
index 2f62d09..0a0234d 100644
--- a/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderMenuAdvancedAccessor.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2/accessor/PatternProviderMenuAdvancedAccessor.java
@@ -8,5 +8,5 @@ import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(PatternProviderMenu.class)
public interface PatternProviderMenuAdvancedAccessor {
@Accessor("logic")
- PatternProviderLogic ext$logic();
+ PatternProviderLogic eap$logic();
}
diff --git a/src/main/java/com/extendedae_plus/mixin/ae2WTlib/ContainerUWirelessExPatternTerminalMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2WTlib/ContainerUWirelessExPatternTerminalMixin.java
index ac08574..f7607fe 100644
--- a/src/main/java/com/extendedae_plus/mixin/ae2WTlib/ContainerUWirelessExPatternTerminalMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/ae2WTlib/ContainerUWirelessExPatternTerminalMixin.java
@@ -26,23 +26,23 @@ import java.util.function.Consumer;
public abstract class ContainerUWirelessExPatternTerminalMixin implements IActionHolder {
@Unique
- private final Map> actions = createHolder();
+ private final Map> eap$actions = createHolder();
@Unique
- private Player epp$player;
+ private Player eap$player;
// 明确目标构造签名:(int, Inventory, HostUWirelessExPAT)
@Inject(method = "(ILnet/minecraft/world/entity/player/Inventory;Lcom/glodblock/github/extendedae/xmod/wt/HostUWirelessExPAT;)V", at = @At("TAIL"), remap = false)
private void init(int id, net.minecraft.world.entity.player.Inventory playerInventory, HostUWirelessExPAT host, CallbackInfo ci) {
- this.epp$player = playerInventory.player;
+ this.eap$player = playerInventory.player;
// 注册上传动作:参数顺序必须与客户端 CGenericPacket 保持一致
- this.actions.put("upload", p -> {
+ this.eap$actions.put("upload", p -> {
try {
Object o0 = p.get(0);
Object o1 = p.get(1);
int playerSlotIndex = (o0 instanceof Number) ? ((Number) o0).intValue() : Integer.parseInt(String.valueOf(o0));
long providerId = (o1 instanceof Number) ? ((Number) o1).longValue() : Long.parseLong(String.valueOf(o1));
- var sp = (ServerPlayer) this.epp$player;
+ var sp = (ServerPlayer) this.eap$player;
ExtendedAEPatternUploadUtil.uploadPatternToProvider(sp, playerSlotIndex, providerId);
} catch (Throwable t) {
}
@@ -53,6 +53,6 @@ public abstract class ContainerUWirelessExPatternTerminalMixin implements IActio
@NotNull
@Override
public Map> getActionMap() {
- return this.actions;
+ return this.eap$actions;
}
}
diff --git a/src/main/java/com/extendedae_plus/mixin/api/AdvancedBlockingHolder.java b/src/main/java/com/extendedae_plus/mixin/api/AdvancedBlockingHolder.java
deleted file mode 100644
index 7f7d539..0000000
--- a/src/main/java/com/extendedae_plus/mixin/api/AdvancedBlockingHolder.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.extendedae_plus.api;
-
-public interface AdvancedBlockingHolder {
- boolean ext$getAdvancedBlocking();
- void ext$setAdvancedBlocking(boolean value);
-}
diff --git a/src/main/java/com/extendedae_plus/mixin/extendedae/ContainerExPatternProviderMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/ContainerExPatternProviderMixin.java
index 540d9c5..745f8fd 100644
--- a/src/main/java/com/extendedae_plus/mixin/extendedae/ContainerExPatternProviderMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/extendedae/ContainerExPatternProviderMixin.java
@@ -31,23 +31,23 @@ public abstract class ContainerExPatternProviderMixin extends PatternProviderMen
@GuiSync(11451)
@Unique
- public int page = 0;
+ public int eap$page = 0;
@Unique
- public int maxPage = 0;
+ public int eap$maxPage = 0;
@Unique
private static final int SLOTS_PER_PAGE = 36; // 每页显示36个槽位
@Unique
- private final Map> actions = createHolder();
+ private final Map> eap$actions = createHolder();
public ContainerExPatternProviderMixin(MenuType extends PatternProviderMenu> menuType, int id, Inventory playerInventory, PatternProviderLogicHost host) {
super(menuType, id, playerInventory, host);
}
@Unique
- public void showPage() {
+ public void eap$showPage() {
List slots = this.getSlots(SlotSemantics.ENCODED_PATTERN);
int totalSlots = slots.size();
@@ -64,13 +64,9 @@ public abstract class ContainerExPatternProviderMixin extends PatternProviderMen
for (Slot s : slots) {
int page_id = slot_id / SLOTS_PER_PAGE;
- if (page_id == this.page) {
- // 当前页的槽位激活
- ((AppEngSlot) s).setActive(true);
- } else {
- // 其他页的槽位隐藏
- ((AppEngSlot) s).setActive(false);
- }
+ // 当前页的槽位激活
+ // 其他页的槽位隐藏
+ ((AppEngSlot) s).setActive(page_id == this.eap$page);
++slot_id;
}
}
@@ -78,29 +74,29 @@ public abstract class ContainerExPatternProviderMixin extends PatternProviderMen
@Inject(method = "", at = @At("TAIL"))
public void init(int id, Inventory playerInventory, PatternProviderLogicHost host, CallbackInfo ci) {
int maxSlots = this.getSlots(SlotSemantics.ENCODED_PATTERN).size();
- this.maxPage = (maxSlots + SLOTS_PER_PAGE - 1) / SLOTS_PER_PAGE;
+ this.eap$maxPage = (maxSlots + SLOTS_PER_PAGE - 1) / SLOTS_PER_PAGE;
// 注册通用动作(供 CGenericPacket 分发)
- this.actions.put("multiply2", p -> { modifyPatterns(2, false); });
- this.actions.put("divide2", p -> { modifyPatterns(2, true); });
- this.actions.put("multiply5", p -> { modifyPatterns(5, false); });
- this.actions.put("divide5", p -> { modifyPatterns(5, true); });
- this.actions.put("multiply10",p -> { modifyPatterns(10, false);});
- this.actions.put("divide10", p -> { modifyPatterns(10, true); });
+ this.eap$actions.put("multiply2", p -> { eap$modifyPatterns(2, false); });
+ this.eap$actions.put("divide2", p -> { eap$modifyPatterns(2, true); });
+ this.eap$actions.put("multiply5", p -> { eap$modifyPatterns(5, false); });
+ this.eap$actions.put("divide5", p -> { eap$modifyPatterns(5, true); });
+ this.eap$actions.put("multiply10", p -> { eap$modifyPatterns(10, false);});
+ this.eap$actions.put("divide10", p -> { eap$modifyPatterns(10, true); });
}
@Unique
public int getPage() {
- return this.page;
+ return this.eap$page;
}
@Unique
public void setPage(int page) {
- this.page = page;
+ this.eap$page = page;
}
@Unique
- private void modifyPatterns(int scale, boolean div) {
+ private void eap$modifyPatterns(int scale, boolean div) {
if (scale <= 0) return;
for (var slot : this.getSlots(SlotSemantics.ENCODED_PATTERN)) {
var stack = slot.getItem();
@@ -109,11 +105,11 @@ public abstract class ContainerExPatternProviderMixin extends PatternProviderMen
if (detail instanceof AEProcessingPattern process) {
var input = process.getSparseInputs();
var output = process.getOutputs();
- if (checkModify(input, scale, div) && checkModify(output, scale, div)) {
+ if (eap$checkModify(input, scale, div) && eap$checkModify(output, scale, div)) {
var mulInput = new GenericStack[input.length];
var mulOutput = new GenericStack[output.length];
- modifyStacks(input, mulInput, scale, div);
- modifyStacks(output, mulOutput, scale, div);
+ eap$modifyStacks(input, mulInput, scale, div);
+ eap$modifyStacks(output, mulOutput, scale, div);
var newPattern = PatternDetailsHelper.encodeProcessingPattern(mulInput, mulOutput);
slot.set(newPattern);
}
@@ -123,7 +119,7 @@ public abstract class ContainerExPatternProviderMixin extends PatternProviderMen
}
@Unique
- private boolean checkModify(GenericStack[] stacks, int scale, boolean div) {
+ private boolean eap$checkModify(GenericStack[] stacks, int scale, boolean div) {
if (stacks == null) return false;
if (div) {
for (var stack : stacks) {
@@ -148,7 +144,7 @@ public abstract class ContainerExPatternProviderMixin extends PatternProviderMen
}
@Unique
- private void modifyStacks(GenericStack[] src, GenericStack[] dst, int scale, boolean div) {
+ private void eap$modifyStacks(GenericStack[] src, GenericStack[] dst, int scale, boolean div) {
for (int i = 0; i < src.length; i++) {
var stack = src[i];
if (stack != null) {
@@ -164,6 +160,6 @@ public abstract class ContainerExPatternProviderMixin extends PatternProviderMen
@NotNull
@Override
public Map> getActionMap() {
- return this.actions;
+ return this.eap$actions;
}
}
\ No newline at end of file
diff --git a/src/main/java/com/extendedae_plus/mixin/extendedae/ContainerExPatternTerminalMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/ContainerExPatternTerminalMixin.java
index ff94b52..b408a42 100644
--- a/src/main/java/com/extendedae_plus/mixin/extendedae/ContainerExPatternTerminalMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/extendedae/ContainerExPatternTerminalMixin.java
@@ -23,34 +23,34 @@ public abstract class ContainerExPatternTerminalMixin implements IActionHolder {
@GuiSync(11452)
@Unique
- public boolean hidePatternSlots = false;
+ public boolean eap$hidePatternSlots = false;
@Unique
public boolean isHidePatternSlots() {
- return this.hidePatternSlots;
+ return this.eap$hidePatternSlots;
}
@Unique
public void setHidePatternSlots(boolean hide) {
- this.hidePatternSlots = hide;
+ this.eap$hidePatternSlots = hide;
}
@Unique
public void toggleHidePatternSlots() {
- this.hidePatternSlots = !this.hidePatternSlots;
+ this.eap$hidePatternSlots = !this.eap$hidePatternSlots;
}
@Unique
- private final Map> actions = createHolder();
+ private final Map> eap$actions = createHolder();
@Unique
private Player epp$player;
- @Inject(method = "", at = @At("TAIL"))
+ @Inject(method = "*", at = @At("TAIL"))
private void init(int id, net.minecraft.world.entity.player.Inventory playerInventory, IConfigurableObject host, CallbackInfo ci) {
this.epp$player = playerInventory.player;
// 注册上传动作:参数顺序必须与客户端 CGenericPacket 保持一致
- this.actions.put("upload", p -> {
+ this.eap$actions.put("upload", p -> {
try {
Object o0 = p.get(0);
Object o1 = p.get(1);
@@ -58,7 +58,7 @@ public abstract class ContainerExPatternTerminalMixin implements IActionHolder {
long providerId = (o1 instanceof Number) ? ((Number) o1).longValue() : Long.parseLong(String.valueOf(o1));
var sp = (ServerPlayer) this.epp$player;
ExtendedAEPatternUploadUtil.uploadPatternToProvider(sp, playerSlotIndex, providerId);
- } catch (Throwable t) {
+ } catch (Throwable ignored) {
}
});
}
@@ -66,6 +66,6 @@ public abstract class ContainerExPatternTerminalMixin implements IActionHolder {
@NotNull
@Override
public Map> getActionMap() {
- return this.actions;
+ return this.eap$actions;
}
}
\ No newline at end of file
diff --git a/src/main/java/com/extendedae_plus/mixin/extendedae/ContainerWirelessExPatternTerminalMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/ContainerWirelessExPatternTerminalMixin.java
index 168715a..a87909d 100644
--- a/src/main/java/com/extendedae_plus/mixin/extendedae/ContainerWirelessExPatternTerminalMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/extendedae/ContainerWirelessExPatternTerminalMixin.java
@@ -26,7 +26,7 @@ import java.util.function.Consumer;
public abstract class ContainerWirelessExPatternTerminalMixin implements IActionHolder {
@Unique
- private final Map> actions = createHolder();
+ private final Map> eap$actions = createHolder();
@Unique
private Player epp$player;
@@ -36,7 +36,7 @@ public abstract class ContainerWirelessExPatternTerminalMixin implements IAction
private void init(int id, net.minecraft.world.entity.player.Inventory playerInventory, HostWirelessExPAT host, CallbackInfo ci) {
this.epp$player = playerInventory.player;
// 注册上传动作:参数顺序必须与客户端 CGenericPacket 保持一致
- this.actions.put("upload", p -> {
+ this.eap$actions.put("upload", p -> {
try {
Object o0 = p.get(0);
Object o1 = p.get(1);
@@ -44,7 +44,7 @@ public abstract class ContainerWirelessExPatternTerminalMixin implements IAction
long providerId = (o1 instanceof Number) ? ((Number) o1).longValue() : Long.parseLong(String.valueOf(o1));
var sp = (ServerPlayer) this.epp$player;
ExtendedAEPatternUploadUtil.uploadPatternToProvider(sp, playerSlotIndex, providerId);
- } catch (Throwable t) {
+ } catch (Throwable ignored) {
}
});
}
@@ -52,6 +52,6 @@ public abstract class ContainerWirelessExPatternTerminalMixin implements IAction
@NotNull
@Override
public Map> getActionMap() {
- return this.actions;
+ return this.eap$actions;
}
}
diff --git a/src/main/java/com/extendedae_plus/mixin/extendedae/GuiExPatternProviderMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/GuiExPatternProviderMixin.java
index 22990b7..08c2960 100644
--- a/src/main/java/com/extendedae_plus/mixin/extendedae/GuiExPatternProviderMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/extendedae/GuiExPatternProviderMixin.java
@@ -30,11 +30,11 @@ import java.util.List;
public abstract class GuiExPatternProviderMixin extends PatternProviderScreen {
@Unique
- ScreenStyle screenStyle;
+ ScreenStyle eap$screenStyle;
// 跟踪上次屏幕尺寸,处理 GUI 缩放/窗口大小变化后按钮丢失问题
- private int epp_lastScreenWidth = -1;
- private int epp_lastScreenHeight = -1;
+ @Unique private int eap$lastScreenWidth = -1;
+ @Unique private int eap$lastScreenHeight = -1;
// 不再使用右侧 VerticalButtonBar,直接把按钮注册为独立 AE2 小部件
@@ -59,7 +59,7 @@ public abstract class GuiExPatternProviderMixin extends PatternProviderScreen slots = this.getMenu().getSlots(SlotSemantics.ENCODED_PATTERN);
int totalSlots = slots.size();
@@ -274,7 +274,7 @@ public abstract class GuiExPatternProviderMixin extends PatternProviderScreen", at = @At("RETURN"))
private void injectInit(ContainerExPatternProvider menu, Inventory playerInventory, Component title, ScreenStyle style, CallbackInfo ci) {
- this.screenStyle = style;
+ this.eap$screenStyle = style;
// 保留:不再打印菜单类型
// 翻页按钮(仅在需要时显示)
@@ -418,11 +418,11 @@ public abstract class GuiExPatternProviderMixin extends PatternProviderScreen 64) mult = 64;
diff --git a/src/main/java/com/extendedae_plus/mixin/extendedae/TileExPatternProviderMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/TileExPatternProviderMixin.java
index 1740b24..1b15747 100644
--- a/src/main/java/com/extendedae_plus/mixin/extendedae/TileExPatternProviderMixin.java
+++ b/src/main/java/com/extendedae_plus/mixin/extendedae/TileExPatternProviderMixin.java
@@ -17,7 +17,7 @@ public abstract class TileExPatternProviderMixin {
),
index = 2
)
- private int extendedae_plus$multiplyCapacity(int original) {
+ private int eap$multiplyCapacity(int original) {
int mult = ModConfigs.PAGE_MULTIPLIER.get();
if (mult < 1) mult = 1;
if (mult > 64) mult = 64;
diff --git a/src/main/java/com/extendedae_plus/network/ModNetwork.java b/src/main/java/com/extendedae_plus/network/ModNetwork.java
index 7679c5e..3aad8ea 100644
--- a/src/main/java/com/extendedae_plus/network/ModNetwork.java
+++ b/src/main/java/com/extendedae_plus/network/ModNetwork.java
@@ -1,13 +1,10 @@
package com.extendedae_plus.network;
+import com.extendedae_plus.ExtendedAEPlus;
import net.minecraft.resources.ResourceLocation;
+import net.minecraftforge.network.NetworkDirection;
import net.minecraftforge.network.NetworkRegistry;
import net.minecraftforge.network.simple.SimpleChannel;
-import net.minecraftforge.network.NetworkDirection;
-
-import com.extendedae_plus.ExtendedAEPlus;
-import com.extendedae_plus.network.PullFromJeiOrCraftC2SPacket;
-import com.extendedae_plus.network.UploadEncodedPatternToProviderC2SPacket;
public class ModNetwork {
private static final String PROTOCOL_VERSION = "1";
diff --git a/src/main/java/com/extendedae_plus/network/OpenCraftFromJeiC2SPacket.java b/src/main/java/com/extendedae_plus/network/OpenCraftFromJeiC2SPacket.java
index 627ced4..5a9a33d 100644
--- a/src/main/java/com/extendedae_plus/network/OpenCraftFromJeiC2SPacket.java
+++ b/src/main/java/com/extendedae_plus/network/OpenCraftFromJeiC2SPacket.java
@@ -1,21 +1,18 @@
package com.extendedae_plus.network;
-import java.util.function.Supplier;
-
-import net.minecraft.network.FriendlyByteBuf;
-import net.minecraft.server.level.ServerPlayer;
-
-import net.minecraftforge.network.NetworkEvent;
-
import appeng.api.networking.IGrid;
import appeng.api.stacks.AEKey;
import appeng.api.stacks.GenericStack;
import appeng.items.tools.powered.WirelessTerminalItem;
import appeng.menu.locator.MenuLocators;
-import com.extendedae_plus.menu.locator.CuriosItemLocator;
import appeng.menu.me.crafting.CraftAmountMenu;
-
+import com.extendedae_plus.menu.locator.CuriosItemLocator;
import com.extendedae_plus.util.WirelessTerminalLocator;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraftforge.network.NetworkEvent;
+
+import java.util.function.Supplier;
/**
* C2S:从 JEI 中键点击请求打开 AE 的下单界面。
diff --git a/src/main/java/com/extendedae_plus/network/PickFromWirelessC2SPacket.java b/src/main/java/com/extendedae_plus/network/PickFromWirelessC2SPacket.java
index 02986d7..e55878a 100644
--- a/src/main/java/com/extendedae_plus/network/PickFromWirelessC2SPacket.java
+++ b/src/main/java/com/extendedae_plus/network/PickFromWirelessC2SPacket.java
@@ -1,33 +1,30 @@
package com.extendedae_plus.network;
-import java.util.function.Supplier;
-
+import appeng.api.networking.IGrid;
+import appeng.api.networking.energy.IEnergyService;
+import appeng.api.stacks.AEItemKey;
+import appeng.api.storage.MEStorage;
+import appeng.api.storage.StorageHelper;
+import appeng.items.tools.powered.WirelessCraftingTerminalItem;
+import appeng.items.tools.powered.WirelessTerminalItem;
+import appeng.me.helpers.PlayerSource;
+import com.extendedae_plus.util.WirelessTerminalLocator;
+import com.extendedae_plus.util.WirelessTerminalLocator.LocatedTerminal;
+import de.mari_023.ae2wtlib.terminal.WTMenuHost;
+import de.mari_023.ae2wtlib.wut.WTDefinition;
+import de.mari_023.ae2wtlib.wut.WUTHandler;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
+import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.BlockHitResult;
-import net.minecraft.world.phys.HitResult;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.network.NetworkEvent;
-import net.minecraft.network.FriendlyByteBuf;
-import appeng.api.networking.IGrid;
-import appeng.api.storage.MEStorage;
-import appeng.api.storage.StorageHelper;
-import appeng.api.stacks.AEItemKey;
-import appeng.api.networking.energy.IEnergyService;
-import appeng.me.helpers.PlayerSource;
-import appeng.items.tools.powered.WirelessCraftingTerminalItem;
-import appeng.items.tools.powered.WirelessTerminalItem;
-// ae2wtlib
-import de.mari_023.ae2wtlib.wut.WUTHandler;
-import de.mari_023.ae2wtlib.wut.WTDefinition;
-import de.mari_023.ae2wtlib.terminal.WTMenuHost;
-import com.extendedae_plus.util.WirelessTerminalLocator;
-import com.extendedae_plus.util.WirelessTerminalLocator.LocatedTerminal;
+import java.util.function.Supplier;
public class PickFromWirelessC2SPacket {
private final BlockPos pos;
diff --git a/src/main/java/com/extendedae_plus/network/ProvidersListS2CPacket.java b/src/main/java/com/extendedae_plus/network/ProvidersListS2CPacket.java
index 2e16be4..87d3227 100644
--- a/src/main/java/com/extendedae_plus/network/ProvidersListS2CPacket.java
+++ b/src/main/java/com/extendedae_plus/network/ProvidersListS2CPacket.java
@@ -1,5 +1,6 @@
package com.extendedae_plus.network;
+import com.extendedae_plus.client.ui.ProviderSelectScreen;
import net.minecraft.client.Minecraft;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraftforge.api.distmarker.Dist;
@@ -10,8 +11,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;
-import com.extendedae_plus.client.ui.ProviderSelectScreen;
-
/**
* S2C: 返回可见且有空位的样板供应器列表,客户端弹窗展示供用户选择。
*/
diff --git a/src/main/java/com/extendedae_plus/network/PullFromJeiOrCraftC2SPacket.java b/src/main/java/com/extendedae_plus/network/PullFromJeiOrCraftC2SPacket.java
index e7e38e1..ee05ae0 100644
--- a/src/main/java/com/extendedae_plus/network/PullFromJeiOrCraftC2SPacket.java
+++ b/src/main/java/com/extendedae_plus/network/PullFromJeiOrCraftC2SPacket.java
@@ -1,34 +1,30 @@
package com.extendedae_plus.network;
-import java.util.function.Supplier;
-
-import net.minecraft.server.level.ServerLevel;
-import net.minecraft.server.level.ServerPlayer;
-import net.minecraft.world.item.ItemStack;
-import net.minecraftforge.network.NetworkEvent;
-import net.minecraft.network.FriendlyByteBuf;
-
import appeng.api.networking.IGrid;
-import appeng.api.storage.MEStorage;
-import appeng.api.storage.StorageHelper;
+import appeng.api.networking.energy.IEnergyService;
import appeng.api.stacks.AEItemKey;
import appeng.api.stacks.AEKey;
import appeng.api.stacks.GenericStack;
-import appeng.api.networking.energy.IEnergyService;
+import appeng.api.storage.MEStorage;
+import appeng.api.storage.StorageHelper;
import appeng.items.tools.powered.WirelessCraftingTerminalItem;
import appeng.items.tools.powered.WirelessTerminalItem;
import appeng.me.helpers.PlayerSource;
import appeng.menu.locator.MenuLocators;
import appeng.menu.me.crafting.CraftAmountMenu;
-
-// ae2wtlib
-import de.mari_023.ae2wtlib.wut.WUTHandler;
-import de.mari_023.ae2wtlib.wut.WTDefinition;
-import de.mari_023.ae2wtlib.terminal.WTMenuHost;
-
+import com.extendedae_plus.menu.locator.CuriosItemLocator;
import com.extendedae_plus.util.WirelessTerminalLocator;
import com.extendedae_plus.util.WirelessTerminalLocator.LocatedTerminal;
-import com.extendedae_plus.menu.locator.CuriosItemLocator;
+import de.mari_023.ae2wtlib.terminal.WTMenuHost;
+import de.mari_023.ae2wtlib.wut.WTDefinition;
+import de.mari_023.ae2wtlib.wut.WUTHandler;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.world.item.ItemStack;
+import net.minecraftforge.network.NetworkEvent;
+
+import java.util.function.Supplier;
public class PullFromJeiOrCraftC2SPacket {
private final GenericStack stack;
diff --git a/src/main/java/com/extendedae_plus/network/RequestProvidersListC2SPacket.java b/src/main/java/com/extendedae_plus/network/RequestProvidersListC2SPacket.java
index 4e1da79..88e51d6 100644
--- a/src/main/java/com/extendedae_plus/network/RequestProvidersListC2SPacket.java
+++ b/src/main/java/com/extendedae_plus/network/RequestProvidersListC2SPacket.java
@@ -1,18 +1,17 @@
package com.extendedae_plus.network;
-import net.minecraft.network.FriendlyByteBuf;
-import net.minecraftforge.network.NetworkEvent;
-import net.minecraft.server.level.ServerPlayer;
-import appeng.menu.me.items.PatternEncodingTermMenu;
-import appeng.menu.implementations.PatternAccessTermMenu;
import appeng.helpers.patternprovider.PatternContainer;
+import appeng.menu.implementations.PatternAccessTermMenu;
+import appeng.menu.me.items.PatternEncodingTermMenu;
+import com.extendedae_plus.util.ExtendedAEPatternUploadUtil;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraftforge.network.NetworkEvent;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;
-import com.extendedae_plus.util.ExtendedAEPatternUploadUtil;
-
/**
* C2S: 请求当前终端可见的样板供应器列表(用于弹窗选择)。
*/
diff --git a/src/main/java/com/extendedae_plus/network/ToggleAdvancedBlockingC2SPacket.java b/src/main/java/com/extendedae_plus/network/ToggleAdvancedBlockingC2SPacket.java
index 070e2ff..49ed237 100644
--- a/src/main/java/com/extendedae_plus/network/ToggleAdvancedBlockingC2SPacket.java
+++ b/src/main/java/com/extendedae_plus/network/ToggleAdvancedBlockingC2SPacket.java
@@ -33,15 +33,15 @@ public class ToggleAdvancedBlockingC2SPacket {
// 通过 accessor 获取逻辑与当前状态
var accessor = (PatternProviderMenuAdvancedAccessor) menu;
- var logic = accessor.ext$logic();
+ var logic = accessor.eap$logic();
if (logic instanceof AdvancedBlockingHolder holder) {
- boolean current = holder.ext$getAdvancedBlocking();
+ boolean current = holder.eap$getAdvancedBlocking();
boolean next = !current;
- holder.ext$setAdvancedBlocking(next);
+ holder.eap$setAdvancedBlocking(next);
// 关键:保存持久化,触发 AE2 写入逻辑(writeToNBT),并由菜单 @GuiSync 同步回客户端
logic.saveChanges();
// 直接下发 S2C 强制同步(带供应器标识:维度+方块坐标)
- var host = ((PatternProviderLogicAccessor) logic).ext$host();
+ var host = ((PatternProviderLogicAccessor) logic).eap$host();
var be = host.getBlockEntity();
var level = be.getLevel();
String dimId = level.dimension().location().toString();
diff --git a/src/main/java/com/extendedae_plus/network/UploadEncodedPatternToProviderC2SPacket.java b/src/main/java/com/extendedae_plus/network/UploadEncodedPatternToProviderC2SPacket.java
index 8b2a055..ddc1470 100644
--- a/src/main/java/com/extendedae_plus/network/UploadEncodedPatternToProviderC2SPacket.java
+++ b/src/main/java/com/extendedae_plus/network/UploadEncodedPatternToProviderC2SPacket.java
@@ -1,14 +1,13 @@
package com.extendedae_plus.network;
+import appeng.menu.me.items.PatternEncodingTermMenu;
+import com.extendedae_plus.util.ExtendedAEPatternUploadUtil;
import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.server.level.ServerPlayer;
import net.minecraftforge.network.NetworkEvent;
import java.util.function.Supplier;
-import net.minecraft.server.level.ServerPlayer;
-import appeng.menu.me.items.PatternEncodingTermMenu;
-import com.extendedae_plus.util.ExtendedAEPatternUploadUtil;
-
/**
* C2S: 请求将图样编码终端的已编码样板上传到指定的样板供应器(由客户端选择)。
*/
diff --git a/src/main/java/com/extendedae_plus/util/ExtendedAEPatternUploadUtil.java b/src/main/java/com/extendedae_plus/util/ExtendedAEPatternUploadUtil.java
index 14923c8..2d48349 100644
--- a/src/main/java/com/extendedae_plus/util/ExtendedAEPatternUploadUtil.java
+++ b/src/main/java/com/extendedae_plus/util/ExtendedAEPatternUploadUtil.java
@@ -426,7 +426,7 @@ public class ExtendedAEPatternUploadUtil {
// 读取已编码槽位的物品
var encodedSlot = ((PatternEncodingTermMenuAccessor) (Object) menu)
- .epp$getEncodedPatternSlot();
+ .eap$getEncodedPatternSlot();
ItemStack stack = encodedSlot.getItem();
if (stack.isEmpty() || !PatternDetailsHelper.isEncodedPattern(stack)) {
sendMessage(player, "ExtendedAE Plus: 没有可上传的编码样板");
@@ -460,7 +460,7 @@ public class ExtendedAEPatternUploadUtil {
}
try {
var accessor = (PatternEncodingTermMenuAccessor) (Object) menu;
- var blankSlot = accessor.epp$getBlankPatternSlot();
+ var blankSlot = accessor.eap$getBlankPatternSlot();
ItemStack blanks = AEItems.BLANK_PATTERN.stack(stack.getCount());
if (blankSlot != null && blankSlot.mayPlace(blanks)) {
ItemStack remain = blankSlot.safeInsert(blanks);
@@ -977,7 +977,7 @@ public class ExtendedAEPatternUploadUtil {
}
// 读取已编码槽位的物品(通过 accessor)
var encodedSlot = ((PatternEncodingTermMenuAccessor) (Object) menu)
- .epp$getEncodedPatternSlot();
+ .eap$getEncodedPatternSlot();
ItemStack stack = encodedSlot.getItem();
if (stack.isEmpty() || !PatternDetailsHelper.isEncodedPattern(stack)) {
return false;
@@ -1049,7 +1049,7 @@ public class ExtendedAEPatternUploadUtil {
return false;
}
var encodedSlot = ((PatternEncodingTermMenuAccessor) (Object) menu)
- .epp$getEncodedPatternSlot();
+ .eap$getEncodedPatternSlot();
ItemStack stack = encodedSlot.getItem();
if (stack.isEmpty() || !PatternDetailsHelper.isEncodedPattern(stack)) {
return false;
@@ -1187,7 +1187,7 @@ public class ExtendedAEPatternUploadUtil {
if (container == null) return false;
var encodedSlot = ((PatternEncodingTermMenuAccessor) (Object) menu)
- .epp$getEncodedPatternSlot();
+ .eap$getEncodedPatternSlot();
ItemStack stack = encodedSlot.getItem();
if (stack.isEmpty() || !PatternDetailsHelper.isEncodedPattern(stack)) {
return false;
diff --git a/src/main/java/com/extendedae_plus/util/PatternProviderDataUtil.java b/src/main/java/com/extendedae_plus/util/PatternProviderDataUtil.java
index d2e2fbc..15b0ad7 100644
--- a/src/main/java/com/extendedae_plus/util/PatternProviderDataUtil.java
+++ b/src/main/java/com/extendedae_plus/util/PatternProviderDataUtil.java
@@ -2,10 +2,10 @@ package com.extendedae_plus.util;
import appeng.api.crafting.IPatternDetails;
import appeng.api.crafting.PatternDetailsHelper;
+import appeng.api.inventories.InternalInventory;
import appeng.api.stacks.AEKey;
import appeng.api.stacks.GenericStack;
import appeng.helpers.patternprovider.PatternProviderLogic;
-import appeng.api.inventories.InternalInventory;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
@@ -13,7 +13,6 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Arrays;
/**
* 样板供应器数据工具类
diff --git a/src/main/java/com/extendedae_plus/util/PatternProviderUIHelper.java b/src/main/java/com/extendedae_plus/util/PatternProviderUIHelper.java
index 77aa4b6..435a5a9 100644
--- a/src/main/java/com/extendedae_plus/util/PatternProviderUIHelper.java
+++ b/src/main/java/com/extendedae_plus/util/PatternProviderUIHelper.java
@@ -1,10 +1,10 @@
package com.extendedae_plus.util;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.screens.Screen;
import appeng.client.gui.implementations.PatternProviderScreen;
import appeng.helpers.patternprovider.PatternProviderLogic;
import appeng.menu.implementations.PatternProviderMenu;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.screens.Screen;
/**
* 样板供应器UI辅助工具类
diff --git a/src/main/java/com/extendedae_plus/util/WirelessTerminalLocator.java b/src/main/java/com/extendedae_plus/util/WirelessTerminalLocator.java
index e93a62d..73ee90e 100644
--- a/src/main/java/com/extendedae_plus/util/WirelessTerminalLocator.java
+++ b/src/main/java/com/extendedae_plus/util/WirelessTerminalLocator.java
@@ -1,22 +1,17 @@
package com.extendedae_plus.util;
-import java.util.function.Consumer;
-
-import net.minecraft.world.entity.player.Player;
-import net.minecraft.world.item.ItemStack;
-
-import net.minecraftforge.fml.ModList;
-import net.minecraftforge.common.util.LazyOptional;
-
import appeng.items.tools.powered.WirelessCraftingTerminalItem;
import appeng.items.tools.powered.WirelessTerminalItem;
-
-// Curios API (软依赖)
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.item.ItemStack;
+import net.minecraftforge.fml.ModList;
import top.theillusivec4.curios.api.CuriosApi;
import top.theillusivec4.curios.api.type.capability.ICuriosItemHandler;
import top.theillusivec4.curios.api.type.inventory.ICurioStacksHandler;
import top.theillusivec4.curios.api.type.inventory.IDynamicStackHandler;
+import java.util.function.Consumer;
+
/**
* 定位玩家身上的无线终端:
* - 原版槽位:主手、副手、盔甲、背包
diff --git a/src/main/java/com/extendedae_plus/wireless/WirelessMasterRegistry.java b/src/main/java/com/extendedae_plus/wireless/WirelessMasterRegistry.java
index 733a0ca..408bab0 100644
--- a/src/main/java/com/extendedae_plus/wireless/WirelessMasterRegistry.java
+++ b/src/main/java/com/extendedae_plus/wireless/WirelessMasterRegistry.java
@@ -1,5 +1,6 @@
package com.extendedae_plus.wireless;
+import com.extendedae_plus.config.ModConfigs;
import net.minecraft.resources.ResourceKey;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.Level;
@@ -9,8 +10,6 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
-import com.extendedae_plus.config.ModConfigs;
-
/**
* 无线主端注册中心:按 维度 + 频率 唯一注册一个主收发器端点。
* 从端通过本注册中心按频率查找主端,实现一对多连接。