feat: 添加实体加速器是否优先使用磁盘存储能源
This commit is contained in:
parent
be48565e75
commit
13a7a1f5ce
|
|
@ -267,8 +267,17 @@ public class EntitySpeedTickerPart extends UpgradeablePart implements IGridTicka
|
|||
IEnergyService energyService = getMainNode().getGrid().getEnergyService();
|
||||
MEStorage storage = getMainNode().getGrid().getStorageService().getInventory();
|
||||
IActionSource source = IActionSource.ofMachine(this);
|
||||
boolean appFluxLoaded = ModList.get().isLoaded("appflux");
|
||||
boolean preferDiskEnergy = appFluxLoaded && ModConfig.INSTANCE.prioritizeDiskEnergy;
|
||||
|
||||
// 优先尝试提取 AE 能量
|
||||
// 如果 appflux 存在且优先磁盘能量,尝试提取 FE 能量
|
||||
if (appFluxLoaded && preferDiskEnergy) {
|
||||
if (tryExtractFE(energyService, storage, requiredPower, source)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// 尝试提取 AE 能量(当 appflux 不存在、优先 AE 能量或 FE 提取失败时)
|
||||
double simulated = energyService.extractAEPower(requiredPower, Actionable.SIMULATE, PowerMultiplier.CONFIG);
|
||||
if (simulated >= requiredPower) {
|
||||
double extracted = energyService.extractAEPower(requiredPower, Actionable.MODULATE, PowerMultiplier.CONFIG);
|
||||
|
|
@ -278,29 +287,33 @@ public class EntitySpeedTickerPart extends UpgradeablePart implements IGridTicka
|
|||
}
|
||||
updateNetworkEnergySufficient(false);
|
||||
|
||||
// AE 能量不足,尝试从磁盘提取 FE 能量(如果 Applied Flux 存在)
|
||||
if (ModList.get().isLoaded("appflux")) {
|
||||
try {
|
||||
Class<?> helperClass = Class.forName("com.extendedae_plus.util.FluxEnergyHelper");
|
||||
Method extractMethod = helperClass.getMethod(
|
||||
"extractFE",
|
||||
IEnergyService.class,
|
||||
MEStorage.class,
|
||||
long.class,
|
||||
IActionSource.class
|
||||
);
|
||||
long feRequired = (long) requiredPower << 1; // 1 AE = 2 FE
|
||||
long feExtracted = (long) extractMethod.invoke(null, energyService, storage, feRequired, source);
|
||||
if (feExtracted >= feRequired) {
|
||||
updateNetworkEnergySufficient(true);
|
||||
return true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// 如果反射失败,视为 FE 不可用
|
||||
}
|
||||
updateNetworkEnergySufficient(false);
|
||||
// 如果 appflux 存在且优先 AE 能量,尝试提取 FE 能量作为备用
|
||||
if (appFluxLoaded && !preferDiskEnergy) {
|
||||
return tryExtractFE(energyService, storage, requiredPower, source);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean tryExtractFE(IEnergyService energyService, MEStorage storage, double requiredPower, IActionSource source) {
|
||||
try {
|
||||
Class<?> helperClass = Class.forName("com.extendedae_plus.util.FluxEnergyHelper");
|
||||
Method extractMethod = helperClass.getMethod(
|
||||
"extractFE",
|
||||
IEnergyService.class,
|
||||
MEStorage.class,
|
||||
long.class,
|
||||
IActionSource.class
|
||||
);
|
||||
long feRequired = (long) requiredPower << 1; // 1 AE = 2 FE
|
||||
long feExtracted = (long) extractMethod.invoke(null, energyService, storage, feRequired, source);
|
||||
if (feExtracted >= feRequired) {
|
||||
updateNetworkEnergySufficient(true);
|
||||
return true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// 如果反射失败,视为 FE 不可用
|
||||
}
|
||||
updateNetworkEnergySufficient(false);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -125,4 +125,11 @@ public final class ModConfig {
|
|||
@Configurable.Range(min = 100, max = Integer.MAX_VALUE)
|
||||
public int craftingPauseThreshold = 100000;
|
||||
|
||||
@Configurable
|
||||
@Configurable.Comment(value = {
|
||||
"是否优先从磁盘提取FE能量(仅当Applied Flux模组存在时生效)",
|
||||
"开启后,将优先尝试从磁盘提取FE能量;反之优先消耗AE网络中的能量"
|
||||
})
|
||||
@Configurable.Synchronized
|
||||
public boolean prioritizeDiskEnergy = true;
|
||||
}
|
||||
|
|
@ -27,6 +27,12 @@
|
|||
"tooltip.extendedae_plus.infinity_biginteger_cell.summon2": "§b—§4A §dUni§cverse §eWith§ain §6A §bSin§5gle §9Point",
|
||||
"tooltip.extendedae_plus.entity_speed_card.multiplier": "Multiplier: %s",
|
||||
"tooltip.extendedae_plus.entity_speed_card.max": "Max effective: %s x",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip": "Assembler Matrix Upload Core",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload": "Upload to Assembler Matrix",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload_success": "Pattern uploaded to Assembler Matrix",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload_fail_not_crafting": "Only crafting patterns supported, processing patterns ignored",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload_fail_no_matrix": "No formed Assembler Matrix found in network",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload_fail_full": "Assembler Matrix pattern storage full or cannot insert",
|
||||
|
||||
"block.extendedae_plus.wireless_transceiver": "Wireless Transceiver",
|
||||
"block.extendedae_plus.4x_crafting_accelerator": "4x Crafting Accelerator",
|
||||
|
|
@ -88,11 +94,13 @@
|
|||
"config.extendedae_plus.option.entityTickerBlackList": "Entity Ticker Blacklist",
|
||||
"config.extendedae_plus.option.entityTickerMultipliers": "Entity Ticker Extra Consumption Multipliers",
|
||||
"config.extendedae_plus.option.craftingPauseThreshold": "AE synthesis calculation pause check threshold",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core": "Assembler Matrix Upload Core",
|
||||
"config.extendedae_plus.option.prioritizeDiskEnergy": "Prioritize FE energy from disk (requires Applied Flux)",
|
||||
|
||||
"item.extendedae_plus.channel_card": "Channel Card",
|
||||
"item.extendedae_plus.channel_card.channel": "Frequency: %s",
|
||||
"item.extendedae_plus.channel_card.channel.unset": "Frequency: Unset",
|
||||
"item.extendedae_plus.channel_card.set": "Frequency set to: %s",
|
||||
"group.pattern_provider.name": "Pattern Provider",
|
||||
"group.entity_ticker.name": "Entity Accelerator",
|
||||
"group.storage.name": "StorageBus"
|
||||
}
|
||||
|
|
@ -27,6 +27,12 @@
|
|||
"tooltip.extendedae_plus.infinity_biginteger_cell.summon2": "§b——§4方§d寸§c之§e间§a, §6自§b有§5千§9寰",
|
||||
"tooltip.extendedae_plus.entity_speed_card.multiplier": "乘数: %s",
|
||||
"tooltip.extendedae_plus.entity_speed_card.max": "最大生效: %s 倍",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip": "装配矩阵上传核心",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload": "上传到装配矩阵",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload_success": "样板已上传到装配矩阵",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload_fail_not_crafting": "仅支持上传合成样板,处理样板将被忽略",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload_fail_no_matrix": "未在当前网络中找到已成型的装配矩阵",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload_fail_full": "装配矩阵的样板仓已满或无法插入",
|
||||
|
||||
"block.extendedae_plus.wireless_transceiver": "无线收发器",
|
||||
"block.extendedae_plus.4x_crafting_accelerator": "4x并行处理单元",
|
||||
|
|
@ -87,13 +93,8 @@
|
|||
"config.extendedae_plus.option.entityTickerCost": "实体加速器能量消耗基础值",
|
||||
"config.extendedae_plus.option.entityTickerBlackList": "实体加速器黑名单",
|
||||
"config.extendedae_plus.option.entityTickerMultipliers": "实体加速器额外消耗倍率",
|
||||
"config.extendedae_plus.option.prioritizeDiskEnergy": "优先从磁盘提取FE能量(仅当Applied Flux模组存在时生效)",
|
||||
"config.extendedae_plus.option.craftingPauseThreshold": "AE合成计算暂停检查阈值",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip": "装配矩阵上传核心",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload": "上传到装配矩阵",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload_success": "样板已上传到装配矩阵",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload_fail_not_crafting": "仅支持上传合成样板,处理样板将被忽略",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload_fail_no_matrix": "未在当前网络中找到已成型的装配矩阵",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload_fail_full": "装配矩阵的样板仓已满或无法插入",
|
||||
|
||||
"item.extendedae_plus.channel_card": "频道卡",
|
||||
"item.extendedae_plus.channel_card.channel": "频率:%s",
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user