From 6d985fac2ae71f5882807d101a68ea8597c26dd6 Mon Sep 17 00:00:00 2001 From: C-H716 <1536152356@qq.com> Date: Wed, 5 Nov 2025 18:40:50 +0800 Subject: [PATCH 1/9] =?UTF-8?q?mods.toml=E8=A1=A5=E5=85=A8=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/META-INF/mods.toml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index a2b2e77..3b88a4f 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -1,13 +1,14 @@ modLoader = "javafml" loaderVersion = "[47,)" -#issueTrackerURL = "" license = "LGPL-3.0-or-later" [[mods]] modId = "extendedae_plus" +displayURL="https://github.com/GaLicn/ExtendedAE_Plus" +issueTrackerURL = "https://github.com/GaLicn/ExtendedAE_Plus/issues" version = "${version}" displayName = "ExtendedAE Plus" -authors = "GaLi" +authors = "GaLi, C-H716" description = "Add more practical features and auxiliary operations to the Applied Energistics 2 mod" logoFile = "extendedae_plus.png" From 814f0f7bbc2ba5953348e732e9007953c6d02320 Mon Sep 17 00:00:00 2001 From: C-H716 <1536152356@qq.com> Date: Wed, 5 Nov 2025 19:30:16 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0094f20..b3a5e47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,42 @@ ## [Unreleased] +## [1.4.5] / [未发布] + +### Added / 新增 +- 全新的智能倍增,极端情况下(合成深度 > 100万)不再造成由本模组引起的AE2计算合成树时数据包过大 + - Completely revamped Smart Multiplication, now prevents excessively large data packets caused by this mod when AE2 calculates crafting trees in extreme scenarios (crafting depth > 1 million) +- 添加智能倍增对AAE高级处理样板的支持 + - Added Smart Multiplication support for AAE Advanced Processing Patterns +- 添加单独供应器翻倍限制,可以设置单样物品发配数量上限(具体例子查看GuideME中的介绍) + - Added individual provider doubling limit, allowing to set the maximum distribution quantity per item type (see the GuideME for specific examples) +- 添加本模组的GuideME介绍 + - Added GuideME introduction for this mod +- 添加上传样板列表自然排序功能 + - Added natural sorting functionality for the upload pattern list +- 添加合成计划字节数显示的格式化功能 + - Added formatted display for crafting plan byte count + +### Changed / 变更 +- 调整实体加速器模型 + - Adjusted Entity Accelerator model +- 优化实体加速器性能 + - Optimized Entity Accelerator performance +- 调整接口倍增按钮位置 + - Adjusted the position of the interface multiplication button +- 去除智能倍增最小收益因子配置项 + - Removed the minimum benefit factor configuration option for Smart Multiplication +- 添加对MAE2版本的限制 + - Added version restrictions for MAE2 +- 为部分文本添加翻译键支持,改善国际化体验 + - Added translation key support for some previously hardcoded text, improving internationalization experience + +### Fixed / 修复 +- 修复供应器高亮在服务器中不显示的问题 + - Fixed the issue where provider highlighting was not displayed on servers +- 修复上传核心挖掘无掉落物和加速的问题 + - Fixed the issue where the upload core had no drops and acceleration when mined + ## [1.4.4] ### Added / 新增 - 实体加速器支持对 AppliedFlux 存储电量的扣除 From 80b9e4ebbd2e33d947bbb504d5ad9c823c6f2f0d Mon Sep 17 00:00:00 2001 From: C-H716 <1536152356@qq.com> Date: Wed, 5 Nov 2025 19:37:22 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=97=A0=E7=BA=BF?= =?UTF-8?q?=E6=94=B6=E5=8F=91=E5=99=A8=E7=9A=84tooltips=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wireless/WirelessTransceiverBlock.java | 30 ++++++++++--------- .../assets/extendedae_plus/lang/en_us.json | 12 +++++++- .../assets/extendedae_plus/lang/zh_cn.json | 12 +++++++- 3 files changed, 38 insertions(+), 16 deletions(-) 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 8041566..55fda89 100644 --- a/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlock.java +++ b/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlock.java @@ -50,18 +50,18 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock { BlockEntity be = level.getBlockEntity(pos); if (be instanceof WirelessTransceiverBlockEntity te) { ItemStack mainHand = player.getMainHandItem(); - + // 潜行左键频道卡:写入频道卡信息到收发器 if (player.isShiftKeyDown() && mainHand.getItem() == ModItems.CHANNEL_CARD.get()) { handleChannelCardBinding(te, mainHand, player); super.attack(state, level, pos, player); return; } - + // 潜行左键(其他物品):减频(-1 或 -10) if (player.isShiftKeyDown()) { if (te.isLocked()) { - player.displayClientMessage(Component.literal("收发器已锁定,无法修改频道"), true); + player.displayClientMessage(Component.translatable("extendedae_plus.tooltips.wireless.transceiver_locked"), true); super.attack(state, level, pos, player); return; } @@ -72,31 +72,32 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock { f -= step; if (f < 0) f = 0; te.setFrequency(f); - player.displayClientMessage(Component.literal("频道:" + te.getFrequency()), true); + player.displayClientMessage(Component.translatable("extendedae_plus.tooltips.wireless.channel", te.getFrequency()), true); } } } super.attack(state, level, pos, player); } - + /** * 处理频道卡绑定到收发器 */ private void handleChannelCardBinding(WirelessTransceiverBlockEntity te, ItemStack channelCard, Player player) { UUID cardOwner = ChannelCardItem.getOwnerUUID(channelCard); - + if (cardOwner != null) { // 写入频道卡的所有者到收发器 String teamName = ChannelCardItem.getTeamName(channelCard); te.setPlacerId(cardOwner, teamName); + String displayName = teamName != null ? teamName : cardOwner.toString().substring(0, 8); player.displayClientMessage( - Component.literal("已将收发器绑定至:" + (teamName != null ? teamName : cardOwner.toString().substring(0, 8))), - true + Component.translatable("extendedae_plus.tooltips.wireless.bound_to", displayName), + true ); } else { // 频道卡未绑定所有者,使用当前玩家 te.setPlacerId(player.getUUID(), player.getName().getString()); - player.displayClientMessage(Component.literal("频道卡未绑定,已使用当前玩家"), true); + player.displayClientMessage(Component.translatable("extendedae_plus.tooltips.wireless.card_unbound_using_player"), true); } } @@ -110,7 +111,7 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock { boolean sneaking = player.isShiftKeyDown(); if (sneaking) { if (te.isLocked()) { - player.displayClientMessage(Component.literal("收发器已锁定,无法修改频道"), true); + player.displayClientMessage(Component.translatable("extendedae_plus.tooltips.wireless.transceiver_locked"), true); return InteractionResult.CONSUME; } // 频率调节:主手 +1(或 +10),副手 -1(或 -10) @@ -127,14 +128,15 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock { if (f < 0) f = 0; } te.setFrequency(f); - player.displayClientMessage(Component.literal("频道:" + te.getFrequency()), true); + player.displayClientMessage(Component.translatable("extendedae_plus.tooltips.wireless.channel", te.getFrequency()), true); } else { if (te.isLocked()) { - player.displayClientMessage(Component.literal("收发器已锁定,无法切换模式"), true); + player.displayClientMessage(Component.translatable("extendedae_plus.tooltips.wireless.transceiver_locked"), true); return InteractionResult.CONSUME; } te.setMasterMode(!te.isMasterMode()); - player.displayClientMessage(Component.literal(te.isMasterMode() ? "模式:主端" : "模式:从端"), true); + String modeKey = te.isMasterMode() ? "extendedae_plus.tooltips.wireless.mode_master" : "extendedae_plus.tooltips.wireless.mode_slave"; + player.displayClientMessage(Component.translatable("extendedae_plus.tooltips.wireless.mode", Component.translatable(modeKey)), true); } return InteractionResult.CONSUME; } @@ -159,4 +161,4 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock { ? (lvl, pos, st, be) -> WirelessTransceiverBlockEntity.serverTick(lvl, pos, st, (WirelessTransceiverBlockEntity) be) : null; } -} +} \ No newline at end of file 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 a23fd44..e84867f 100644 --- a/src/main/resources/assets/extendedae_plus/lang/en_us.json +++ b/src/main/resources/assets/extendedae_plus/lang/en_us.json @@ -142,5 +142,15 @@ "group.pattern_provider.name": "Pattern Provider", "group.entity_ticker.name": "Entity Accelerator", - "group.storage.name": "StorageBus" + "group.storage.name": "StorageBus", + + + + "extendedae_plus.tooltips.wireless.transceiver_locked": "Transceiver locked, cannot modify", + "extendedae_plus.tooltips.wireless.channel": "Channel: %s", + "extendedae_plus.tooltips.wireless.bound_to": "Transceiver bound to: %s", + "extendedae_plus.tooltips.wireless.card_unbound_using_player": "Channel card unbound, using current player", + "extendedae_plus.tooltips.wireless.mode": "Mode: %s", + "extendedae_plus.tooltips.wireless.mode_master": "Master", + "extendedae_plus.tooltips.wireless.mode_slave": "Slave" } \ No newline at end of file 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 7d16255..ef16ccc 100644 --- a/src/main/resources/assets/extendedae_plus/lang/zh_cn.json +++ b/src/main/resources/assets/extendedae_plus/lang/zh_cn.json @@ -142,5 +142,15 @@ "group.pattern_provider.name": "样板供应器", "group.entity_ticker.name": "实体加速器", - "group.storage.name": "存储总线" + "group.storage.name": "存储总线", + + + + "extendedae_plus.tooltips.wireless.transceiver_locked": "收发器已锁定,无法修改", + "extendedae_plus.tooltips.wireless.channel": "频道:%s", + "extendedae_plus.tooltips.wireless.bound_to": "已将收发器绑定至:%s", + "extendedae_plus.tooltips.wireless.card_unbound_using_player": "频道卡未绑定,已使用当前玩家", + "extendedae_plus.tooltips.wireless.mode": "模式:%s", + "extendedae_plus.tooltips.wireless.mode_master": "主端", + "extendedae_plus.tooltips.wireless.mode_slave": "从端" } \ No newline at end of file From 12463d80f64dd80496bfd822373015fc131e6a6d Mon Sep 17 00:00:00 2001 From: C-H716 <1536152356@qq.com> Date: Wed, 5 Nov 2025 20:21:05 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=97=A0=E7=BA=BF?= =?UTF-8?q?=E6=94=B6=E5=8F=91=E5=99=A8=E7=9A=84tooltips=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/extendedae_plus/hooks/WrenchHook.java | 3 ++- src/main/resources/assets/extendedae_plus/lang/en_us.json | 6 +++--- src/main/resources/assets/extendedae_plus/lang/zh_cn.json | 6 +++--- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/extendedae_plus/hooks/WrenchHook.java b/src/main/java/com/extendedae_plus/hooks/WrenchHook.java index f5b5520..d8cc677 100644 --- a/src/main/java/com/extendedae_plus/hooks/WrenchHook.java +++ b/src/main/java/com/extendedae_plus/hooks/WrenchHook.java @@ -95,7 +95,8 @@ public final class WrenchHook { boolean newLocked = !te.isLocked(); te.setLocked(newLocked); // 提示玩家 - player.displayClientMessage(Component.literal(newLocked ? "已锁定收发器" : "已解锁收发器"), true); + String translationKey = newLocked ? "extendedae_plus.tooltips.wireless.transceiver_locked_status" : "extendedae_plus.tooltips.wireless.transceiver_unlocked_status"; + player.displayClientMessage(Component.translatable(translationKey), true); // 轻微反馈音效 level.playSound(player, hit.getBlockPos(), SoundEvents.LEVER_CLICK, SoundSource.BLOCKS, 0.5F, newLocked ? 0.6F : 0.9F); 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 e84867f..5c4bb7d 100644 --- a/src/main/resources/assets/extendedae_plus/lang/en_us.json +++ b/src/main/resources/assets/extendedae_plus/lang/en_us.json @@ -144,13 +144,13 @@ "group.entity_ticker.name": "Entity Accelerator", "group.storage.name": "StorageBus", - - "extendedae_plus.tooltips.wireless.transceiver_locked": "Transceiver locked, cannot modify", "extendedae_plus.tooltips.wireless.channel": "Channel: %s", "extendedae_plus.tooltips.wireless.bound_to": "Transceiver bound to: %s", "extendedae_plus.tooltips.wireless.card_unbound_using_player": "Channel card unbound, using current player", "extendedae_plus.tooltips.wireless.mode": "Mode: %s", "extendedae_plus.tooltips.wireless.mode_master": "Master", - "extendedae_plus.tooltips.wireless.mode_slave": "Slave" + "extendedae_plus.tooltips.wireless.mode_slave": "Slave", + "extendedae_plus.tooltips.wireless.transceiver_locked_status": "Transceiver Locked", + "extendedae_plus.tooltips.wireless.transceiver_unlocked_status": "Transceiver Unlocked" } \ No newline at end of file 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 ef16ccc..b41d7c6 100644 --- a/src/main/resources/assets/extendedae_plus/lang/zh_cn.json +++ b/src/main/resources/assets/extendedae_plus/lang/zh_cn.json @@ -144,13 +144,13 @@ "group.entity_ticker.name": "实体加速器", "group.storage.name": "存储总线", - - "extendedae_plus.tooltips.wireless.transceiver_locked": "收发器已锁定,无法修改", "extendedae_plus.tooltips.wireless.channel": "频道:%s", "extendedae_plus.tooltips.wireless.bound_to": "已将收发器绑定至:%s", "extendedae_plus.tooltips.wireless.card_unbound_using_player": "频道卡未绑定,已使用当前玩家", "extendedae_plus.tooltips.wireless.mode": "模式:%s", "extendedae_plus.tooltips.wireless.mode_master": "主端", - "extendedae_plus.tooltips.wireless.mode_slave": "从端" + "extendedae_plus.tooltips.wireless.mode_slave": "从端", + "extendedae_plus.tooltips.wireless.transceiver_locked_status": "已锁定收发器", + "extendedae_plus.tooltips.wireless.transceiver_unlocked_status": "已解锁收发器" } \ No newline at end of file From 5f8e2647b28f1fe09aabbda9ac1033b2fdfbe173 Mon Sep 17 00:00:00 2001 From: C-H716 <1536152356@qq.com> Date: Wed, 5 Nov 2025 21:29:20 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E6=B7=BB=E5=8A=A0jade=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E7=BF=BB=E8=AF=91=E9=94=AE=EF=BC=9B=E8=B0=83=E6=95=B4=E6=97=A0?= =?UTF-8?q?=E7=BA=BF=E6=94=B6=E5=8F=91=E5=99=A8=E7=9A=84tooltips=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wireless/WirelessTransceiverBlock.java | 18 ++--- .../com/extendedae_plus/hooks/WrenchHook.java | 2 +- ...relessTransceiverJadePluginComponents.java | 33 +++++----- .../assets/extendedae_plus/lang/en_us.json | 65 ++++++++++--------- .../assets/extendedae_plus/lang/zh_cn.json | 63 ++++++++++-------- 5 files changed, 100 insertions(+), 81 deletions(-) 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 55fda89..0e3dd0b 100644 --- a/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlock.java +++ b/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlock.java @@ -61,7 +61,7 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock { // 潜行左键(其他物品):减频(-1 或 -10) if (player.isShiftKeyDown()) { if (te.isLocked()) { - player.displayClientMessage(Component.translatable("extendedae_plus.tooltips.wireless.transceiver_locked"), true); + player.displayClientMessage(Component.translatable("extendedae_plus.chat.wireless_transceiver.locked"), true); super.attack(state, level, pos, player); return; } @@ -72,7 +72,7 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock { f -= step; if (f < 0) f = 0; te.setFrequency(f); - player.displayClientMessage(Component.translatable("extendedae_plus.tooltips.wireless.channel", te.getFrequency()), true); + player.displayClientMessage(Component.translatable("extendedae_plus.chat.wireless_transceiver.channel", te.getFrequency()), true); } } } @@ -91,13 +91,13 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock { te.setPlacerId(cardOwner, teamName); String displayName = teamName != null ? teamName : cardOwner.toString().substring(0, 8); player.displayClientMessage( - Component.translatable("extendedae_plus.tooltips.wireless.bound_to", displayName), + Component.translatable("extendedae_plus.chat.wireless_transceiver.bound_to", displayName), true ); } else { // 频道卡未绑定所有者,使用当前玩家 te.setPlacerId(player.getUUID(), player.getName().getString()); - player.displayClientMessage(Component.translatable("extendedae_plus.tooltips.wireless.card_unbound_using_player"), true); + player.displayClientMessage(Component.translatable("extendedae_plus.chat.wireless_transceiver.card_unbound"), true); } } @@ -111,7 +111,7 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock { boolean sneaking = player.isShiftKeyDown(); if (sneaking) { if (te.isLocked()) { - player.displayClientMessage(Component.translatable("extendedae_plus.tooltips.wireless.transceiver_locked"), true); + player.displayClientMessage(Component.translatable("extendedae_plus.chat.wireless_transceiver.locked"), true); return InteractionResult.CONSUME; } // 频率调节:主手 +1(或 +10),副手 -1(或 -10) @@ -128,15 +128,15 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock { if (f < 0) f = 0; } te.setFrequency(f); - player.displayClientMessage(Component.translatable("extendedae_plus.tooltips.wireless.channel", te.getFrequency()), true); + player.displayClientMessage(Component.translatable("extendedae_plus.chat.wireless_transceiver.channel", te.getFrequency()), true); } else { if (te.isLocked()) { - player.displayClientMessage(Component.translatable("extendedae_plus.tooltips.wireless.transceiver_locked"), true); + player.displayClientMessage(Component.translatable("extendedae_plus.chat.wireless_transceiver.locked"), true); return InteractionResult.CONSUME; } te.setMasterMode(!te.isMasterMode()); - String modeKey = te.isMasterMode() ? "extendedae_plus.tooltips.wireless.mode_master" : "extendedae_plus.tooltips.wireless.mode_slave"; - player.displayClientMessage(Component.translatable("extendedae_plus.tooltips.wireless.mode", Component.translatable(modeKey)), true); + String modeKey = te.isMasterMode() ? "extendedae_plus.chat.wireless_transceiver.mode_master" : "extendedae_plus.chat.wireless_transceiver.mode_slave"; + player.displayClientMessage(Component.translatable("extendedae_plus.chat.wireless_transceiver.mode", Component.translatable(modeKey)), true); } return InteractionResult.CONSUME; } diff --git a/src/main/java/com/extendedae_plus/hooks/WrenchHook.java b/src/main/java/com/extendedae_plus/hooks/WrenchHook.java index d8cc677..92654ff 100644 --- a/src/main/java/com/extendedae_plus/hooks/WrenchHook.java +++ b/src/main/java/com/extendedae_plus/hooks/WrenchHook.java @@ -95,7 +95,7 @@ public final class WrenchHook { boolean newLocked = !te.isLocked(); te.setLocked(newLocked); // 提示玩家 - String translationKey = newLocked ? "extendedae_plus.tooltips.wireless.transceiver_locked_status" : "extendedae_plus.tooltips.wireless.transceiver_unlocked_status"; + String translationKey = newLocked ? "extendedae_plus.chat.wireless_transceiver.locked_status" : "extendedae_plus.chat.wireless_transceiver.unlocked_status"; player.displayClientMessage(Component.translatable(translationKey), true); // 轻微反馈音效 level.playSound(player, hit.getBlockPos(), SoundEvents.LEVER_CLICK, SoundSource.BLOCKS, 0.5F, newLocked ? 0.6F : 0.9F); diff --git a/src/main/java/com/extendedae_plus/integration/jade/WirelessTransceiverJadePluginComponents.java b/src/main/java/com/extendedae_plus/integration/jade/WirelessTransceiverJadePluginComponents.java index 3f8f1d4..de8da38 100644 --- a/src/main/java/com/extendedae_plus/integration/jade/WirelessTransceiverJadePluginComponents.java +++ b/src/main/java/com/extendedae_plus/integration/jade/WirelessTransceiverJadePluginComponents.java @@ -18,7 +18,7 @@ public enum WirelessTransceiverJadePluginComponents implements IBlockComponentPr protected void add(BlockAccessor accessor, ITooltip tooltip, IPluginConfig config, CompoundTag data) { if (data.contains("frequency")) { long frequency = data.getLong("frequency"); - tooltip.add(Component.translatable("extendedae_plus.tooltip.frequency", frequency)); + tooltip.add(Component.translatable("extendedae_plus.jade.frequency", frequency)); } } }, @@ -27,7 +27,8 @@ public enum WirelessTransceiverJadePluginComponents implements IBlockComponentPr protected void add(BlockAccessor accessor, ITooltip tooltip, IPluginConfig config, CompoundTag data) { if (data.contains("masterMode")) { boolean masterMode = data.getBoolean("masterMode"); - tooltip.add(Component.translatable("extendedae_plus.tooltip.master_mode", masterMode ? "主模式" : "从模式")); + String modeKey = masterMode ? "extendedae_plus.jade.mode_master" : "extendedae_plus.jade.mode_slave"; + tooltip.add(Component.translatable("extendedae_plus.jade.mode", Component.translatable(modeKey))); } } }, @@ -39,12 +40,14 @@ public enum WirelessTransceiverJadePluginComponents implements IBlockComponentPr String dim = data.contains("masterDim") ? data.getString("masterDim") : ""; String customName = data.contains("customName") ? data.getString("customName") : null; if (customName != null) { - tooltip.add(Component.literal("主节点: " + customName + "(" + pos.getX() + ", " + pos.getY() + ", " + pos.getZ() + ")")); + tooltip.add(Component.translatable("extendedae_plus.jade.master_node_with_name", + customName, pos.getX(), pos.getY(), pos.getZ())); } else { - tooltip.add(Component.literal("主节点位置: (" + pos.getX() + ", " + pos.getY() + ", " + pos.getZ() + ")")); + tooltip.add(Component.translatable("extendedae_plus.jade.master_node_location", + pos.getX(), pos.getY(), pos.getZ())); } if (!dim.isEmpty()) { - tooltip.add(Component.literal("维度: " + dim)); + tooltip.add(Component.translatable("extendedae_plus.jade.dimension", dim)); } } } @@ -54,7 +57,8 @@ public enum WirelessTransceiverJadePluginComponents implements IBlockComponentPr protected void add(BlockAccessor accessor, ITooltip tooltip, IPluginConfig config, CompoundTag data) { if (data.contains("locked")) { boolean locked = data.getBoolean("locked"); - tooltip.add(Component.translatable("extendedae_plus.tooltip.locked", locked ? "已锁定" : "未锁定")); + String statusKey = locked ? "extendedae_plus.jade.locked" : "extendedae_plus.jade.unlocked"; + tooltip.add(Component.translatable("extendedae_plus.jade.lock_status", Component.translatable(statusKey))); } } }, @@ -63,7 +67,8 @@ public enum WirelessTransceiverJadePluginComponents implements IBlockComponentPr protected void add(BlockAccessor accessor, ITooltip tooltip, IPluginConfig config, CompoundTag data) { if (data.contains("networkUsable")) { boolean usable = data.getBoolean("networkUsable"); - tooltip.add(Component.literal((usable ? "设备在线" : "设备离线"))); + String statusKey = usable ? "extendedae_plus.jade.online" : "extendedae_plus.jade.offline"; + tooltip.add(Component.translatable(statusKey)); } } }, @@ -76,10 +81,10 @@ public enum WirelessTransceiverJadePluginComponents implements IBlockComponentPr // 参考AE2的显示方式 if (maxChannels <= 0) { // 无限频道或未设置 - tooltip.add(Component.translatable("extendedae_plus.tooltip.channels", usedChannels)); + tooltip.add(Component.translatable("extendedae_plus.jade.channels", usedChannels)); } else { // 显示 "已使用/最大" - tooltip.add(Component.translatable("extendedae_plus.tooltip.channels_of", usedChannels, maxChannels)); + tooltip.add(Component.translatable("extendedae_plus.jade.channels_of", usedChannels, maxChannels)); } } } @@ -89,14 +94,14 @@ public enum WirelessTransceiverJadePluginComponents implements IBlockComponentPr protected void add(BlockAccessor accessor, ITooltip tooltip, IPluginConfig config, CompoundTag data) { if (data.contains("ownerName")) { String ownerName = data.getString("ownerName"); - tooltip.add(Component.translatable("extendedae_plus.tooltip.owner", ownerName)); + tooltip.add(Component.translatable("extendedae_plus.jade.owner", ownerName)); } else if (data.contains("placerId")) { // 有placerId但没有名称,显示UUID java.util.UUID placerId = data.getUUID("placerId"); - tooltip.add(Component.translatable("extendedae_plus.tooltip.owner", placerId.toString().substring(0, 8) + "...")); + tooltip.add(Component.translatable("extendedae_plus.jade.owner", placerId.toString().substring(0, 8) + "...")); } else { // 没有所有者信息(公共收发器) - tooltip.add(Component.translatable("extendedae_plus.tooltip.owner.public")); + tooltip.add(Component.translatable("extendedae_plus.jade.owner.public")); } } }; @@ -120,6 +125,4 @@ public enum WirelessTransceiverJadePluginComponents implements IBlockComponentPr } protected abstract void add(BlockAccessor accessor, ITooltip tooltip, IPluginConfig config, CompoundTag data); -} - - +} \ No newline at end of file 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 5c4bb7d..81e5362 100644 --- a/src/main/resources/assets/extendedae_plus/lang/en_us.json +++ b/src/main/resources/assets/extendedae_plus/lang/en_us.json @@ -87,20 +87,6 @@ "item.extendedae_plus.entity_speed_ticker.tip.max": "Maximum up to 1024x speed", "item.extendedae_plus.entity_speed_ticker.tip.energy": "Acceleration consumes AE network power; insufficient power disables acceleration", - "config.jade.plugin_extendedae_plus.wireless_transceiver_info": "Wireless Transceiver Info", - "config.jade.plugin_extendedae_plus.wt_frequency": "Show Frequency", - "config.jade.plugin_extendedae_plus.wt_master_mode": "Show Master/Slave Mode", - "config.jade.plugin_extendedae_plus.wt_master_location": "Show Master Position", - "config.jade.plugin_extendedae_plus.wt_locked": "Show Locked State", - "config.jade.plugin_extendedae_plus.wt_network_usable": "Show Network Online State", - "config.jade.plugin_extendedae_plus.wt_channels": "Show Channel Usage", - "config.jade.plugin_extendedae_plus.wt_owner": "Show Owner Information", - "extendedae_plus.tooltip.frequency": "Frequency: %d", - "extendedae_plus.tooltip.master_mode": "Mode: %s", - "extendedae_plus.tooltip.locked": "Locked: %s", - "extendedae_plus.tooltip.channels": "Channels: %d", - "extendedae_plus.tooltip.channels_of": "Channels: %d / %d", - "config.screen.extendedae_plus": "ExtendedAE Plus Config", "config.extendedae_plus.option.pageMultiplier": "Pattern Provider Page Multiplier", "config.extendedae_plus.option.pageMultiplier_with_range": "Pattern Provider Page Multiplier", @@ -130,27 +116,48 @@ "item.extendedae_plus.channel_card.owner.player": "Owner: Player %s", "item.extendedae_plus.channel_card.owner.bound": "Bound to: %s", "item.extendedae_plus.channel_card.owner.cleared": "Owner binding cleared", - - "extendedae_plus.tooltip.owner": "Owner: %s", - "extendedae_plus.tooltip.owner.unset": "Owner: Unset", - "extendedae_plus.tooltip.owner.public": "Owner: Public", - + "extendedae_plus.screen.frequency_input.title": "Set Frequency", "extendedae_plus.screen.frequency_input.current": "Current Frequency: %s", "extendedae_plus.screen.frequency_input.field": "Frequency", "extendedae_plus.screen.frequency_input.confirm": "Confirm", - + "group.pattern_provider.name": "Pattern Provider", "group.entity_ticker.name": "Entity Accelerator", "group.storage.name": "StorageBus", - "extendedae_plus.tooltips.wireless.transceiver_locked": "Transceiver locked, cannot modify", - "extendedae_plus.tooltips.wireless.channel": "Channel: %s", - "extendedae_plus.tooltips.wireless.bound_to": "Transceiver bound to: %s", - "extendedae_plus.tooltips.wireless.card_unbound_using_player": "Channel card unbound, using current player", - "extendedae_plus.tooltips.wireless.mode": "Mode: %s", - "extendedae_plus.tooltips.wireless.mode_master": "Master", - "extendedae_plus.tooltips.wireless.mode_slave": "Slave", - "extendedae_plus.tooltips.wireless.transceiver_locked_status": "Transceiver Locked", - "extendedae_plus.tooltips.wireless.transceiver_unlocked_status": "Transceiver Unlocked" + "extendedae_plus.chat.wireless_transceiver.locked": "Transceiver locked, cannot modify", + "extendedae_plus.chat.wireless_transceiver.channel": "Channel: %s", + "extendedae_plus.chat.wireless_transceiver.bound_to": "Transceiver bound to: %s", + "extendedae_plus.chat.wireless_transceiver.card_unbound": "Channel card unbound, using current player", + "extendedae_plus.chat.wireless_transceiver.mode": "Mode: %s", + "extendedae_plus.chat.wireless_transceiver.mode_master": "Master", + "extendedae_plus.chat.wireless_transceiver.mode_slave": "Slave", + "extendedae_plus.chat.wireless_transceiver.locked_status": "Transceiver Locked", + "extendedae_plus.chat.wireless_transceiver.unlocked_status": "Transceiver Unlocked", + + "config.jade.plugin_extendedae_plus.wireless_transceiver_info": "Wireless Transceiver Info", + "config.jade.plugin_extendedae_plus.wt_frequency": "Show Frequency", + "config.jade.plugin_extendedae_plus.wt_master_mode": "Show Master/Slave Mode", + "config.jade.plugin_extendedae_plus.wt_master_location": "Show Master Position", + "config.jade.plugin_extendedae_plus.wt_locked": "Show Locked State", + "config.jade.plugin_extendedae_plus.wt_network_usable": "Show Network Online State", + "config.jade.plugin_extendedae_plus.wt_channels": "Show Channel Usage", + "config.jade.plugin_extendedae_plus.wt_owner": "Show Owner Information", + "extendedae_plus.jade.frequency": "Frequency: %s", + "extendedae_plus.jade.mode": "Mode: %s", + "extendedae_plus.jade.mode_master": "Master", + "extendedae_plus.jade.mode_slave": "Slave", + "extendedae_plus.jade.master_node_with_name": "Master Node: %s(%s, %s, %s)", + "extendedae_plus.jade.master_node_location": "Master Node Location: (%s, %s, %s)", + "extendedae_plus.jade.dimension": "Dimension: %s", + "extendedae_plus.jade.lock_status": "Lock Status: %s", + "extendedae_plus.jade.locked": "Locked", + "extendedae_plus.jade.unlocked": "Unlocked", + "extendedae_plus.jade.online": "Device Online", + "extendedae_plus.jade.offline": "Device Offline", + "extendedae_plus.jade.channels": "Channels: %s", + "extendedae_plus.jade.channels_of": "Channels: %s/%s", + "extendedae_plus.jade.owner": "Owner: %s", + "extendedae_plus.jade.owner.public": "Owner: Public" } \ No newline at end of file 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 b41d7c6..95564ef 100644 --- a/src/main/resources/assets/extendedae_plus/lang/zh_cn.json +++ b/src/main/resources/assets/extendedae_plus/lang/zh_cn.json @@ -87,19 +87,7 @@ "item.extendedae_plus.entity_speed_ticker.tip.max": "最高可达 1024x 加速", "item.extendedae_plus.entity_speed_ticker.tip.energy": "加速将消耗 AE 网络能量,网络能量不足时无法加速", - "config.jade.plugin_extendedae_plus.wireless_transceiver_info": "无线收发器信息", - "config.jade.plugin_extendedae_plus.wt_frequency": "显示频率", - "config.jade.plugin_extendedae_plus.wt_master_mode": "显示主/从模式", - "config.jade.plugin_extendedae_plus.wt_master_location": "显示主节点位置", - "config.jade.plugin_extendedae_plus.wt_locked": "显示锁定状态", - "config.jade.plugin_extendedae_plus.wt_network_usable": "显示网络在线状态", - "config.jade.plugin_extendedae_plus.wt_channels": "显示频道使用情况", - "config.jade.plugin_extendedae_plus.wt_owner": "显示所有者信息", - "extendedae_plus.tooltip.frequency": "频率: %d", - "extendedae_plus.tooltip.master_mode": "模式: %s", - "extendedae_plus.tooltip.locked": "锁定状态: %s", - "extendedae_plus.tooltip.channels": "频道: %d", - "extendedae_plus.tooltip.channels_of": "频道: %d / %d", + "config.screen.extendedae_plus": "ExtendedAE Plus 配置", "config.extendedae_plus.option.pageMultiplier": "扩展样板供应器槽位倍率", @@ -130,11 +118,7 @@ "item.extendedae_plus.channel_card.owner.player": "所有者:玩家 %s", "item.extendedae_plus.channel_card.owner.bound": "已绑定至:%s", "item.extendedae_plus.channel_card.owner.cleared": "已清除所有者绑定", - - "extendedae_plus.tooltip.owner": "所有者: %s", - "extendedae_plus.tooltip.owner.unset": "所有者: 未设置", - "extendedae_plus.tooltip.owner.public": "所有者: 公共", - + "extendedae_plus.screen.frequency_input.title": "设置频率", "extendedae_plus.screen.frequency_input.current": "当前频率:%s", "extendedae_plus.screen.frequency_input.field": "频率", @@ -144,13 +128,38 @@ "group.entity_ticker.name": "实体加速器", "group.storage.name": "存储总线", - "extendedae_plus.tooltips.wireless.transceiver_locked": "收发器已锁定,无法修改", - "extendedae_plus.tooltips.wireless.channel": "频道:%s", - "extendedae_plus.tooltips.wireless.bound_to": "已将收发器绑定至:%s", - "extendedae_plus.tooltips.wireless.card_unbound_using_player": "频道卡未绑定,已使用当前玩家", - "extendedae_plus.tooltips.wireless.mode": "模式:%s", - "extendedae_plus.tooltips.wireless.mode_master": "主端", - "extendedae_plus.tooltips.wireless.mode_slave": "从端", - "extendedae_plus.tooltips.wireless.transceiver_locked_status": "已锁定收发器", - "extendedae_plus.tooltips.wireless.transceiver_unlocked_status": "已解锁收发器" + "extendedae_plus.chat.wireless_transceiver.locked": "收发器已锁定,无法修改", + "extendedae_plus.chat.wireless_transceiver.channel": "频道:%s", + "extendedae_plus.chat.wireless_transceiver.bound_to": "已将收发器绑定至:%s", + "extendedae_plus.chat.wireless_transceiver.card_unbound": "频道卡未绑定,已使用当前玩家", + "extendedae_plus.chat.wireless_transceiver.mode": "模式:%s", + "extendedae_plus.chat.wireless_transceiver.mode_master": "主端", + "extendedae_plus.chat.wireless_transceiver.mode_slave": "从端", + "extendedae_plus.chat.wireless_transceiver.locked_status": "已锁定收发器", + "extendedae_plus.chat.wireless_transceiver.unlocked_status": "已解锁收发器", + + "config.jade.plugin_extendedae_plus.wireless_transceiver_info": "无线收发器信息", + "config.jade.plugin_extendedae_plus.wt_frequency": "显示频率", + "config.jade.plugin_extendedae_plus.wt_master_mode": "显示主/从模式", + "config.jade.plugin_extendedae_plus.wt_master_location": "显示主节点位置", + "config.jade.plugin_extendedae_plus.wt_locked": "显示锁定状态", + "config.jade.plugin_extendedae_plus.wt_network_usable": "显示网络在线状态", + "config.jade.plugin_extendedae_plus.wt_channels": "显示频道使用情况", + "config.jade.plugin_extendedae_plus.wt_owner": "显示所有者信息", + "extendedae_plus.jade.frequency": "频率: %s", + "extendedae_plus.jade.mode": "模式: %s", + "extendedae_plus.jade.mode_master": "主模式", + "extendedae_plus.jade.mode_slave": "从模式", + "extendedae_plus.jade.master_node_with_name": "主节点: %s(%s, %s, %s)", + "extendedae_plus.jade.master_node_location": "主节点位置: (%s, %s, %s)", + "extendedae_plus.jade.dimension": "维度: %s", + "extendedae_plus.jade.lock_status": "锁定状态: %s", + "extendedae_plus.jade.locked": "已锁定", + "extendedae_plus.jade.unlocked": "未锁定", + "extendedae_plus.jade.online": "设备在线", + "extendedae_plus.jade.offline": "设备离线", + "extendedae_plus.jade.channels": "频道: %s", + "extendedae_plus.jade.channels_of": "频道: %s/%s", + "extendedae_plus.jade.owner": "所有者: %s", + "extendedae_plus.jade.owner.public": "所有者: 公共" } \ No newline at end of file From 19cf58a7e49532f68b892beb21c67ee5bfc7286b Mon Sep 17 00:00:00 2001 From: C-H716 <1536152356@qq.com> Date: Wed, 5 Nov 2025 22:04:45 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=99=BA=E8=83=BD?= =?UTF-8?q?=E7=B3=BB=E5=88=97=E3=80=81=E5=AE=9E=E4=BD=93=E5=8A=A0=E9=80=9F?= =?UTF-8?q?=E5=99=A8=E6=8C=89=E9=92=AE=E7=BF=BB=E8=AF=91=E9=94=AE;?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=97=A0=E7=BA=BF=E6=94=B6=E5=8F=91=E5=99=A8?= =?UTF-8?q?jade=E6=98=BE=E7=A4=BA=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ae/screen/EntitySpeedTickerScreen.java | 10 +++++----- ...relessTransceiverJadePluginComponents.java | 20 +++++++++---------- .../gui/AdvPatternProviderScreenMixin.java | 14 ++++++------- .../SmallAdvPatternProviderScreenMixin.java | 14 ++++++------- .../PatternProviderSmartFeaturesMixin.java | 14 ++++++------- .../assets/extendedae_plus/lang/en_us.json | 13 ++++++++++++ .../assets/extendedae_plus/lang/zh_cn.json | 15 ++++++++++++-- 7 files changed, 62 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/extendedae_plus/ae/screen/EntitySpeedTickerScreen.java b/src/main/java/com/extendedae_plus/ae/screen/EntitySpeedTickerScreen.java index 7a4a169..a635aa2 100644 --- a/src/main/java/com/extendedae_plus/ae/screen/EntitySpeedTickerScreen.java +++ b/src/main/java/com/extendedae_plus/ae/screen/EntitySpeedTickerScreen.java @@ -49,15 +49,15 @@ public class EntitySpeedTickerScreen extends Up public List getTooltipMessage() { if (menu.targetBlacklisted) { return List.of( - Component.literal("实体加速"), - Component.literal("已禁用(目标在黑名单)") + Component.translatable("extendedae_plus.gui.entity_acceleration.title"), + Component.translatable("extendedae_plus.gui.entity_acceleration.blacklisted") ); } boolean enabled = eap$entitySpeedTickerEnabled; return List.of( - Component.literal("实体加速"), - enabled ? Component.literal("已启用: 将加速目标方块实体的tick") : - Component.literal("已关闭: 不会对目标方块实体进行加速") + Component.translatable("extendedae_plus.gui.entity_acceleration.title"), + enabled ? Component.translatable("extendedae_plus.gui.entity_acceleration.enabled") : + Component.translatable("extendedae_plus.gui.entity_acceleration.disabled") ); } diff --git a/src/main/java/com/extendedae_plus/integration/jade/WirelessTransceiverJadePluginComponents.java b/src/main/java/com/extendedae_plus/integration/jade/WirelessTransceiverJadePluginComponents.java index de8da38..e73ce96 100644 --- a/src/main/java/com/extendedae_plus/integration/jade/WirelessTransceiverJadePluginComponents.java +++ b/src/main/java/com/extendedae_plus/integration/jade/WirelessTransceiverJadePluginComponents.java @@ -62,16 +62,6 @@ public enum WirelessTransceiverJadePluginComponents implements IBlockComponentPr } } }, - NETWORK_USABLE("wt_network_usable") { - @Override - protected void add(BlockAccessor accessor, ITooltip tooltip, IPluginConfig config, CompoundTag data) { - if (data.contains("networkUsable")) { - boolean usable = data.getBoolean("networkUsable"); - String statusKey = usable ? "extendedae_plus.jade.online" : "extendedae_plus.jade.offline"; - tooltip.add(Component.translatable(statusKey)); - } - } - }, CHANNELS("wt_channels") { @Override protected void add(BlockAccessor accessor, ITooltip tooltip, IPluginConfig config, CompoundTag data) { @@ -104,6 +94,16 @@ public enum WirelessTransceiverJadePluginComponents implements IBlockComponentPr tooltip.add(Component.translatable("extendedae_plus.jade.owner.public")); } } + }, + NETWORK_USABLE("wt_network_usable") { + @Override + protected void add(BlockAccessor accessor, ITooltip tooltip, IPluginConfig config, CompoundTag data) { + if (data.contains("networkUsable")) { + boolean usable = data.getBoolean("networkUsable"); + String statusKey = usable ? "extendedae_plus.jade.online" : "extendedae_plus.jade.offline"; + tooltip.add(Component.translatable(statusKey)); + } + } }; private final ResourceLocation uid; diff --git a/src/main/java/com/extendedae_plus/mixin/advancedae/client/gui/AdvPatternProviderScreenMixin.java b/src/main/java/com/extendedae_plus/mixin/advancedae/client/gui/AdvPatternProviderScreenMixin.java index 5d46e1b..71429ef 100644 --- a/src/main/java/com/extendedae_plus/mixin/advancedae/client/gui/AdvPatternProviderScreenMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/advancedae/client/gui/AdvPatternProviderScreenMixin.java @@ -79,10 +79,10 @@ public abstract class AdvPatternProviderScreenMixin extends AEBaseScreen ModNetwork.CHANNEL.sendToServer(new ToggleAdvancedBlockingC2SPacket()), () -> { - var t = Component.literal("智能阻挡"); + var t = Component.translatable("extendedae_plus.gui.advanced_blocking.title"); var line = eap$AdvancedBlockingEnabled - ? Component.literal("已启用:对于同一种配方将不再阻挡 (需要启用原版阻挡模式)") - : Component.literal("已禁用:建议开启以获得更智能的阻挡行为"); + ? Component.translatable("extendedae_plus.gui.advanced_blocking.enabled_desc") + : Component.translatable("extendedae_plus.gui.advanced_blocking.disabled_desc"); return List.of(t, line); } ); @@ -94,10 +94,10 @@ public abstract class AdvPatternProviderScreenMixin extends AEBaseScreen ModNetwork.CHANNEL.sendToServer(new ToggleSmartDoublingC2SPacket()), () -> { - var t = Component.literal("智能翻倍"); + var t = Component.translatable("extendedae_plus.gui.smart_doubling.title"); var line = eap$SmartDoublingEnabled - ? Component.literal("已启用:根据请求量对处理样板进行智能缩放") - : Component.literal("已禁用:按原始样板数量进行发配"); + ? Component.translatable("extendedae_plus.gui.smart_doubling.enabled_desc") + : Component.translatable("extendedae_plus.gui.smart_doubling.disabled_desc"); return List.of(t, line); } ); @@ -186,7 +186,7 @@ public abstract class AdvPatternProviderScreenMixin extends AEBaseScreen ModNetwork.CHANNEL.sendToServer(new ToggleAdvancedBlockingC2SPacket()), () -> { - var t = Component.literal("智能阻挡"); + var t = Component.translatable("extendedae_plus.gui.advanced_blocking.title"); var line = eap$AdvancedBlockingEnabled - ? Component.literal("已启用:对于同一种配方将不再阻挡 (需要启用原版阻挡模式)") - : Component.literal("已禁用:建议开启以获得更智能的阻挡行为"); + ? Component.translatable("extendedae_plus.gui.advanced_blocking.enabled_desc") + : Component.translatable("extendedae_plus.gui.advanced_blocking.disabled_desc"); return List.of(t, line); } ); @@ -95,10 +95,10 @@ public abstract class SmallAdvPatternProviderScreenMixin extends AEBaseScreen ModNetwork.CHANNEL.sendToServer(new ToggleSmartDoublingC2SPacket()), () -> { - var t = Component.literal("智能翻倍"); + var t = Component.translatable("extendedae_plus.gui.smart_doubling.title"); var line = eap$SmartDoublingEnabled - ? Component.literal("已启用:根据请求量对处理样板进行智能缩放") - : Component.literal("已禁用:按原始样板数量进行发配"); + ? Component.translatable("extendedae_plus.gui.smart_doubling.enabled_desc") + : Component.translatable("extendedae_plus.gui.smart_doubling.disabled_desc"); return List.of(t, line); } ); @@ -187,7 +187,7 @@ public abstract class SmallAdvPatternProviderScreenMixin extends AEBaseScreen ModNetwork.CHANNEL.sendToServer(new ToggleAdvancedBlockingC2SPacket()), () -> { - var t = Component.literal("智能阻挡"); + var t = Component.translatable("extendedae_plus.gui.advanced_blocking.title"); var line = eap$AdvancedBlockingEnabled - ? Component.literal("已启用:对于同一种配方将不再阻挡 (需要启用原版阻挡模式)") - : Component.literal("已禁用:建议开启以获得更智能的阻挡行为"); + ? Component.translatable("extendedae_plus.gui.advanced_blocking.enabled_desc") + : Component.translatable("extendedae_plus.gui.advanced_blocking.disabled_desc"); return List.of(t, line); } ); @@ -97,10 +97,10 @@ public abstract class PatternProviderSmartFeaturesMixin ModNetwork.CHANNEL.sendToServer(new ToggleSmartDoublingC2SPacket()), () -> { - var t = Component.literal("智能翻倍"); + var t = Component.translatable("extendedae_plus.gui.smart_doubling.title"); var line = eap$SmartDoublingEnabled - ? Component.literal("已启用:根据请求量对处理样板进行智能缩放") - : Component.literal("已禁用:按原始样板数量进行发配"); + ? Component.translatable("extendedae_plus.gui.smart_doubling.enabled_desc") + : Component.translatable("extendedae_plus.gui.smart_doubling.disabled_desc"); return List.of(t, line); } ); @@ -190,7 +190,7 @@ public abstract class PatternProviderSmartFeaturesMixin Date: Wed, 5 Nov 2025 22:54:02 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=97=A0=E7=BA=BF?= =?UTF-8?q?=E6=94=B6=E5=8F=91=E5=99=A8=E9=A2=91=E9=81=93=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E3=80=81=E6=A0=B7=E6=9D=BF=E4=BE=9B=E5=BA=94=E5=99=A8=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=8E=A7=E5=88=B6=E6=8F=90=E7=A4=BA=E3=80=81=E6=98=A0?= =?UTF-8?q?=E5=B0=84=E6=96=87=E4=BB=B6=E3=80=81=E5=91=BD=E4=BB=A4=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SetWirelessFrequencyC2SPacket.java | 28 +++++++++---------- .../GlobalToggleProviderModesC2SPacket.java | 3 +- .../util/command/InfinityDiskGiveCommand.java | 14 ++++------ .../uploadPattern/RecipeTypeNameConfig.java | 5 ++-- .../assets/extendedae_plus/lang/en_us.json | 11 +++++++- .../assets/extendedae_plus/lang/zh_cn.json | 11 +++++++- 6 files changed, 43 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/extendedae_plus/network/SetWirelessFrequencyC2SPacket.java b/src/main/java/com/extendedae_plus/network/SetWirelessFrequencyC2SPacket.java index 31413a5..e229693 100644 --- a/src/main/java/com/extendedae_plus/network/SetWirelessFrequencyC2SPacket.java +++ b/src/main/java/com/extendedae_plus/network/SetWirelessFrequencyC2SPacket.java @@ -14,69 +14,69 @@ import java.util.function.Supplier; * 客户端发送到服务端,用于通过输入框设置频率 */ public class SetWirelessFrequencyC2SPacket { - + private final BlockPos pos; private final long frequency; - + public SetWirelessFrequencyC2SPacket(BlockPos pos, long frequency) { this.pos = pos; this.frequency = frequency; } - + public static void encode(SetWirelessFrequencyC2SPacket packet, FriendlyByteBuf buf) { buf.writeBlockPos(packet.pos); buf.writeLong(packet.frequency); } - + public static SetWirelessFrequencyC2SPacket decode(FriendlyByteBuf buf) { BlockPos pos = buf.readBlockPos(); long frequency = buf.readLong(); return new SetWirelessFrequencyC2SPacket(pos, frequency); } - + public static void handle(SetWirelessFrequencyC2SPacket packet, Supplier ctx) { ctx.get().enqueueWork(() -> { ServerPlayer player = ctx.get().getSender(); if (player == null) { return; } - + // 检查方块实体是否存在 var level = player.serverLevel(); if (!level.hasChunkAt(packet.pos)) { return; } - + var blockEntity = level.getBlockEntity(packet.pos); if (!(blockEntity instanceof WirelessTransceiverBlockEntity te)) { return; } - + // 通过GUI设置频率时,忽略锁定状态 // 临时保存锁定状态 boolean wasLocked = te.isLocked(); - + // 临时解锁以允许设置 if (wasLocked) { te.setLocked(false); } - + // 设置频率 long newFreq = packet.frequency; if (newFreq < 0) { newFreq = 0; } te.setFrequency(newFreq); - + // 恢复锁定状态 if (wasLocked) { te.setLocked(true); } - + // 发送反馈消息 player.displayClientMessage( - Component.literal("频道已设置为:" + te.getFrequency()), - true + Component.translatable("extendedae_plus.chat.wireless_transceiver.channel_set", te.getFrequency()), + true ); }); ctx.get().setPacketHandled(true); diff --git a/src/main/java/com/extendedae_plus/network/provider/GlobalToggleProviderModesC2SPacket.java b/src/main/java/com/extendedae_plus/network/provider/GlobalToggleProviderModesC2SPacket.java index 7aab96e..17243e2 100644 --- a/src/main/java/com/extendedae_plus/network/provider/GlobalToggleProviderModesC2SPacket.java +++ b/src/main/java/com/extendedae_plus/network/provider/GlobalToggleProviderModesC2SPacket.java @@ -90,8 +90,7 @@ public class GlobalToggleProviderModesC2SPacket { int affected = applyToAllProviders(grid, msg); // 向发起玩家反馈影响数量,便于判断按钮是否生效 - player.displayClientMessage(Component.literal("E+ 全局切换已应用到 " + affected + " 个样板供应器"), true); - }); + player.displayClientMessage(Component.translatable("extendedae_plus.chat.pattern_provider.global_toggle_applied", affected), true); }); ctx.setPacketHandled(true); } diff --git a/src/main/java/com/extendedae_plus/util/command/InfinityDiskGiveCommand.java b/src/main/java/com/extendedae_plus/util/command/InfinityDiskGiveCommand.java index 399eca1..61e4832 100644 --- a/src/main/java/com/extendedae_plus/util/command/InfinityDiskGiveCommand.java +++ b/src/main/java/com/extendedae_plus/util/command/InfinityDiskGiveCommand.java @@ -31,12 +31,12 @@ public class InfinityDiskGiveCommand { try { ServerPlayer player = source.getPlayerOrException(); if (player.level() == null || !(player.level() instanceof ServerLevel)) { - source.sendFailure(Component.literal("This command must be run on server side.")); + source.sendFailure(Component.translatable("extendedae_plus.command.server_side_only")); return 0; } InfinityStorageManager mgr = ExtendedAEPlus.STORAGE_INSTANCE; if (mgr == null) { - source.sendFailure(Component.literal("InfinityStorageManager is not initialized.")); + source.sendFailure(Component.translatable("extendedae_plus.command.storage_manager_not_initialized")); return 0; } @@ -50,13 +50,11 @@ public class InfinityDiskGiveCommand { given++; } final int finalGiven = given; - source.sendSuccess(() -> Component.literal("Gave " + finalGiven + " infinity disks."), false); + source.sendSuccess(() -> Component.translatable("extendedae_plus.command.gave_infinity_disks", finalGiven), false); return given; } catch (Exception ex) { - source.sendFailure(Component.literal("Error: " + ex.getMessage())); + source.sendFailure(Component.translatable("extendedae_plus.command.error", ex.getMessage())); return 0; - } + } } -} - - +} \ No newline at end of file diff --git a/src/main/java/com/extendedae_plus/util/uploadPattern/RecipeTypeNameConfig.java b/src/main/java/com/extendedae_plus/util/uploadPattern/RecipeTypeNameConfig.java index 37ed1b1..77ae760 100644 --- a/src/main/java/com/extendedae_plus/util/uploadPattern/RecipeTypeNameConfig.java +++ b/src/main/java/com/extendedae_plus/util/uploadPattern/RecipeTypeNameConfig.java @@ -181,8 +181,7 @@ public final class RecipeTypeNameConfig { } return true; } catch (IOException | JsonSyntaxException e) { - sendPlayerMessage(Component.literal("ExtendedAE_Plus: 配置文件更新失败: " + e.getMessage())); - return false; + sendPlayerMessage(Component.translatable("extendedae_plus.message.config_update_failed", e.getMessage())); return false; } } @@ -230,7 +229,7 @@ public final class RecipeTypeNameConfig { } return toRemove.size(); } catch (IOException | JsonSyntaxException e) { - sendPlayerMessage(Component.literal("ExtendedAE_Plus: 配置文件删除失败: " + e.getMessage())); + sendPlayerMessage(Component.translatable("extendedae_plus.message.config_delete_failed", e.getMessage())); return 0; } } 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 a629c02..f30b010 100644 --- a/src/main/resources/assets/extendedae_plus/lang/en_us.json +++ b/src/main/resources/assets/extendedae_plus/lang/en_us.json @@ -148,6 +148,10 @@ "extendedae_plus.chat.wireless_transceiver.mode_slave": "Slave", "extendedae_plus.chat.wireless_transceiver.locked_status": "Transceiver Locked", "extendedae_plus.chat.wireless_transceiver.unlocked_status": "Transceiver Unlocked", + "extendedae_plus.chat.wireless_transceiver.channel_set": "Channel set to: %s", + "extendedae_plus.chat.pattern_provider.global_toggle_applied": "Global toggle applied to %s pattern providers", + "extendedae_plus.message.config_update_failed": "Mapping file update failed: %s", + "extendedae_plus.message.config_delete_failed": "Mapping file delete failed: %s", "config.jade.plugin_extendedae_plus.wireless_transceiver_info": "Wireless Transceiver Info", "config.jade.plugin_extendedae_plus.wt_frequency": "Show Frequency", @@ -172,5 +176,10 @@ "extendedae_plus.jade.channels": "Channels: %s", "extendedae_plus.jade.channels_of": "Channels: %s/%s", "extendedae_plus.jade.owner": "Owner: %s", - "extendedae_plus.jade.owner.public": "Owner: Public" + "extendedae_plus.jade.owner.public": "Owner: Public", + + "extendedae_plus.command.server_side_only": "This command must be run on server side", + "extendedae_plus.command.storage_manager_not_initialized": "InfinityStorageManager is not initialized", + "extendedae_plus.command.gave_infinity_disks": "Gave %s infinity disks", + "extendedae_plus.command.error": "Error: %s" } \ No newline at end of file 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 333e76f..01aeac9 100644 --- a/src/main/resources/assets/extendedae_plus/lang/zh_cn.json +++ b/src/main/resources/assets/extendedae_plus/lang/zh_cn.json @@ -148,6 +148,10 @@ "extendedae_plus.chat.wireless_transceiver.mode_slave": "从端", "extendedae_plus.chat.wireless_transceiver.locked_status": "已锁定收发器", "extendedae_plus.chat.wireless_transceiver.unlocked_status": "已解锁收发器", + "extendedae_plus.chat.wireless_transceiver.channel_set": "频道已设置为:%s", + "extendedae_plus.chat.pattern_provider.global_toggle_applied": "全局切换已应用到 %s 个样板供应器", + "extendedae_plus.message.config_update_failed": "映射文件更新失败: %s", + "extendedae_plus.message.config_delete_failed": "映射文件删除失败: %s", "config.jade.plugin_extendedae_plus.wireless_transceiver_info": "无线收发器信息", "config.jade.plugin_extendedae_plus.wt_frequency": "显示频率", @@ -172,5 +176,10 @@ "extendedae_plus.jade.channels": "频道: %s", "extendedae_plus.jade.channels_of": "频道: %s/%s", "extendedae_plus.jade.owner": "所有者: %s", - "extendedae_plus.jade.owner.public": "所有者: 公共" + "extendedae_plus.jade.owner.public": "所有者: 公共", + + "extendedae_plus.command.server_side_only": "此命令必须在服务器端执行", + "extendedae_plus.command.storage_manager_not_initialized": "InfinityStorageManager未初始化", + "extendedae_plus.command.gave_infinity_disks": "已发放 %s 个无限磁盘", + "extendedae_plus.command.error": "错误: %s" } \ No newline at end of file From 2dd15ae686db9685b85b6edcc4d96f32ded20bed Mon Sep 17 00:00:00 2001 From: C-H716 <1536152356@qq.com> Date: Thu, 6 Nov 2025 09:06:53 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=8B=B1=E6=96=87?= =?UTF-8?q?=E7=89=88GuideME?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devices/assembler_matrix_upload_core.md | 31 ++++ .../devices/crafting_accelerator.md | 43 ++++++ .../devices/entity_speed_ticker_part.md | 95 ++++++++++++ .../devices/network_pattern_controller.md | 39 +++++ .../devices/wireless_transceiver.md | 48 ++++++ .../_zh_cn/introduction/features/features.md | 143 ++++++++++++++++++ .../ae2guide/_zh_cn/introduction/index.md | 22 +++ .../_zh_cn/introduction/items/channel_card.md | 48 ++++++ .../introduction/items/entity_speed_card.md | 43 ++++++ .../items/infinity_biginteger_cell.md | 30 ++++ .../devices/assembler_matrix_upload_core.md | 22 +-- .../devices/crafting_accelerator.md | 19 +-- .../devices/entity_speed_ticker_part.md | 113 +++++++------- .../devices/network_pattern_controller.md | 36 ++--- .../devices/wireless_transceiver.md | 54 +++---- .../introduction/features/features.md | 122 ++++++++------- .../ae2guide/introduction/index.md | 16 +- .../introduction/items/channel_card.md | 47 +++--- .../introduction/items/entity_speed_card.md | 36 +++-- .../items/infinity_biginteger_cell.md | 30 ++-- 20 files changed, 800 insertions(+), 237 deletions(-) create mode 100644 src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/devices/assembler_matrix_upload_core.md create mode 100644 src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/devices/crafting_accelerator.md create mode 100644 src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/devices/entity_speed_ticker_part.md create mode 100644 src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/devices/network_pattern_controller.md create mode 100644 src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/devices/wireless_transceiver.md create mode 100644 src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/features/features.md create mode 100644 src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/index.md create mode 100644 src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/items/channel_card.md create mode 100644 src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/items/entity_speed_card.md create mode 100644 src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/items/infinity_biginteger_cell.md diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/devices/assembler_matrix_upload_core.md b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/devices/assembler_matrix_upload_core.md new file mode 100644 index 0000000..24983d9 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/devices/assembler_matrix_upload_core.md @@ -0,0 +1,31 @@ +--- +navigation: + parent: introduction/index.md + title: 装配矩阵上传核心 + position: 8 + icon: extendedae_plus:assembler_matrix_upload_core +categories: + - extendedae_plus devices +item_ids: + - extendedae_plus:assembler_matrix_upload_core +--- + +# 装配矩阵上传核心 + + + +装配矩阵上传核心是一个功能模块,它为装配矩阵添加了从样板编码终端自动接收并上传样板的能力。 + +## 功能概述 + +将此核心安装到装配矩阵后,当您在样板编码终端中编码**合成样板**、**锻造台样板**或**切石机样板**时,终端将能够自动将这些样板上传至装配矩阵的存储中,无需手动转移。 + +## 版本历史与重要变更 + +- **版本 1.4.3**:此物品被添加至游戏中。 +- **重要变更**:在 **1.4.3 版本之前**,装配矩阵**无需**此核心即具备自动上传上述样板的功能。 +- **当前要求**:从 **1.4.3 版本开始**,您必须为装配矩阵安装此核心,才能启用自动上传功能。 + +> **请注意此次版本变更是破坏性的**。如果您从旧版本更新到 1.4.3 或更高版本,需要为您正在使用的每个装配矩阵手动添加此核心,以恢复自动上传功能。 + +> **注意**:此核心仅影响从**样板编码终端**到**装配矩阵**的**样板自动上传**功能。它不影响将处理样板上传到**样板供应器**的逻辑。 \ No newline at end of file diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/devices/crafting_accelerator.md b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/devices/crafting_accelerator.md new file mode 100644 index 0000000..5eb149b --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/devices/crafting_accelerator.md @@ -0,0 +1,43 @@ +--- +navigation: + parent: introduction/index.md + title: 并行处理单元 + position: 4 + icon: extendedae_plus:1024x_crafting_accelerator +categories: + - extendedae_plus devices +item_ids: + - extendedae_plus:4x_crafting_accelerator + - extendedae_plus:16x_crafting_accelerator + - extendedae_plus:64x_crafting_accelerator + - extendedae_plus:256x_crafting_accelerator + - extendedae_plus:1024x_crafting_accelerator +--- + +# 并行处理单元 +本模组新增了五种更高阶的并行处理单元,它们是原版并行处理单元的压缩升级版本,提供了更强的并行处理能力。 + + + + + + + + + + +## 合成配方 +### 4x并行处理单元 + + +### 16x并行处理单元 + + +### 64x并行处理单元 + + +### 256x并行处理单元 + + +### 1024x并行处理单元 + diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/devices/entity_speed_ticker_part.md b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/devices/entity_speed_ticker_part.md new file mode 100644 index 0000000..8f4ec67 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/devices/entity_speed_ticker_part.md @@ -0,0 +1,95 @@ +--- +navigation: + parent: introduction/index.md + title: 实体加速器 + position: 5 + icon: extendedae_plus:entity_speed_ticker +categories: + - extendedae_plus devices +item_ids: + - extendedae_plus:entity_speed_ticker +--- + +# 实体加速器 +实体加速器通过消耗应用能源2(AE2)网络中的能量,为前方一格方块实体提供运行加速,其功能与“加速火把”类似。 + + + + + +## 工作机制 +1. **启用条件**:必须在加速器中插入“****”才能激活加速功能 +2. **加速效果**:最高可为方块实体提供**1024倍**的加速倍率 +3. **能量供应**:加速过程持续消耗AE网络能量。当AE能量不足时,加速功能将自动暂停直至能量恢复。如安装Applied Flux模组,网络磁盘中存在FE能量且AE能量不足时,可消耗磁盘存储的FE能量继续加速(优先级可配置) +4. **配置选项**:可通过配置文件调整基础能耗、设置实体黑名单,以及为特定实体配置独立的能量消耗倍率 + +![实体加速器界面](../../picture/entity_speed_ticker.png) + +## 能量消耗机制 + +### 基础能量计算 + +实体加速器的能量消耗由基础配置值 `baseCost` 和目标加速倍率共同决定。 + +令: +- \( M \) = 目标加速倍率(2, 4, 8, ..., 1024) +- \( B \) = 基础能量配置值(默认512) +- \( L \) = log_2(M) + +**基础能量消耗公式:** + +![eformula1](../../picture/eformula1.png) + +**基础能耗参考表(baseCost = 512)** + +| 加速倍率 | 基础能量消耗(AE) | +| -------- | ------------------ | +| 2 | 256 | +| 4 | 1,024 | +| 8 | 2,048 | +| 16 | 8,192 | +| 32 | 16,384 | +| 64 | 65,536 | +| 128 | 131,072 | +| 256 | 524,288 | +| 512 | 268,435,456 | +| 1024 | 2,147,483,648 | + +### 能量卡节能效果 + +安装能量卡可有效降低设备能耗,节能效果随卡数量增加而提升,但存在边际递减效应。 + +令 \( N \) = 安装的能量卡数量 + +**能耗比例公式:** +![eformula1](../../picture/eformula2.png) + +**能量卡节能效果表:** + +| 能量卡数量 | 节能效果 | 实际能耗比例 | +| ---------- | -------- | ------------ | +| 0 | 0% | 100% | +| 1 | 10% | 90% | +| 2 | 14.5% | 85.5% | +| 3 | 17.15% | 82.85% | +| 4 | 19.0% | 81.0% | +| 5 | 20.21% | 79.79% | +| 6 | 21.15% | 78.85% | +| 7 | 21.9% | 78.1% | +| ≥8 | 50% | 50% | + +### 最终能耗计算 + +**最终能量消耗公式:** + +**finalPower = basePower × energyRatio** + +**计算示例:** + +- 目标加速倍率:64倍 +- 安装能量卡:3张 +- 基础能耗:65,536 AE +- 能耗比例:82.85% +- **最终能耗**:65,536 × 0.8285 ≈ 54,267AE + +> 实际能耗可能因实体类型配置而有所调整 diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/devices/network_pattern_controller.md b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/devices/network_pattern_controller.md new file mode 100644 index 0000000..d7aaba7 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/devices/network_pattern_controller.md @@ -0,0 +1,39 @@ +--- +navigation: + parent: introduction/index.md + title: 样板供应器状态控制器 + position: 3 + icon: extendedae_plus:network_pattern_controller +categories: + - extendedae_plus devices +item_ids: + - extendedae_plus:network_pattern_controller +--- + +# 样板供应器状态控制器 + + + +样板供应器状态控制器是一个中央控制单元,允许您通过一个统一的界面,批量管理网络中所有样板供应器的工作模式。 + +## 用户界面与操作 + +![样板供应器状态控制器界面](../../picture/network_pattern_controller.png) + +控制器UI提供以下控制选项: + +### 模式切换 +- **切换阻挡模式**:全局启用或禁用所有样板供应器的“阻挡模式” +- **切换高级阻挡**:全局切换“高级阻挡模式” +- **切换智能翻倍**:全局启用或禁用“智能翻倍”功能 + +### 批量操作 +- **全部开启**:一键开启网络中所有样板供应器的上述三个功能 +- **全部关闭**:一键关闭网络中所有样板供应器的上述三个功能 + +## 使用方法 +1. 将**样板供应器状态控制器**放置在您的ME网络中 +2. 右键点击控制器打开配置界面 +3. 根据您的管理需求,点击相应的按钮即可全局调整所有样板供应器的状态 + +> **注意**:该控制器影响网络中**所有**样板供应器。如需对单个供应器进行独立配置,仍需直接在该供应器的界面中进行操作。 \ No newline at end of file diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/devices/wireless_transceiver.md b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/devices/wireless_transceiver.md new file mode 100644 index 0000000..155066e --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/devices/wireless_transceiver.md @@ -0,0 +1,48 @@ +--- +navigation: + parent: introduction/index.md + title: 无线收发器 + position: 1 + icon: extendedae_plus:wireless_transceiver +categories: + - extendedae_plus devices +item_ids: + - extendedae_plus:wireless_transceiver +--- + +# 无线收发器 + + +无线收发器是一种高级无线AE设备,它融合了无线连接器的便捷性与量子环的跨维度能力,能够将ME网络的频道以无线方式远程传输至多个地点。 + +## 工作机制 + +### 基本概念 +无线收发器采用**一主多从**的架构: +- **主端 (Master)**: 连接至提供频道的源ME网络 +- **从端 (Slave)**: 放置在需要频道的位置,从一个主端接收频道。**一个主端可以为多个从端提供频道** + +### 跨维度传输 +支持跨维度传输频道,传输的前提是**主端与从端所在的区块均必须保持加载状态** + +## 操作指南 + +### 模式与频率设置 + +- **空手右键**: 切换设备的**主从模式** +- **Shift + 右键**: **增加**设备的配对频率 +- **Shift + 左键**: **减少**设备的配对频率 +- **手持扳手左键**: 快捷调整无线收发器的频率 +- **扳手右键**: **锁定**设备当前的工作模式与频率,防止意外更改 +- **石英切割刀**: 可为无线收发器重命名。重命名后,从端的Jade将显示其所连接的主端名称,便于识别和管理 + +### 所有权与安全 (v1.4.4+) + +自版本 1.4.4 起,无线收发器支持绑定所有权,以增强安全性与频道隔离。 +- **默认归属**: 1.4.4 版本前放置的无线收发器将被视为**公用**设备。 +- **自动绑定**: 1.4.4 及之后版本,玩家放置的无线收发器在放下时即会自动绑定到该玩家。 +- **FTB Teams 支持**: 设备可绑定至FTB队伍。**不同队伍或玩家的无线收发器,即使频率相同,也无法互通**,实现了频道隔离。 + +> **重要更新提示** +> 如果您从旧版本更新至 1.4.4 或更高版本,请务必注意: +> - 破坏掉旧的**公共主端**后,您需要将对应的**从端挖下并重新放置**,以完成其所有权的绑定,否则将无法连接。 diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/features/features.md b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/features/features.md new file mode 100644 index 0000000..62016f6 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/features/features.md @@ -0,0 +1,143 @@ +--- +navigation: + title: 辅助功能总览 + parent: introduction/index.md + position: 0 +categories: + - extendedae_plus features +--- + +# 模组功能总览 + +## 一、样板供应器增强 + +以下功能若无特殊说明,默认仅支持 **AE2 样板供应器** 与 **ExtendedAE 扩展样板供应器**。 + +### 1、智能阻挡模式 + +在 AE2 原有阻挡机制基础上进行了强化。 当相同样板的相同配方材料持续发配时,可避免配方串联造成的并行浪费。 (支持 AdvancedAE 系列供应器) + +> 需开启原版阻挡功能。 + +
+ +### 2、智能倍增模式 + +在 AE2 下单操作中自动计算一次性发配所需的全部材料。 该机制等效于玩家手动将样板翻倍至对应数量的效果。 (支持 AdvancedAE 系列供应器) + +可通过配置文件自定义以下选项: +- 翻倍上限 +- 多样板供应器轮询发配(提升并发与分摊效率) +- 最小收益因子 + +**示例:** + +样板:1 圆石 + 2 熔岩 → 1 石头 + +下单 1000 石头时,系统一次性发配 1000 圆石与 2000 熔岩。 + +**额外配置:** + +可在样板供应器左侧输入框手动设定单样物品的发配上限 + +例:样板 1 圆石 + 2 熔岩 → 1 石头,限制 64,则下单 1000 石头时单次发配仅 32 圆石与 64 熔岩。 + +支持类型:物品、流体、Mek 化学品。 + +
+ +### 3、手动倍增按钮 + +在样板供应器 GUI 内提供倍增控制按钮,玩家可快速设定样板倍数,无需重复编辑。 + +--- + +## 二、AE2 相关功能 + +### 1、快捷操作增强 + +- **中键拉取方块:** 鼠标中键点击任意方块时,若 AE 网络中有库存,将自动将该方块拉取至手上(需携带无线终端)。 +- **自动填充空白样板:** 打开样板编码终端时,系统将自动填充 AE 网络中的空白样板至槽位。 + +
+ +### 2、合成监控界面强化 + +- **Shift + 点击 材料:** 快速打开对应机器界面。 + +- **Shift + 右键 材料:** 打开对应供应器 UI,并高亮对应样板槽位。同时在世界中高亮目标供应器位置。 + +- **Shift + 点击 取消按钮:** 自动将缺失材料添加至 JEI 书签。 + +
+ +### 3、样板编码终端增强 + +- **上传功能:** 可通过上传按钮直接将样板上传至对应机器的样板供应器。JEI 拉取的处理配方可识别对应机器名称,并自动搜索匹配供应器。 自动搜索采用映射表。可在上传界面添加映射键。 +- **快捷清空:** 右键点击上传搜索框可快速清空输入内容。 + +
+ +### 4、样板数量显示与命名优化 + +- 在 AE2 与 ExtendedAE 的样板管理终端及样板供应器中,添加“样板制作数量”显示。 +- 样板供应器的 UI 标题将显示玩家自定义名称。 + +
+ +### 5、 AE 性能优化 + +- 新增配置项 **合成暂停检查阈值**(默认值:100000)。 该项用于调节 AE 在构建合成计划时的线程 Sleep 行为, 对大量样板的合成计划可显著提升计算速度。 + +
+ +### 6、石英切割刀功能扩展 + +- **Shift + 右键 方块或 AE 部件:** 复制其名称。 支持复制 **格雷大型机器** 的不同处理配方子名称。 + +--- + +## 三、ExtendedAE 增强功能 + +### 1、样板快速上传功能 + +- **自动检测装配矩阵:** + 若网络中存在装配矩阵,则样板编码终端完成的合成、锻造台、切石机样板将自动上传。 若已有相同样板,系统将自动检测并返还,避免重复上传。 + +
+ +### 2、配置属性: + + 可通过配置文件调整扩展样板供应器的样板槽位数倍率。 + +
+ +### 3、终端交互强化 + +- **搜索高亮:** 为 ME 扩展样板管理终端增加搜索高亮功能(18x18 边框 + 彩虹流转高亮)。 + +--- + +## 四、JEI 与 AE2 深度联动 + +### 1、双向交互增强 + +- **Shift + 左键(JEI → AE 网络):** 若 AE 网络中有该物品,将直接取出至玩家手上;若缺失,则自动跳转至下单界面。 +> 需携带无线终端(饰品槽亦可)。 + +- **中键点击JEI界面物品:** 若 AE 网络存在该物品的自动化合成方案,将自动跳转至下单界面。 + +
+ +### 2、 JEI 与终端同步操作 + +- **F 键:** 将 JEI 中的物品名称同步至 AE2 搜索栏与 ExtendedAE 扩展样板管理界面。 +- **样板优先匹配:** 编写样板时优先匹配 JEI 书签靠前的物品。 + + +--- +## 五、其他改进与实用功能 + +### 样板信息显示 + +- 在编码完成的样板上显示编写者信息: `由 <玩家名> 编写` \ No newline at end of file diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/index.md b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/index.md new file mode 100644 index 0000000..e4f158b --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/index.md @@ -0,0 +1,22 @@ +--- +navigation: + title: Extendedae_plus Introduction + position: 60 +--- +# Extendedae_plus 指南 + +欢迎使用 **Extendedae_plus**。这是一个基于 Applied Energistics 2 (AE2) 的附属模组,在 ExtendedAE 的基础上进行了功能增强,聚焦于「样板供应器」的改进与玩家体验优化,并可与多种 AE2 扩展生态(如 AAE等)共存。 它提供更灵活、可控的样板执行行为,以及更直观、友好的 GUI 交互。 + +## 指南目录 + +### 功能特性 + + +### 设备介绍 + + +### 物品介绍 + + +如需更详细的开发/构建与排错说明, 请在此处报告: +[ExtendedAE_Plus GitHub](https://github.com/GaLicn/ExtendedAE_Plus) diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/items/channel_card.md b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/items/channel_card.md new file mode 100644 index 0000000..4eb0de0 --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/items/channel_card.md @@ -0,0 +1,48 @@ +--- +navigation: + parent: introduction/index.md + title: 频道卡 + position: 2 + icon: extendedae_plus:channel_card +categories: + - extendedae_plus items +item_ids: + - extendedae_plus:channel_card +--- + +# 频道卡 + + + +频道卡是一种功能升级卡,它将的从端功能浓缩为一张卡片。将其安装到支持的AE设备后,该设备即可直接连接到同频率的无线收发器主端,无需使用线缆。 + +## 功能与使用 + +### 基本功能 +- **无线连接**:插入频道卡的AE设备会自动寻找并连接至**相同频率**的无线收发器主端,从而接入其提供的ME网络频道。 +- **调整频率**: + - **手持频道卡右键**:**增加**卡片自身的频率。 + - **手持频道卡Shift+右键**:**减少**卡片自身的频率。 + +### 所有权绑定 (v1.4.4+) +- **绑定操作**:手持频道卡**Shift+左键**(无需对准方块),即可将其绑定到你的队伍或个人UUID。 +- **绑定要求**:**必须完成绑定后**,频道卡才能成功连接到同样绑定了所有权的无线收发器。 + +### 支持设备 +频道卡可以安装到以下AE设备(及其对应的ExtendedAE扩展版本)中,使其获得无线连接能力。安装后,设备将自动尝试连接至同频率的无线收发器主端。 + +- +- +- +- +- + +## 工作流程 + +1. 确保已有一个设置好频率和模式的无线收发器**主端**接入源ME网络。 +2. 手持频道卡,通过**Shift+左键**完成所有权绑定。 +3. 手持频道卡**右键**或**Shift+右键**调整至所需频率。 +4. 将频道卡安装到目标AE设备(如ME接口)中。 +5. 该设备将自动连接到同频率且所有权匹配的无线收发器主端。 + +> **注意**:频道卡与无线收发器主端必须在**频率**和**所有权**(v1.4.4+)上都匹配,才能建立连接。 \ No newline at end of file diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/items/entity_speed_card.md b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/items/entity_speed_card.md new file mode 100644 index 0000000..dd5a24b --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/items/entity_speed_card.md @@ -0,0 +1,43 @@ +--- +navigation: + parent: introduction/index.md + title: 实体加速卡 + position: 6 + icon: extendedae_plus:entity_speed_card +categories: + - extendedae_plus items +item_ids: + - extendedae_plus:entity_speed_card +--- + +# 实体加速卡 + + + + + + + + +实体加速卡是一种升级组件,可插入中,为其提供不同级别的加速能力。加速卡的等级直接决定了实体加速器所能达到的**最大加速倍率上限**。 + +## 加速卡等级与效果 + +实体加速器最多可同时放入**4张**加速卡。最终的加速倍率为所有插入加速卡的**基础倍率相乘**,但**不能超过**当前装配的**最高等级加速卡**所规定的最大速率上限。 + +| 加速卡类型 | 基础加速倍率 | 单卡最大速率上限 | +| :--- | :--- | :--- | +| 实体加速卡 (x2) | 2倍 | 8倍 | +| 实体加速卡 (x4) | 4倍 | 64倍 | +| 实体加速卡 (x8) | 8倍 | 256倍 | +| 实体加速卡 (x16) | 16倍 | 1024倍 | + +> **混合插入规则**:当插入不同等级的加速卡时,总倍率为所有卡基础倍率的乘积,但最终结果不能超过其中**最高级单卡的最大速率上限**。 +> +> **示例**:同时插入1张 **x2卡** 和3张 **x4卡**。 +> +> - 计算倍率:2 × 4^3 = 128 +> - 最高级单卡为 **x4卡**,其上限为 **64倍**,因此**最终加速倍率为64倍** + +## 合成配方 + \ No newline at end of file diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/items/infinity_biginteger_cell.md b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/items/infinity_biginteger_cell.md new file mode 100644 index 0000000..4013c6d --- /dev/null +++ b/src/main/resources/assets/extendedae_plus/ae2guide/_zh_cn/introduction/items/infinity_biginteger_cell.md @@ -0,0 +1,30 @@ +--- +navigation: + parent: introduction/index.md + title: "吞噬万籁的寂静" + position: 7 + icon: extendedae_plus:infinity_biginteger_cell +categories: + - extendedae_plus items +item_ids: + - extendedae_plus:infinity_biginteger_cell +--- + +# 吞噬万籁的寂静 + + + +“吞噬万籁的寂静”是一种终极的ME存储磁盘,它提供了无限的物品种类支持与无限的存储容量。 + +## 功能特性 + +- **无限类型**:**不限制**可存储的物品种类数量。 +- **无限容量**:存储容量为 **BigInteger** 级别,理论上是无限的。 +- **显示限制**:受AE2系统自身界面显示的限制,在ME终端中最大显示存储量为 **9.2E (9,223,372,036,854,775,808)**,但**实际上可以继续向其中存入物品**,远超此显示数值。 +- **广泛兼容**:能够存储通过附属模组(如Applied Flux、Applied Mekanistics等)接入AE2系统的各类资源(如FE、Mek化学品、魔源等)。存储这些资源需要安装对应的附属模组。 + +## 数据安全与恢复 + +此磁盘包含一项数据安全保障机制: +- 使用指令 `/eap give_infinity_disks` 可以获得存档中存储数据对应的磁盘副本。 +- 此功能作为**保底手段**,可在原始磁盘意外丢失的情况下**恢复存储数据**。 \ No newline at end of file diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/assembler_matrix_upload_core.md b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/assembler_matrix_upload_core.md index 24983d9..9f10316 100644 --- a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/assembler_matrix_upload_core.md +++ b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/assembler_matrix_upload_core.md @@ -1,7 +1,7 @@ --- navigation: parent: introduction/index.md - title: 装配矩阵上传核心 + title: Assembler Matrix Upload Core position: 8 icon: extendedae_plus:assembler_matrix_upload_core categories: @@ -10,22 +10,22 @@ item_ids: - extendedae_plus:assembler_matrix_upload_core --- -# 装配矩阵上传核心 +# Assembler Matrix Upload Core -装配矩阵上传核心是一个功能模块,它为装配矩阵添加了从样板编码终端自动接收并上传样板的能力。 +The **Assembler Matrix Upload Core** is a functional module that adds the ability for an Assembler Matrix to automatically receive and upload patterns from the Pattern Encoding Terminal. -## 功能概述 +## Feature Overview -将此核心安装到装配矩阵后,当您在样板编码终端中编码**合成样板**、**锻造台样板**或**切石机样板**时,终端将能够自动将这些样板上传至装配矩阵的存储中,无需手动转移。 +When installed in an Assembler Matrix, patterns created in the Pattern Encoding Terminal — including **crafting patterns**, **smelter patterns**, or **stonecutter patterns** — are automatically uploaded into the Assembler Matrix storage without manual transfer. -## 版本历史与重要变更 +## Version History & Important Changes -- **版本 1.4.3**:此物品被添加至游戏中。 -- **重要变更**:在 **1.4.3 版本之前**,装配矩阵**无需**此核心即具备自动上传上述样板的功能。 -- **当前要求**:从 **1.4.3 版本开始**,您必须为装配矩阵安装此核心,才能启用自动上传功能。 +- **Version 1.4.3**: This item was added to the game. +- **Important Change**: Prior to **version 1.4.3**, Assembler Matrices **did not require** this core to automatically upload the above patterns. +- **Current Requirement**: Starting from **version 1.4.3**, you must install this core in an Assembler Matrix to enable automatic upload. -> **请注意此次版本变更是破坏性的**。如果您从旧版本更新到 1.4.3 或更高版本,需要为您正在使用的每个装配矩阵手动添加此核心,以恢复自动上传功能。 +> **Warning:** This is a breaking change. When updating from older versions to 1.4.3 or higher, you need to manually install this core in each Assembler Matrix you use to restore automatic upload functionality. -> **注意**:此核心仅影响从**样板编码终端**到**装配矩阵**的**样板自动上传**功能。它不影响将处理样板上传到**样板供应器**的逻辑。 \ No newline at end of file +> **Note:** This core only affects the **automatic upload of patterns from the Pattern Encoding Terminal to the Assembler Matrix**. It does not affect the logic for uploading processing patterns to **Pattern Providers**. diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/crafting_accelerator.md b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/crafting_accelerator.md index 5eb149b..1b62662 100644 --- a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/crafting_accelerator.md +++ b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/crafting_accelerator.md @@ -1,7 +1,7 @@ --- navigation: parent: introduction/index.md - title: 并行处理单元 + title: Parallel Processing Unit position: 4 icon: extendedae_plus:1024x_crafting_accelerator categories: @@ -14,8 +14,9 @@ item_ids: - extendedae_plus:1024x_crafting_accelerator --- -# 并行处理单元 -本模组新增了五种更高阶的并行处理单元,它们是原版并行处理单元的压缩升级版本,提供了更强的并行处理能力。 +# Parallel Processing Unit + +This mod introduces five higher-tier **Parallel Processing Units**, which are compressed upgrades of the vanilla units, providing significantly enhanced parallel processing capabilities. @@ -25,19 +26,19 @@ item_ids: +## Crafting Recipes -## 合成配方 -### 4x并行处理单元 +### 4x Parallel Processing Unit -### 16x并行处理单元 +### 16x Parallel Processing Unit -### 64x并行处理单元 +### 64x Parallel Processing Unit -### 256x并行处理单元 +### 256x Parallel Processing Unit -### 1024x并行处理单元 +### 1024x Parallel Processing Unit diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/entity_speed_ticker_part.md b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/entity_speed_ticker_part.md index 8f4ec67..4481cf8 100644 --- a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/entity_speed_ticker_part.md +++ b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/entity_speed_ticker_part.md @@ -1,7 +1,7 @@ --- navigation: parent: introduction/index.md - title: 实体加速器 + title: Entity Accelerator position: 5 icon: extendedae_plus:entity_speed_ticker categories: @@ -10,86 +10,89 @@ item_ids: - extendedae_plus:entity_speed_ticker --- -# 实体加速器 -实体加速器通过消耗应用能源2(AE2)网络中的能量,为前方一格方块实体提供运行加速,其功能与“加速火把”类似。 +# Entity Accelerator + +The **Entity Accelerator** consumes energy from the AE2 network to accelerate block entities in the front block space, functioning similarly to a “Speed Torch”. -## 工作机制 -1. **启用条件**:必须在加速器中插入“****”才能激活加速功能 -2. **加速效果**:最高可为方块实体提供**1024倍**的加速倍率 -3. **能量供应**:加速过程持续消耗AE网络能量。当AE能量不足时,加速功能将自动暂停直至能量恢复。如安装Applied Flux模组,网络磁盘中存在FE能量且AE能量不足时,可消耗磁盘存储的FE能量继续加速(优先级可配置) -4. **配置选项**:可通过配置文件调整基础能耗、设置实体黑名单,以及为特定实体配置独立的能量消耗倍率 +## Operating Mechanism -![实体加速器界面](../../picture/entity_speed_ticker.png) +1. **Activation Requirement:** The accelerator must contain at least one **** to enable acceleration. +2. **Acceleration Effect:** Can accelerate block entities up to **1024×**. +3. **Energy Supply:** Acceleration continuously consumes AE network energy. When AE energy is insufficient, acceleration automatically pauses until energy is restored. + - If the *Applied Flux* mod is installed, FE energy stored in network disks can be consumed to continue acceleration when AE energy is insufficient (priority configurable). +4. **Configuration Options:** Base energy consumption, entity blacklist, and per-entity energy multiplier can be adjusted via the config file. -## 能量消耗机制 +![Entity Accelerator Interface](../../picture/entity_speed_ticker.png) -### 基础能量计算 +## Energy Consumption Mechanism -实体加速器的能量消耗由基础配置值 `baseCost` 和目标加速倍率共同决定。 +### Base Energy Calculation -令: -- \( M \) = 目标加速倍率(2, 4, 8, ..., 1024) -- \( B \) = 基础能量配置值(默认512) -- \( L \) = log_2(M) +The energy consumption of the Entity Accelerator is determined by the base configuration value `baseCost` and the target acceleration multiplier. -**基础能量消耗公式:** +Let: +- \( M \) = target multiplier (2, 4, 8, ..., 1024) +- \( B \) = base energy config (default 512) +- \( L \) = log₂(M) + +**Base energy consumption formula:** ![eformula1](../../picture/eformula1.png) -**基础能耗参考表(baseCost = 512)** +**Base Energy Reference Table (baseCost = 512)** -| 加速倍率 | 基础能量消耗(AE) | -| -------- | ------------------ | -| 2 | 256 | -| 4 | 1,024 | -| 8 | 2,048 | -| 16 | 8,192 | -| 32 | 16,384 | -| 64 | 65,536 | -| 128 | 131,072 | -| 256 | 524,288 | -| 512 | 268,435,456 | -| 1024 | 2,147,483,648 | +| Multiplier | Base Energy (AE) | +|------------|----------------| +| 2 | 256 | +| 4 | 1,024 | +| 8 | 2,048 | +| 16 | 8,192 | +| 32 | 16,384 | +| 64 | 65,536 | +| 128 | 131,072 | +| 256 | 524,288 | +| 512 | 268,435,456 | +| 1024 | 2,147,483,648 | -### 能量卡节能效果 +### Energy Card Efficiency -安装能量卡可有效降低设备能耗,节能效果随卡数量增加而提升,但存在边际递减效应。 +Installing Energy Cards reduces power consumption. The effect increases with the number of cards but has diminishing returns. -令 \( N \) = 安装的能量卡数量 +Let \( N \) = number of installed energy cards -**能耗比例公式:** +**Energy Ratio Formula:** ![eformula1](../../picture/eformula2.png) -**能量卡节能效果表:** +**Energy Card Efficiency Table:** -| 能量卡数量 | 节能效果 | 实际能耗比例 | -| ---------- | -------- | ------------ | -| 0 | 0% | 100% | -| 1 | 10% | 90% | -| 2 | 14.5% | 85.5% | -| 3 | 17.15% | 82.85% | -| 4 | 19.0% | 81.0% | -| 5 | 20.21% | 79.79% | -| 6 | 21.15% | 78.85% | -| 7 | 21.9% | 78.1% | -| ≥8 | 50% | 50% | +| Number of Cards | Efficiency | Actual Energy Ratio | +|----------------|------------|------------------| +| 0 | 0% | 100% | +| 1 | 10% | 90% | +| 2 | 14.5% | 85.5% | +| 3 | 17.15% | 82.85% | +| 4 | 19.0% | 81.0% | +| 5 | 20.21% | 79.79% | +| 6 | 21.15% | 78.85% | +| 7 | 21.9% | 78.1% | +| ≥8 | 50% | 50% | -### 最终能耗计算 +### Final Energy Calculation -**最终能量消耗公式:** +**Final Power Formula:** **finalPower = basePower × energyRatio** -**计算示例:** +**Calculation Example:** -- 目标加速倍率:64倍 -- 安装能量卡:3张 -- 基础能耗:65,536 AE -- 能耗比例:82.85% -- **最终能耗**:65,536 × 0.8285 ≈ 54,267AE +- Target Multiplier: 64× +- Energy Cards Installed: 3 +- Base Energy: 65,536 AE +- Energy Ratio: 82.85% +- **Final Energy Consumption:** 65,536 × 0.8285 ≈ 54,267 AE -> 实际能耗可能因实体类型配置而有所调整 +> Actual energy consumption may vary depending on entity-specific configuration. \ No newline at end of file diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/network_pattern_controller.md b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/network_pattern_controller.md index d7aaba7..4bb3dbc 100644 --- a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/network_pattern_controller.md +++ b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/network_pattern_controller.md @@ -1,7 +1,7 @@ --- navigation: parent: introduction/index.md - title: 样板供应器状态控制器 + title: Pattern Provider Status Controller position: 3 icon: extendedae_plus:network_pattern_controller categories: @@ -10,30 +10,30 @@ item_ids: - extendedae_plus:network_pattern_controller --- -# 样板供应器状态控制器 +# Pattern Provider Status Controller -样板供应器状态控制器是一个中央控制单元,允许您通过一个统一的界面,批量管理网络中所有样板供应器的工作模式。 +The **Pattern Provider Status Controller** is a central control unit that allows you to manage the working modes of all pattern providers in your network through a single unified interface. -## 用户界面与操作 +## User Interface & Operations -![样板供应器状态控制器界面](../../picture/network_pattern_controller.png) +![Pattern Provider Status Controller Interface](../../picture/network_pattern_controller.png) -控制器UI提供以下控制选项: +The controller UI provides the following control options: -### 模式切换 -- **切换阻挡模式**:全局启用或禁用所有样板供应器的“阻挡模式” -- **切换高级阻挡**:全局切换“高级阻挡模式” -- **切换智能翻倍**:全局启用或禁用“智能翻倍”功能 +### Mode Switching +- **Toggle Blocking Mode:** Globally enable or disable "Blocking Mode" for all pattern providers. +- **Toggle Advanced Blocking:** Globally switch "Advanced Blocking Mode." +- **Toggle Smart Multiplication:** Globally enable or disable the "Smart Multiplication" feature. -### 批量操作 -- **全部开启**:一键开启网络中所有样板供应器的上述三个功能 -- **全部关闭**:一键关闭网络中所有样板供应器的上述三个功能 +### Batch Operations +- **Enable All:** One-click to enable all three features for every pattern provider in the network. +- **Disable All:** One-click to disable all three features for every pattern provider in the network. -## 使用方法 -1. 将**样板供应器状态控制器**放置在您的ME网络中 -2. 右键点击控制器打开配置界面 -3. 根据您的管理需求,点击相应的按钮即可全局调整所有样板供应器的状态 +## How to Use +1. Place the **Pattern Provider Status Controller** in your ME network. +2. Right-click the controller to open the configuration interface. +3. Click the corresponding buttons to adjust the status of all pattern providers globally according to your management needs. -> **注意**:该控制器影响网络中**所有**样板供应器。如需对单个供应器进行独立配置,仍需直接在该供应器的界面中进行操作。 \ No newline at end of file +> **Note:** This controller affects **all** pattern providers in the network. To configure individual providers separately, you must still use the UI of each provider. diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/wireless_transceiver.md b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/wireless_transceiver.md index 155066e..9e1b6e7 100644 --- a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/wireless_transceiver.md +++ b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/devices/wireless_transceiver.md @@ -1,7 +1,7 @@ --- navigation: parent: introduction/index.md - title: 无线收发器 + title: Wireless Transceiver position: 1 icon: extendedae_plus:wireless_transceiver categories: @@ -10,39 +10,41 @@ item_ids: - extendedae_plus:wireless_transceiver --- -# 无线收发器 +# Wireless Transceiver -无线收发器是一种高级无线AE设备,它融合了无线连接器的便捷性与量子环的跨维度能力,能够将ME网络的频道以无线方式远程传输至多个地点。 -## 工作机制 +The **Wireless Transceiver** is an advanced wireless AE device that combines the convenience of wireless connectors with the cross-dimensional capabilities of Quantum Rings, allowing ME network channels to be transmitted wirelessly to multiple locations. -### 基本概念 -无线收发器采用**一主多从**的架构: -- **主端 (Master)**: 连接至提供频道的源ME网络 -- **从端 (Slave)**: 放置在需要频道的位置,从一个主端接收频道。**一个主端可以为多个从端提供频道** +## Operating Mechanism -### 跨维度传输 -支持跨维度传输频道,传输的前提是**主端与从端所在的区块均必须保持加载状态** +### Basic Concept +The Wireless Transceiver uses a **master-slave** architecture: +- **Master:** Connected to the source ME network providing the channel. +- **Slave:** Placed where the channel is needed, receiving it from a master. **One master can serve multiple slaves.** -## 操作指南 +### Cross-Dimensional Transmission +Supports cross-dimensional channel transmission. +**Requirement:** Both master and slave chunks must remain loaded. -### 模式与频率设置 +## Operation Guide -- **空手右键**: 切换设备的**主从模式** -- **Shift + 右键**: **增加**设备的配对频率 -- **Shift + 左键**: **减少**设备的配对频率 -- **手持扳手左键**: 快捷调整无线收发器的频率 -- **扳手右键**: **锁定**设备当前的工作模式与频率,防止意外更改 -- **石英切割刀**: 可为无线收发器重命名。重命名后,从端的Jade将显示其所连接的主端名称,便于识别和管理 +### Mode & Frequency Settings -### 所有权与安全 (v1.4.4+) +- **Right-click empty hand:** Toggle the device's **Master/Slave mode**. +- **Shift + Right-click:** **Increase** the device’s pairing frequency. +- **Shift + Left-click:** **Decrease** the device’s pairing frequency. +- **Hold Wrench + Left-click:** Quickly adjust the transceiver’s frequency. +- **Wrench + Right-click:** **Lock** the current mode and frequency to prevent accidental changes. +- **Quartz Cutter:** Rename the transceiver. The slave’s Jade UI will display the connected master’s name for easier identification and management. -自版本 1.4.4 起,无线收发器支持绑定所有权,以增强安全性与频道隔离。 -- **默认归属**: 1.4.4 版本前放置的无线收发器将被视为**公用**设备。 -- **自动绑定**: 1.4.4 及之后版本,玩家放置的无线收发器在放下时即会自动绑定到该玩家。 -- **FTB Teams 支持**: 设备可绑定至FTB队伍。**不同队伍或玩家的无线收发器,即使频率相同,也无法互通**,实现了频道隔离。 +### Ownership & Security (v1.4.4+) -> **重要更新提示** -> 如果您从旧版本更新至 1.4.4 或更高版本,请务必注意: -> - 破坏掉旧的**公共主端**后,您需要将对应的**从端挖下并重新放置**,以完成其所有权的绑定,否则将无法连接。 +Starting from version 1.4.4, the Wireless Transceiver supports ownership binding for enhanced security and channel isolation: +- **Default Ownership:** Transceivers placed before 1.4.4 are considered **public devices**. +- **Automatic Binding:** From 1.4.4 onward, newly placed transceivers automatically bind to the player who placed them. +- **FTB Teams Support:** Devices can be bound to FTB teams. **Transceivers from different teams or players cannot communicate even if frequencies match**, ensuring channel isolation. + +> **Important Update Notice:** +> When updating from an older version to 1.4.4 or later: +> - If the old **public master** is removed, you must break and replace the corresponding **slave devices** to complete ownership binding, otherwise they will fail to connect. \ No newline at end of file diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/features/features.md b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/features/features.md index 62016f6..425a20a 100644 --- a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/features/features.md +++ b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/features/features.md @@ -1,143 +1,141 @@ --- navigation: - title: 辅助功能总览 + title: Feature Overview parent: introduction/index.md position: 0 categories: - extendedae_plus features --- -# 模组功能总览 +# Mod Feature Overview -## 一、样板供应器增强 +## I. Pattern Provider Enhancements -以下功能若无特殊说明,默认仅支持 **AE2 样板供应器** 与 **ExtendedAE 扩展样板供应器**。 +Unless otherwise stated, the following features support **AE2 Pattern Providers** and **ExtendedAE Pattern Providers** only. -### 1、智能阻挡模式 +### 1. Smart Blocking Mode -在 AE2 原有阻挡机制基础上进行了强化。 当相同样板的相同配方材料持续发配时,可避免配方串联造成的并行浪费。 (支持 AdvancedAE 系列供应器) +Enhanced based on AE2’s original blocking mechanism. When identical pattern materials are continuously dispatched, this prevents waste caused by concurrent recipe execution. (Supports AdvancedAE series providers) -> 需开启原版阻挡功能。 +> Requires the original blocking feature to be enabled.
-### 2、智能倍增模式 +### 2. Smart Multiplication Mode -在 AE2 下单操作中自动计算一次性发配所需的全部材料。 该机制等效于玩家手动将样板翻倍至对应数量的效果。 (支持 AdvancedAE 系列供应器) +Automatically calculates the total materials required for a crafting order in AE2. +This mechanism is equivalent to manually duplicating the pattern to the corresponding quantity. (Supports AdvancedAE series providers) -可通过配置文件自定义以下选项: -- 翻倍上限 -- 多样板供应器轮询发配(提升并发与分摊效率) -- 最小收益因子 +Configurable options include: +- Maximum multiplication limit +- Multi-pattern provider polling dispatch (improves concurrency and distribution efficiency) +- Minimum yield factor -**示例:** +**Example:** -样板:1 圆石 + 2 熔岩 → 1 石头 +Pattern: 1 Cobblestone + 2 Lava → 1 Stone -下单 1000 石头时,系统一次性发配 1000 圆石与 2000 熔岩。 +When ordering 1000 Stone, the system dispatches 1000 Cobblestone and 2000 Lava at once. -**额外配置:** +**Additional Configuration:** -可在样板供应器左侧输入框手动设定单样物品的发配上限 +Manually set the single-item dispatch limit in the left input box of the pattern provider. -例:样板 1 圆石 + 2 熔岩 → 1 石头,限制 64,则下单 1000 石头时单次发配仅 32 圆石与 64 熔岩。 +Example: Pattern 1 Cobblestone + 2 Lava → 1 Stone, limit 64; ordering 1000 Stone will dispatch only 32 Cobblestone and 64 Lava at a time. -支持类型:物品、流体、Mek 化学品。 +Supported types: Items, Fluids, Mekanism chemicals.
-### 3、手动倍增按钮 +### 3. Manual Multiplication Button -在样板供应器 GUI 内提供倍增控制按钮,玩家可快速设定样板倍数,无需重复编辑。 +A multiplication control button is added in the pattern provider GUI, allowing players to quickly set pattern multipliers without repeated editing. --- -## 二、AE2 相关功能 +## II. AE2 Related Features -### 1、快捷操作增强 +### 1. Enhanced Quick Operations -- **中键拉取方块:** 鼠标中键点击任意方块时,若 AE 网络中有库存,将自动将该方块拉取至手上(需携带无线终端)。 -- **自动填充空白样板:** 打开样板编码终端时,系统将自动填充 AE 网络中的空白样板至槽位。 +- **Middle-click to pull blocks:** Middle-clicking any block will automatically pull it from the AE network if available (requires a wireless terminal). +- **Auto-fill blank patterns:** Opening the Pattern Encoding Terminal automatically fills empty patterns from the AE network into slots.
-### 2、合成监控界面强化 +### 2. Crafting Monitoring Interface Enhancements -- **Shift + 点击 材料:** 快速打开对应机器界面。 - -- **Shift + 右键 材料:** 打开对应供应器 UI,并高亮对应样板槽位。同时在世界中高亮目标供应器位置。 - -- **Shift + 点击 取消按钮:** 自动将缺失材料添加至 JEI 书签。 +- **Shift + Click Material:** Quickly opens the corresponding machine interface. +- **Shift + Right-click Material:** Opens the corresponding provider UI and highlights the matching pattern slot. The target provider is also highlighted in the world. +- **Shift + Click Cancel Button:** Automatically adds missing materials to JEI bookmarks.
-### 3、样板编码终端增强 +### 3. Pattern Encoding Terminal Enhancements -- **上传功能:** 可通过上传按钮直接将样板上传至对应机器的样板供应器。JEI 拉取的处理配方可识别对应机器名称,并自动搜索匹配供应器。 自动搜索采用映射表。可在上传界面添加映射键。 -- **快捷清空:** 右键点击上传搜索框可快速清空输入内容。 +- **Upload Feature:** Directly upload patterns to the corresponding machine’s pattern provider via the upload button. JEI-pulled recipes detect the machine name and automatically search for matching providers. Automatic search uses a mapping table; mapping keys can be added in the upload interface. +- **Quick Clear:** Right-click the upload search box to clear input quickly.
-### 4、样板数量显示与命名优化 +### 4. Pattern Quantity Display & Naming Optimization -- 在 AE2 与 ExtendedAE 的样板管理终端及样板供应器中,添加“样板制作数量”显示。 -- 样板供应器的 UI 标题将显示玩家自定义名称。 +- Adds “Pattern Craft Quantity” display in AE2 and ExtendedAE pattern management terminals and providers. +- Pattern provider UI title displays player-customized names.
-### 5、 AE 性能优化 +### 5. AE Performance Optimization -- 新增配置项 **合成暂停检查阈值**(默认值:100000)。 该项用于调节 AE 在构建合成计划时的线程 Sleep 行为, 对大量样板的合成计划可显著提升计算速度。 +- New config option **Crafting Pause Threshold** (default: 100000) adjusts AE’s thread sleep behavior during crafting plan calculation, significantly improving speed for large crafting plans.
-### 6、石英切割刀功能扩展 +### 6. Quartz Cutter Function Extension -- **Shift + 右键 方块或 AE 部件:** 复制其名称。 支持复制 **格雷大型机器** 的不同处理配方子名称。 +- **Shift + Right-click Block or AE Component:** Copies its name, supporting copying of sub-recipe names from large GregTech machines. --- -## 三、ExtendedAE 增强功能 +## III. ExtendedAE Enhancements -### 1、样板快速上传功能 +### 1. Fast Pattern Upload -- **自动检测装配矩阵:** - 若网络中存在装配矩阵,则样板编码终端完成的合成、锻造台、切石机样板将自动上传。 若已有相同样板,系统将自动检测并返还,避免重复上传。 +- **Auto-detect Assembly Matrix:** If an assembly matrix exists in the network, patterns completed in the Pattern Encoding Terminal (for crafting, smelting, or cutting) are automatically uploaded. Existing identical patterns are detected and returned, avoiding duplicates.
-### 2、配置属性: +### 2. Configurable Properties - 可通过配置文件调整扩展样板供应器的样板槽位数倍率。 +- Extendable pattern provider slot multipliers can be adjusted via the config file.
-### 3、终端交互强化 +### 3. Terminal Interaction Enhancements -- **搜索高亮:** 为 ME 扩展样板管理终端增加搜索高亮功能(18x18 边框 + 彩虹流转高亮)。 +- **Search Highlight:** Adds a search highlight feature to ExtendedAE pattern management terminals (18x18 border + rainbow flow highlight). --- -## 四、JEI 与 AE2 深度联动 +## IV. Deep JEI & AE2 Integration -### 1、双向交互增强 +### 1. Bidirectional Interaction -- **Shift + 左键(JEI → AE 网络):** 若 AE 网络中有该物品,将直接取出至玩家手上;若缺失,则自动跳转至下单界面。 -> 需携带无线终端(饰品槽亦可)。 +- **Shift + Left-click (JEI → AE Network):** Pulls the item directly if available in AE network; if missing, jumps to ordering interface. +> Requires a wireless terminal (can also be in accessory slot). -- **中键点击JEI界面物品:** 若 AE 网络存在该物品的自动化合成方案,将自动跳转至下单界面。 +- **Middle-click JEI item:** If an automated crafting plan exists in AE, jumps to ordering interface.
-### 2、 JEI 与终端同步操作 - -- **F 键:** 将 JEI 中的物品名称同步至 AE2 搜索栏与 ExtendedAE 扩展样板管理界面。 -- **样板优先匹配:** 编写样板时优先匹配 JEI 书签靠前的物品。 +### 2. JEI & Terminal Synchronization +- **F Key:** Syncs the JEI item name to AE2 search bar and ExtendedAE pattern management interface. +- **Pattern Priority Matching:** Prioritize JEI bookmarks when writing patterns. --- -## 五、其他改进与实用功能 -### 样板信息显示 +## V. Other Improvements & Utilities -- 在编码完成的样板上显示编写者信息: `由 <玩家名> 编写` \ No newline at end of file +### Pattern Information Display + +- Shows author information on completed patterns: `Written by ` \ No newline at end of file diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/index.md b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/index.md index e4f158b..cc6dec7 100644 --- a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/index.md +++ b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/index.md @@ -3,20 +3,22 @@ navigation: title: Extendedae_plus Introduction position: 60 --- -# Extendedae_plus 指南 +# Extendedae_plus GuideME -欢迎使用 **Extendedae_plus**。这是一个基于 Applied Energistics 2 (AE2) 的附属模组,在 ExtendedAE 的基础上进行了功能增强,聚焦于「样板供应器」的改进与玩家体验优化,并可与多种 AE2 扩展生态(如 AAE等)共存。 它提供更灵活、可控的样板执行行为,以及更直观、友好的 GUI 交互。 +Welcome to **Extendedae_plus**. +This is an add-on mod for Applied Energistics 2 (AE2), built upon **ExtendedAE** with enhanced functionality. It focuses on improving the **Pattern Provider** and optimizing player experience, while maintaining compatibility with multiple AE2 extension ecosystems (such as AAE, etc.). +It provides more flexible and controllable pattern execution behavior, along with a more intuitive and user-friendly GUI. -## 指南目录 +## Guide Index -### 功能特性 +### Features -### 设备介绍 +### Devices -### 物品介绍 +### Items -如需更详细的开发/构建与排错说明, 请在此处报告: +For detailed development/build instructions or troubleshooting, please report here: [ExtendedAE_Plus GitHub](https://github.com/GaLicn/ExtendedAE_Plus) diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/items/channel_card.md b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/items/channel_card.md index 4eb0de0..9be198f 100644 --- a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/items/channel_card.md +++ b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/items/channel_card.md @@ -1,7 +1,7 @@ --- navigation: parent: introduction/index.md - title: 频道卡 + title: Channel Card position: 2 icon: extendedae_plus:channel_card categories: @@ -10,26 +10,30 @@ item_ids: - extendedae_plus:channel_card --- -# 频道卡 +# Channel Card -频道卡是一种功能升级卡,它将的从端功能浓缩为一张卡片。将其安装到支持的AE设备后,该设备即可直接连接到同频率的无线收发器主端,无需使用线缆。 +The **Channel Card** is an upgrade card that encapsulates the slave-end functionality of the into a compact form. +When installed into compatible AE devices, it allows them to connect directly to a wireless transceiver master of the same frequency — no cables required. -## 功能与使用 +## Function & Usage -### 基本功能 -- **无线连接**:插入频道卡的AE设备会自动寻找并连接至**相同频率**的无线收发器主端,从而接入其提供的ME网络频道。 -- **调整频率**: - - **手持频道卡右键**:**增加**卡片自身的频率。 - - **手持频道卡Shift+右键**:**减少**卡片自身的频率。 +### Basic Features +- **Wireless Connection**: + AE devices equipped with a Channel Card will automatically search for and connect to a **wireless transceiver master** operating on the **same frequency**, gaining access to its ME network channels. +- **Frequency Adjustment**: + - **Right-click while holding the card**: **Increase** its frequency. + - **Shift + Right-click**: **Decrease** its frequency. -### 所有权绑定 (v1.4.4+) -- **绑定操作**:手持频道卡**Shift+左键**(无需对准方块),即可将其绑定到你的队伍或个人UUID。 -- **绑定要求**:**必须完成绑定后**,频道卡才能成功连接到同样绑定了所有权的无线收发器。 +### Ownership Binding (v1.4.4+) +- **Binding Operation**: + Hold the Channel Card and **Shift + Left-click** (without targeting a block) to bind it to your **team** or **personal UUID**. +- **Binding Requirement**: + The card **must be bound** before it can connect to a wireless transceiver master with matching ownership. -### 支持设备 -频道卡可以安装到以下AE设备(及其对应的ExtendedAE扩展版本)中,使其获得无线连接能力。安装后,设备将自动尝试连接至同频率的无线收发器主端。 +### Supported Devices +The Channel Card can be installed into the following AE devices (and their ExtendedAE variants) to grant them wireless connectivity. Once installed, the device will automatically attempt to connect to a wireless transceiver master of the same frequency. - - @@ -37,12 +41,13 @@ item_ids: - - -## 工作流程 +## Workflow -1. 确保已有一个设置好频率和模式的无线收发器**主端**接入源ME网络。 -2. 手持频道卡,通过**Shift+左键**完成所有权绑定。 -3. 手持频道卡**右键**或**Shift+右键**调整至所需频率。 -4. 将频道卡安装到目标AE设备(如ME接口)中。 -5. 该设备将自动连接到同频率且所有权匹配的无线收发器主端。 +1. Ensure a wireless transceiver **master** with the desired frequency and mode is connected to the source ME network. +2. Hold the Channel Card and **Shift + Left-click** to complete ownership binding. +3. Adjust the card’s frequency using **Right-click** or **Shift + Right-click**. +4. Install the Channel Card into the target AE device (e.g., ME Interface). +5. The device will automatically connect to the wireless transceiver master with the same frequency and matching ownership. -> **注意**:频道卡与无线收发器主端必须在**频率**和**所有权**(v1.4.4+)上都匹配,才能建立连接。 \ No newline at end of file +> **Note**: +> Both the Channel Card and the wireless transceiver master must have **matching frequency** and **ownership** (v1.4.4+) to successfully establish a connection. \ No newline at end of file diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/items/entity_speed_card.md b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/items/entity_speed_card.md index dd5a24b..522a1be 100644 --- a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/items/entity_speed_card.md +++ b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/items/entity_speed_card.md @@ -1,7 +1,7 @@ --- navigation: parent: introduction/index.md - title: 实体加速卡 + title: Entity Speed Card position: 6 icon: extendedae_plus:entity_speed_card categories: @@ -10,7 +10,7 @@ item_ids: - extendedae_plus:entity_speed_card --- -# 实体加速卡 +# Entity Speed Card @@ -19,25 +19,29 @@ item_ids: -实体加速卡是一种升级组件,可插入中,为其提供不同级别的加速能力。加速卡的等级直接决定了实体加速器所能达到的**最大加速倍率上限**。 +The **Entity Speed Card** is an upgrade component that can be inserted into the to provide various levels of acceleration. +The card’s tier directly determines the **maximum acceleration multiplier limit** that the Entity Accelerator can achieve. -## 加速卡等级与效果 +## Card Tiers & Effects -实体加速器最多可同时放入**4张**加速卡。最终的加速倍率为所有插入加速卡的**基础倍率相乘**,但**不能超过**当前装配的**最高等级加速卡**所规定的最大速率上限。 +An Entity Accelerator can hold up to **4 speed cards** simultaneously. +The final acceleration multiplier equals the **product of all inserted cards’ base multipliers**, but it **cannot exceed** the **maximum speed limit** defined by the **highest-tier card** installed. -| 加速卡类型 | 基础加速倍率 | 单卡最大速率上限 | +| Card Type | Base Multiplier | Maximum Speed Limit (per card) | | :--- | :--- | :--- | -| 实体加速卡 (x2) | 2倍 | 8倍 | -| 实体加速卡 (x4) | 4倍 | 64倍 | -| 实体加速卡 (x8) | 8倍 | 256倍 | -| 实体加速卡 (x16) | 16倍 | 1024倍 | +| Entity Speed Card (x2) | ×2 | ×8 | +| Entity Speed Card (x4) | ×4 | ×64 | +| Entity Speed Card (x8) | ×8 | ×256 | +| Entity Speed Card (x16) | ×16 | ×1024 | -> **混合插入规则**:当插入不同等级的加速卡时,总倍率为所有卡基础倍率的乘积,但最终结果不能超过其中**最高级单卡的最大速率上限**。 +> **Mixed Insertion Rule**: +> When mixing cards of different tiers, the total multiplier is the product of all base multipliers, but the final result **cannot exceed** the **maximum speed limit** of the highest-tier card installed. > -> **示例**:同时插入1张 **x2卡** 和3张 **x4卡**。 +> **Example**: Insert one **x2 card** and three **x4 cards**. > -> - 计算倍率:2 × 4^3 = 128 -> - 最高级单卡为 **x4卡**,其上限为 **64倍**,因此**最终加速倍率为64倍** +> - Calculated multiplier: 2 × 4³ = 128 +> - Highest-tier card: **x4**, with a limit of **×64** +> - **Final acceleration multiplier = ×64** -## 合成配方 - \ No newline at end of file +## Crafting Recipe + \ No newline at end of file diff --git a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/items/infinity_biginteger_cell.md b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/items/infinity_biginteger_cell.md index 4013c6d..450a2c1 100644 --- a/src/main/resources/assets/extendedae_plus/ae2guide/introduction/items/infinity_biginteger_cell.md +++ b/src/main/resources/assets/extendedae_plus/ae2guide/introduction/items/infinity_biginteger_cell.md @@ -1,7 +1,7 @@ --- navigation: parent: introduction/index.md - title: "吞噬万籁的寂静" + title: "Devourer of Cosmic Silence" position: 7 icon: extendedae_plus:infinity_biginteger_cell categories: @@ -10,21 +10,27 @@ item_ids: - extendedae_plus:infinity_biginteger_cell --- -# 吞噬万籁的寂静 +# Devourer of Cosmic Silence -“吞噬万籁的寂静”是一种终极的ME存储磁盘,它提供了无限的物品种类支持与无限的存储容量。 +**Devourer of Cosmic Silence** is an ultimate ME storage disk that provides truly infinite item-type support and storage capacity. -## 功能特性 +## Features -- **无限类型**:**不限制**可存储的物品种类数量。 -- **无限容量**:存储容量为 **BigInteger** 级别,理论上是无限的。 -- **显示限制**:受AE2系统自身界面显示的限制,在ME终端中最大显示存储量为 **9.2E (9,223,372,036,854,775,808)**,但**实际上可以继续向其中存入物品**,远超此显示数值。 -- **广泛兼容**:能够存储通过附属模组(如Applied Flux、Applied Mekanistics等)接入AE2系统的各类资源(如FE、Mek化学品、魔源等)。存储这些资源需要安装对应的附属模组。 +- **Infinite Types**: + There is **no limit** to the number of item types it can store. +- **Infinite Capacity**: + Storage capacity is based on the **BigInteger** data type, effectively making it limitless. +- **Display Limitation**: + Due to AE2’s interface constraints, the ME terminal can display a maximum stored value of **9.2E (9,223,372,036,854,775,808)**. + However, the disk **continues to accept items** far beyond this displayed number. +- **Broad Compatibility**: + Capable of storing various resources integrated into AE2 via add-on mods (such as *Applied Flux*, *Applied Mekanistics*, etc.), including FE, Mekanism chemicals, Ars Nouveau mana, and more. + Storing these resources requires the corresponding add-on mod to be installed. -## 数据安全与恢复 +## Data Security & Recovery -此磁盘包含一项数据安全保障机制: -- 使用指令 `/eap give_infinity_disks` 可以获得存档中存储数据对应的磁盘副本。 -- 此功能作为**保底手段**,可在原始磁盘意外丢失的情况下**恢复存储数据**。 \ No newline at end of file +This disk includes a built-in data protection mechanism: +- Use the command `/eap give_infinity_disks` to obtain a copy of the disk corresponding to the saved storage data in the current world. +- This serves as a **failsafe measure**, allowing you to **recover stored data** if the original disk is accidentally lost. \ No newline at end of file From d41b2faceb610ee358442228f6d724df4037ffc9 Mon Sep 17 00:00:00 2001 From: C-H716 <1536152356@qq.com> Date: Fri, 7 Nov 2025 21:41:53 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=9B=B8=E5=90=8C?= =?UTF-8?q?=E8=BE=93=E5=87=BA=E4=B8=8D=E5=90=8C=E5=80=8D=E7=8E=87=E6=88=96?= =?UTF-8?q?=E6=A0=B7=E6=9D=BF=E5=85=B6=E4=BB=96=E4=B8=8D=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E9=80=A0=E6=88=90=E7=9A=84NPE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- .../ICraftingCalculationExt.java | 7 ++++ .../ICraftingSimulationStateExt.java | 8 ---- .../ICraftingTreeProcessExt.java | 7 ---- .../autopattern/CraftingCalculationMixin.java | 30 ++++++++++++++ .../CraftingSimulationStateMixin.java | 29 +++----------- .../autopattern/CraftingTreeProcessMixin.java | 39 ------------------- .../resources/extendedae_plus.mixins.json | 2 +- 8 files changed, 44 insertions(+), 80 deletions(-) create mode 100644 src/main/java/com/extendedae_plus/api/smartDoubling/ICraftingCalculationExt.java delete mode 100644 src/main/java/com/extendedae_plus/api/smartDoubling/ICraftingSimulationStateExt.java delete mode 100644 src/main/java/com/extendedae_plus/api/smartDoubling/ICraftingTreeProcessExt.java create mode 100644 src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingCalculationMixin.java delete mode 100644 src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingTreeProcessMixin.java diff --git a/build.gradle b/build.gradle index 2436a25..ae8f2af 100644 --- a/build.gradle +++ b/build.gradle @@ -97,7 +97,7 @@ dependencies { // Runtime test modRuntimeOnly "curse.maven:curios-309927:${curios_version}" modRuntimeOnly "curse.maven:jade-324717:${jade_version}" - modRuntimeOnly "curse.maven:architectury-api-419699:${architectury_version}" + modRuntimeOnly "dev.architectury:architectury-forge:9.2.14" modRuntimeOnly "curse.maven:applied-energistics-2-wireless-terminals-459929:${wireless_terminals_version}" modRuntimeOnly "mezz.jei:jei-${minecraft_version}-forge:${jei_version}" modRuntimeOnly "curse.maven:cloth-config-348521:5729105" diff --git a/src/main/java/com/extendedae_plus/api/smartDoubling/ICraftingCalculationExt.java b/src/main/java/com/extendedae_plus/api/smartDoubling/ICraftingCalculationExt.java new file mode 100644 index 0000000..55c707a --- /dev/null +++ b/src/main/java/com/extendedae_plus/api/smartDoubling/ICraftingCalculationExt.java @@ -0,0 +1,7 @@ +package com.extendedae_plus.api.smartDoubling; + +import appeng.api.networking.IGrid; + +public interface ICraftingCalculationExt { + IGrid getGrid(); +} diff --git a/src/main/java/com/extendedae_plus/api/smartDoubling/ICraftingSimulationStateExt.java b/src/main/java/com/extendedae_plus/api/smartDoubling/ICraftingSimulationStateExt.java deleted file mode 100644 index 0758f54..0000000 --- a/src/main/java/com/extendedae_plus/api/smartDoubling/ICraftingSimulationStateExt.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.extendedae_plus.api.smartDoubling; - -import appeng.crafting.CraftingTreeProcess; - -public interface ICraftingSimulationStateExt { - void setSourceProcess(CraftingTreeProcess process); - CraftingTreeProcess getSourceProcess(); -} \ No newline at end of file diff --git a/src/main/java/com/extendedae_plus/api/smartDoubling/ICraftingTreeProcessExt.java b/src/main/java/com/extendedae_plus/api/smartDoubling/ICraftingTreeProcessExt.java deleted file mode 100644 index ee6d315..0000000 --- a/src/main/java/com/extendedae_plus/api/smartDoubling/ICraftingTreeProcessExt.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.extendedae_plus.api.smartDoubling; - -import appeng.api.networking.crafting.ICraftingService; - -public interface ICraftingTreeProcessExt { - ICraftingService getCraftingService(); -} diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingCalculationMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingCalculationMixin.java new file mode 100644 index 0000000..770e0c3 --- /dev/null +++ b/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingCalculationMixin.java @@ -0,0 +1,30 @@ +package com.extendedae_plus.mixin.ae2.autopattern; + +import appeng.api.networking.IGrid; +import appeng.api.networking.crafting.CalculationStrategy; +import appeng.api.networking.crafting.ICraftingSimulationRequester; +import appeng.api.stacks.GenericStack; +import appeng.crafting.CraftingCalculation; +import com.extendedae_plus.api.smartDoubling.ICraftingCalculationExt; +import net.minecraft.world.level.Level; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@SuppressWarnings({"AddedMixinMembersNamePattern"}) +@Mixin(value = CraftingCalculation.class, remap = false) +public class CraftingCalculationMixin implements ICraftingCalculationExt { + @Unique private IGrid grid; + + @Inject(method = "",at = @At("RETURN")) + private void init(Level level, IGrid grid, ICraftingSimulationRequester simRequester, GenericStack output, CalculationStrategy strategy, CallbackInfo ci) { + this.grid = grid; + } + + @Override + public IGrid getGrid() { + return grid; + } +} diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingSimulationStateMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingSimulationStateMixin.java index 01bfe06..c923afa 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingSimulationStateMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingSimulationStateMixin.java @@ -3,19 +3,16 @@ package com.extendedae_plus.mixin.ae2.autopattern; import appeng.api.crafting.IPatternDetails; import appeng.crafting.CraftingCalculation; import appeng.crafting.CraftingPlan; -import appeng.crafting.CraftingTreeProcess; import appeng.crafting.inv.CraftingSimulationState; import appeng.crafting.pattern.AEProcessingPattern; import appeng.me.service.CraftingService; import com.extendedae_plus.ae.api.crafting.ScaledProcessingPattern; -import com.extendedae_plus.api.smartDoubling.ICraftingSimulationStateExt; -import com.extendedae_plus.api.smartDoubling.ICraftingTreeProcessExt; +import com.extendedae_plus.api.smartDoubling.ICraftingCalculationExt; import com.extendedae_plus.api.smartDoubling.ISmartDoublingAwarePattern; import com.extendedae_plus.config.ModConfig; import com.extendedae_plus.util.smartDoubling.PatternScaler; import com.google.common.collect.Iterables; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @@ -23,11 +20,8 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import java.util.LinkedHashMap; import java.util.Map; -@SuppressWarnings({"AddedMixinMembersNamePattern"}) @Mixin(value = CraftingSimulationState.class, remap = false) -public abstract class CraftingSimulationStateMixin implements ICraftingSimulationStateExt { - @Unique private CraftingTreeProcess sourceProcess; - +public abstract class CraftingSimulationStateMixin { /** * 替换 CraftingPlan 构建逻辑,在此统一处理样板倍率 */ @@ -64,15 +58,12 @@ public abstract class CraftingSimulationStateMixin implements ICraftingSimulatio perCraftLimit = ModConfig.INSTANCE.smartScalingMaxMultiplier; } - // 获取供应器数量 - CraftingTreeProcess process = ((ICraftingSimulationStateExt) state).getSourceProcess(); - CraftingService craftingService = (CraftingService) ((ICraftingTreeProcessExt) process).getCraftingService(); - long providerCount = Iterables.size(craftingService.getProviders(processingPattern)); - if (providerCount <= 0) providerCount = 1; - if (perCraftLimit <= 0) { // 检查是否开启 provider 轮询分配功能 if (ModConfig.INSTANCE.providerRoundRobinEnable) { + CraftingService craftingService = (CraftingService) ((ICraftingCalculationExt) calculation).getGrid().getCraftingService(); + int providerCount = Math.max(Iterables.size(craftingService.getProviders(processingPattern)), 1); + long base = totalAmount / providerCount; long remainder = totalAmount % providerCount; @@ -112,14 +103,4 @@ public abstract class CraftingSimulationStateMixin implements ICraftingSimulatio crafts.clear(); crafts.putAll(finalCrafts); } - - @Override - public CraftingTreeProcess getSourceProcess() { - return this.sourceProcess; - } - - @Override - public void setSourceProcess(CraftingTreeProcess process) { - this.sourceProcess = process; - } } 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 deleted file mode 100644 index fe28216..0000000 --- a/src/main/java/com/extendedae_plus/mixin/ae2/autopattern/CraftingTreeProcessMixin.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.extendedae_plus.mixin.ae2.autopattern; - -import appeng.api.crafting.IPatternDetails; -import appeng.api.networking.crafting.ICraftingService; -import appeng.crafting.CraftingCalculation; -import appeng.crafting.CraftingTreeNode; -import appeng.crafting.CraftingTreeProcess; -import appeng.crafting.inv.CraftingSimulationState; -import com.extendedae_plus.api.smartDoubling.ICraftingSimulationStateExt; -import com.extendedae_plus.api.smartDoubling.ICraftingTreeProcessExt; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@SuppressWarnings({"AddedMixinMembersNamePattern"}) -@Mixin(value = CraftingTreeProcess.class, remap = false) -public class CraftingTreeProcessMixin implements ICraftingTreeProcessExt { - @Unique private ICraftingService craftingService; - - @Inject(method = "",at = @At("RETURN")) - private void init(ICraftingService cc, CraftingCalculation job, IPatternDetails details, CraftingTreeNode craftingTreeNode, CallbackInfo ci) { - this.craftingService = cc; - } - - @Inject( - method = "request", - at = @At("HEAD") - ) - private void bindSimulationState(CraftingSimulationState inv, long times, CallbackInfo ci) { - ((ICraftingSimulationStateExt) inv).setSourceProcess((CraftingTreeProcess) (Object) this); - } - - @Override - public ICraftingService getCraftingService() { - return this.craftingService; - } -} diff --git a/src/main/resources/extendedae_plus.mixins.json b/src/main/resources/extendedae_plus.mixins.json index 24eb674..987b176 100644 --- a/src/main/resources/extendedae_plus.mixins.json +++ b/src/main/resources/extendedae_plus.mixins.json @@ -51,10 +51,10 @@ "ae2.accessor.PatternEncodingTermMenuAccessor", "ae2.accessor.PatternProviderLogicAccessor", "ae2.accessor.PatternProviderMenuAccessor", + "ae2.autopattern.CraftingCalculationMixin", "ae2.autopattern.CraftingServiceGetProvidersMixin", "ae2.autopattern.CraftingSimulationStateAccessor", "ae2.autopattern.CraftingSimulationStateMixin", - "ae2.autopattern.CraftingTreeProcessMixin", "ae2.autopattern.PatternProviderLogicContainsRedirectMixin", "ae2.compat.PatternProviderCompatMixin", "ae2.compat.PatternProviderLogicCompatMixin",