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] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=85=A8=E9=83=A8=E5=89=8D?= =?UTF-8?q?=E7=BC=80=E4=B8=BAeap=EF=BC=81=E4=BC=98=E5=8C=96=E9=83=A8?= =?UTF-8?q?=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> 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 menuType, int id, Inventory playerInventory, PatternProviderLogicHost host, CallbackInfo ci) { + private void eap$initAdvancedSync_Protected(MenuType 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 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 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; - /** * 无线主端注册中心:按 维度 + 频率 唯一注册一个主收发器端点。 * 从端通过本注册中心按频率查找主端,实现一对多连接。