优化文件结构

This commit is contained in:
C-H716 2025-08-30 22:01:47 +08:00
parent 76d7a7eee7
commit 396328d33f
28 changed files with 87 additions and 93 deletions

View File

@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx1G
loom.platform = forge
# Mod properties
mod_version = 1.4.0
mod_version = 1.4.1_beta
maven_group = com.extendedae_plus
archives_name = extendedae_plus

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.autopattern;
package com.extendedae_plus.mixin.ae2.autopattern;
import appeng.api.crafting.IPatternDetails;
import appeng.me.service.CraftingService;

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.autopattern;
package com.extendedae_plus.mixin.ae2.autopattern;
import appeng.api.stacks.AEKey;
import appeng.crafting.CraftingTreeNode;

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.autopattern;
package com.extendedae_plus.mixin.ae2.autopattern;
import appeng.api.stacks.KeyCounter;
import appeng.crafting.CraftingTreeNode;

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.autopattern;
package com.extendedae_plus.mixin.ae2.autopattern;
import appeng.api.crafting.IPatternDetails;
import appeng.api.networking.crafting.ICraftingProvider;
@ -10,9 +10,9 @@ import appeng.crafting.CraftingTreeProcess;
import appeng.crafting.pattern.AEProcessingPattern;
import appeng.me.service.CraftingService;
import com.extendedae_plus.api.SmartDoublingAwarePattern;
import com.extendedae_plus.config.ModConfigs;
import com.extendedae_plus.content.ScaledProcessingPattern;
import com.extendedae_plus.util.PatternScaler;
import com.extendedae_plus.config.ModConfigs;
import com.extendedae_plus.util.RequestedAmountHolder;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@ -66,16 +66,15 @@ public abstract class CraftingTreeProcessMixin {
CraftingService craftingService = (CraftingService) cc;
Iterable<ICraftingProvider> providers = craftingService.getProviders(original);
// 计算 provider 数量尝试用反射读取内部 providers 列表以避免消费迭代器
// 计算 provider 数量避免直接反射目标类字段优先使用 mixin Accessor 暴露的列表
int size;
try {
var cls = providers.getClass();
var f = cls.getDeclaredField("providers"); // private ArrayList<ICraftingProvider>
f.setAccessible(true);
List<?> list = (List<?>) f.get(providers);
// 使用 NetworkCraftingProvidersAccessor通过 Mixin 生成来获取内部列表
var acc = (NetworkCraftingProvidersAccessor) providers;
var list = acc.eap$getProvidersList();
size = list == null ? 0 : list.size();
} catch (Exception ex) {
// 反射失败回退为遍历计数会消费迭代器
} catch (ClassCastException ccx) {
// 访问器不可用回退为遍历计数会消费迭代器
size = (int) StreamSupport.stream(providers.spliterator(), false).count();
}

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.autopattern;
package com.extendedae_plus.mixin.ae2.autopattern;
import appeng.api.crafting.IPatternDetails;
import appeng.helpers.patternprovider.PatternProviderLogic;

View File

@ -1,20 +1,20 @@
package com.extendedae_plus.mixin.ae2;
package com.extendedae_plus.mixin.ae2.client.gui;
import appeng.api.stacks.AEKey;
import appeng.client.Point;
import appeng.client.gui.AEBaseScreen;
import appeng.client.gui.StackWithBounds;
import appeng.client.gui.me.crafting.CraftingCPUScreen;
import appeng.client.gui.TextOverride;
import appeng.client.gui.me.crafting.CraftingCPUScreen;
import appeng.client.gui.style.PaletteColor;
import appeng.client.gui.style.ScreenStyle;
import appeng.client.gui.style.Text;
import appeng.client.gui.style.TextAlignment;
import appeng.api.stacks.AEKey;
import appeng.menu.slot.AppEngSlot;
import com.extendedae_plus.api.ExPatternPageAccessor;
import com.extendedae_plus.network.CraftingMonitorJumpC2SPacket;
import com.extendedae_plus.network.ModNetwork;
import com.extendedae_plus.network.CraftingMonitorOpenProviderC2SPacket;
import com.extendedae_plus.network.ModNetwork;
import com.extendedae_plus.util.GuiUtil;
import com.glodblock.github.extendedae.client.gui.GuiExPatternProvider;
import com.mojang.logging.LogUtils;
@ -24,13 +24,13 @@ import net.minecraft.client.renderer.Rect2i;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.contents.TranslatableContents;
import net.minecraft.world.inventory.Slot;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(AEBaseScreen.class)
public abstract class AEBaseScreenMixin {

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.ae2;
package com.extendedae_plus.mixin.ae2.client.gui;
import appeng.client.gui.AEBaseScreen;
import appeng.client.gui.Icon;

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.ae2;
package com.extendedae_plus.mixin.ae2.client.gui;
import appeng.api.config.Settings;
import appeng.api.config.YesNo;

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.ae2;
package com.extendedae_plus.mixin.ae2.client.gui;
import appeng.client.Point;
import appeng.client.gui.layout.SlotGridLayout;
@ -8,6 +8,7 @@ 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.CallbackInfoReturnable;
import java.lang.reflect.Field;
@Mixin(SlotGridLayout.class)

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.ae2;
package com.extendedae_plus.mixin.ae2.helpers;
import appeng.api.crafting.IPatternDetails;
import appeng.api.crafting.IPatternDetails.IInput;

View File

@ -1,11 +1,11 @@
package com.extendedae_plus.mixin.ae2;
package com.extendedae_plus.mixin.ae2.helpers;
import appeng.helpers.patternprovider.PatternProviderLogic;
import com.extendedae_plus.api.SmartDoublingHolder;
import com.extendedae_plus.api.SmartDoublingAwarePattern;
import com.extendedae_plus.mixin.ae2.accessor.PatternProviderLogicPatternsAccessor;
import appeng.api.crafting.IPatternDetails;
import appeng.crafting.pattern.AEProcessingPattern;
import appeng.helpers.patternprovider.PatternProviderLogic;
import com.extendedae_plus.api.SmartDoublingAwarePattern;
import com.extendedae_plus.api.SmartDoublingHolder;
import com.extendedae_plus.mixin.ae2.accessor.PatternProviderLogicPatternsAccessor;
import net.minecraft.nbt.CompoundTag;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.ae2;
package com.extendedae_plus.mixin.ae2.menu;
import appeng.api.crafting.PatternDetailsHelper;
import appeng.menu.me.items.PatternEncodingTermMenu;

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.ae2;
package com.extendedae_plus.mixin.ae2.menu;
import appeng.api.config.Setting;
import appeng.api.util.IConfigManager;

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.ae2;
package com.extendedae_plus.mixin.ae2.menu;
import appeng.api.inventories.InternalInventory;
import appeng.api.networking.energy.IEnergySource;

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.ae2;
package com.extendedae_plus.mixin.ae2.menu;
import appeng.helpers.patternprovider.PatternProviderLogic;
import appeng.helpers.patternprovider.PatternProviderLogicHost;

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.ae2;
package com.extendedae_plus.mixin.ae2.menu;
import appeng.helpers.patternprovider.PatternProviderLogic;
import appeng.helpers.patternprovider.PatternProviderLogicHost;

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.extendedae;
package com.extendedae_plus.mixin.extendedae.client;
import com.glodblock.github.extendedae.client.button.HighlightButton;
import com.glodblock.github.extendedae.client.gui.GuiExPatternTerminal;

View File

@ -1,22 +1,19 @@
package com.extendedae_plus.mixin.extendedae;
package com.extendedae_plus.mixin.extendedae.client.gui;
import appeng.client.gui.Icon;
import appeng.client.gui.implementations.PatternProviderScreen;
import appeng.client.gui.style.PaletteColor;
import appeng.client.gui.style.ScreenStyle;
import appeng.menu.SlotSemantics;
import com.extendedae_plus.NewIcon;
import com.glodblock.github.extendedae.client.button.ActionEPPButton;
import com.extendedae_plus.api.ExPatternButtonsAccessor;
import com.extendedae_plus.config.ModConfigs;
import com.glodblock.github.extendedae.client.button.ActionEPPButton;
import com.glodblock.github.extendedae.client.gui.GuiExPatternProvider;
import com.glodblock.github.extendedae.container.ContainerExPatternProvider;
import com.glodblock.github.extendedae.network.EPPNetworkHandler;
import com.glodblock.github.glodium.network.packet.CGenericPacket;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.network.chat.Component;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.inventory.Slot;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
@ -24,7 +21,7 @@ import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.lang.reflect.Field;
import java.util.List;
import static com.extendedae_plus.util.ExtendedAELogger.LOGGER;
@Mixin(GuiExPatternProvider.class)

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.extendedae;
package com.extendedae_plus.mixin.extendedae.client.gui;
import appeng.api.crafting.PatternDetailsHelper;
import appeng.client.gui.AEBaseScreen;
@ -9,23 +9,25 @@ import appeng.client.gui.style.ScreenStyle;
import appeng.client.gui.widgets.AETextField;
import appeng.client.gui.widgets.IconButton;
import appeng.menu.AEBaseMenu;
import com.glodblock.github.extendedae.client.gui.GuiExPatternTerminal;
import com.extendedae_plus.network.ModNetwork;
import com.extendedae_plus.network.OpenProviderUiC2SPacket;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import com.glodblock.github.extendedae.client.gui.GuiExPatternTerminal;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.components.Tooltip;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.Rect2i;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.inventory.Slot;
import net.minecraft.world.item.ItemStack;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.level.Level;
import net.minecraft.resources.ResourceLocation;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
import org.spongepowered.asm.mixin.Shadow;
@ -37,11 +39,9 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Set;
import java.util.HashMap;
import java.util.Map;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.Set;
@Pseudo
@Mixin(value = GuiExPatternTerminal.class)

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.extendedae;
package com.extendedae_plus.mixin.extendedae.common;
import com.extendedae_plus.config.ModConfigs;
import com.glodblock.github.extendedae.common.parts.PartExPatternProvider;

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.extendedae;
package com.extendedae_plus.mixin.extendedae.common;
import com.extendedae_plus.config.ModConfigs;
import com.glodblock.github.extendedae.common.tileentities.TileExPatternProvider;

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.extendedae;
package com.extendedae_plus.mixin.extendedae.container;
import appeng.api.crafting.PatternDetailsHelper;
import appeng.api.stacks.GenericStack;

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.extendedae;
package com.extendedae_plus.mixin.extendedae.container;
import appeng.api.util.IConfigurableObject;
import appeng.menu.guisync.GuiSync;
@ -6,23 +6,24 @@ import com.extendedae_plus.util.ExtendedAEPatternUploadUtil;
import com.glodblock.github.extendedae.container.ContainerExPatternTerminal;
import com.glodblock.github.glodium.network.packet.sync.IActionHolder;
import com.glodblock.github.glodium.network.packet.sync.Paras;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.player.Player;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.network.chat.Component;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.MenuProvider;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.MenuProvider;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.Vec3;
import net.minecraft.core.registries.Registries;
import net.minecraftforge.network.NetworkHooks;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.NotNull;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
@ -32,8 +33,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.util.Map;
import java.util.function.Consumer;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@Mixin(ContainerExPatternTerminal.class)
public abstract class ContainerExPatternTerminalMixin implements IActionHolder {

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.extendedae;
package com.extendedae_plus.mixin.extendedae.container;
import com.extendedae_plus.util.ExtendedAEPatternUploadUtil;
import com.glodblock.github.extendedae.common.me.itemhost.HostWirelessExPAT;

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.ae2;
package com.extendedae_plus.mixin.jei;
import appeng.integration.modules.jei.transfer.EncodePatternTransferHandler;
import appeng.integration.modules.jeirei.EncodingHelper;

View File

@ -1,4 +1,4 @@
package com.extendedae_plus.mixin.ae2;
package com.extendedae_plus.mixin.jei;
import appeng.api.stacks.AEFluidKey;
import appeng.api.stacks.AEItemKey;

View File

@ -7,55 +7,53 @@
"PickFromWirelessMixin",
"accessor.AbstractContainerScreenAccessor",
"accessor.ScreenAccessor",
"ae2.AEBaseScreenMixin",
"ae2.PatternEncodingTermScreenMixin",
"ae2.PatternProviderScreenMixin",
"ae2.QuartzCuttingKnifeItemMixin",
"ae2.SlotGridLayoutMixin",
"ae2.accessor.AEBaseScreenAccessor",
"ae2.accessor.AEBaseScreenInvoker",
"ae2.accessor.MEStorageScreenAccessor",
"ae2.accessor.PatternAccessTermScreenAccessor",
"ae2.accessor.PatternAccessTermScreenSlotsRowAccessor",
"extendedae.GuiExPatternProviderMixin",
"extendedae.GuiExPatternTerminalMixin",
"extendedae.HighlightButtonMixin",
"ae2.client.gui.AEBaseScreenMixin",
"ae2.client.gui.PatternEncodingTermScreenMixin",
"ae2.client.gui.PatternProviderScreenMixin",
"ae2.client.gui.SlotGridLayoutMixin",
"extendedae.accessor.GuiExPatternTerminalAccessor",
"extendedae.accessor.GuiExPatternTerminalSlotsRowAccessor",
"ae2.EncodePatternTransferHandlerMixin",
"ae2.EncodingHelperMixin",
"jei.accessor.BookmarkOverlayAccessor",
"extendedae.client.HighlightButtonMixin",
"extendedae.client.gui.GuiExPatternProviderMixin",
"extendedae.client.gui.GuiExPatternTerminalMixin",
"hooks.ModelBakeryMixin",
"jei.EncodePatternTransferHandlerMixin"
"jei.EncodePatternTransferHandlerMixin",
"jei.EncodingHelperMixin",
"jei.accessor.BookmarkOverlayAccessor"
],
"mixins": [
"ae2.AEProcessingPatternMixin",
"ae2.ContainerPatternEncodingTermMenuMixin",
"ae2.CraftingCPUClusterMixin",
"ae2.MEStorageMenuMixin",
"ae2.PatternEncodingTermMenuMixin",
"ae2.PatternProviderLogicAdvancedMixin",
"ae2.PatternProviderLogicDoublingMixin",
"ae2.PatternProviderMenuAdvancedMixin",
"ae2.PatternProviderMenuDoublingMixin",
"ae2.accessor.MEStorageMenuAccessor",
"ae2.accessor.PatternEncodingTermMenuAccessor",
"ae2.accessor.PatternProviderLogicAccessor",
"ae2.accessor.PatternProviderLogicPatternInputsAccessor",
"ae2.accessor.PatternProviderLogicPatternsAccessor",
"ae2.accessor.PatternProviderMenuAdvancedAccessor",
"ae2.autopattern.CraftingServiceGetProvidersMixin",
"ae2.autopattern.CraftingTreeNodeAccessor",
"ae2.autopattern.CraftingTreeNodeMixin",
"ae2.autopattern.CraftingTreeProcessMixin",
"ae2.autopattern.PatternProviderLogicContainsRedirectMixin",
"ae2.helpers.PatternProviderLogicAdvancedMixin",
"ae2.helpers.PatternProviderLogicDoublingMixin",
"ae2.menu.ContainerPatternEncodingTermMenuMixin",
"ae2.menu.MEStorageMenuMixin",
"ae2.menu.PatternEncodingTermMenuMixin",
"ae2.menu.PatternProviderMenuAdvancedMixin",
"ae2.menu.PatternProviderMenuDoublingMixin",
"ae2WTlib.ContainerUWirelessExPatternTerminalMixin",
"autopattern.CraftingProviderListAccessor",
"autopattern.CraftingServiceGetProvidersMixin",
"autopattern.CraftingTreeNodeAccessor",
"autopattern.CraftingTreeNodeMixin",
"autopattern.CraftingTreeProcessMixin",
"autopattern.PatternProviderLogicContainsRedirectMixin",
"extendedae.ContainerExPatternProviderMixin",
"extendedae.ContainerExPatternTerminalMixin",
"extendedae.ContainerWirelessExPatternTerminalMixin",
"extendedae.PartExPatternProviderMixin",
"extendedae.TileExPatternProviderMixin"
"extendedae.common.PartExPatternProviderMixin",
"extendedae.common.TileExPatternProviderMixin",
"extendedae.container.ContainerExPatternProviderMixin",
"extendedae.container.ContainerExPatternTerminalMixin",
"extendedae.container.ContainerWirelessExPatternTerminalMixin"
],
"injectors": {
"defaultRequire": 1