148 lines
7.1 KiB
Java
148 lines
7.1 KiB
Java
package com.extendedae_plus.config;
|
||
|
||
import net.neoforged.neoforge.common.ModConfigSpec;
|
||
|
||
import java.util.List;
|
||
|
||
public final class ModConfigs {
|
||
// Common 配置
|
||
public static final ModConfigSpec COMMON_SPEC;
|
||
public static final ModConfigSpec.IntValue PAGE_MULTIPLIER;
|
||
|
||
// Client 配置
|
||
public static final ModConfigSpec CLIENT_SPEC;
|
||
public static final ModConfigSpec.BooleanValue SHOW_ENCODER_PATTERN_PLAYER;
|
||
public static final ModConfigSpec.BooleanValue PATTERN_TERMINAL_SHOW_SLOTS_DEFAULT;
|
||
public static final ModConfigSpec.BooleanValue PRIORITIZE_DISK_ENERGY;
|
||
|
||
// Server 配置
|
||
public static final ModConfigSpec SERVER_SPEC;
|
||
public static final ModConfigSpec.BooleanValue PROVIDER_ROUND_ROBIN_ENABLE;
|
||
public static final ModConfigSpec.IntValue SMART_SCALING_MAX_MULTIPLIER;
|
||
public static final ModConfigSpec.IntValue CRAFTING_PAUSE_THRESHOLD;
|
||
public static final ModConfigSpec.DoubleValue WIRELESS_MAX_RANGE;
|
||
public static final ModConfigSpec.BooleanValue WIRELESS_CROSS_DIM_ENABLE;
|
||
public static final ModConfigSpec.DoubleValue WIRELESS_IDLE_POWER;
|
||
public static final ModConfigSpec.IntValue ENTITY_TICKER_COST;
|
||
public static final ModConfigSpec.ConfigValue<List<? extends String>> ENTITY_TICKER_BLACK_LIST;
|
||
public static final ModConfigSpec.ConfigValue<List<? extends String>> ENTITY_TICKER_MULTIPLIERS;
|
||
|
||
static {
|
||
// Common 配置
|
||
ModConfigSpec.Builder commonBuilder = new ModConfigSpec.Builder();
|
||
commonBuilder.push("common");
|
||
PAGE_MULTIPLIER = commonBuilder
|
||
.comment(
|
||
"扩展样板供应器总槽位容量的倍率",
|
||
"基础为36,每页仍显示36格,倍率会增加总页数/总容量",
|
||
"建议范围 1-16"
|
||
)
|
||
.defineInRange("pageMultiplier", 1, 1, 64);
|
||
commonBuilder.pop();
|
||
COMMON_SPEC = commonBuilder.build();
|
||
|
||
// Client 配置
|
||
ModConfigSpec.Builder clientBuilder = new ModConfigSpec.Builder();
|
||
clientBuilder.push("client");
|
||
SHOW_ENCODER_PATTERN_PLAYER = clientBuilder
|
||
.comment(
|
||
"是否显示样板编码玩家",
|
||
"开启后将在样板 HoverText 上添加样板的编码玩家"
|
||
)
|
||
.define("showEncoderPatternPlayer", true);
|
||
PATTERN_TERMINAL_SHOW_SLOTS_DEFAULT = clientBuilder
|
||
.comment(
|
||
"样板终端默认是否显示槽位",
|
||
"影响进入界面时SlotsRow的默认可见性,仅影响客户端显示"
|
||
)
|
||
.define("patternTerminalShowSlotsDefault", true);
|
||
clientBuilder.pop();
|
||
CLIENT_SPEC = clientBuilder.build();
|
||
|
||
// Server 配置
|
||
ModConfigSpec.Builder serverBuilder = new ModConfigSpec.Builder();
|
||
serverBuilder.push("ae");
|
||
PROVIDER_ROUND_ROBIN_ENABLE = serverBuilder
|
||
.comment(
|
||
"智能倍增时是否对样板供应器轮询分配",
|
||
"仅多个供应器有相同样板时生效,开启后请求会均分到所有可用供应器,关闭则全部分配给单一供应器",
|
||
"注意:所有相关供应器需开启智能倍增,否则可能失效",
|
||
"默认: true"
|
||
)
|
||
.define("providerRoundRobinEnable", true);
|
||
SMART_SCALING_MAX_MULTIPLIER = serverBuilder
|
||
.comment(
|
||
"智能倍增的最大倍数(0 表示不限制)",
|
||
"此倍数是针对单次样板产出的放大倍数上限,用于限制一次推送中按倍增缩放的规模"
|
||
)
|
||
.defineInRange("smartScalingMaxMultiplier", 0, 0, 1048576);
|
||
CRAFTING_PAUSE_THRESHOLD = serverBuilder
|
||
.comment(
|
||
"值越大将减少AE构建合成计划过程中的 wait/notify 次数,提升吞吐但会降低调度响应性"
|
||
)
|
||
.defineInRange("craftingPauseThreshold", 100000, 100, Integer.MAX_VALUE);
|
||
serverBuilder.pop();
|
||
|
||
serverBuilder.push("wireless");
|
||
WIRELESS_MAX_RANGE = serverBuilder
|
||
.comment(
|
||
"无线收发器最大连接距离(单位:方块)",
|
||
"从端与主端的直线距离需小于等于该值才会建立连接。"
|
||
)
|
||
.defineInRange("wirelessMaxRange", 256.0D, 1.0D, 4096.0D);
|
||
WIRELESS_CROSS_DIM_ENABLE = serverBuilder
|
||
.comment(
|
||
"是否允许无线收发器跨维度建立连接",
|
||
"开启后,从端可连接到不同维度的主端(忽略距离限制)"
|
||
)
|
||
.define("wirelessCrossDimEnable", true);
|
||
WIRELESS_IDLE_POWER = serverBuilder
|
||
.comment(
|
||
"无线收发器待机能耗",
|
||
"无线收发器的基础待机能耗(AE/t),同时作用于普通与标签无线收发器"
|
||
)
|
||
.defineInRange("wirelessIdlePower", 100.0D, 0.0D, Double.MAX_VALUE);
|
||
serverBuilder.pop();
|
||
|
||
serverBuilder.push("entitySpeedTicker");
|
||
ENTITY_TICKER_COST = serverBuilder
|
||
.comment(
|
||
"实体加速器能量消耗基础值"
|
||
)
|
||
.defineInRange("entityTickerCost", 512, 0, Integer.MAX_VALUE);
|
||
ENTITY_TICKER_BLACK_LIST = serverBuilder
|
||
.comment(
|
||
"实体加速器黑名单:匹配的方块将不会被加速。支持通配符/正则(例如:minecraft:*)",
|
||
"格式:全名或通配符/正则字符串,例如 'minecraft:chest'、'minecraft:*'、'modid:.*_fluid'"
|
||
)
|
||
.defineListAllowEmpty(
|
||
List.of("entityTickerBlackList"),
|
||
List::of,
|
||
() -> "",
|
||
obj -> obj instanceof String
|
||
);
|
||
ENTITY_TICKER_MULTIPLIERS = serverBuilder
|
||
.comment(
|
||
"额外消耗倍率配置:为某些方块设置额外能量倍率,格式 'modid:blockid multiplier',例如 'minecraft:chest 2x'",
|
||
"支持通配符/正则匹配(例如 'minecraft:* 2x' 会对整个命名空间生效)。"
|
||
)
|
||
.defineListAllowEmpty(
|
||
List.of("entityTickerMultipliers"),
|
||
List::of,
|
||
() -> "",
|
||
obj -> obj instanceof String
|
||
);
|
||
PRIORITIZE_DISK_ENERGY = serverBuilder
|
||
.comment(
|
||
"是否优先从磁盘提取FE能量(仅当Applied Flux模组存在时生效)",
|
||
"开启后,将优先尝试从磁盘提取FE能量;反之优先消耗AE网络中的能量"
|
||
)
|
||
.define("prioritizeDiskEnergy", true);
|
||
serverBuilder.pop();
|
||
SERVER_SPEC = serverBuilder.build();
|
||
}
|
||
|
||
private ModConfigs() {
|
||
}
|
||
}
|