Merge branch 'master' into fix/multiple-bugs-and-tweaks
This commit is contained in:
commit
477a5ffee7
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -4,7 +4,7 @@ build/
|
||||||
out/
|
out/
|
||||||
classes/
|
classes/
|
||||||
source/
|
source/
|
||||||
|
Applied-Energistics-2-forge-1.20.1/
|
||||||
# Eclipse
|
# Eclipse
|
||||||
*.tmp
|
*.tmp
|
||||||
*.bak
|
*.bak
|
||||||
|
|
|
||||||
107
CHANGELOG.md
Normal file
107
CHANGELOG.md
Normal file
|
|
@ -0,0 +1,107 @@
|
||||||
|
# Changelog
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [1.4.0]
|
||||||
|
### Added
|
||||||
|
- 添加智能倍增模式:一次性发配够需求量,降低后期下单卡顿
|
||||||
|
- 增加模组配置 UI 界面,可配置相关属性
|
||||||
|
- 供应器支持启用/禁用智能倍增
|
||||||
|
- 扩展样板管理终端中添加按钮,可打开样板供应器对应机器的 UI 界面
|
||||||
|
- 无线收发器适配 Jade 显示信息
|
||||||
|
- 合成进度界面:Shift+左键跳转到对应机器 UI,Shift+右键跳转到对应供应器 UI
|
||||||
|
- 新增样板供应器状态控制器方块,连接到 ME 网络后可全局调整所有样板供应器三个模式的启用状态
|
||||||
|
|
||||||
|
## [1.3.3]
|
||||||
|
### Added
|
||||||
|
- ME 扩展样板管理终端:搜索命中槽位增加 18x18 边框与彩虹流转高亮
|
||||||
|
- 装配矩阵:新增锻造台与切石机配方上传
|
||||||
|
- 在 AE2 与 ExtendedAE 的终端与供应器中显示样板生产数量
|
||||||
|
- 增加并行处理单元系列,最高 1024 并行
|
||||||
|
- 新增:JEI 书签界面按 F 键自动搜索物品到 AE 终端
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- 修复同方块多样板供应器贴片误选供应器问题
|
||||||
|
- 修复多人游戏下智能阻挡按钮属性值显示不同步
|
||||||
|
|
||||||
|
### Docs
|
||||||
|
- 重要:与 modern ae2 additions 模组不兼容(加装后智能阻挡无效)
|
||||||
|
|
||||||
|
## [1.3.2]
|
||||||
|
### Added
|
||||||
|
- 增加映射修改便捷功能(输入名称即可删除并重新添加)
|
||||||
|
- 供应器新增高级阻挡模式:相同配方不再阻挡,直至该配方完成清空容器后再发配下一种(支持输入总成;总成内电路不受影响;催化剂槽内不可放置任意一个样板的输入物品)
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- 修复石英切割刀 Shift+右键复制名称功能,且支持格雷大型机器不同配方类型子名称
|
||||||
|
|
||||||
|
### Docs
|
||||||
|
- 与 modernae 模组存在兼容性问题:同时安装不报错,但高级阻挡模式会失效
|
||||||
|
- 高级阻挡模式需同时开启“原版阻挡模式”和“高级阻挡模式”方可生效
|
||||||
|
|
||||||
|
## [1.3.1]
|
||||||
|
### Added
|
||||||
|
- 无线收发器支持:放下后默认从端、频率 1;支持镐子挖掘;支持 AE2 扳手 Shift+右键快速拆除;扳手右键可锁定/解锁收发器(锁定后无法更改主从与频道)
|
||||||
|
- 石英切割刀:Shift+右键实体可复制其名称到剪切板,便于命名样板供应器
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- 修复 JEI 作弊模式下 Shift+左键无法获取物品的问题
|
||||||
|
- 修复同名供应器中其中一个满了不会上传到其他的问题(建议打开“未满且可见”模式)
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- 无线收发器默认行为与交互方式调整(见 Added)
|
||||||
|
|
||||||
|
## [1.3.0]
|
||||||
|
### Added
|
||||||
|
- 为处理样板添加快速上传功能
|
||||||
|
- 自动搜索改为采用映射表实现
|
||||||
|
|
||||||
|
### Docs
|
||||||
|
- 可在 `/config/extendedae-plus/recipe_type_names.json` 修改映射名称
|
||||||
|
|
||||||
|
## [1.2.2]
|
||||||
|
### Added
|
||||||
|
- JEI 中 Shift+左键自动拉取物品到背包;若 AE 中没有但可自动化合成,则跳转到下单界面
|
||||||
|
- 上传样板到装配矩阵:新增已有样板检测;已有则不再上传,并在左下角提示玩家
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- 修复上传样板到装配矩阵偶发失败的问题
|
||||||
|
- 修复一个可能引发偶发崩端的问题
|
||||||
|
|
||||||
|
## [1.2.1-fix]
|
||||||
|
### Added
|
||||||
|
- 编码样板终端:编写合成样板时自动上传到装配矩阵(网络需有装配矩阵)
|
||||||
|
- 鼠标中键点击某方块:若 AE 网络有库存,自动拉取到手上
|
||||||
|
- JEI 中对着物品鼠标中键:若网络有该物品的自动化方案,自动跳转到下单界面
|
||||||
|
- 支持在 Curios 槽位使用通用终端;量子卡可随时随地进行下单与拉取
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- 优化交互逻辑(减少奇怪的交互问题)
|
||||||
|
|
||||||
|
### Docs
|
||||||
|
- 上述“中键拉取/跳转”功能需携带无线终端(放饰品槽也支持)
|
||||||
|
|
||||||
|
## [1.2.0-a]
|
||||||
|
### Added
|
||||||
|
- 新增无线收发器方块:可无线传输 ME 频道,支持跨维度(主方块区块需设置强加载)
|
||||||
|
- 为无线收发器添加抗卸载机制(重启后无需手动更新主端状态)
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- 更改扩展样板管理终端:打开 UI 时默认隐藏所有样板
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- 修复 JEI 无法正常搜索到物品的问题
|
||||||
|
|
||||||
|
### Performance
|
||||||
|
- 提升网络稳定性:无线收发器抗卸载机制
|
||||||
|
|
||||||
|
### Docs
|
||||||
|
- 操作方法:空手右键切换主从;Shift+右键频道+1;Shift+左键频道-1;主端发信,从端收信
|
||||||
|
|
||||||
|
## [1.1.3-b]
|
||||||
|
### Added
|
||||||
|
- 配置项 `pageMultiplier`
|
||||||
|
- 打开样板编码终端时自动填充空白样板
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- 修复其他 AE 物品 UI 显示异常
|
||||||
14
build.gradle
14
build.gradle
|
|
@ -58,6 +58,7 @@ repositories {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
maven { url "https://repo.spongepowered.org/maven" }
|
maven { url "https://repo.spongepowered.org/maven" }
|
||||||
|
maven { url "https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/" }
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|
@ -104,11 +105,16 @@ dependencies {
|
||||||
|
|
||||||
|
|
||||||
//mae2
|
//mae2
|
||||||
// modRuntimeOnly "curse.maven:modern-ae2-additions-1028068:6342203"
|
modRuntimeOnly "curse.maven:modern-ae2-additions-1028068:6827727"
|
||||||
modCompileOnly "curse.maven:modern-ae2-additions-1028068:6342203"
|
modCompileOnly "curse.maven:modern-ae2-additions-1028068:6827727"
|
||||||
|
|
||||||
//advancedae
|
//aea
|
||||||
modCompileOnly "curse.maven:advancedae-1084104:5957960"
|
modImplementation "curse.maven:advancedae-1084104:6939473"
|
||||||
|
|
||||||
|
//geckolib
|
||||||
|
modRuntimeOnly "curse.maven:geckolib-388172:6920925"
|
||||||
|
//mclib运行时
|
||||||
|
forgeRuntimeLibrary "com.eliotlash.mclib:mclib:20"
|
||||||
}
|
}
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ minecraft_version = 1.20.1
|
||||||
# Dependencies
|
# Dependencies
|
||||||
forge_version = 1.20.1-47.4.3
|
forge_version = 1.20.1-47.4.3
|
||||||
glodium_version=5006780
|
glodium_version=5006780
|
||||||
ae2_version=15.4.2
|
ae2_version=15.4.5
|
||||||
guideme_version=20.1.7
|
guideme_version=20.1.7
|
||||||
wireless_terminals_version=5162352
|
wireless_terminals_version=5162352
|
||||||
jei_version=15.19.5.99
|
jei_version=15.19.5.99
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ public class ModConfigScreen extends Screen {
|
||||||
private EditBox wirelessMaxRangeBox;
|
private EditBox wirelessMaxRangeBox;
|
||||||
private CycleButton<Boolean> crossDimToggle;
|
private CycleButton<Boolean> crossDimToggle;
|
||||||
private CycleButton<Boolean> providerRoundRobinToggle;
|
private CycleButton<Boolean> providerRoundRobinToggle;
|
||||||
|
private CycleButton<Boolean> showEncoderToggle;
|
||||||
|
|
||||||
public ModConfigScreen(Screen parent) {
|
public ModConfigScreen(Screen parent) {
|
||||||
super(Component.translatable("screen.extendedae_plus.title"));
|
super(Component.translatable("screen.extendedae_plus.title"));
|
||||||
|
|
@ -56,6 +57,10 @@ public class ModConfigScreen extends Screen {
|
||||||
providerRoundRobinToggle = this.addRenderableWidget(createToggle(rightX, y + row * rowHeight, boxWidth, 20, ModConfigs.PROVIDER_ROUND_ROBIN_ENABLE.get()));
|
providerRoundRobinToggle = this.addRenderableWidget(createToggle(rightX, y + row * rowHeight, boxWidth, 20, ModConfigs.PROVIDER_ROUND_ROBIN_ENABLE.get()));
|
||||||
row++;
|
row++;
|
||||||
|
|
||||||
|
// show encoder pattern player toggle
|
||||||
|
showEncoderToggle = this.addRenderableWidget(createToggle(rightX, y + row * rowHeight, boxWidth, 20, ModConfigs.SHOW_ENCOD_PATTERN_PLAYER.get()));
|
||||||
|
row++;
|
||||||
|
|
||||||
// 按钮:保存、返回
|
// 按钮:保存、返回
|
||||||
int btnW = 100;
|
int btnW = 100;
|
||||||
int gap = 8;
|
int gap = 8;
|
||||||
|
|
@ -76,12 +81,14 @@ public class ModConfigScreen extends Screen {
|
||||||
double maxRange = clamp(parseDoubleOrDefault(wirelessMaxRangeBox.getValue(), ModConfigs.WIRELESS_MAX_RANGE.get()), 1.0, 4096.0);
|
double maxRange = clamp(parseDoubleOrDefault(wirelessMaxRangeBox.getValue(), ModConfigs.WIRELESS_MAX_RANGE.get()), 1.0, 4096.0);
|
||||||
boolean crossDim = crossDimToggle.getValue();
|
boolean crossDim = crossDimToggle.getValue();
|
||||||
boolean providerRoundRobin = providerRoundRobinToggle.getValue();
|
boolean providerRoundRobin = providerRoundRobinToggle.getValue();
|
||||||
|
boolean showEncoder = showEncoderToggle.getValue();
|
||||||
|
|
||||||
// 应用到 Forge 配置值
|
// 应用到 Forge 配置值
|
||||||
ModConfigs.PAGE_MULTIPLIER.set(pageMul);
|
ModConfigs.PAGE_MULTIPLIER.set(pageMul);
|
||||||
ModConfigs.WIRELESS_MAX_RANGE.set(maxRange);
|
ModConfigs.WIRELESS_MAX_RANGE.set(maxRange);
|
||||||
ModConfigs.WIRELESS_CROSS_DIM_ENABLE.set(crossDim);
|
ModConfigs.WIRELESS_CROSS_DIM_ENABLE.set(crossDim);
|
||||||
ModConfigs.PROVIDER_ROUND_ROBIN_ENABLE.set(providerRoundRobin);
|
ModConfigs.PROVIDER_ROUND_ROBIN_ENABLE.set(providerRoundRobin);
|
||||||
|
ModConfigs.SHOW_ENCOD_PATTERN_PLAYER.set(showEncoder);
|
||||||
|
|
||||||
// Forge 会在合适的时机写回到配置文件;部分改动可能需要重启游戏或世界才完全生效
|
// Forge 会在合适的时机写回到配置文件;部分改动可能需要重启游戏或世界才完全生效
|
||||||
onClose();
|
onClose();
|
||||||
|
|
@ -119,6 +126,7 @@ public class ModConfigScreen extends Screen {
|
||||||
g.drawString(this.font, Component.translatable("config.extendedae_plus.wirelessMaxRange_with_range"), leftX, y + 1 * rowHeight + 6, labelColor, false);
|
g.drawString(this.font, Component.translatable("config.extendedae_plus.wirelessMaxRange_with_range"), leftX, y + 1 * rowHeight + 6, labelColor, false);
|
||||||
g.drawString(this.font, Component.translatable("config.extendedae_plus.wirelessCrossDimEnable"), leftX, y + 2 * rowHeight + 6, labelColor, false);
|
g.drawString(this.font, Component.translatable("config.extendedae_plus.wirelessCrossDimEnable"), leftX, y + 2 * rowHeight + 6, labelColor, false);
|
||||||
g.drawString(this.font, Component.translatable("config.extendedae_plus.providerRoundRobinEnable"), leftX, y + 3 * rowHeight + 6, labelColor, false);
|
g.drawString(this.font, Component.translatable("config.extendedae_plus.providerRoundRobinEnable"), leftX, y + 3 * rowHeight + 6, labelColor, false);
|
||||||
|
g.drawString(this.font, Component.translatable("config.extendedae_plus.showEncoderPatternPlayer"), leftX, y + 4 * rowHeight + 6, labelColor, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int parseIntOrDefault(String s, int def) {
|
private static int parseIntOrDefault(String s, int def) {
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ public final class ModConfigs {
|
||||||
public static final ForgeConfigSpec.IntValue PAGE_MULTIPLIER;
|
public static final ForgeConfigSpec.IntValue PAGE_MULTIPLIER;
|
||||||
public static final ForgeConfigSpec.DoubleValue WIRELESS_MAX_RANGE;
|
public static final ForgeConfigSpec.DoubleValue WIRELESS_MAX_RANGE;
|
||||||
public static final ForgeConfigSpec.BooleanValue WIRELESS_CROSS_DIM_ENABLE;
|
public static final ForgeConfigSpec.BooleanValue WIRELESS_CROSS_DIM_ENABLE;
|
||||||
|
public static final ForgeConfigSpec.BooleanValue SHOW_ENCOD_PATTERN_PLAYER;
|
||||||
public static final ForgeConfigSpec.BooleanValue PROVIDER_ROUND_ROBIN_ENABLE;
|
public static final ForgeConfigSpec.BooleanValue PROVIDER_ROUND_ROBIN_ENABLE;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
|
@ -34,6 +35,13 @@ public final class ModConfigs {
|
||||||
"开启后,从端可连接到不同维度的主端(忽略距离限制)")
|
"开启后,从端可连接到不同维度的主端(忽略距离限制)")
|
||||||
.define("wirelessCrossDimEnable", true);
|
.define("wirelessCrossDimEnable", true);
|
||||||
|
|
||||||
|
SHOW_ENCOD_PATTERN_PLAYER = builder
|
||||||
|
.comment(
|
||||||
|
"是否显示样板编码玩家",
|
||||||
|
"开启后将在样板 HoverText 上添加样板的编码玩家"
|
||||||
|
)
|
||||||
|
.define("showEncoderPatternPlayer", true);
|
||||||
|
|
||||||
// 智能倍增后,是否在样板供应器间轮询分配请求量(开启:按 provider 均分;关闭:不拆分)
|
// 智能倍增后,是否在样板供应器间轮询分配请求量(开启:按 provider 均分;关闭:不拆分)
|
||||||
PROVIDER_ROUND_ROBIN_ENABLE = builder
|
PROVIDER_ROUND_ROBIN_ENABLE = builder
|
||||||
.comment(
|
.comment(
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import org.spongepowered.asm.mixin.injection.Constant;
|
||||||
import org.spongepowered.asm.mixin.injection.ModifyConstant;
|
import org.spongepowered.asm.mixin.injection.ModifyConstant;
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||||
|
|
||||||
@Mixin(value = CraftingCPUCluster.class, remap = false)
|
@Mixin(value = CraftingCPUCluster.class, remap = false, priority = 2000)
|
||||||
public abstract class CraftingCPUClusterMixin {
|
public abstract class CraftingCPUClusterMixin {
|
||||||
// 1) 提升“单方块线程上限”的常量,避免抛出 IAE 的 IllegalArgumentException
|
// 1) 提升“单方块线程上限”的常量,避免抛出 IAE 的 IllegalArgumentException
|
||||||
@ModifyConstant(
|
@ModifyConstant(
|
||||||
|
|
@ -25,7 +25,8 @@ public abstract class CraftingCPUClusterMixin {
|
||||||
method = "addBlockEntity(Lappeng/blockentity/crafting/CraftingBlockEntity;)V",
|
method = "addBlockEntity(Lappeng/blockentity/crafting/CraftingBlockEntity;)V",
|
||||||
at = @At(
|
at = @At(
|
||||||
value = "INVOKE",
|
value = "INVOKE",
|
||||||
target = "Lappeng/blockentity/crafting/CraftingBlockEntity;getAcceleratorThreads()I"
|
target = "Lappeng/blockentity/crafting/CraftingBlockEntity;getAcceleratorThreads()I",
|
||||||
|
ordinal = 1
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
private int extendedae_plus$onGetThreadsForLimitCheck(CraftingBlockEntity te) {
|
private int extendedae_plus$onGetThreadsForLimitCheck(CraftingBlockEntity te) {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
package com.extendedae_plus.mixin.ae2;
|
||||||
|
|
||||||
|
import appeng.crafting.pattern.EncodedPatternItem;
|
||||||
|
import com.extendedae_plus.config.ModConfigs;
|
||||||
|
import net.minecraft.ChatFormatting;
|
||||||
|
import net.minecraft.nbt.CompoundTag;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.TooltipFlag;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mixin(EncodedPatternItem.class)
|
||||||
|
public class EncodedPatternItemMixin {
|
||||||
|
// 客户端:在 HoverText 显示样板的编码玩家
|
||||||
|
@Inject(method = "appendHoverText", at = @At("TAIL"))
|
||||||
|
public void epp$appendHoverText(ItemStack stack, Level level, List<Component> lines, TooltipFlag advancedTooltips, CallbackInfo ci){
|
||||||
|
if (stack.hasTag() && ModConfigs.SHOW_ENCOD_PATTERN_PLAYER.get()) {
|
||||||
|
CompoundTag tag = stack.getOrCreateTag();
|
||||||
|
String name = tag.getString("encodePlayer");
|
||||||
|
lines.add(Component.translatable("extendedae_plus.pattern.hovertext.player", name).withStyle(ChatFormatting.GRAY));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -9,6 +9,7 @@ import com.glodblock.github.glodium.network.packet.sync.IActionHolder;
|
||||||
import com.glodblock.github.glodium.network.packet.sync.Paras;
|
import com.glodblock.github.glodium.network.packet.sync.Paras;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
|
@ -16,6 +17,7 @@ import org.spongepowered.asm.mixin.Unique;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
@ -110,4 +112,12 @@ public abstract class ContainerPatternEncodingTermMenuMixin implements IActionHo
|
||||||
} catch (Throwable ignored) {
|
} catch (Throwable ignored) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 服务器端:在构造样板返回前插入编码玩家的名称
|
||||||
|
@Inject(method = "encodePattern", at = @At("TAIL"), remap = false, cancellable = true)
|
||||||
|
private void eap$writeEncodePlayerToPattern(CallbackInfoReturnable<ItemStack> cir) {
|
||||||
|
ItemStack itemStack = cir.getReturnValue();
|
||||||
|
itemStack.getOrCreateTag().putString("encodePlayer", this.epp$player.getGameProfile().getName());
|
||||||
|
cir.setReturnValue(itemStack);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@
|
||||||
"extendedae_plus.screen.add_mapping": "增加映射",
|
"extendedae_plus.screen.add_mapping": "增加映射",
|
||||||
"extendedae_plus.screen.cn_name": "中文名",
|
"extendedae_plus.screen.cn_name": "中文名",
|
||||||
"extendedae_plus.button.choose_provider":"上传样板",
|
"extendedae_plus.button.choose_provider":"上传样板",
|
||||||
|
"extendedae_plus.pattern.hovertext.player": "由 %s 编码",
|
||||||
|
|
||||||
"block.extendedae_plus.4x_crafting_accelerator": "4x并行处理单元",
|
"block.extendedae_plus.4x_crafting_accelerator": "4x并行处理单元",
|
||||||
"block.extendedae_plus.16x_crafting_accelerator": "16x并行处理单元",
|
"block.extendedae_plus.16x_crafting_accelerator": "16x并行处理单元",
|
||||||
|
|
@ -47,6 +48,7 @@
|
||||||
"config.extendedae_plus.providerRoundRobinEnable": "启用样板供应器轮询分配(智能翻倍)",
|
"config.extendedae_plus.providerRoundRobinEnable": "启用样板供应器轮询分配(智能翻倍)",
|
||||||
"config.extendedae_plus.state_on": "开",
|
"config.extendedae_plus.state_on": "开",
|
||||||
"config.extendedae_plus.state_off": "关",
|
"config.extendedae_plus.state_off": "关",
|
||||||
|
"config.extendedae_plus.showEncoderPatternPlayer": "显示样板编码玩家",
|
||||||
"block.extendedae_plus.network_pattern_controller": "样板供应器状态控制器",
|
"block.extendedae_plus.network_pattern_controller": "样板供应器状态控制器",
|
||||||
"item.extendedae_plus.network_pattern_controller": "样板供应器状态控制器",
|
"item.extendedae_plus.network_pattern_controller": "样板供应器状态控制器",
|
||||||
"gui.extendedae_plus.global.toggle_blocking": "切换阻挡模式",
|
"gui.extendedae_plus.global.toggle_blocking": "切换阻挡模式",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user