diff --git a/build/generated/sources/modMetadata/META-INF/neoforge.mods.toml b/build/generated/sources/modMetadata/META-INF/neoforge.mods.toml index 4eba2b3..e9b4fc2 100644 --- a/build/generated/sources/modMetadata/META-INF/neoforge.mods.toml +++ b/build/generated/sources/modMetadata/META-INF/neoforge.mods.toml @@ -12,7 +12,7 @@ loaderVersion="[1,)" #mandatory # The license for you mod. This is mandatory metadata and allows for easier comprehension of your redistributive properties. # Review your options at https://choosealicense.com/. All rights reserved is the default copyright stance, and is thus the default here. -license="All Rights Reserved" +license="LGPL-3.0-or-later" # A URL to refer people to when problems occur with this mod #issueTrackerURL="https://change.me.to.your.issue.tracker.example.invalid/" #optional @@ -42,11 +42,10 @@ displayName="ExtendedAE-Plus" #mandatory #credits="" #optional # A text field displayed in the mod UI -authors="YourNameHere, OtherNameHere" #optional +authors="GaLicn, XianYuFish001" #optional # The description text for the mod (multi line!) (#mandatory) -description='''Example mod description. -Newline characters can be used and will be replaced properly.''' +description='''''' # The [[mixins]] block allows you to declare your mixin config to FML so that it gets loaded. [[mixins]] @@ -96,6 +95,13 @@ config="extendedae_plus.mixins.json" ordering="AFTER" side="BOTH" +[[dependencies.extendedae_plus]] +modId="expandedae" +type="discouraged" +versionRange="*" +ordering="AFTER" +side="BOTH" + # Features are specific properties of the game environment, that you may want to declare you require. This example declares # that your mod requires GL version 3.2 or higher. Other features will be added. They are side aware so declaring this won't # stop your mod loading on the server for example. diff --git a/src/main/java/com/extendedae_plus/ExtendedAEPlus.java b/src/main/java/com/extendedae_plus/ExtendedAEPlus.java index 557662a..9fcce61 100644 --- a/src/main/java/com/extendedae_plus/ExtendedAEPlus.java +++ b/src/main/java/com/extendedae_plus/ExtendedAEPlus.java @@ -7,8 +7,7 @@ import appeng.block.AEBaseEntityBlock; import appeng.blockentity.crafting.CraftingBlockEntity; import appeng.items.parts.PartModelsHelper; import com.extendedae_plus.ae.api.storage.InfinityBigIntegerCellHandler; -import com.extendedae_plus.ae.api.storage.InfinityBigIntegerCellInventory; -import com.extendedae_plus.config.ModConfig; +import com.extendedae_plus.config.EAEPConfig; import com.extendedae_plus.init.*; import com.extendedae_plus.util.storage.InfinityStorageManager; import com.mojang.logging.LogUtils; @@ -20,6 +19,7 @@ import net.neoforged.bus.api.IEventBus; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.ModContainer; import net.neoforged.fml.common.Mod; +import net.neoforged.fml.config.ModConfig; import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.event.server.ServerStartedEvent; @@ -47,10 +47,10 @@ public class ExtendedAEPlus { NeoForge.EVENT_BUS.register(this); NeoForge.EVENT_BUS.addListener(ExtendedAEPlus::onServerStarted); NeoForge.EVENT_BUS.addListener(ExtendedAEPlus::onServerStopped); - // 注册配置:接入自定义的 ModConfigs - modContainer.registerConfig(ModConfig.Type.COMMON, ModConfigs.COMMON_SPEC, "extendedae_plus-common.toml"); - modContainer.registerConfig(ModConfig.Type.CLIENT, ModConfigs.CLIENT_SPEC, "extendedae_plus-client.toml"); - modContainer.registerConfig(ModConfig.Type.SERVER, ModConfigs.SERVER_SPEC, "extendedae_plus-server.toml"); + // 注册配置:接入自定义的 EAEPConfig + modContainer.registerConfig(ModConfig.Type.COMMON, EAEPConfig.COMMON_SPEC, "extendedae_plus-common.toml"); + modContainer.registerConfig(ModConfig.Type.CLIENT, EAEPConfig.CLIENT_SPEC, "extendedae_plus-client.toml"); + modContainer.registerConfig(ModConfig.Type.SERVER, EAEPConfig.SERVER_SPEC, "extendedae_plus-server.toml"); } public static ResourceLocation id(String path) { diff --git a/src/main/java/com/extendedae_plus/ae/items/ChannelCardItem.java b/src/main/java/com/extendedae_plus/ae/items/ChannelCardItem.java index 6a922c4..3c3e086 100644 --- a/src/main/java/com/extendedae_plus/ae/items/ChannelCardItem.java +++ b/src/main/java/com/extendedae_plus/ae/items/ChannelCardItem.java @@ -4,15 +4,14 @@ import appeng.items.materials.UpgradeCardItem; import net.minecraft.core.component.DataComponents; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.world.item.component.CustomData; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.CustomData; import net.minecraft.world.level.Level; -import org.jetbrains.annotations.Nullable; import java.util.List; diff --git a/src/main/java/com/extendedae_plus/ae/menu/EntitySpeedTickerMenu.java b/src/main/java/com/extendedae_plus/ae/menu/EntitySpeedTickerMenu.java index 086a261..c146195 100644 --- a/src/main/java/com/extendedae_plus/ae/menu/EntitySpeedTickerMenu.java +++ b/src/main/java/com/extendedae_plus/ae/menu/EntitySpeedTickerMenu.java @@ -6,7 +6,7 @@ import appeng.menu.implementations.UpgradeableMenu; import appeng.menu.slot.OptionalFakeSlot; import com.extendedae_plus.ae.parts.EntitySpeedTickerPart; import com.extendedae_plus.ae.screen.EntitySpeedTickerScreen; -import com.extendedae_plus.config.ModConfigs; +import com.extendedae_plus.config.EAEPConfig; import com.extendedae_plus.init.ModItems; import com.extendedae_plus.init.ModMenuTypes; import com.extendedae_plus.util.entitySpeed.ConfigParsingUtils; @@ -133,8 +133,8 @@ public class EntitySpeedTickerMenu extends UpgradeableMenu screen) { screen.refreshGui(); } } diff --git a/src/main/java/com/extendedae_plus/ae/parts/EntitySpeedTickerPart.java b/src/main/java/com/extendedae_plus/ae/parts/EntitySpeedTickerPart.java index 293d576..8d93085 100644 --- a/src/main/java/com/extendedae_plus/ae/parts/EntitySpeedTickerPart.java +++ b/src/main/java/com/extendedae_plus/ae/parts/EntitySpeedTickerPart.java @@ -22,7 +22,7 @@ import appeng.parts.PartModel; import appeng.parts.automation.UpgradeablePart; import com.extendedae_plus.ExtendedAEPlus; import com.extendedae_plus.ae.menu.EntitySpeedTickerMenu; -import com.extendedae_plus.config.ModConfigs; +import com.extendedae_plus.config.EAEPConfig; import com.extendedae_plus.init.ModItems; import com.extendedae_plus.init.ModMenuTypes; import com.extendedae_plus.util.entitySpeed.ConfigParsingUtils; @@ -210,7 +210,7 @@ public class EntitySpeedTickerPart extends UpgradeablePart implements IGridTicka } String blockId = BuiltInRegistries.BLOCK.getKey(blockEntity.getBlockState().getBlock()).toString(); - if (ConfigParsingUtils.isBlockBlacklisted(blockId, ModConfigs.ENTITY_TICKER_BLACK_LIST.get())) { + if (ConfigParsingUtils.isBlockBlacklisted(blockId, EAEPConfig.ENTITY_TICKER_BLACK_LIST.get())) { return; } @@ -268,7 +268,7 @@ public class EntitySpeedTickerPart extends UpgradeablePart implements IGridTicka */ private double calculateRequiredPower(int speed, String blockId) { int energyCardCount = getUpgrades().getInstalledUpgrades(AEItems.ENERGY_CARD); - double multiplier = ConfigParsingUtils.getMultiplierForBlock(blockId, ModConfigs.ENTITY_TICKER_MULTIPLIERS.get()); + double multiplier = ConfigParsingUtils.getMultiplierForBlock(blockId, EAEPConfig.ENTITY_TICKER_MULTIPLIERS.get()); return PowerUtils.computeFinalPowerForProduct(speed, energyCardCount) * multiplier; } @@ -282,7 +282,7 @@ public class EntitySpeedTickerPart extends UpgradeablePart implements IGridTicka MEStorage storage = getMainNode().getGrid().getStorageService().getInventory(); IActionSource source = IActionSource.ofMachine(this); boolean appFluxLoaded = ModList.get().isLoaded("appflux"); - boolean preferDiskEnergy = appFluxLoaded && ModConfigs.PRIORITIZE_DISK_ENERGY.get(); + boolean preferDiskEnergy = appFluxLoaded && EAEPConfig.PRIORITIZE_DISK_ENERGY.get(); // 如果 appflux 存在且优先磁盘能量,尝试提取 FE 能量 if (appFluxLoaded && preferDiskEnergy) { diff --git a/src/main/java/com/extendedae_plus/client/ClientProxy.java b/src/main/java/com/extendedae_plus/client/ClientProxy.java index 9c373ee..c3ca5b5 100644 --- a/src/main/java/com/extendedae_plus/client/ClientProxy.java +++ b/src/main/java/com/extendedae_plus/client/ClientProxy.java @@ -7,6 +7,7 @@ import com.extendedae_plus.ae.definitions.upgrades.EntitySpeedCardItem; import com.extendedae_plus.ae.menu.EntitySpeedTickerMenu; import com.extendedae_plus.ae.screen.EntitySpeedTickerScreen; import com.extendedae_plus.client.render.crafting.EPlusCraftingCubeModelProvider; +import com.extendedae_plus.client.screen.GlobalProviderModesScreen; import com.extendedae_plus.content.crafting.EPlusCraftingUnitType; import com.extendedae_plus.hooks.BuiltInModelHooks; import com.extendedae_plus.init.ModItems; @@ -61,17 +62,7 @@ public final class ClientProxy { // 菜单 -> 屏幕 绑定(显式 ScreenConstructor,避免泛型推断问题) event.register( ModMenuTypes.NETWORK_PATTERN_CONTROLLER.get(), - new net.minecraft.client.gui.screens.MenuScreens.ScreenConstructor< - com.extendedae_plus.menu.NetworkPatternControllerMenu, - com.extendedae_plus.client.screen.GlobalProviderModesScreen>() { - @Override - public com.extendedae_plus.client.screen.GlobalProviderModesScreen create( - com.extendedae_plus.menu.NetworkPatternControllerMenu menu, - net.minecraft.world.entity.player.Inventory inv, - net.minecraft.network.chat.Component title) { - return new com.extendedae_plus.client.screen.GlobalProviderModesScreen(menu, inv, title); - } - } + GlobalProviderModesScreen::new ); /** diff --git a/src/main/java/com/extendedae_plus/client/InputEvents.java b/src/main/java/com/extendedae_plus/client/InputEvents.java index 97e0505..2f9501a 100644 --- a/src/main/java/com/extendedae_plus/client/InputEvents.java +++ b/src/main/java/com/extendedae_plus/client/InputEvents.java @@ -23,6 +23,7 @@ import org.lwjgl.glfw.GLFW; import java.util.List; +@EventBusSubscriber(modid = ExtendedAEPlus.MODID, value = Dist.CLIENT) public final class InputEvents { private InputEvents() {} @@ -56,7 +57,9 @@ public final class InputEvents { if (event.getKeyCode() == GLFW.GLFW_KEY_F) { // 仅当鼠标确实悬停在 JEI 配料上时触发 // 大概会在一格有多个(?)stack的时候出bug, 但是真的会有那种时候吗? - String name = RecipeViewerHelper.getHoveredStacks().getFirst().what().getDisplayName().getString(); + GenericStack stack = RecipeViewerHelper.getHoveredStacks().getFirst(); + if (stack == null) return; + String name = stack.what().getDisplayName().getString(); // 写入 AE2 终端的搜索框 var screen = Minecraft.getInstance().screen; diff --git a/src/main/java/com/extendedae_plus/client/render/crafting/EPlusCraftingCubeModelProvider.java b/src/main/java/com/extendedae_plus/client/render/crafting/EPlusCraftingCubeModelProvider.java index 796a341..26cd54b 100644 --- a/src/main/java/com/extendedae_plus/client/render/crafting/EPlusCraftingCubeModelProvider.java +++ b/src/main/java/com/extendedae_plus/client/render/crafting/EPlusCraftingCubeModelProvider.java @@ -30,21 +30,21 @@ public class EPlusCraftingCubeModelProvider private static final List MATERIALS = new ArrayList<>(); //将环形边框与基础发光底图放在本模组命名空间 - protected static final Material RING_CORNER = texture(ExtendedAEPlus.MODID, "ring_corner"); - protected static final Material RING_SIDE_HOR = texture(ExtendedAEPlus.MODID, "ring_side_hor"); - protected static final Material RING_SIDE_VER = texture(ExtendedAEPlus.MODID, "ring_side_ver"); - protected static final Material LIGHT_BASE = texture(ExtendedAEPlus.MODID, "light_base"); + protected static final Material RING_CORNER = texture("ring_corner"); + protected static final Material RING_SIDE_HOR = texture("ring_side_hor"); + protected static final Material RING_SIDE_VER = texture("ring_side_ver"); + protected static final Material LIGHT_BASE = texture("light_base"); // 亮面贴图(formed 时使用) - protected static final Material ACCELERATOR_4X_LIGHT = texture(ExtendedAEPlus.MODID, + protected static final Material ACCELERATOR_4X_LIGHT = texture( "4x_accelerator_light"); - protected static final Material ACCELERATOR_16X_LIGHT = texture(ExtendedAEPlus.MODID, + protected static final Material ACCELERATOR_16X_LIGHT = texture( "16x_accelerator_light"); - protected static final Material ACCELERATOR_64X_LIGHT = texture(ExtendedAEPlus.MODID, + protected static final Material ACCELERATOR_64X_LIGHT = texture( "64x_accelerator_light"); - protected static final Material ACCELERATOR_256X_LIGHT = texture(ExtendedAEPlus.MODID, + protected static final Material ACCELERATOR_256X_LIGHT = texture( "256x_accelerator_light"); - protected static final Material ACCELERATOR_1024X_LIGHT = texture(ExtendedAEPlus.MODID, + protected static final Material ACCELERATOR_1024X_LIGHT = texture( "1024x_accelerator_light"); public EPlusCraftingCubeModelProvider(EPlusCraftingUnitType type) { @@ -80,9 +80,9 @@ public class EPlusCraftingCubeModelProvider }; } - private static Material texture(String namespace, String name) { + private static Material texture(String name) { var mat = new Material(TextureAtlas.LOCATION_BLOCKS, - ResourceLocation.fromNamespaceAndPath(namespace, "block/crafting/" + name)); + ResourceLocation.fromNamespaceAndPath(ExtendedAEPlus.MODID, "block/crafting/" + name)); MATERIALS.add(mat); return mat; } diff --git a/src/main/java/com/extendedae_plus/client/screen/ProviderSelectScreen.java b/src/main/java/com/extendedae_plus/client/screen/ProviderSelectScreen.java index 6171121..0d9ee31 100644 --- a/src/main/java/com/extendedae_plus/client/screen/ProviderSelectScreen.java +++ b/src/main/java/com/extendedae_plus/client/screen/ProviderSelectScreen.java @@ -249,8 +249,6 @@ public class ProviderSelectScreen extends Screen { long id = ids.get(i); int slots = emptySlots.get(i); Group g = nameMap.computeIfAbsent(name, k -> new Group()); -// if (!i18nKey.isBlank() && !keyMap.containsKey(i18nKey)) -// keyMap.put(i18nKey, name); g.count++; g.totalSlots += Math.max(0, slots); // 挑选空位最多的作为代表 id;若并列,保留先到者 diff --git a/src/main/java/com/extendedae_plus/compat/AppliedFluxCompat.java b/src/main/java/com/extendedae_plus/compat/AppliedFluxCompat.java index a5d4aa9..fa013b5 100644 --- a/src/main/java/com/extendedae_plus/compat/AppliedFluxCompat.java +++ b/src/main/java/com/extendedae_plus/compat/AppliedFluxCompat.java @@ -1,8 +1,6 @@ package com.extendedae_plus.compat; import appeng.client.gui.implementations.PatternProviderScreen; -import appeng.client.gui.widgets.UpgradesPanel; -import com.extendedae_plus.util.ExtendedAELogger; /** * AppliedFlux 兼容性处理工具类 @@ -18,13 +16,10 @@ public final class AppliedFluxCompat { */ public static boolean hasAppliedFluxUpgradePanel(PatternProviderScreen screen) { // 如果AppliedFlux未加载,肯定没有其升级面板 - if (!UpgradeSlotCompat.shouldUseLowPriorityMode()) { - return false; - } + return UpgradeSlotCompat.shouldUseLowPriorityMode(); // 如果 AppliedFlux 加载了,假设它会添加升级面板 // 这是一个保守的假设,避免冲突 - return true; } /** diff --git a/src/main/java/com/extendedae_plus/compat/UpgradeSlotCompat.java b/src/main/java/com/extendedae_plus/compat/UpgradeSlotCompat.java index 5b549ce..17f2bbd 100644 --- a/src/main/java/com/extendedae_plus/compat/UpgradeSlotCompat.java +++ b/src/main/java/com/extendedae_plus/compat/UpgradeSlotCompat.java @@ -1,6 +1,5 @@ package com.extendedae_plus.compat; -import net.neoforged.fml.loading.FMLLoader; import net.neoforged.fml.ModList; public final class UpgradeSlotCompat { @@ -35,8 +34,6 @@ public final class UpgradeSlotCompat { Class.forName("com.glodblock.github.appflux.mixins.MixinPatternProviderScreen"); APPFLUX_PATTERN_PROVIDER_MIXIN_ACTIVE = true; } - } catch (ClassNotFoundException e) { - APPFLUX_PATTERN_PROVIDER_MIXIN_ACTIVE = false; } catch (Throwable t) { APPFLUX_PATTERN_PROVIDER_MIXIN_ACTIVE = false; } diff --git a/src/main/java/com/extendedae_plus/config/ModConfig.java b/src/main/java/com/extendedae_plus/config/EAEPConfig.java similarity index 91% rename from src/main/java/com/extendedae_plus/config/ModConfig.java rename to src/main/java/com/extendedae_plus/config/EAEPConfig.java index d01d3c1..272f690 100644 --- a/src/main/java/com/extendedae_plus/config/ModConfig.java +++ b/src/main/java/com/extendedae_plus/config/EAEPConfig.java @@ -1,23 +1,25 @@ package com.extendedae_plus.config; -import com.extendedae_plus.util.GetKey; import net.neoforged.neoforge.common.ModConfigSpec; -public final class ModConfig { +import java.util.List; + +public final class EAEPConfig { // Common 配置 public static final ModConfigSpec COMMON_SPEC; public static final ModConfigSpec.IntValue PAGE_MULTIPLIER; public static final ModConfigSpec.BooleanValue OVERRIDE_AE2WT_PICKING; + public static final ModConfigSpec.BooleanValue INDEPENDENT_UPLOADING_BUTTON; // Client 配置 public static final ModConfigSpec CLIENT_SPEC; public static final ModConfigSpec.BooleanValue SHOW_ENCODER_PATTERN_PLAYER; public static final ModConfigSpec.BooleanValue PATTERN_TERMINAL_SHOW_SLOTS_DEFAULT; public static final ModConfigSpec.BooleanValue PRIORITIZE_DISK_ENERGY; - public static final ModConfigSpec.BooleanValue INDEPENDENT_UPLOADING_BUTTON; // Server 配置 public static final ModConfigSpec SERVER_SPEC; + public static final ModConfigSpec.BooleanValue NEEDS_UPLOADING_CORE; public static final ModConfigSpec.BooleanValue PROVIDER_ROUND_ROBIN_ENABLE; public static final ModConfigSpec.IntValue SMART_SCALING_MAX_MULTIPLIER; public static final ModConfigSpec.IntValue CRAFTING_PAUSE_THRESHOLD; @@ -30,7 +32,6 @@ public final class ModConfig { static { // Common 配置 ModConfigSpec.Builder commonBuilder = new ModConfigSpec.Builder(); - commonBuilder.push("common"); PAGE_MULTIPLIER = commonBuilder .comment( "扩展样板供应器总槽位容量的倍率", @@ -39,18 +40,16 @@ public final class ModConfig { ) .defineInRange("pageMultiplier", 1, 1, 64); OVERRIDE_AE2WT_PICKING = commonBuilder - .translation(new GetKey(GetKey.CONFIG) - .addStr("override_ae2wt_picking").buildRaw()) .comment("是否覆盖AE2WT使用中键从终端选取方块的逻辑", - "开启后选取方块的数量将不被限制在32个", - "(不建议使用,在EMI环境下可能出现奇怪bug)") + "开启后选取方块的数量将不被限制在32个") .define("overrideAE2WTPicking", false); - commonBuilder.pop(); + INDEPENDENT_UPLOADING_BUTTON = commonBuilder + .comment("启用后,在样板编码终端会出现一个独立的按钮用于上传样板") + .define("independentUploadingButton", false); COMMON_SPEC = commonBuilder.build(); // Client 配置 ModConfigSpec.Builder clientBuilder = new ModConfigSpec.Builder(); - clientBuilder.push("client"); SHOW_ENCODER_PATTERN_PLAYER = clientBuilder .comment( "是否显示样板编码玩家", @@ -61,12 +60,6 @@ public final class ModConfig { "样板终端默认是否显示槽位", "影响进入界面时SlotsRow的默认可见性,仅影响客户端显示") .define("patternTerminalShowSlotsDefault", true); - INDEPENDENT_UPLOADING_BUTTON = builder - .translation(new GetKey(GetKey.CONFIG) - .addStr("independence_uploading_button").buildRaw()) - .comment("启用后,在样板编码终端会出现一个独立的按钮用于上传样板") - .define("independentUploadingButton", false); - clientBuilder.pop(); CLIENT_SPEC = clientBuilder.build(); // Server 配置 @@ -142,8 +135,11 @@ public final class ModConfig { ) .define("prioritizeDiskEnergy", true); serverBuilder.pop(); + NEEDS_UPLOADING_CORE = serverBuilder + .comment("启用后, 样板只能被上传到装有上传核心的装配矩阵") + .define("needsUploadingCore", true); SERVER_SPEC = serverBuilder.build(); } - private ModConfig() {} + private EAEPConfig() {} } diff --git a/src/main/java/com/extendedae_plus/content/ScaledProcessingPattern.java b/src/main/java/com/extendedae_plus/content/ScaledProcessingPattern.java index 353199a..2fca44e 100644 --- a/src/main/java/com/extendedae_plus/content/ScaledProcessingPattern.java +++ b/src/main/java/com/extendedae_plus/content/ScaledProcessingPattern.java @@ -9,8 +9,6 @@ import appeng.crafting.pattern.AEProcessingPattern; import net.minecraft.world.level.Level; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Objects; @@ -37,10 +35,10 @@ public final class ScaledProcessingPattern implements IPatternDetails { ) { this.original = Objects.requireNonNull(original); this.definition = Objects.requireNonNull(definition); - this.sparseInputs = Collections.unmodifiableList(new ArrayList<>(Objects.requireNonNull(sparseInputs))); - this.sparseOutputs = Collections.unmodifiableList(new ArrayList<>(Objects.requireNonNull(sparseOutputs))); + this.sparseInputs = List.copyOf(Objects.requireNonNull(sparseInputs)); + this.sparseOutputs = List.copyOf(Objects.requireNonNull(sparseOutputs)); this.inputs = Objects.requireNonNull(inputs); - this.condensedOutputs = Collections.unmodifiableList(new ArrayList<>(Objects.requireNonNull(condensedOutputs))); + this.condensedOutputs = List.copyOf(Objects.requireNonNull(condensedOutputs)); } /* -------------------- API 实现 -------------------- */ @@ -74,7 +72,7 @@ public final class ScaledProcessingPattern implements IPatternDetails { @Override public GenericStack getPrimaryOutput() { - if (!condensedOutputs.isEmpty()) return condensedOutputs.get(0); + if (!condensedOutputs.isEmpty()) return condensedOutputs.getFirst(); return original.getPrimaryOutput(); } diff --git a/src/main/java/com/extendedae_plus/content/matrix/UploadCoreBlockEntity.java b/src/main/java/com/extendedae_plus/content/matrix/UploadCoreBlockEntity.java index 8ca5ffb..aff716f 100644 --- a/src/main/java/com/extendedae_plus/content/matrix/UploadCoreBlockEntity.java +++ b/src/main/java/com/extendedae_plus/content/matrix/UploadCoreBlockEntity.java @@ -3,7 +3,6 @@ package com.extendedae_plus.content.matrix; import com.glodblock.github.extendedae.common.me.matrix.ClusterAssemblerMatrix; import com.glodblock.github.extendedae.common.tileentities.matrix.TileAssemblerMatrixFunction; import net.minecraft.core.BlockPos; -import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; /** @@ -13,7 +12,7 @@ import net.minecraft.world.level.block.state.BlockState; public class UploadCoreBlockEntity extends TileAssemblerMatrixFunction { public UploadCoreBlockEntity(BlockPos pos, BlockState state) { - super((BlockEntityType) com.extendedae_plus.init.ModBlockEntities.UPLOAD_CORE_BE.get(), pos, state); + super(com.extendedae_plus.init.ModBlockEntities.UPLOAD_CORE_BE.get(), pos, state); } @Override 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 92d20ca..15a3503 100644 --- a/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlock.java +++ b/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlock.java @@ -83,7 +83,6 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock { player.displayClientMessage(Component.literal("频道:" + te.getFrequency()), true); } } - return ItemInteractionResult.sidedSuccess(level.isClientSide); } else { if (te.isLocked()) { if (!level.isClientSide) { @@ -95,8 +94,8 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock { if (!level.isClientSide) { player.displayClientMessage(Component.literal(te.isMasterMode() ? "模式:主端" : "模式:从端"), true); } - return ItemInteractionResult.sidedSuccess(level.isClientSide); } + return ItemInteractionResult.sidedSuccess(level.isClientSide); } @Override @@ -120,7 +119,6 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock { player.displayClientMessage(Component.literal("频道:" + te.getFrequency()), true); } } - return InteractionResult.sidedSuccess(level.isClientSide); } else { if (te.isLocked()) { if (!level.isClientSide) { @@ -132,8 +130,8 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock { if (!level.isClientSide) { player.displayClientMessage(Component.literal(te.isMasterMode() ? "模式:主端" : "模式:从端"), true); } - return InteractionResult.sidedSuccess(level.isClientSide); } + return InteractionResult.sidedSuccess(level.isClientSide); } @Override 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 b4dd71d..f55332e 100644 --- a/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlockEntity.java +++ b/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlockEntity.java @@ -29,14 +29,14 @@ import java.util.Objects; */ public class WirelessTransceiverBlockEntity extends AEBaseBlockEntity implements IWirelessEndpoint, IInWorldGridNodeHost { - private IManagedGridNode managedNode; + private final IManagedGridNode managedNode; private long frequency = 1L; private boolean masterMode = false; private boolean locked = false; - private WirelessMasterLink masterLink; - private WirelessSlaveLink slaveLink; + private final WirelessMasterLink masterLink; + private final WirelessSlaveLink slaveLink; public WirelessTransceiverBlockEntity(BlockPos pos, BlockState state) { super(ModBlockEntities.WIRELESS_TRANSCEIVER_BE.get(), pos, state); diff --git a/src/main/java/com/extendedae_plus/init/ModBlockEntities.java b/src/main/java/com/extendedae_plus/init/ModBlockEntities.java index 8342b11..f3123c3 100644 --- a/src/main/java/com/extendedae_plus/init/ModBlockEntities.java +++ b/src/main/java/com/extendedae_plus/init/ModBlockEntities.java @@ -4,7 +4,8 @@ import appeng.blockentity.crafting.CraftingBlockEntity; import com.extendedae_plus.ExtendedAEPlus; import com.extendedae_plus.content.controller.NetworkPatternControllerBlockEntity; import com.extendedae_plus.content.matrix.UploadCoreBlockEntity; -import appeng.blockentity.crafting.CraftingBlockEntity; +import com.extendedae_plus.content.wireless.WirelessTransceiverBlockEntity; +import net.minecraft.core.registries.Registries; import net.minecraft.world.level.block.entity.BlockEntityType; import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; diff --git a/src/main/java/com/extendedae_plus/init/ModBlocks.java b/src/main/java/com/extendedae_plus/init/ModBlocks.java index d9f5748..1bc289a 100644 --- a/src/main/java/com/extendedae_plus/init/ModBlocks.java +++ b/src/main/java/com/extendedae_plus/init/ModBlocks.java @@ -4,9 +4,7 @@ import appeng.block.crafting.CraftingUnitBlock; import com.extendedae_plus.ExtendedAEPlus; import com.extendedae_plus.content.crafting.EPlusCraftingUnitType; import com.extendedae_plus.content.matrix.UploadCoreBlock; -import appeng.block.crafting.CraftingUnitBlock; -import appeng.blockentity.crafting.CraftingBlockEntity; -import appeng.core.definitions.AEBlockEntities; +import com.extendedae_plus.content.wireless.WirelessTransceiverBlock; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.material.MapColor; @@ -42,37 +40,27 @@ public final class ModBlocks { // Crafting Accelerators (reuse MAE2 textures/models) public static final DeferredBlock ACCELERATOR_4x = BLOCKS.register( "4x_crafting_accelerator", - () -> { - return new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_4x); - } + () -> new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_4x) ); public static final DeferredBlock ACCELERATOR_16x = BLOCKS.register( "16x_crafting_accelerator", - () -> { - return new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_16x); - } + () -> new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_16x) ); public static final DeferredBlock ACCELERATOR_64x = BLOCKS.register( "64x_crafting_accelerator", - () -> { - return new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_64x); - } + () -> new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_64x) ); public static final DeferredBlock ACCELERATOR_256x = BLOCKS.register( "256x_crafting_accelerator", - () -> { - return new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_256x); - } + () -> new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_256x) ); public static final DeferredBlock ACCELERATOR_1024x = BLOCKS.register( "1024x_crafting_accelerator", - () -> { - return new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_1024x); - } + () -> new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_1024x) ); // 装配矩阵上传核心方块 diff --git a/src/main/java/com/extendedae_plus/integration/RecipeViewer/jei/JeiRuntimeProxy.java b/src/main/java/com/extendedae_plus/integration/RecipeViewer/jei/JeiRuntimeProxy.java index 38505ce..aefcbb3 100644 --- a/src/main/java/com/extendedae_plus/integration/RecipeViewer/jei/JeiRuntimeProxy.java +++ b/src/main/java/com/extendedae_plus/integration/RecipeViewer/jei/JeiRuntimeProxy.java @@ -184,13 +184,11 @@ public final class JeiRuntimeProxy { if (createMethod != null) { Object bookmark = createMethod.invoke(null, typed, ingredientManager); if (bookmark != null) { - list.add((IngredientBookmark) bookmark); + list.add((IngredientBookmark) bookmark); } } } - } catch (Throwable e) { - e.printStackTrace(); - } + } catch (Throwable ignored) {} } } } \ No newline at end of file diff --git a/src/main/java/com/extendedae_plus/integration/RecipeViewer/jei/ModJeiPlugin.java b/src/main/java/com/extendedae_plus/integration/RecipeViewer/jei/ModJeiPlugin.java index a66dbc3..4d6285f 100644 --- a/src/main/java/com/extendedae_plus/integration/RecipeViewer/jei/ModJeiPlugin.java +++ b/src/main/java/com/extendedae_plus/integration/RecipeViewer/jei/ModJeiPlugin.java @@ -35,7 +35,7 @@ public class ModJeiPlugin implements IModPlugin { registration.registerSubtypeInterpreter( VanillaTypes.ITEM_STACK, com.extendedae_plus.init.ModItems.ENTITY_SPEED_CARD.get(), - new ISubtypeInterpreter() { + new ISubtypeInterpreter<>() { @Override public @NotNull Object getSubtypeData(@NotNull ItemStack ingredient, @NotNull UidContext context) { // 返回你想让 JEI 区分子类型的数据,这里用 multiplier 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 cbc28c2..41cbda9 100644 --- a/src/main/java/com/extendedae_plus/menu/host/CuriosWirelessTerminalMenuHost.java +++ b/src/main/java/com/extendedae_plus/menu/host/CuriosWirelessTerminalMenuHost.java @@ -3,7 +3,6 @@ package com.extendedae_plus.menu.host; import appeng.helpers.WirelessTerminalMenuHost; import appeng.items.tools.powered.WirelessTerminalItem; import appeng.menu.ISubMenu; -import appeng.menu.locator.ItemMenuHostLocator; import com.extendedae_plus.menu.locator.CuriosItemLocator; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -25,7 +24,7 @@ public class CuriosWirelessTerminalMenuHost extends WirelessTerminalMenuHost returnToMainMenu) { super((WirelessTerminalItem) itemStack.getItem(), player, - (ItemMenuHostLocator) new CuriosItemLocator(curiosSlotId, curiosIndex), + new CuriosItemLocator(curiosSlotId, curiosIndex), returnToMainMenu); this.curiosHandler = curiosHandler; this.curiosIndex = curiosIndex; 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 ce002cd..4a77a5a 100644 --- a/src/main/java/com/extendedae_plus/menu/locator/CuriosItemLocator.java +++ b/src/main/java/com/extendedae_plus/menu/locator/CuriosItemLocator.java @@ -32,13 +32,13 @@ public record CuriosItemLocator(String slotId, int index) implements ItemMenuHos // 0) AE2 原生:若是 WirelessTerminalItem,先尝试其原生 Host(与背包一致) if (it0.getItem() instanceof appeng.items.tools.powered.WirelessTerminalItem wtAe2) { var aeHost = wtAe2.getMenuHost(player, this, null); - if (aeHost != null && hostInterface.isInstance(aeHost)) { - try { return hostInterface.cast(aeHost); } catch (Throwable t) { } + if (hostInterface.isInstance(aeHost)) { + try { return hostInterface.cast(aeHost); } catch (Throwable ignored) { } } if ("appeng.api.storage.ISubMenuHost".equals(hostInterface.getName())) { var subHost2 = new com.extendedae_plus.menu.host.CuriosWTSubMenuHost2(wtAe2, player, this, (p, sub) -> MenuOpener.open(MEStorageMenu.WIRELESS_TYPE, p, this)); - try { return hostInterface.cast(subHost2); } catch (Throwable t) { } + try { return hostInterface.cast(subHost2); } catch (Throwable ignored) { } } } @@ -46,19 +46,19 @@ public record CuriosItemLocator(String slotId, int index) implements ItemMenuHos if (def0 != null) { WTMenuHost wtHost = def0.wTMenuHostFactory().create(def0.item(), player, this, (p, sub) -> MenuOpener.open(MEStorageMenu.WIRELESS_TYPE, p, this)); - if (wtHost != null && hostInterface.isInstance(wtHost)) { - try { return hostInterface.cast(wtHost); } catch (Throwable t) { } + if (hostInterface.isInstance(wtHost)) { + try { return hostInterface.cast(wtHost); } catch (Throwable ignored) { } } if ("appeng.api.storage.ISubMenuHost".equals(hostInterface.getName())) { var subHost = new com.extendedae_plus.menu.host.CuriosWTSubMenuHost(def0.item(), player, this, (p, sub) -> MenuOpener.open(MEStorageMenu.WIRELESS_TYPE, p, this)); - try { return hostInterface.cast(subHost); } catch (Throwable t) { } + try { return hostInterface.cast(subHost); } catch (Throwable ignored) { } } } else if (it0.getItem() instanceof de.mari_023.ae2wtlib.api.terminal.ItemWT wtItem0) { if ("appeng.api.storage.ISubMenuHost".equals(hostInterface.getName())) { var subHost = new com.extendedae_plus.menu.host.CuriosWTSubMenuHost(wtItem0, player, this, (p, sub) -> MenuOpener.open(MEStorageMenu.WIRELESS_TYPE, p, this)); - try { return hostInterface.cast(subHost); } catch (Throwable t) { } + try { return hostInterface.cast(subHost); } catch (Throwable ignored) { } } } else { // 额外兜底:尝试使用 WTDefinition.of(it0)(可能在 ofOrNull 为 null 时仍可获取) @@ -67,9 +67,9 @@ public record CuriosItemLocator(String slotId, int index) implements ItemMenuHos if (defStrict != null && "appeng.api.storage.ISubMenuHost".equals(hostInterface.getName())) { var subHost = new com.extendedae_plus.menu.host.CuriosWTSubMenuHost(defStrict.item(), player, this, (p, sub) -> MenuOpener.open(MEStorageMenu.WIRELESS_TYPE, p, this)); - try { return hostInterface.cast(subHost); } catch (Throwable t) { } + try { return hostInterface.cast(subHost); } catch (Throwable ignored) { } } - } catch (Throwable t) { + } catch (Throwable ignored) { } } @@ -86,13 +86,13 @@ public record CuriosItemLocator(String slotId, int index) implements ItemMenuHos // 0) AE2 原生:若是 WirelessTerminalItem,先尝试其原生 Host(与背包一致) if (it.getItem() instanceof appeng.items.tools.powered.WirelessTerminalItem wtAe2) { var aeHost = wtAe2.getMenuHost(player, this, null); - if (aeHost != null && hostInterface.isInstance(aeHost)) { - try { return hostInterface.cast(aeHost); } catch (Throwable t) { } + if (hostInterface.isInstance(aeHost)) { + try { return hostInterface.cast(aeHost); } catch (Throwable ignored) { } } if ("appeng.api.storage.ISubMenuHost".equals(hostInterface.getName())) { var subHost2 = new com.extendedae_plus.menu.host.CuriosWTSubMenuHost2(wtAe2, player, this, (p, sub) -> MenuOpener.open(MEStorageMenu.WIRELESS_TYPE, p, this)); - try { return hostInterface.cast(subHost2); } catch (Throwable t) { } + try { return hostInterface.cast(subHost2); } catch (Throwable ignored) { } } } @@ -101,14 +101,14 @@ public record CuriosItemLocator(String slotId, int index) implements ItemMenuHos WTMenuHost wtHost = def.wTMenuHostFactory().create( def.item(), player, this, (p, sub) -> MenuOpener.open(MEStorageMenu.WIRELESS_TYPE, p, this)); - if (wtHost != null && hostInterface.isInstance(wtHost)) { - try { return hostInterface.cast(wtHost); } catch (Throwable t) { } + if (hostInterface.isInstance(wtHost)) { + try { return hostInterface.cast(wtHost); } catch (Throwable ignored) { } } // 桥接 ISubMenuHost if ("appeng.api.storage.ISubMenuHost".equals(hostInterface.getName())) { var subHost = new com.extendedae_plus.menu.host.CuriosWTSubMenuHost(def.item(), player, this, (p, sub) -> MenuOpener.open(MEStorageMenu.WIRELESS_TYPE, p, this)); - try { return hostInterface.cast(subHost); } catch (Throwable t) { } + try { return hostInterface.cast(subHost); } catch (Throwable ignored) { } } } else { // 2) def==null,但物品是 wtlib 的 ItemWT:直接桥接 ISubMenuHost @@ -116,7 +116,7 @@ public record CuriosItemLocator(String slotId, int index) implements ItemMenuHos if ("appeng.api.storage.ISubMenuHost".equals(hostInterface.getName())) { var subHost = new com.extendedae_plus.menu.host.CuriosWTSubMenuHost(wtItem, player, this, (p, sub) -> MenuOpener.open(MEStorageMenu.WIRELESS_TYPE, p, this)); - try { return hostInterface.cast(subHost); } catch (Throwable t) { } + try { return hostInterface.cast(subHost); } catch (Throwable ignored) { } } } else { // 再次兜底:尝试 WTDefinition.of(it) 强制获取 @@ -125,9 +125,9 @@ public record CuriosItemLocator(String slotId, int index) implements ItemMenuHos if (defStrict2 != null && "appeng.api.storage.ISubMenuHost".equals(hostInterface.getName())) { var subHost = new com.extendedae_plus.menu.host.CuriosWTSubMenuHost(defStrict2.item(), player, this, (p, sub) -> MenuOpener.open(MEStorageMenu.WIRELESS_TYPE, p, this)); - try { return hostInterface.cast(subHost); } catch (Throwable t) { } + try { return hostInterface.cast(subHost); } catch (Throwable ignored) { } } - } catch (Throwable t) { + } catch (Throwable ignored) { } } @@ -136,15 +136,15 @@ public record CuriosItemLocator(String slotId, int index) implements ItemMenuHos // 3) 回退:AE2 原生无线终端(IMenuItem) if (it.getItem() instanceof WirelessTerminalItem) { if (it.getItem() instanceof IMenuItem guiItem) { - ItemMenuHost menuHost = guiItem.getMenuHost(player, this, null); - if (menuHost != null && hostInterface.isInstance(menuHost)) { - try { return hostInterface.cast(menuHost); } catch (Throwable t) { } + ItemMenuHost menuHost = guiItem.getMenuHost(player, this, null); + if (hostInterface.isInstance(menuHost)) { + try { return hostInterface.cast(menuHost); } catch (Throwable ignored) { } } } } else if (it.getItem() instanceof IMenuItem guiItem) { - ItemMenuHost menuHost = guiItem.getMenuHost(player, this, null); - if (menuHost != null && hostInterface.isInstance(menuHost)) { - try { return hostInterface.cast(menuHost); } catch (Throwable t) { } + ItemMenuHost menuHost = guiItem.getMenuHost(player, this, null); + if (hostInterface.isInstance(menuHost)) { + try { return hostInterface.cast(menuHost); } catch (Throwable ignored) { } } } @@ -164,8 +164,7 @@ public record CuriosItemLocator(String slotId, int index) implements ItemMenuHos ICuriosItemHandler handler = opt.get(); ICurioStacksHandler stacksHandler = handler.getCurios().get(slotId); if (stacksHandler != null) { - ItemStack s = stacksHandler.getStacks().getStackInSlot(index); - return s; + return stacksHandler.getStacks().getStackInSlot(index); } } } catch (Throwable ignored) { diff --git a/src/main/java/com/extendedae_plus/mixin/ExtendedAEPlusMixinPlugin.java b/src/main/java/com/extendedae_plus/mixin/ExtendedAEPlusMixinPlugin.java index aefb88e..8c284f4 100644 --- a/src/main/java/com/extendedae_plus/mixin/ExtendedAEPlusMixinPlugin.java +++ b/src/main/java/com/extendedae_plus/mixin/ExtendedAEPlusMixinPlugin.java @@ -29,7 +29,7 @@ public class ExtendedAEPlusMixinPlugin implements IMixinConfigPlugin { if (!isJeiPresent()) { // Disable all JEI package mixins and any mixins that reference JEI-only helpers if (mixinClassName.startsWith("com.extendedae_plus.mixin.jei")) return false; - if (mixinClassName.equals("com.extendedae_plus.mixin.ae2.menu.CraftConfirmMenuGoBackMixin")) return false; + return !mixinClassName.equals("com.extendedae_plus.mixin.ae2.menu.CraftConfirmMenuGoBackMixin"); } return true; } diff --git a/src/main/java/com/extendedae_plus/mixin/PickFromWirelessMixin.java b/src/main/java/com/extendedae_plus/mixin/PickFromWirelessMixin.java index 511ccbb..1e939d8 100644 --- a/src/main/java/com/extendedae_plus/mixin/PickFromWirelessMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/PickFromWirelessMixin.java @@ -1,6 +1,6 @@ package com.extendedae_plus.mixin; -import com.extendedae_plus.config.ModConfig; +import com.extendedae_plus.config.EAEPConfig; import com.extendedae_plus.network.PickFromWirelessC2SPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; @@ -27,7 +27,7 @@ public class PickFromWirelessMixin { @Inject(method = "pickBlock", at = @At("HEAD"), cancellable = true) private void onPickBlock(CallbackInfo ci) { - if (ModConfig.OVERRIDE_AE2WT_PICKING.getAsBoolean() && eaep$overridePicking()) + if (EAEPConfig.OVERRIDE_AE2WT_PICKING.getAsBoolean() && eaep$overridePicking()) ci.cancel(); } diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/CraftingCalculationMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/CraftingCalculationMixin.java index 255abd3..70a587d 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/CraftingCalculationMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/CraftingCalculationMixin.java @@ -1,7 +1,7 @@ package com.extendedae_plus.mixin.ae2; import appeng.crafting.CraftingCalculation; -import com.extendedae_plus.config.ModConfigs; +import com.extendedae_plus.config.EAEPConfig; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.Constant; import org.spongepowered.asm.mixin.injection.ModifyConstant; @@ -16,6 +16,6 @@ public abstract class CraftingCalculationMixin { // 增大此值可以减少 wait/notify 的频率(提升吞吐量但降低响应速度)。 @ModifyConstant(method = "handlePausing", constant = @Constant(intValue = 100)) private int modifyIncTimeThreshold(int original) { - return ModConfigs.CRAFTING_PAUSE_THRESHOLD.get(); + return EAEPConfig.CRAFTING_PAUSE_THRESHOLD.get(); } } \ No newline at end of file diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/EncodedPatternItemMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/EncodedPatternItemMixin.java index 3eef013..76e45c1 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/EncodedPatternItemMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/EncodedPatternItemMixin.java @@ -1,7 +1,7 @@ package com.extendedae_plus.mixin.ae2; import appeng.crafting.pattern.EncodedPatternItem; -import com.extendedae_plus.config.ModConfig; +import com.extendedae_plus.config.EAEPConfig; import net.minecraft.ChatFormatting; import net.minecraft.core.component.DataComponents; import net.minecraft.network.chat.Component; @@ -21,7 +21,7 @@ public class EncodedPatternItemMixin { // 客户端:在 HoverText 显示样板的编码玩家 @Inject(method = "appendHoverText", at = @At("TAIL")) public void epp$appendHoverText(ItemStack stack, Item.TooltipContext context, List lines, TooltipFlag advancedTooltips, CallbackInfo ci){ - if (ModConfigs.SHOW_ENCODER_PATTERN_PLAYER.get()) { + if (EAEPConfig.SHOW_ENCODER_PATTERN_PLAYER.get()) { var customData = stack.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY); var tag = customData.copyTag(); if (tag.contains("encodePlayer")) { diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingTreeProcessMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingTreeProcessMixin.java index c9a9630..67168b1 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingTreeProcessMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingTreeProcessMixin.java @@ -10,7 +10,7 @@ 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.ModConfig; +import com.extendedae_plus.config.EAEPConfig; import com.extendedae_plus.content.ScaledProcessingPattern; import com.extendedae_plus.util.PatternScaler; import com.extendedae_plus.util.RequestedAmountHolder; @@ -59,7 +59,7 @@ public abstract class CraftingTreeProcessMixin { // 根据配置决定是否在 provider 间轮询分配请求量(默认开启) long perProvider = 1L; - if (!ModConfig.PROVIDER_ROUND_ROBIN_ENABLE.get()) { + if (!EAEPConfig.PROVIDER_ROUND_ROBIN_ENABLE.get()) { // 关闭轮询:直接使用完整请求量,不需要查询 provider 列表 perProvider = requested; if (perProvider <= 0) perProvider = 1L; diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/AEBaseScreenMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/AEBaseScreenMixin.java index 5373fd3..ccce5c3 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/AEBaseScreenMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/AEBaseScreenMixin.java @@ -19,7 +19,6 @@ import com.extendedae_plus.network.CraftingMonitorJumpC2SPacket; import com.extendedae_plus.network.CraftingMonitorOpenProviderC2SPacket; import com.extendedae_plus.util.GuiUtil; import com.glodblock.github.extendedae.client.gui.GuiExPatternProvider; -import com.mojang.logging.LogUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.GuiGraphics; diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/InterfaceScreenMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/InterfaceScreenMixin.java index e7a4a46..f0fdd84 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/InterfaceScreenMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/InterfaceScreenMixin.java @@ -9,7 +9,6 @@ import com.extendedae_plus.mixin.accessor.AbstractContainerScreenAccessor; import com.extendedae_plus.mixin.accessor.ScreenAccessor; import com.extendedae_plus.network.InterfaceAdjustConfigAmountC2SPacket; import com.glodblock.github.extendedae.client.button.ActionEPPButton; -import com.mojang.logging.LogUtils; import net.minecraft.client.Minecraft; import net.minecraft.world.inventory.Slot; import org.spongepowered.asm.mixin.Mixin; @@ -76,7 +75,7 @@ public abstract class InterfaceScreenMixin { } // 注册到渲染与交互列表 - var accessor = (ScreenAccessor) (Object) this; + var accessor = (ScreenAccessor) this; if (!accessor.eap$getRenderables().contains(eap$divideBy2Button)) accessor.eap$getRenderables().add(eap$divideBy2Button); if (!accessor.eap$getChildren().contains(eap$divideBy2Button)) accessor.eap$getChildren().add(eap$divideBy2Button); if (!accessor.eap$getRenderables().contains(eap$x2Button)) accessor.eap$getRenderables().add(eap$x2Button); @@ -98,7 +97,7 @@ public abstract class InterfaceScreenMixin { if (!eap$isSupportedInterfaceScreen()) { return; } - var accessor = (ScreenAccessor) (Object) this; + var accessor = (ScreenAccessor) this; if (eap$divideBy2Button != null && !accessor.eap$getRenderables().contains(eap$divideBy2Button)) { accessor.eap$getRenderables().add(eap$divideBy2Button); accessor.eap$getChildren().add(eap$divideBy2Button); @@ -124,10 +123,10 @@ public abstract class InterfaceScreenMixin { accessor.eap$getChildren().add(eap$x10Button); } - int curLeft = ((AbstractContainerScreenAccessor) (Object) this).eap$getLeftPos(); - int curTop = ((AbstractContainerScreenAccessor) (Object) this).eap$getTopPos(); - int curImgW = ((AbstractContainerScreenAccessor) (Object) this).eap$getImageWidth(); - int curImgH = ((AbstractContainerScreenAccessor) (Object) this).eap$getImageHeight(); + int curLeft = ((AbstractContainerScreenAccessor) this).eap$getLeftPos(); + int curTop = ((AbstractContainerScreenAccessor) this).eap$getTopPos(); + int curImgW = ((AbstractContainerScreenAccessor) this).eap$getImageWidth(); + int curImgH = ((AbstractContainerScreenAccessor) this).eap$getImageHeight(); if (curLeft != eap$lastLeftPos || curTop != eap$lastTopPos || curImgW != eap$lastImageWidth || curImgH != eap$lastImageHeight) { eap$lastLeftPos = curLeft; eap$lastTopPos = curTop; @@ -144,7 +143,7 @@ public abstract class InterfaceScreenMixin { if (!eap$isSupportedInterfaceScreen()) { return; } - Slot hovered = ((AbstractContainerScreenAccessor) (Object) this).eap$getHoveredSlot(); + Slot hovered = ((AbstractContainerScreenAccessor) this).eap$getHoveredSlot(); var screen = (AEBaseScreen) (Object) this; var menu = screen.getMenu(); if (!(menu instanceof appeng.menu.implementations.InterfaceMenu interfaceMenu)) { @@ -217,9 +216,9 @@ public abstract class InterfaceScreenMixin { @Unique private void eap$relayoutButtons() { try { - int leftPos = ((AbstractContainerScreenAccessor) (Object) this).eap$getLeftPos(); - int topPos = ((AbstractContainerScreenAccessor) (Object) this).eap$getTopPos(); - int imageWidth = ((AbstractContainerScreenAccessor) (Object) this).eap$getImageWidth(); + int leftPos = ((AbstractContainerScreenAccessor) this).eap$getLeftPos(); + int topPos = ((AbstractContainerScreenAccessor) this).eap$getTopPos(); + int imageWidth = ((AbstractContainerScreenAccessor) this).eap$getImageWidth(); int bx = leftPos + imageWidth + 1; int by = topPos + 70; int spacing = 22; @@ -238,7 +237,7 @@ public abstract class InterfaceScreenMixin { if (!(((Object) this) instanceof InterfaceScreen)) { return; } - Slot hovered = ((AbstractContainerScreenAccessor) (Object) this).eap$getHoveredSlot(); + Slot hovered = ((AbstractContainerScreenAccessor) this).eap$getHoveredSlot(); if (hovered == null) { return; } diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/MixinActionButton.java b/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/MixinActionButton.java index 7210a06..89766ce 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/MixinActionButton.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/MixinActionButton.java @@ -2,8 +2,7 @@ package com.extendedae_plus.mixin.ae2.client.gui; import appeng.client.gui.widgets.ActionButton; import appeng.core.localization.ButtonToolTips; -import com.extendedae_plus.config.ModConfig; -import com.extendedae_plus.util.GetKey; +import com.extendedae_plus.config.EAEPConfig; import net.minecraft.network.chat.Component; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -12,16 +11,12 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(ActionButton.class) public class MixinActionButton { -// @ModifyVariable(method = "buildMessage", at = @At("STORE")) -// private static String eaep$modifyEncodeButtonTooltips(String value) { -// if () -// } @Inject(method = "buildMessage", at = @At("TAIL"), cancellable = true) private void eaep$modifyButtonTooltips(ButtonToolTips displayName, ButtonToolTips displayValue, CallbackInfoReturnable cir) { - if (displayValue == ButtonToolTips.EncodeDescription && !ModConfig.INDEPENDENT_UPLOADING_BUTTON.getAsBoolean()) + if (displayValue == ButtonToolTips.EncodeDescription && !EAEPConfig.INDEPENDENT_UPLOADING_BUTTON.getAsBoolean()) cir.setReturnValue(cir.getReturnValue().copy().append( - new GetKey(GetKey.TOOLTIP).addStr("encode_button_description").build())); + Component.translatable("tooltip.extendedae_plus.encode_button.upload_pattern"))); } } diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/PatternEncodingTermScreenMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/PatternEncodingTermScreenMixin.java index 1cbb65a..1ab23b6 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/PatternEncodingTermScreenMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/PatternEncodingTermScreenMixin.java @@ -6,7 +6,7 @@ import appeng.client.gui.me.items.PatternEncodingTermScreen; import appeng.client.gui.style.ScreenStyle; import appeng.client.gui.style.WidgetStyle; import appeng.client.gui.widgets.IconButton; -import com.extendedae_plus.config.ModConfig; +import com.extendedae_plus.config.EAEPConfig; import com.extendedae_plus.mixin.accessor.AbstractContainerScreenAccessor; import com.extendedae_plus.mixin.accessor.ScreenAccessor; import com.extendedae_plus.mixin.ae2.accessor.AEBaseScreenAccessor; @@ -37,7 +37,7 @@ public abstract class PatternEncodingTermScreenMixin { private void eap$addUploadButton(CallbackInfo ci) { // 仅在图样编码终端界面中添加按钮 if (!(((Object) this) instanceof PatternEncodingTermScreen)) return; - if (!ModConfig.INDEPENDENT_UPLOADING_BUTTON.getAsBoolean()) return; + if (!EAEPConfig.INDEPENDENT_UPLOADING_BUTTON.getAsBoolean()) return; // 复用已存在的按钮实例,避免重复创建 if (eap$uploadBtn == null) { eap$uploadBtn = new IconButton(btn -> PacketDistributor @@ -141,7 +141,7 @@ public abstract class PatternEncodingTermScreenMixin { @Inject(method = "containerTick", at = @At("TAIL"), remap = false) private void eap$ensureUploadButton(CallbackInfo ci) { if (!(((Object) this) instanceof PatternEncodingTermScreen && - ModConfig.INDEPENDENT_UPLOADING_BUTTON.getAsBoolean())) + EAEPConfig.INDEPENDENT_UPLOADING_BUTTON.getAsBoolean())) return; if (eap$uploadBtn == null) { return; diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/compat/PatternProviderLogicCompatMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/compat/PatternProviderLogicCompatMixin.java index 9368cd8..f17445c 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/compat/PatternProviderLogicCompatMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/compat/PatternProviderLogicCompatMixin.java @@ -1,7 +1,7 @@ package com.extendedae_plus.mixin.ae2.compat; -import appeng.api.networking.IManagedGridNode; import appeng.api.networking.IGridConnection; +import appeng.api.networking.IManagedGridNode; import appeng.api.networking.security.IActionSource; import appeng.api.upgrades.IUpgradeInventory; import appeng.api.upgrades.IUpgradeableObject; @@ -9,13 +9,13 @@ import appeng.api.upgrades.UpgradeInventories; import appeng.helpers.patternprovider.PatternProviderLogic; import appeng.helpers.patternprovider.PatternProviderLogicHost; import com.extendedae_plus.ae.items.ChannelCardItem; -import com.extendedae_plus.bridge.InterfaceWirelessLinkBridge; import com.extendedae_plus.bridge.CompatUpgradeProvider; +import com.extendedae_plus.bridge.InterfaceWirelessLinkBridge; import com.extendedae_plus.compat.UpgradeSlotCompat; import com.extendedae_plus.init.ModItems; +import com.extendedae_plus.util.ExtendedAELogger; import com.extendedae_plus.wireless.WirelessSlaveLink; import com.extendedae_plus.wireless.endpoint.GenericNodeEndpointImpl; -import com.extendedae_plus.util.ExtendedAELogger; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; import org.spongepowered.asm.mixin.Final; @@ -110,7 +110,7 @@ public abstract class PatternProviderLogicCompatMixin implements CompatUpgradePr // 这里我们先记录一下,实际的检查会在tick中进行 } } - } catch (Throwable t) { + } catch (Throwable ignored) { } } @@ -230,20 +230,20 @@ public abstract class PatternProviderLogicCompatMixin implements CompatUpgradePr } // 双重保险:如果主要方式失败,尝试备用方式 - if (upgrades == null || !eap$hasChannelCard(upgrades)) { + if (!eap$hasChannelCard(upgrades)) { if (UpgradeSlotCompat.shouldEnableUpgradeSlots()) { // 如果我们的槽无频道卡,尝试检查是否有AppliedFlux的槽 try { IUpgradeInventory backupUpgrades = eap$getAppliedFluxUpgrades(); - if (backupUpgrades != null && eap$hasChannelCard(backupUpgrades)) { + if (eap$hasChannelCard(backupUpgrades)) { upgrades = backupUpgrades; } - } catch (Throwable t) { + } catch (Throwable ignored) { } } else { // 如果AppliedFlux的槽无频道卡,尝试我们的兼容槽 - if (this.eap$compatUpgrades != null && eap$hasChannelCard(this.eap$compatUpgrades)) { + if (eap$hasChannelCard(this.eap$compatUpgrades)) { upgrades = this.eap$compatUpgrades; } } @@ -347,7 +347,7 @@ public abstract class PatternProviderLogicCompatMixin implements CompatUpgradePr // 安装了AppliedFlux时,定期检查升级槽变化 try { IUpgradeInventory afUpgrades = eap$getAppliedFluxUpgrades(); - if (afUpgrades != null && eap$hasChannelCard(afUpgrades)) { + if (eap$hasChannelCard(afUpgrades)) { // 检查频道是否发生变化 for (ItemStack stack : afUpgrades) { if (!stack.isEmpty() && stack.getItem() == ModItems.CHANNEL_CARD.get()) { @@ -366,7 +366,7 @@ public abstract class PatternProviderLogicCompatMixin implements CompatUpgradePr eap$compatHasInitialized = false; eap$compatInitializeChannelLink(); } - } catch (Throwable t) { + } catch (Throwable ignored) { } } } @@ -395,7 +395,7 @@ public abstract class PatternProviderLogicCompatMixin implements CompatUpgradePr } try { IUpgradeInventory afUpgrades = eap$getAppliedFluxUpgrades(); - if (afUpgrades != null && eap$hasChannelCard(afUpgrades)) { + if (eap$hasChannelCard(afUpgrades)) { // 槽中有频道卡,保持tick以尽快完成连接 return true; } @@ -404,7 +404,7 @@ public abstract class PatternProviderLogicCompatMixin implements CompatUpgradePr return false; } // 未安装 AppliedFlux:当存在频道卡但连接尚未建立时保持tick - if (this.eap$compatUpgrades != null && eap$hasChannelCard(this.eap$compatUpgrades)) { + if (eap$hasChannelCard(this.eap$compatUpgrades)) { if (eap$compatLink == null || !eap$compatLink.isConnected()) { return true; } diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/helpers/InterfaceLogicChannelCardMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/helpers/InterfaceLogicChannelCardMixin.java index 3eee600..8dd1c3d 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/helpers/InterfaceLogicChannelCardMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/helpers/InterfaceLogicChannelCardMixin.java @@ -8,8 +8,6 @@ import com.extendedae_plus.bridge.InterfaceWirelessLinkBridge; import com.extendedae_plus.init.ModItems; import com.extendedae_plus.wireless.WirelessSlaveLink; import com.extendedae_plus.wireless.endpoint.InterfaceNodeEndpointImpl; -import com.extendedae_plus.util.ExtendedAELogger; -import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.ItemStack; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/helpers/PatternProviderLogicUpgradesMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/helpers/PatternProviderLogicUpgradesMixin.java index cdff2af..a18a73f 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/helpers/PatternProviderLogicUpgradesMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/helpers/PatternProviderLogicUpgradesMixin.java @@ -2,7 +2,6 @@ package com.extendedae_plus.mixin.ae2.helpers; import appeng.api.networking.IManagedGridNode; import appeng.api.upgrades.IUpgradeInventory; -import appeng.api.upgrades.IUpgradeableObject; import appeng.api.upgrades.UpgradeInventories; import appeng.helpers.patternprovider.PatternProviderLogic; import appeng.helpers.patternprovider.PatternProviderLogicHost; @@ -19,8 +18,8 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import java.lang.reflect.Method; import java.lang.reflect.Field; +import java.lang.reflect.Method; import java.util.List; /** @@ -75,7 +74,7 @@ public abstract class PatternProviderLogicUpgradesMixin { Field f = this.getClass().getDeclaredField("af_upgrades"); f.setAccessible(true); existingUpgrades = (IUpgradeInventory) f.get(this); - } catch (Throwable t) { + } catch (Throwable ignored) { } if (existingUpgrades != null && existingUpgrades != UpgradeInventories.empty()) { @@ -108,15 +107,14 @@ public abstract class PatternProviderLogicUpgradesMixin { Field f = this.getClass().getDeclaredField("af_upgrades"); f.setAccessible(true); f.set(this, this.eap$upgrades); - } catch (Throwable t) { + } catch (Throwable ignored) { } - - this.eap$upgradesInitialized = true; + } else { // AppliedFlux 或其他模组已经提供了足够的槽位 this.eap$upgrades = existingUpgrades; - this.eap$upgradesInitialized = true; } + this.eap$upgradesInitialized = true; } else { // AppliedFlux 还没初始化升级槽,或者出了问题,我们创建默认的 this.eap$upgrades = UpgradeInventories.forMachine( @@ -129,7 +127,7 @@ public abstract class PatternProviderLogicUpgradesMixin { Field f = this.getClass().getDeclaredField("af_upgrades"); f.setAccessible(true); f.set(this, this.eap$upgrades); - } catch (Throwable t) { + } catch (Throwable ignored) { } this.eap$upgradesInitialized = true; } @@ -164,7 +162,7 @@ public abstract class PatternProviderLogicUpgradesMixin { afMethod.invoke(this); } catch (NoSuchMethodException e) { // AppliedFlux 的方法不存在,这是正常的 - } catch (Throwable t) { + } catch (Throwable ignored) { } } diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/menu/AEBaseMenuUpgradesDedupMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/menu/AEBaseMenuUpgradesDedupMixin.java index 93bc1c9..bfed658 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/menu/AEBaseMenuUpgradesDedupMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/menu/AEBaseMenuUpgradesDedupMixin.java @@ -1,10 +1,9 @@ package com.extendedae_plus.mixin.ae2.menu; +import appeng.api.upgrades.IUpgradeInventory; import appeng.menu.AEBaseMenu; import appeng.menu.SlotSemantics; import appeng.menu.implementations.PatternProviderMenu; -import appeng.api.upgrades.IUpgradeInventory; -import com.extendedae_plus.util.ExtendedAELogger; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/menu/ContainerPatternEncodingTermMenuMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/menu/ContainerPatternEncodingTermMenuMixin.java index de7b62e..3e9c0f9 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/menu/ContainerPatternEncodingTermMenuMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/menu/ContainerPatternEncodingTermMenuMixin.java @@ -53,9 +53,7 @@ public abstract class ContainerPatternEncodingTermMenuMixin implements IActionHo private void eap$writeEncodePlayerToPattern(CallbackInfoReturnable cir) { ItemStack itemStack = cir.getReturnValue(); if (itemStack != null && !itemStack.isEmpty()) { - CustomData.update(DataComponents.CUSTOM_DATA, itemStack, tag -> { - tag.putString("encodePlayer", this.epp$player.getGameProfile().getName()); - }); + CustomData.update(DataComponents.CUSTOM_DATA, itemStack, tag -> tag.putString("encodePlayer", this.epp$player.getGameProfile().getName())); cir.setReturnValue(itemStack); } } diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/menu/CraftConfirmMenuGoBackMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/menu/CraftConfirmMenuGoBackMixin.java index 8ac4860..be0671e 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/menu/CraftConfirmMenuGoBackMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/menu/CraftConfirmMenuGoBackMixin.java @@ -6,7 +6,6 @@ import appeng.menu.me.crafting.CraftingPlanSummary; import appeng.menu.me.crafting.CraftingPlanSummaryEntry; import com.extendedae_plus.integration.RecipeViewer.RecipeViewerHelper; import net.minecraft.client.gui.screens.Screen; -import net.neoforged.fml.ModList; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/menu/InterfaceMenuUpgradesMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/menu/InterfaceMenuUpgradesMixin.java index fc6e80a..092c47a 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/menu/InterfaceMenuUpgradesMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/menu/InterfaceMenuUpgradesMixin.java @@ -5,9 +5,6 @@ import appeng.menu.AEBaseMenu; import appeng.menu.ToolboxMenu; import appeng.menu.implementations.InterfaceMenu; import com.extendedae_plus.bridge.IUpgradableMenu; -import com.extendedae_plus.compat.UpgradeSlotCompat; -import com.extendedae_plus.bridge.CompatUpgradeProvider; -import com.extendedae_plus.util.ExtendedAELogger; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.MenuType; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/menu/MEStorageMenuMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/menu/MEStorageMenuMixin.java index e28f256..01737a6 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/menu/MEStorageMenuMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/menu/MEStorageMenuMixin.java @@ -31,7 +31,7 @@ public abstract class MEStorageMenuMixin { return; } try { - var acc = (MEStorageMenuAccessor) (Object) self; + var acc = (MEStorageMenuAccessor) self; IConfigManager server = acc.getServerCM(); IConfigManager client = acc.getClientCM(); if (server == null || client == null) { @@ -75,7 +75,7 @@ public abstract class MEStorageMenuMixin { } Class> enumClass = sv.getDeclaringClass(); Object[] constants = enumClass.getEnumConstants(); - if (constants == null || constants.length == 0) { + if (constants == null) { return null; } for (Object c : constants) { diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/menu/PatternEncodingTermMenuMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/menu/PatternEncodingTermMenuMixin.java index 631a8bc..a1b0942 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/menu/PatternEncodingTermMenuMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/menu/PatternEncodingTermMenuMixin.java @@ -13,7 +13,7 @@ import appeng.menu.me.items.PatternEncodingTermMenu; import appeng.menu.slot.RestrictedInputSlot; import appeng.parts.encoding.EncodingMode; import com.extendedae_plus.client.PatternEncodingTermMenuMixinHelper; -import com.extendedae_plus.config.ModConfig; +import com.extendedae_plus.config.EAEPConfig; import com.extendedae_plus.mixin.ae2.accessor.MEStorageMenuAccessor; import com.extendedae_plus.network.C2SPacketEncodeFinished; import com.extendedae_plus.util.ExtendedAEPatternUploadUtil; @@ -171,7 +171,7 @@ public abstract class PatternEncodingTermMenuMixin implements PatternEncodingTer @Inject(method = "encode", at = @At("TAIL")) private void eaep$onEncode(CallbackInfo ci) { - if (ModConfig.INDEPENDENT_UPLOADING_BUTTON.getAsBoolean()) return; + if (EAEPConfig.INDEPENDENT_UPLOADING_BUTTON.getAsBoolean()) return; var self = (PatternEncodingTermMenu) (Object) this; if (self.isClientSide()) return; if (!eaep$isCtrlPressed) return; diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/menu/PatternProviderMenuUpgradesMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/menu/PatternProviderMenuUpgradesMixin.java index 9fc4db7..92f4a92 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/menu/PatternProviderMenuUpgradesMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/menu/PatternProviderMenuUpgradesMixin.java @@ -5,11 +5,9 @@ import appeng.helpers.patternprovider.PatternProviderLogicHost; import appeng.menu.AEBaseMenu; import appeng.menu.ToolboxMenu; import appeng.menu.implementations.PatternProviderMenu; +import com.extendedae_plus.bridge.CompatUpgradeProvider; import com.extendedae_plus.bridge.IUpgradableMenu; import com.extendedae_plus.compat.UpgradeSlotCompat; -import com.extendedae_plus.bridge.CompatUpgradeProvider; -import appeng.api.upgrades.IUpgradeInventory; -import appeng.api.upgrades.IUpgradeableObject; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.MenuType; import org.spongepowered.asm.mixin.Final; @@ -19,7 +17,6 @@ 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 com.extendedae_plus.util.ExtendedAELogger; @Mixin(value = PatternProviderMenu.class, priority = 2000, remap = false) public abstract class PatternProviderMenuUpgradesMixin extends AEBaseMenu implements IUpgradableMenu { diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/parts/automation/IOBusPartChannelCardMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/parts/automation/IOBusPartChannelCardMixin.java index 97e1945..44820a6 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/parts/automation/IOBusPartChannelCardMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/parts/automation/IOBusPartChannelCardMixin.java @@ -3,16 +3,14 @@ package com.extendedae_plus.mixin.ae2.parts.automation; import appeng.api.networking.security.IActionHost; import appeng.api.upgrades.IUpgradeInventory; import appeng.api.upgrades.IUpgradeableObject; -import appeng.helpers.InterfaceLogicHost; import appeng.parts.automation.IOBusPart; -import net.minecraft.nbt.CompoundTag; -import com.extendedae_plus.util.ExtendedAELogger; import com.extendedae_plus.ae.items.ChannelCardItem; import com.extendedae_plus.bridge.InterfaceWirelessLinkBridge; import com.extendedae_plus.init.ModItems; +import com.extendedae_plus.util.ExtendedAELogger; import com.extendedae_plus.wireless.WirelessSlaveLink; import com.extendedae_plus.wireless.endpoint.GenericNodeEndpointImpl; -import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.nbt.CompoundTag; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; @@ -103,7 +101,7 @@ public abstract class IOBusPartChannelCardMixin implements InterfaceWirelessLink if (eap$link == null) { var endpoint = new GenericNodeEndpointImpl( () -> ((appeng.parts.AEBasePart)(Object)this).getHost().getBlockEntity(), - () -> ((IActionHost)(Object)this).getActionableNode() + () -> ((IActionHost) this).getActionableNode() ); eap$link = new WirelessSlaveLink(endpoint); } diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/parts/storagebus/StorageBusPartChannelCardMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/parts/storagebus/StorageBusPartChannelCardMixin.java index 69609a6..969f3ee 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/parts/storagebus/StorageBusPartChannelCardMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/parts/storagebus/StorageBusPartChannelCardMixin.java @@ -5,14 +5,13 @@ import appeng.api.networking.security.IActionHost; import appeng.api.upgrades.IUpgradeInventory; import appeng.api.upgrades.IUpgradeableObject; import appeng.parts.storagebus.StorageBusPart; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.FriendlyByteBuf; -import com.extendedae_plus.util.ExtendedAELogger; import com.extendedae_plus.ae.items.ChannelCardItem; import com.extendedae_plus.bridge.InterfaceWirelessLinkBridge; import com.extendedae_plus.init.ModItems; +import com.extendedae_plus.util.ExtendedAELogger; import com.extendedae_plus.wireless.WirelessSlaveLink; import com.extendedae_plus.wireless.endpoint.GenericNodeEndpointImpl; +import net.minecraft.nbt.CompoundTag; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; @@ -99,7 +98,7 @@ public abstract class StorageBusPartChannelCardMixin implements InterfaceWireles if (eap$link == null) { var endpoint = new GenericNodeEndpointImpl( () -> ((appeng.parts.AEBasePart)(Object)this).getHost().getBlockEntity(), - () -> ((IActionHost)(Object)this).getActionableNode() + () -> ((IActionHost) this).getActionableNode() ); eap$link = new WirelessSlaveLink(endpoint); } diff --git a/src/main/java/com/extendedae_plus/mixin/extendedae/client/HighlightButtonMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/client/HighlightButtonMixin.java index 5321188..9f98d69 100644 --- a/src/main/java/com/extendedae_plus/mixin/extendedae/client/HighlightButtonMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/extendedae/client/HighlightButtonMixin.java @@ -58,7 +58,7 @@ public abstract class HighlightButtonMixin { if (posEqual && faceEqual) { // 选中当前供应器:使用 mixin 新增的 setter(通过反射调用以兼容编译期) try { - long serverId = (long) entry.getKey(); + long serverId = entry.getKey(); var setter = terminal.getClass().getMethod("setCurrentlyChoicePatternProvider", long.class); setter.setAccessible(true); setter.invoke(terminal, serverId); diff --git a/src/main/java/com/extendedae_plus/mixin/extendedae/client/gui/GuiExPatternProviderMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/client/gui/GuiExPatternProviderMixin.java index f995519..1ea6f41 100644 --- a/src/main/java/com/extendedae_plus/mixin/extendedae/client/gui/GuiExPatternProviderMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/extendedae/client/gui/GuiExPatternProviderMixin.java @@ -7,7 +7,7 @@ import appeng.menu.SlotSemantics; import appeng.menu.slot.AppEngSlot; import com.extendedae_plus.NewIcon; import com.extendedae_plus.api.ExPatternButtonsAccessor; -import com.extendedae_plus.config.ModConfig; +import com.extendedae_plus.config.EAEPConfig; import com.extendedae_plus.network.ScalePatternsC2SPacket; import com.glodblock.github.extendedae.client.button.ActionEPPButton; import com.glodblock.github.extendedae.client.gui.GuiExPatternProvider; @@ -65,7 +65,7 @@ public abstract class GuiExPatternProviderMixin extends PatternProviderScreen 1) return cfg; } catch (Throwable ignored) {} try { @@ -124,7 +124,7 @@ public abstract class GuiExPatternProviderMixin extends PatternProviderScreen CallbackInfo ci) { // 根据配置初始化默认显示/隐藏状态 try { - this.eap$showSlots = ModConfig.PATTERN_TERMINAL_SHOW_SLOTS_DEFAULT.get(); + this.eap$showSlots = EAEPConfig.PATTERN_TERMINAL_SHOW_SLOTS_DEFAULT.get(); } catch (Throwable ignored) { } // 创建切换槽位显示的按钮 @@ -261,11 +261,7 @@ public abstract class GuiExPatternTerminalMixin extends AEBaseScreen refreshMethod = this.getClass().getDeclaredMethod("refreshList"); } catch (NoSuchMethodException e1) { // 如果当前类没有,尝试在父类中查找 - try { - refreshMethod = this.getClass().getSuperclass().getDeclaredMethod("refreshList"); - } catch (NoSuchMethodException e2) { - throw e2; - } + refreshMethod = this.getClass().getSuperclass().getDeclaredMethod("refreshList"); } refreshMethod.setAccessible(true); @@ -376,11 +372,7 @@ public abstract class GuiExPatternTerminalMixin extends AEBaseScreen rowsField = this.getClass().getDeclaredField("rows"); } catch (NoSuchFieldException e1) { // 如果当前类没有,尝试在父类中查找 - try { - rowsField = this.getClass().getSuperclass().getDeclaredField("rows"); - } catch (NoSuchFieldException e2) { - throw e2; - } + rowsField = this.getClass().getSuperclass().getDeclaredField("rows"); } rowsField.setAccessible(true); java.util.ArrayList rows = (java.util.ArrayList) rowsField.get(this); @@ -392,11 +384,7 @@ public abstract class GuiExPatternTerminalMixin extends AEBaseScreen highlightBtnsField = this.getClass().getDeclaredField("highlightBtns"); } catch (NoSuchFieldException e1) { // 如果当前类没有,尝试在父类中查找 - try { - highlightBtnsField = this.getClass().getSuperclass().getDeclaredField("highlightBtns"); - } catch (NoSuchFieldException e2) { - throw e2; - } + highlightBtnsField = this.getClass().getSuperclass().getDeclaredField("highlightBtns"); } highlightBtnsField.setAccessible(true); @SuppressWarnings("unchecked") @@ -434,7 +422,7 @@ public abstract class GuiExPatternTerminalMixin extends AEBaseScreen // 移除多余的行 while (rows.size() > newIndex) { - rows.remove(rows.size() - 1); + rows.removeLast(); } // 更新highlightBtns @@ -449,11 +437,7 @@ public abstract class GuiExPatternTerminalMixin extends AEBaseScreen resetScrollbarMethod = this.getClass().getDeclaredMethod("resetScrollbar"); } catch (NoSuchMethodException e1) { // 如果当前类没有,尝试在父类中查找 - try { - resetScrollbarMethod = this.getClass().getSuperclass().getDeclaredMethod("resetScrollbar"); - } catch (NoSuchMethodException e2) { - throw e2; - } + resetScrollbarMethod = this.getClass().getSuperclass().getDeclaredMethod("resetScrollbar"); } resetScrollbarMethod.setAccessible(true); @@ -516,9 +500,7 @@ public abstract class GuiExPatternTerminalMixin extends AEBaseScreen Button btn = eap$openUIButtons.get(rowIndex); if (btn == null) { - btn = Button.builder(Component.literal("UI"), (b) -> { - eap$tryOpenProviderUI(rowIndex); - }).size(14, 12).build(); + btn = Button.builder(Component.literal("UI"), (b) -> eap$tryOpenProviderUI(rowIndex)).size(14, 12).build(); btn.setTooltip(Tooltip.create(Component.literal("打开该供应器目标容器的界面"))); eap$openUIButtons.put(rowIndex, btn); this.addRenderableWidget(btn); @@ -578,7 +560,7 @@ public abstract class GuiExPatternTerminalMixin extends AEBaseScreen if (ms instanceof Set s) { // 原始是 Set @SuppressWarnings("unchecked") - Set cast = (Set) (Set) s; + Set cast = (Set) s; matchedStack = cast; } } catch (NoSuchFieldException ignored) { @@ -589,7 +571,7 @@ public abstract class GuiExPatternTerminalMixin extends AEBaseScreen Object mp = fMp.get(this); if (mp instanceof Set s) { @SuppressWarnings("unchecked") - Set cast = (Set) (Set) s; + Set cast = (Set) s; matchedProvider = cast; } } catch (NoSuchFieldException ignored) { diff --git a/src/main/java/com/extendedae_plus/mixin/extendedae/common/PartExPatternProviderMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/common/PartExPatternProviderMixin.java index 5a4b58a..0a28d32 100644 --- a/src/main/java/com/extendedae_plus/mixin/extendedae/common/PartExPatternProviderMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/extendedae/common/PartExPatternProviderMixin.java @@ -1,6 +1,6 @@ package com.extendedae_plus.mixin.extendedae.common; -import com.extendedae_plus.config.ModConfig; +import com.extendedae_plus.config.EAEPConfig; import com.glodblock.github.extendedae.common.parts.PartExPatternProvider; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Pseudo; @@ -20,7 +20,7 @@ public abstract class PartExPatternProviderMixin { index = 2 ) private int eap$multiplyCapacity(int original) { - int mult = ModConfig.PAGE_MULTIPLIER.get(); + int mult = EAEPConfig.PAGE_MULTIPLIER.get(); if (mult < 1) mult = 1; if (mult > 64) mult = 64; return Math.max(1, original) * mult; diff --git a/src/main/java/com/extendedae_plus/mixin/extendedae/common/TileExPatternProviderMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/common/TileExPatternProviderMixin.java index 7259c9e..d9d06de 100644 --- a/src/main/java/com/extendedae_plus/mixin/extendedae/common/TileExPatternProviderMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/extendedae/common/TileExPatternProviderMixin.java @@ -1,6 +1,6 @@ package com.extendedae_plus.mixin.extendedae.common; -import com.extendedae_plus.config.ModConfig; +import com.extendedae_plus.config.EAEPConfig; import com.glodblock.github.extendedae.common.tileentities.TileExPatternProvider; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -18,7 +18,7 @@ public abstract class TileExPatternProviderMixin { index = 2 ) private int eap$multiplyCapacity(int original) { - int mult = ModConfig.PAGE_MULTIPLIER.get(); + int mult = EAEPConfig.PAGE_MULTIPLIER.get(); if (mult < 1) mult = 1; if (mult > 64) mult = 64; return Math.max(1, original) * mult; diff --git a/src/main/java/com/extendedae_plus/mixin/extendedae/container/ContainerExPatternProviderMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/container/ContainerExPatternProviderMixin.java index d4fa16c..69be8c7 100644 --- a/src/main/java/com/extendedae_plus/mixin/extendedae/container/ContainerExPatternProviderMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/extendedae/container/ContainerExPatternProviderMixin.java @@ -89,7 +89,7 @@ public abstract class ContainerExPatternProviderMixin extends PatternProviderMen if (scale <= 0) return; for (var slot : this.getSlots(SlotSemantics.ENCODED_PATTERN)) { var stack = slot.getItem(); - if (stack.getItem() instanceof EncodedPatternItem pattern) { + if (stack.getItem() instanceof EncodedPatternItem) { var detail = PatternDetailsHelper.decodePattern(stack, this.getPlayer().level()); if (detail instanceof AEProcessingPattern process) { var input = process.getSparseInputs(); // List @@ -116,7 +116,6 @@ public abstract class ContainerExPatternProviderMixin extends PatternProviderMen } } } - return true; } else { for (var stack : stacks) { if (stack != null) { @@ -126,8 +125,8 @@ public abstract class ContainerExPatternProviderMixin extends PatternProviderMen } } } - return true; } + return true; } @Unique diff --git a/src/main/java/com/extendedae_plus/mixin/recipeViewer/emi/MixinBoMScreen.java b/src/main/java/com/extendedae_plus/mixin/recipeViewer/emi/MixinBoMScreen.java index 3129829..d3a1aeb 100644 --- a/src/main/java/com/extendedae_plus/mixin/recipeViewer/emi/MixinBoMScreen.java +++ b/src/main/java/com/extendedae_plus/mixin/recipeViewer/emi/MixinBoMScreen.java @@ -27,7 +27,7 @@ import java.util.List; @Mixin(BoMScreen.class) public abstract class MixinBoMScreen { - @Inject(method = "mouseClicked", at = @At("HEAD")) + @Inject(method = "mouseClicked", at = @At("HEAD"), cancellable = true) private void onMouseClick(double mouseX, double mouseY, int button, CallbackInfoReturnable cir) { if (!(button == GLFW.GLFW_MOUSE_BUTTON_MIDDLE && Screen.hasControlDown())) return; try { @@ -94,5 +94,6 @@ public abstract class MixinBoMScreen { } } } catch (Exception ignored) {} + cir.cancel(); } } diff --git a/src/main/java/com/extendedae_plus/network/CraftingMonitorOpenProviderC2SPacket.java b/src/main/java/com/extendedae_plus/network/CraftingMonitorOpenProviderC2SPacket.java index 4a4cf14..f738244 100644 --- a/src/main/java/com/extendedae_plus/network/CraftingMonitorOpenProviderC2SPacket.java +++ b/src/main/java/com/extendedae_plus/network/CraftingMonitorOpenProviderC2SPacket.java @@ -7,7 +7,6 @@ import appeng.api.stacks.AEKey; import appeng.helpers.patternprovider.PatternProviderLogic; import appeng.helpers.patternprovider.PatternProviderLogicHost; import appeng.me.service.CraftingService; -import appeng.menu.AEBaseMenu; import appeng.menu.locator.MenuLocators; import appeng.menu.me.crafting.CraftingCPUMenu; import appeng.parts.AEBasePart; @@ -69,7 +68,7 @@ public class CraftingMonitorOpenProviderC2SPacket implements CustomPacketPayload // 通过菜单的 target(可能是 BlockEntity/Part/ItemHost),按 IActionHost 获取 Grid IGrid grid = null; - Object target = ((AEBaseMenu) menu).getTarget(); + Object target = menu.getTarget(); if (target instanceof IActionHost host && host.getActionableNode() != null) { grid = host.getActionableNode().getGrid(); } @@ -128,8 +127,8 @@ public class CraftingMonitorOpenProviderC2SPacket implements CustomPacketPayload // 最后发送高亮包,保证界面已打开 var outs = pattern.getOutputs(); - if (outs != null && !outs.isEmpty() && outs.get(0) != null) { - AEKey key = outs.get(0).what(); + if (outs != null && !outs.isEmpty() && outs.getFirst() != null) { + AEKey key = outs.getFirst().what(); player.connection.send(new SetPatternHighlightS2CPacket(key, true)); } diff --git a/src/main/java/com/extendedae_plus/network/GlobalToggleProviderModesC2SPacket.java b/src/main/java/com/extendedae_plus/network/GlobalToggleProviderModesC2SPacket.java index ac50014..6e25d95 100644 --- a/src/main/java/com/extendedae_plus/network/GlobalToggleProviderModesC2SPacket.java +++ b/src/main/java/com/extendedae_plus/network/GlobalToggleProviderModesC2SPacket.java @@ -141,8 +141,8 @@ public class GlobalToggleProviderModesC2SPacket implements CustomPacketPayload { try { Class cls = Class.forName(className); // 收集全部与在线两类机器 - Set all = grid.getMachines((Class) cls); - Set active = grid.getActiveMachines((Class) cls); + Set all = grid.getMachines((Class) cls); + Set active = grid.getActiveMachines((Class) cls); for (Object o : all) addLogicIfPresent(out, o); for (Object o : active) addLogicIfPresent(out, o); } catch (Throwable ignored) {} diff --git a/src/main/java/com/extendedae_plus/network/InterfaceAdjustConfigAmountC2SPacket.java b/src/main/java/com/extendedae_plus/network/InterfaceAdjustConfigAmountC2SPacket.java index 16dfc5f..89c3395 100644 --- a/src/main/java/com/extendedae_plus/network/InterfaceAdjustConfigAmountC2SPacket.java +++ b/src/main/java/com/extendedae_plus/network/InterfaceAdjustConfigAmountC2SPacket.java @@ -70,15 +70,14 @@ public class InterfaceAdjustConfigAmountC2SPacket implements CustomPacketPayload int factor = Math.max(1, msg.factor); long next; if (msg.divide) { - if (factor <= 1) continue; + if (factor == 1) continue; if (current % factor != 0) continue; next = current / factor; - if (next < 1) next = 1; } else { - if (factor <= 1) continue; + if (factor == 1) continue; next = current * factor; - if (next < 1) next = 1; } + if (next < 1) next = 1; GenericStack newStack = new GenericStack(st.what(), next); config.setStack(idx, newStack); @@ -92,16 +91,15 @@ public class InterfaceAdjustConfigAmountC2SPacket implements CustomPacketPayload long next; if (msg.divide) { // 只能整除,且至少为 1 - if (factor <= 1) return; + if (factor == 1) return; if (current % factor != 0) return; // 不能整除则跳过 next = current / factor; - if (next < 1) next = 1; } else { // 倍增,至少为 1 - if (factor <= 1) return; + if (factor == 1) return; next = current * factor; - if (next < 1) next = 1; } + if (next < 1) next = 1; // 应用 GenericStack newStack = new GenericStack(stack.what(), next); diff --git a/src/main/java/com/extendedae_plus/util/ExtendedAEPatternUploadUtil.java b/src/main/java/com/extendedae_plus/util/ExtendedAEPatternUploadUtil.java index 97f2038..88d0e2c 100644 --- a/src/main/java/com/extendedae_plus/util/ExtendedAEPatternUploadUtil.java +++ b/src/main/java/com/extendedae_plus/util/ExtendedAEPatternUploadUtil.java @@ -15,6 +15,7 @@ import appeng.menu.implementations.PatternAccessTermMenu; import appeng.menu.me.items.PatternEncodingTermMenu; import appeng.util.inv.FilteredInternalInventory; import appeng.util.inv.filter.IAEItemFilter; +import com.extendedae_plus.config.EAEPConfig; import com.extendedae_plus.mixin.ae2.accessor.PatternEncodingTermMenuAccessor; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -280,13 +281,6 @@ public class ExtendedAEPatternUploadUtil { if (key == null) return null; // 先查别名(按 path 匹配) // 别名替换放在init做, 提前别名的次序 -// String alias = CUSTOM_ALIASES.get(key.getPath().toLowerCase()); -// if (alias != null && !alias.isBlank()) return alias; - // 再查完整ID映射 -// String custom = CUSTOM_NAMES.get(key); -// if (custom != null && !custom.isBlank()) { -// return custom; -// } return key.getPath(); } @@ -423,7 +417,7 @@ public class ExtendedAEPatternUploadUtil { } // 读取已编码槽位的物品 - var encodedSlot = ((PatternEncodingTermMenuAccessor) (Object) menu) + var encodedSlot = ((PatternEncodingTermMenuAccessor) menu) .eap$getEncodedPatternSlot(); ItemStack stack = encodedSlot.getItem(); if (stack.isEmpty() || !PatternDetailsHelper.isEncodedPattern(stack)) { @@ -462,7 +456,7 @@ public class ExtendedAEPatternUploadUtil { player.sendSystemMessage(Component.literal("ExtendedAE Plus: 装配矩阵已存在相同样板,已跳过上传并返还空白样板")); } try { - var accessor = (PatternEncodingTermMenuAccessor) (Object) menu; + var accessor = (PatternEncodingTermMenuAccessor) menu; var blankSlot = accessor.eap$getBlankPatternSlot(); ItemStack blanks = AEItems.BLANK_PATTERN.stack(stack.getCount()); if (blankSlot != null && blankSlot.mayPlace(blanks)) { @@ -548,7 +542,7 @@ public class ExtendedAEPatternUploadUtil { } idx++; } - } catch (Throwable t) { + } catch (Throwable ignored) { } return result; } @@ -575,7 +569,7 @@ public class ExtendedAEPatternUploadUtil { } } } - } catch (Throwable t) { + } catch (Throwable ignored) { } // 1.21 暂不检查聚合能力视图,能力系统适配后再补充 return false; @@ -1032,7 +1026,7 @@ public class ExtendedAEPatternUploadUtil { if (player == null || menu == null) { return false; } - var encodedSlot = ((PatternEncodingTermMenuAccessor) (Object) menu) + var encodedSlot = ((PatternEncodingTermMenuAccessor) menu) .eap$getEncodedPatternSlot(); ItemStack stack = encodedSlot.getItem(); if (stack.isEmpty() || !PatternDetailsHelper.isEncodedPattern(stack)) { @@ -1166,7 +1160,7 @@ public class ExtendedAEPatternUploadUtil { var container = list.get(index); if (container == null) return false; - var encodedSlot = ((PatternEncodingTermMenuAccessor) (Object) menu) + var encodedSlot = ((PatternEncodingTermMenuAccessor) menu) .eap$getEncodedPatternSlot(); ItemStack stack = encodedSlot.getItem(); if (stack.isEmpty() || !PatternDetailsHelper.isEncodedPattern(stack)) { @@ -1213,6 +1207,7 @@ public class ExtendedAEPatternUploadUtil { * 传入任意属于该集群的 Tile(如 Pattern/Crafter/Frame 等)。 */ private static boolean clusterHasSingleUploadCore(com.glodblock.github.extendedae.common.tileentities.matrix.TileAssemblerMatrixBase any) { + if (!EAEPConfig.NEEDS_UPLOADING_CORE.getAsBoolean()) return true; try { if (any == null || any.getCluster() == null) return false; int cores = 0; diff --git a/src/main/java/com/extendedae_plus/util/GetKey.java b/src/main/java/com/extendedae_plus/util/GetKey.java deleted file mode 100644 index 60d95a8..0000000 --- a/src/main/java/com/extendedae_plus/util/GetKey.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.extendedae_plus.util; - -import com.extendedae_plus.ExtendedAEPlus; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.network.chat.Component; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.neoforged.neoforge.fluids.FluidType; -import net.neoforged.neoforge.registries.DeferredHolder; -import net.neoforged.neoforge.registries.DeferredItem; - -public class GetKey { - private final String keyType; - private String mainDescription = ExtendedAEPlus.MODID; - private String additionalKey = "."; - private Object[] args; - - public static final String CTAB = "ctab"; - public static final String GUI = "gui"; - public static final String MESSAGE = "message"; - public static final String CONFIG = "config"; - public static final String TOOLTIP = "tooltip"; - - public GetKey() { - this.keyType = ""; - } - - public GetKey(String keyType) { - this.keyType = keyType.toLowerCase() + '.'; - } - - public GetKey(DeferredItem item) { - this.keyType = ""; - this.mainDescription = item.asItem().getDescriptionId().toLowerCase(); - } - - public GetKey(DeferredHolder fluid) { - this.keyType = ""; - this.mainDescription = fluid.get().getDescriptionId().toLowerCase(); - this.additionalKey = ""; - } - - public GetKey item(ItemStack item) { - this.mainDescription = item.getDescriptionId().toLowerCase(); - return this; - } - - public GetKey item(Item item) { - this.mainDescription = item.getDescriptionId().toLowerCase(); - return this; - } - - public GetKey item(DeferredItem item) { - this.mainDescription = item.asItem().getDescriptionId().toLowerCase(); - return this; - } - - public GetKey addStr(String additionalKey) { - if (!this.additionalKey.endsWith(".")) - this.additionalKey += "."; - this.additionalKey += additionalKey; - return this; - } - - public GetKey obj(Object... args) { - this.args = args; - return this; - } - - public String buildRaw() { - return keyType + mainDescription + additionalKey; - } - - public Component build() { - if (args == null) return Component.translatable(keyType + mainDescription + additionalKey); - return Component.translatable(keyType + mainDescription + additionalKey, args); - } - - public String getDescriptionID(ItemStack itemStack) { - return "item.fish_things." + BuiltInRegistries.ITEM.getKey(itemStack.getItem()).getPath(); - } -} diff --git a/src/main/java/com/extendedae_plus/util/GuiUtil.java b/src/main/java/com/extendedae_plus/util/GuiUtil.java index 3e202be..be53f1a 100644 --- a/src/main/java/com/extendedae_plus/util/GuiUtil.java +++ b/src/main/java/com/extendedae_plus/util/GuiUtil.java @@ -39,7 +39,7 @@ public class GuiUtil { if (outputs == null || outputs.isEmpty()) { return ""; } - GenericStack out = outputs.get(0); + GenericStack out = outputs.getFirst(); long amount = out.amount(); long perUnit = out.what().getAmountPerUnit(); if (amount <= 0 || perUnit <= 0) { diff --git a/src/main/java/com/extendedae_plus/util/NumberFormatUtil.java b/src/main/java/com/extendedae_plus/util/NumberFormatUtil.java index b9aec75..e0592d7 100644 --- a/src/main/java/com/extendedae_plus/util/NumberFormatUtil.java +++ b/src/main/java/com/extendedae_plus/util/NumberFormatUtil.java @@ -67,7 +67,7 @@ public class NumberFormatUtil { private static String formatDecimal(double value, String suffix) { // 对于接近整数的值,使用整数显示 if (Math.abs(value - Math.round(value)) < 0.001) { - return String.valueOf(Math.round(value)) + suffix; + return Math.round(value) + suffix; } else { // 使用一位小数显示,去掉末尾 .0 String formatted = String.format("%.1f", value).replaceAll("\\.0$", ""); diff --git a/src/main/java/com/extendedae_plus/util/PatternProviderDataUtil.java b/src/main/java/com/extendedae_plus/util/PatternProviderDataUtil.java index c7b671e..c88cc84 100644 --- a/src/main/java/com/extendedae_plus/util/PatternProviderDataUtil.java +++ b/src/main/java/com/extendedae_plus/util/PatternProviderDataUtil.java @@ -8,7 +8,6 @@ import appeng.api.stacks.AEKey; import appeng.api.stacks.GenericStack; import appeng.helpers.patternprovider.PatternProviderLogic; import com.extendedae_plus.mixin.ae2.accessor.PatternProviderLogicAccessor; -import com.mojang.logging.LogUtils; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; @@ -143,7 +142,7 @@ public class PatternProviderDataUtil { if (outputs.isEmpty()) { return 0; } - return outputs.get(0).getAmount(); + return outputs.getFirst().getAmount(); } /** @@ -250,7 +249,7 @@ public class PatternProviderDataUtil { if (patternDetails != null) { patternDataList.add(new PatternData(patternDetails, patternStack, i)); } - } catch (Exception e) { + } catch (Exception ignored) { } } @@ -570,7 +569,7 @@ public class PatternProviderDataUtil { if (d != null && d.getDefinition().equals(targetDefinition)) { return i; } - } catch (Exception e) { + } catch (Exception ignored) { } } return -1; @@ -667,7 +666,6 @@ public class PatternProviderDataUtil { if (!canScalePatternExtendedAEStyle(originalPattern, scaleFactor)) { errors.add("槽位 " + i + ": 样板数量无法按指定比例缩放"); failedPatterns++; - continue; } } @@ -687,7 +685,7 @@ public class PatternProviderDataUtil { try { // 解码原始样板 IPatternDetails originalPattern = PatternDetailsHelper.decodePattern(patternStack, level); - if (originalPattern == null || !isPatternScalable(originalPattern)) { + if (!isPatternScalable(originalPattern)) { continue; } diff --git a/src/main/java/com/extendedae_plus/util/PatternProviderUIHelper.java b/src/main/java/com/extendedae_plus/util/PatternProviderUIHelper.java index 435a5a9..35317d4 100644 --- a/src/main/java/com/extendedae_plus/util/PatternProviderUIHelper.java +++ b/src/main/java/com/extendedae_plus/util/PatternProviderUIHelper.java @@ -21,8 +21,8 @@ public class PatternProviderUIHelper { Minecraft mc = Minecraft.getInstance(); Screen currentScreen = mc.screen; - if (currentScreen instanceof PatternProviderScreen patternScreen) { - PatternProviderMenu menu = (PatternProviderMenu) patternScreen.getMenu(); + if (currentScreen instanceof PatternProviderScreen patternScreen) { + PatternProviderMenu menu = patternScreen.getMenu(); // 通过反射安全地访问protected字段 try { @@ -53,11 +53,11 @@ public class PatternProviderUIHelper { * * @return PatternProviderScreen对象,如果当前没有打开样板供应器界面则返回null */ - public static PatternProviderScreen getCurrentPatternProviderScreen() { + public static PatternProviderScreen getCurrentPatternProviderScreen() { Minecraft mc = Minecraft.getInstance(); Screen currentScreen = mc.screen; - if (currentScreen instanceof PatternProviderScreen patternScreen) { + if (currentScreen instanceof PatternProviderScreen patternScreen) { return patternScreen; } diff --git a/src/main/java/com/extendedae_plus/util/PatternScaler.java b/src/main/java/com/extendedae_plus/util/PatternScaler.java index bb6a343..a9abc31 100644 --- a/src/main/java/com/extendedae_plus/util/PatternScaler.java +++ b/src/main/java/com/extendedae_plus/util/PatternScaler.java @@ -5,7 +5,7 @@ import appeng.api.stacks.AEKey; import appeng.api.stacks.GenericStack; import appeng.crafting.pattern.AEProcessingPattern; import com.extendedae_plus.api.SmartDoublingAwarePattern; -import com.extendedae_plus.config.ModConfig; +import com.extendedae_plus.config.EAEPConfig; import com.extendedae_plus.content.ScaledProcessingPattern; import java.util.ArrayList; @@ -34,7 +34,7 @@ public final class PatternScaler { int targetOutIndex = -1; for (int i = 0; i < baseOutputs.size(); i++) { var out = baseOutputs.get(i); - if (out != null && target != null && out.what() != null && out.what().equals(target)) { + if (out != null && out.what() != null && out.what().equals(target)) { targetOutIndex = i; break; } @@ -59,11 +59,11 @@ public final class PatternScaler { long multiplier = 1L; if (requestedAmount > 0) { long needed = requestedAmount / perOperationTarget + ((requestedAmount % perOperationTarget) == 0 ? 0 : 1); - multiplier = needed <= 1L ? 1L : needed; + multiplier = Math.max(needed, 1L); } // 应用配置的最大倍数上限(0 表示不限制) try { - int maxMul = ModConfig.SMART_SCALING_MAX_MULTIPLIER.get(); + int maxMul = EAEPConfig.SMART_SCALING_MAX_MULTIPLIER.get(); if (maxMul > 0 && multiplier > maxMul) { multiplier = maxMul; } @@ -85,8 +85,7 @@ public final class PatternScaler { // 构建压缩输出(List) List scaledCondensedOutputs = new ArrayList<>(baseOutputs.size()); - for (int i = 0; i < baseOutputs.size(); i++) { - GenericStack out = baseOutputs.get(i); + for (GenericStack out : baseOutputs) { if (out != null) { scaledCondensedOutputs.add(new GenericStack(out.what(), out.amount() * multiplier)); } else { @@ -96,8 +95,7 @@ public final class PatternScaler { // 构建稀疏表示(List,直接按 multiplier 放大) List scaledSparseInputs = new ArrayList<>(baseSparseInputs.size()); - for (int i = 0; i < baseSparseInputs.size(); i++) { - var in = baseSparseInputs.get(i); + for (GenericStack in : baseSparseInputs) { if (in != null) { scaledSparseInputs.add(new GenericStack(in.what(), in.amount() * multiplier)); } else { @@ -105,8 +103,7 @@ public final class PatternScaler { } } List scaledSparseOutputs = new ArrayList<>(baseSparseOutputs.size()); - for (int i = 0; i < baseSparseOutputs.size(); i++) { - var out = baseSparseOutputs.get(i); + for (GenericStack out : baseSparseOutputs) { if (out != null) { scaledSparseOutputs.add(new GenericStack(out.what(), out.amount() * multiplier)); } else { diff --git a/src/main/java/com/extendedae_plus/util/entitySpeed/PowerUtils.java b/src/main/java/com/extendedae_plus/util/entitySpeed/PowerUtils.java index f095dc6..a2e01d8 100644 --- a/src/main/java/com/extendedae_plus/util/entitySpeed/PowerUtils.java +++ b/src/main/java/com/extendedae_plus/util/entitySpeed/PowerUtils.java @@ -2,7 +2,7 @@ package com.extendedae_plus.util.entitySpeed; import appeng.api.upgrades.IUpgradeInventory; import com.extendedae_plus.ae.definitions.upgrades.EntitySpeedCardItem; -import com.extendedae_plus.config.ModConfigs; +import com.extendedae_plus.config.EAEPConfig; import net.minecraft.world.item.ItemStack; import java.util.ArrayList; @@ -63,7 +63,7 @@ public final class PowerUtils { */ public static double computeFinalPowerForProduct(long product, int energyCardCount) { if (product <= 1L) return 0.0; - double base = ModConfigs.ENTITY_TICKER_COST.get(); + double base = EAEPConfig.ENTITY_TICKER_COST.get(); double log2 = Math.log(product) / Math.log(2.0); double raw; if (product == 2L) { diff --git a/src/main/java/com/extendedae_plus/wireless/WirelessMasterRegistry.java b/src/main/java/com/extendedae_plus/wireless/WirelessMasterRegistry.java index 5977f49..743cab7 100644 --- a/src/main/java/com/extendedae_plus/wireless/WirelessMasterRegistry.java +++ b/src/main/java/com/extendedae_plus/wireless/WirelessMasterRegistry.java @@ -1,6 +1,6 @@ package com.extendedae_plus.wireless; -import com.extendedae_plus.config.ModConfig; +import com.extendedae_plus.config.EAEPConfig; import net.minecraft.resources.ResourceKey; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.Level; @@ -63,7 +63,7 @@ public final class WirelessMasterRegistry { } private static boolean useGlobal() { - return ModConfig.WIRELESS_CROSS_DIM_ENABLE.get(); + return EAEPConfig.WIRELESS_CROSS_DIM_ENABLE.get(); } private record Key(ResourceKey dim, long freq) { diff --git a/src/main/java/com/extendedae_plus/wireless/WirelessSlaveLink.java b/src/main/java/com/extendedae_plus/wireless/WirelessSlaveLink.java index 23f8a2e..680bb91 100644 --- a/src/main/java/com/extendedae_plus/wireless/WirelessSlaveLink.java +++ b/src/main/java/com/extendedae_plus/wireless/WirelessSlaveLink.java @@ -4,8 +4,7 @@ import appeng.api.networking.GridHelper; import appeng.api.networking.IGridConnection; import appeng.api.networking.IGridNode; import appeng.me.service.helpers.ConnectionWrapper; -import com.extendedae_plus.config.ModConfig; -import com.extendedae_plus.util.ExtendedAELogger; +import com.extendedae_plus.config.EAEPConfig; import net.minecraft.server.level.ServerLevel; import java.util.Objects; @@ -13,7 +12,7 @@ import java.util.Objects; /** * 从收发器连接器: * - 通过频率查找同维度主收发器; - * - 校验距离(<= ModConfigs.WIRELESS_MAX_RANGE); + * - 校验距离(<= EAEPConfig.WIRELESS_MAX_RANGE); * - 动态创建/销毁 AE2 连接(GridConnection),实现“一主多从”。 */ public class WirelessSlaveLink { @@ -66,12 +65,12 @@ public class WirelessSlaveLink { shutdown = false; distance = 0.0D; - boolean crossDim = ModConfig.WIRELESS_CROSS_DIM_ENABLE.get(); + boolean crossDim = EAEPConfig.WIRELESS_CROSS_DIM_ENABLE.get(); if (master != null && !master.isEndpointRemoved() && (crossDim || master.getServerLevel() == level)) { if (!crossDim) { distance = Math.sqrt(master.getBlockPos().distSqr(host.getBlockPos())); } - double maxRange = ModConfig.WIRELESS_MAX_RANGE.get(); + double maxRange = EAEPConfig.WIRELESS_MAX_RANGE.get(); if (crossDim || distance <= maxRange) { // 保持/建立连接 try { diff --git a/src/main/resources/assets/extendedae_plus/lang/en_us.json b/src/main/resources/assets/extendedae_plus/lang/en_us.json index 7125b57..2224f30 100644 --- a/src/main/resources/assets/extendedae_plus/lang/en_us.json +++ b/src/main/resources/assets/extendedae_plus/lang/en_us.json @@ -32,6 +32,7 @@ "tooltip.extendedae_plus.infinity_biginteger_cell.summon2": "§b—§4A §dUni§cverse §eWith§ain §6A §bSin§5gle §9Point", "tooltip.extendedae_plus.entity_speed_card.multiplier": "Multiplier: %s", "tooltip.extendedae_plus.entity_speed_card.max": "Maximum Effect: %s Times", + "tooltip.extendedae_plus.encode_button.upload_pattern": "\n§a[Ctrl] §7Upload patterns", "block.extendedae_plus.wireless_transceiver": "Wireless Transceiver", "block.extendedae_plus.4x_crafting_accelerator": "4x Crafting Accelerator", @@ -74,20 +75,17 @@ "extendedae_plus.tooltip.frequency": "Frequency: %d", "extendedae_plus.tooltip.master_mode": "Mode: %s", "extendedae_plus.tooltip.locked": "Lock Status: %s", - "tooltip.extendedae_plus.encode_button_description": "\n§a[Ctrl] §7Upload patterns", "screen.extendedae_plus.title": "ExtendedAE Plus Configuration", "config.extendedae_plus": "ExtendedAE Plus", - "extendedae_plus.configuration.common": "Common Configuration", "extendedae_plus.configuration.pageMultiplier": "Pattern Provider Slot Multiplier", "extendedae_plus.configuration.pageMultiplier_with_range": "Pattern Provider Slot Multiplier (1-64)", - "extendedae_plus.configuration.override_ae2wt_picking": "Override AE2WT Picking", + "extendedae_plus.configuration.overrideAE2WTPicking": "Override AE2WT Picking", - "extendedae_plus.configuration.client": "Display Configuration", "extendedae_plus.configuration.showEncoderPatternPlayer": "Show Pattern Encoder Player", "extendedae_plus.configuration.patternTerminalShowSlotsDefault": "Pattern Terminal Show Slots by Default", - "extendedae_plus.configuration.independence_uploading_button": "Independence Upload Button", + "extendedae_plus.configuration.independentUploadingButton": "Independent Upload Button", "extendedae_plus.configuration.ae": "AE2 Configuration", @@ -105,6 +103,7 @@ "extendedae_plus.configuration.entityTickerBlackList": "Entity Ticker Blacklist", "extendedae_plus.configuration.entityTickerMultipliers": "Entity Ticker Extra Cost Multipliers", "extendedae_plus.configuration.prioritizeDiskEnergy": "Prioritize FE energy from disk (requires Applied Flux)", + "extendedae_plus.configuration.needsUploadingCore": "Needs Upload Core", "extendedae_plus.configuration.state_on": "On", "extendedae_plus.configuration.state_off": "Off" diff --git a/src/main/resources/assets/extendedae_plus/lang/zh_cn.json b/src/main/resources/assets/extendedae_plus/lang/zh_cn.json index 329880c..8ccacdf 100644 --- a/src/main/resources/assets/extendedae_plus/lang/zh_cn.json +++ b/src/main/resources/assets/extendedae_plus/lang/zh_cn.json @@ -32,7 +32,7 @@ "tooltip.extendedae_plus.infinity_biginteger_cell.summon2": "§b——§4方§d寸§c之§e间§a, §6自§b有§5千§9寰", "tooltip.extendedae_plus.entity_speed_card.multiplier": "乘数: %s", "tooltip.extendedae_plus.entity_speed_card.max": "最大生效: %s 倍", - "tooltip.extendedae_plus.encode_button_description": "\n§a[Ctrl] §7上传样板", + "tooltip.extendedae_plus.encode_button.upload_pattern": "\n§a[Ctrl] §7上传样板", "block.extendedae_plus.wireless_transceiver": "无线收发器", "block.extendedae_plus.4x_crafting_accelerator": "4x并行处理单元", @@ -79,15 +79,13 @@ "screen.extendedae_plus.title": "ExtendedAE Plus 配置", "config.extendedae_plus": "ExtendedAE Plus", - "extendedae_plus.configuration.common": "通用配置", "extendedae_plus.configuration.pageMultiplier": "扩展样板供应器槽位倍率", "extendedae_plus.configuration.pageMultiplier_with_range": "扩展样板供应器槽位倍率 (1-64)", - "extendedae_plus.configuration.override_ae2wt_picking": "覆盖AE2WT选取", + "extendedae_plus.configuration.overrideAE2WTPicking": "覆盖AE2WT选取", - "extendedae_plus.configuration.client": "显示配置", "extendedae_plus.configuration.showEncoderPatternPlayer": "显示样板编码玩家", "extendedae_plus.configuration.patternTerminalShowSlotsDefault": "样板终端默认显示槽位", - "extendedae_plus.configuration.independence_uploading_button": "独立上传按钮", + "extendedae_plus.configuration.independentUploadingButton": "独立上传按钮", "extendedae_plus.configuration.ae": "AE2配置", "extendedae_plus.configuration.craftingPauseThreshold": "AE合成计算暂停检查阈值", @@ -104,6 +102,7 @@ "extendedae_plus.configuration.entityTickerBlackList": "实体加速器黑名单", "extendedae_plus.configuration.entityTickerMultipliers": "实体加速器额外消耗倍率", "extendedae_plus.configuration.prioritizeDiskEnergy": "优先从磁盘提取FE能量(仅当Applied Flux模组存在时生效)", + "extendedae_plus.configuration.needsUploadingCore": "需要装配矩阵上传核心", "extendedae_plus.configuration.state_on": "开", "extendedae_plus.configuration.state_off": "关"