Compare commits
5 Commits
d8bc4b9303
...
80961678c1
Author | SHA1 | Date |
---|---|---|
Tom Dodd | 80961678c1 | |
Tom Dodd | 80ae429454 | |
ghostbird03 | f370bc2189 | |
ghostbird03 | e9f4a0bfbd | |
ghostbird03 | 54d2372be5 |
|
@ -1,3 +1,17 @@
|
|||
v2o.4.3
|
||||
|
||||
+ Script addons no longer have to be manually unzipped
|
||||
+ Added logging of script addons being constructed
|
||||
|
||||
* Modified turbine throughput leniency and power bonuses
|
||||
|
||||
* Fixed irradiator producing too much radiation
|
||||
|
||||
* Fixed Patchouli guide not being given to players with radiation disabled
|
||||
+ Added backup crafting recipe for the Patchouli guide
|
||||
|
||||
* Updated default fission fuel radiation levels to take new waste products into account
|
||||
|
||||
v2o.4.2
|
||||
|
||||
+ Added fission waste products
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
mc_version=1.12.2
|
||||
forge_version=14.23.5.2847
|
||||
mapping_version=stable_39
|
||||
mod_version=2o.4.2
|
||||
mod_version=2o.4.3
|
||||
|
||||
ic2_version=2.8.197-ex112
|
||||
jei_version=4.15.0.293
|
||||
|
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1017 B After Width: | Height: | Size: 1017 B |
Before Width: | Height: | Size: 1018 B After Width: | Height: | Size: 1018 B |
Before Width: | Height: | Size: 639 B After Width: | Height: | Size: 639 B |
Before Width: | Height: | Size: 461 B After Width: | Height: | Size: 461 B |
|
@ -211,7 +211,7 @@ public class NCConfig {
|
|||
public static double[] turbine_power_per_mb;
|
||||
public static double[] turbine_expansion_level;
|
||||
public static int turbine_mb_per_blade;
|
||||
public static double turbine_throughput_efficiency_leniency;
|
||||
public static double[] turbine_throughput_leniency_params;
|
||||
public static double turbine_tension_throughput_factor;
|
||||
public static double turbine_power_bonus_multiplier;
|
||||
public static double turbine_sound_volume;
|
||||
|
@ -732,8 +732,8 @@ public class NCConfig {
|
|||
propertyTurbineExpansionLevel.setLanguageKey("gui.nc.config.turbine_expansion_level");
|
||||
Property propertyTurbineMBPerBlade = config.get(CATEGORY_TURBINE, "turbine_mb_per_blade", 100, Lang.localise("gui.nc.config.turbine_mb_per_blade.comment"), 1, 32767);
|
||||
propertyTurbineMBPerBlade.setLanguageKey("gui.nc.config.turbine_mb_per_blade");
|
||||
Property propertyTurbineThroughputEfficiencyLeniency = config.get(CATEGORY_TURBINE, "turbine_throughput_efficiency_leniency", 1D, Lang.localise("gui.nc.config.turbine_throughput_efficiency_leniency.comment"), 0D, 255D);
|
||||
propertyTurbineThroughputEfficiencyLeniency.setLanguageKey("gui.nc.config.turbine_throughput_efficiency_leniency");
|
||||
Property propertyTurbineThroughputLeniencyParams = config.get(CATEGORY_TURBINE, "turbine_throughput_leniency_params", new double[] {0.5D, 0.75D}, Lang.localise("gui.nc.config.turbine_throughput_leniency_params.comment"), 0D, 1D);
|
||||
propertyTurbineThroughputLeniencyParams.setLanguageKey("gui.nc.config.turbine_throughput_leniency_params");
|
||||
Property propertyTurbineTensionThroughputFactor = config.get(CATEGORY_TURBINE, "turbine_tension_throughput_factor", 2D, Lang.localise("gui.nc.config.turbine_tension_throughput_factor.comment"), 1D, 255D);
|
||||
propertyTurbineTensionThroughputFactor.setLanguageKey("gui.nc.config.turbine_tension_throughput_factor");
|
||||
Property propertyTurbinePowerBonusMultiplier = config.get(CATEGORY_TURBINE, "turbine_power_bonus_multiplier", 1D, Lang.localise("gui.nc.config.turbine_power_bonus_multiplier.comment"), 0D, 255D);
|
||||
|
@ -1193,7 +1193,7 @@ public class NCConfig {
|
|||
propertyOrderTurbine.add(propertyTurbinePowerPerMB.getName());
|
||||
propertyOrderTurbine.add(propertyTurbineExpansionLevel.getName());
|
||||
propertyOrderTurbine.add(propertyTurbineMBPerBlade.getName());
|
||||
propertyOrderTurbine.add(propertyTurbineThroughputEfficiencyLeniency.getName());
|
||||
propertyOrderTurbine.add(propertyTurbineThroughputLeniencyParams.getName());
|
||||
propertyOrderTurbine.add(propertyTurbineTensionThroughputFactor.getName());
|
||||
propertyOrderTurbine.add(propertyTurbinePowerBonusMultiplier.getName());
|
||||
propertyOrderTurbine.add(propertyTurbineSoundVolume.getName());
|
||||
|
@ -1519,7 +1519,7 @@ public class NCConfig {
|
|||
turbine_power_per_mb = readDoubleArrayFromConfig(propertyTurbinePowerPerMB);
|
||||
turbine_expansion_level = readDoubleArrayFromConfig(propertyTurbineExpansionLevel);
|
||||
turbine_mb_per_blade = propertyTurbineMBPerBlade.getInt();
|
||||
turbine_throughput_efficiency_leniency = propertyTurbineThroughputEfficiencyLeniency.getDouble();
|
||||
turbine_throughput_leniency_params = readDoubleArrayFromConfig(propertyTurbineThroughputLeniencyParams);
|
||||
turbine_tension_throughput_factor = propertyTurbineTensionThroughputFactor.getDouble();
|
||||
turbine_power_bonus_multiplier = propertyTurbinePowerBonusMultiplier.getDouble();
|
||||
turbine_sound_volume = propertyTurbineSoundVolume.getDouble();
|
||||
|
@ -1841,7 +1841,7 @@ public class NCConfig {
|
|||
propertyTurbinePowerPerMB.set(turbine_power_per_mb);
|
||||
propertyTurbineExpansionLevel.set(turbine_expansion_level);
|
||||
propertyTurbineMBPerBlade.set(turbine_mb_per_blade);
|
||||
propertyTurbineThroughputEfficiencyLeniency.set(turbine_throughput_efficiency_leniency);
|
||||
propertyTurbineThroughputLeniencyParams.set(turbine_throughput_leniency_params);
|
||||
propertyTurbineTensionThroughputFactor.set(turbine_tension_throughput_factor);
|
||||
propertyTurbinePowerBonusMultiplier.set(turbine_power_bonus_multiplier);
|
||||
propertyTurbineSoundVolume.set(turbine_sound_volume);
|
||||
|
@ -2005,14 +2005,14 @@ public class NCConfig {
|
|||
fissionPlacement.add(entry.getKey() + " -> " + entry.getValue());
|
||||
}
|
||||
|
||||
Property propertyFissionPlacement = info.get(CATEGORY_OUTPUT, "fission_placement", fissionPlacement.toArray(new String[fissionPlacement.size()]));
|
||||
propertyFissionPlacement.setLanguageKey("gui.nc.config.fission_placement");
|
||||
|
||||
List<String> turbinePlacement = new ArrayList<>();
|
||||
for (Object2ObjectMap.Entry<String, String> entry : TurbinePlacement.RULE_MAP_RAW.object2ObjectEntrySet()) {
|
||||
turbinePlacement.add(entry.getKey() + " -> " + entry.getValue());
|
||||
}
|
||||
|
||||
Property propertyFissionPlacement = info.get(CATEGORY_OUTPUT, "fission_placement", fissionPlacement.toArray(new String[fissionPlacement.size()]));
|
||||
propertyFissionPlacement.setLanguageKey("gui.nc.config.fission_placement");
|
||||
|
||||
Property propertyTurbinePlacement = info.get(CATEGORY_OUTPUT, "turbine_placement", turbinePlacement.toArray(new String[turbinePlacement.size()]));
|
||||
propertyTurbinePlacement.setLanguageKey("gui.nc.config.turbine_placement");
|
||||
|
||||
|
|
|
@ -9,17 +9,15 @@ import nc.util.*;
|
|||
|
||||
public class ScriptAddonHandler {
|
||||
|
||||
public static final ObjectSet<File> SCRIPT_ADDON_DIRS = new ObjectOpenHashSet<>();
|
||||
|
||||
public static void init() throws IOException {
|
||||
File nc = new File("resources/nuclearcraft");
|
||||
if (!nc.exists()) {
|
||||
nc.mkdirs();
|
||||
}
|
||||
NCUtil.getLogger().info("Constructing NuclearCraft Script Addons...");
|
||||
|
||||
new File("resources/nuclearcraft").mkdirs();
|
||||
|
||||
for (String s : new String[] {"addons", "advancements", "blockstates", "lang", "loot_tables", "models/block", "models/item", "patchouli_books/guide", "textures/blocks", "textures/items"}) {
|
||||
File f = new File("resources/nuclearcraft/" + s);
|
||||
if (!f.exists()) {
|
||||
f.mkdirs();
|
||||
}
|
||||
new File("resources/nuclearcraft/" + s).mkdirs();
|
||||
}
|
||||
|
||||
File scripts = new File("scripts/nc_script_addons");
|
||||
|
@ -32,20 +30,45 @@ public class ScriptAddonHandler {
|
|||
legacy.delete();
|
||||
}
|
||||
|
||||
File temp = new File("resources/nuclearcraft/addons/.temp");
|
||||
temp.mkdirs();
|
||||
|
||||
File addons = new File("resources/nuclearcraft/addons");
|
||||
for (File f : addons.listFiles()) {
|
||||
if (IOHelper.isZip(f)) {
|
||||
String fileName = f.getName();
|
||||
if (fileName.endsWith(".zip") || fileName.endsWith(".jar")) {
|
||||
fileName = StringHelper.removeSuffix(fileName, 4);
|
||||
}
|
||||
IOHelper.unzip(f, "resources/nuclearcraft/addons/.temp/" + fileName);
|
||||
}
|
||||
}
|
||||
|
||||
for (File f : addons.listFiles()) {
|
||||
if (f.isDirectory()) {
|
||||
copyAddons(f);
|
||||
}
|
||||
}
|
||||
|
||||
FileUtils.deleteDirectory(temp);
|
||||
|
||||
for (File f : SCRIPT_ADDON_DIRS) {
|
||||
NCUtil.getLogger().info("Constructed \"" + f.getName() + "\" Script Addon!");
|
||||
}
|
||||
}
|
||||
|
||||
public static final String[] NC_ASSETS = {"advancements", "blockstates", "loot_tables", "models", "patchouli_books", "textures"};
|
||||
public static final String[] ADDON_ASSETS = {"advancements", "blockstates", "contenttweaker", "lang", "loot_tables", "models", "patchouli_books", "scripts", "textures"};
|
||||
public static final String[] IGNORE_SUFFIX = {".ignore", ".disabled"};
|
||||
|
||||
public static void copyAddons(File dir) throws IOException {
|
||||
if (dir.getName().toLowerCase().endsWith(".disabled")) {
|
||||
return;
|
||||
String dirName = dir.getName();
|
||||
String dirNameLowerCase = dirName.toLowerCase();
|
||||
|
||||
for (String suffix : IGNORE_SUFFIX) {
|
||||
if (dirNameLowerCase.endsWith(suffix)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
for (File f : dir.listFiles()) {
|
||||
|
@ -53,25 +76,29 @@ public class ScriptAddonHandler {
|
|||
for (String s : NC_ASSETS) {
|
||||
if (f.getName().equals(s)) {
|
||||
FileUtils.copyDirectory(f, new File("resources/nuclearcraft/" + s));
|
||||
SCRIPT_ADDON_DIRS.add(dir);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (f.getName().equals("lang")) {
|
||||
copyLangs(dir, f);
|
||||
SCRIPT_ADDON_DIRS.add(dir);
|
||||
}
|
||||
|
||||
else if (f.getName().equals("scripts")) {
|
||||
File legacy = new File("scripts/nuclearcraft/" + dir.getName());
|
||||
File legacy = new File("scripts/nuclearcraft/" + dirName);
|
||||
if (legacy.exists()) {
|
||||
FileUtils.deleteDirectory(legacy);
|
||||
}
|
||||
|
||||
FileUtils.copyDirectory(f, new File("scripts/nc_script_addons/" + dir.getName()));
|
||||
FileUtils.copyDirectory(f, new File("scripts/nc_script_addons/" + dirName));
|
||||
SCRIPT_ADDON_DIRS.add(dir);
|
||||
}
|
||||
|
||||
else if (f.getName().equals("contenttweaker")) {
|
||||
FileUtils.copyDirectory(f, new File("resources/contenttweaker"));
|
||||
SCRIPT_ADDON_DIRS.add(dir);
|
||||
}
|
||||
|
||||
else {
|
||||
|
|
|
@ -490,28 +490,28 @@ public class JEIRecipeWrapper {
|
|||
|
||||
@Override
|
||||
protected int getProgressArrowTime() {
|
||||
return (int) (getDecayLifetime() / 4D);
|
||||
return (int) (getDecayGeneratorLifetime() / 4D);
|
||||
}
|
||||
|
||||
protected double getDecayLifetime() {
|
||||
protected double getDecayGeneratorLifetime() {
|
||||
if (recipe == null) {
|
||||
return 1200D;
|
||||
}
|
||||
return recipe.getDecayLifetime();
|
||||
return recipe.getDecayGeneratorLifetime();
|
||||
}
|
||||
|
||||
protected double getDecayPower() {
|
||||
protected double getDecayGeneratorPower() {
|
||||
if (recipe == null) {
|
||||
return 0D;
|
||||
}
|
||||
return recipe.getDecayPower();
|
||||
return recipe.getDecayGeneratorPower();
|
||||
}
|
||||
|
||||
protected double getDecayRadiation() {
|
||||
protected double getDecayGeneratorRadiation() {
|
||||
if (recipe == null) {
|
||||
return 0D;
|
||||
}
|
||||
return recipe.getDecayRadiation();
|
||||
return recipe.getDecayGeneratorRadiation();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -519,9 +519,9 @@ public class JEIRecipeWrapper {
|
|||
List<String> tooltip = new ArrayList<>();
|
||||
|
||||
if (mouseX >= 73 - 47 && mouseY >= 34 - 30 && mouseX < 73 - 47 + 37 + 1 && mouseY < 34 - 30 + 18 + 1) {
|
||||
tooltip.add(TextFormatting.GREEN + BLOCK_LIFETIME + " " + TextFormatting.WHITE + UnitHelper.applyTimeUnitShort(getDecayLifetime(), 3, 1));
|
||||
tooltip.add(TextFormatting.LIGHT_PURPLE + BLOCK_POWER + " " + TextFormatting.WHITE + UnitHelper.prefix(getDecayPower(), 5, "RF/t"));
|
||||
double radiation = getDecayRadiation();
|
||||
tooltip.add(TextFormatting.GREEN + BLOCK_LIFETIME + " " + TextFormatting.WHITE + UnitHelper.applyTimeUnitShort(getDecayGeneratorLifetime(), 3, 1));
|
||||
tooltip.add(TextFormatting.LIGHT_PURPLE + BLOCK_POWER + " " + TextFormatting.WHITE + UnitHelper.prefix(getDecayGeneratorPower(), 5, "RF/t"));
|
||||
double radiation = getDecayGeneratorRadiation();
|
||||
if (radiation > 0D) {
|
||||
tooltip.add(TextFormatting.GOLD + BLOCK_RADIATION + " " + RadiationHelper.radsColoredPrefix(radiation, true));
|
||||
}
|
||||
|
@ -614,7 +614,7 @@ public class JEIRecipeWrapper {
|
|||
}
|
||||
double radiation = getIrradiatorBaseProcessRadiation();
|
||||
if (radiation > 0D) {
|
||||
tooltip.add(TextFormatting.GOLD + FUEL_RADIATION + " " + RadiationHelper.radsColoredPrefix(radiation, true));
|
||||
tooltip.add(TextFormatting.GOLD + RADIATION_PER_FLUX + " " + RadiationHelper.getRadiationTextColor(radiation) + UnitHelper.prefix(radiation / RecipeStats.getFissionMaxModeratorLineFlux(), 3, "Rad/t/N"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -624,7 +624,7 @@ public class JEIRecipeWrapper {
|
|||
private static final String FLUX_REQUIRED = Lang.localise("jei.nuclearcraft.irradiator_flux_required");
|
||||
private static final String HEAT_PER_FLUX = Lang.localise("jei.nuclearcraft.irradiator_heat_per_flux");
|
||||
private static final String EFFICIENCY = Lang.localise("jei.nuclearcraft.irradiator_process_efficiency");
|
||||
private static final String FUEL_RADIATION = Lang.localise("jei.nuclearcraft.base_process_radiation");
|
||||
private static final String RADIATION_PER_FLUX = Lang.localise("jei.nuclearcraft.radiation_per_flux");
|
||||
}
|
||||
|
||||
public static class PebbleFission extends JEIRecipeWrapperAbstract<PebbleFission> {
|
||||
|
|
|
@ -335,7 +335,7 @@ public class TileFissionIrradiator extends TileFissionPart implements ITileFilte
|
|||
|
||||
public void process() {
|
||||
time += getSpeedMultiplier();
|
||||
getRadiationSource().setRadiationLevel(baseProcessRadiation * getSpeedMultiplier());
|
||||
getRadiationSource().setRadiationLevel(baseProcessRadiation * getSpeedMultiplier() / RecipeStats.getFissionMaxModeratorLineFlux());
|
||||
while (time >= baseProcessTime) {
|
||||
finishProcess();
|
||||
}
|
||||
|
|
|
@ -63,7 +63,7 @@ public class GuiTurbineController extends GuiMultiblock<Turbine, ITurbineControl
|
|||
else {
|
||||
double rateRatio = multiblock.recipeInputRate / (double) multiblock.getLogic().getMaxRecipeRateMultiplier();
|
||||
double rateRatioFP = multiblock.recipeInputRateFP / multiblock.getLogic().getMaxRecipeRateMultiplier();
|
||||
inputRate = Lang.localise("gui.nc.container.turbine_controller.fluid_rate") + " " + UnitHelper.prefix(multiblock.recipeInputRateFP, 6, "B/t", -1) + " [" + Math.round(100D * rateRatioFP) + (rateRatio > 1D ? "%] [!]" : "%]");
|
||||
inputRate = Lang.localise("gui.nc.container.turbine_controller.fluid_rate") + " " + UnitHelper.prefix(NCMath.roundTo(multiblock.recipeInputRateFP, 0.1D), 6, "B/t", -1) + " [" + Math.round(100D * rateRatioFP) + (rateRatio > 1D ? "%] [!]" : "%]");
|
||||
inputRateWidth = inputRateWidth - width(inputRate) > 1 ? width(inputRate) : Math.max(inputRateWidth, width(inputRate));
|
||||
}
|
||||
fontRenderer.drawString(inputRate, xSize / 2 - (NCUtil.isModifierKeyDown() ? width(inputRate) : inputRateWidth) / 2, 60, multiblock.bearingTension <= 0D ? fontColor : multiblock.isTurbineOn ? 0xFFFFFF - (int) (255D * MathHelper.clamp(2D * multiblock.bearingTension, 0D, 1D)) - 256 * (int) (255D * MathHelper.clamp(2D * multiblock.bearingTension - 1D, 0D, 1D)) : ColorHelper.blend(15641088, 0xFF0000, (float) multiblock.bearingTension));
|
||||
|
|
|
@ -56,7 +56,13 @@ public class Turbine extends CuboidalMultiblock<ITurbinePart, TurbineUpdatePacke
|
|||
public double rawPower = 0D, rawLimitPower = 0D, rawMaxPower = 0D;
|
||||
public EnumFacing flowDir = null;
|
||||
public int shaftWidth = 0, inertia = 0, bladeLength = 0, noBladeSets = 0, recipeInputRate = 0, dynamoCoilCount = 0, dynamoCoilCountOpposite = 0;
|
||||
public double totalExpansionLevel = 1D, idealTotalExpansionLevel = 1D, basePowerPerMB = 0D, recipeInputRateFP = 0D, minBladeExpansionCoefficient = Double.MAX_VALUE, maxBladeExpansionCoefficient = 1D, minStatorExpansionCoefficient = 1D, maxStatorExpansionCoefficient = Double.MIN_VALUE, effectiveMaxLength = turbine_max_size, bearingTension = 0D;
|
||||
public double totalExpansionLevel = 1D, idealTotalExpansionLevel = 1D, basePowerPerMB = 0D, recipeInputRateFP = 0D;
|
||||
public double minBladeExpansionCoefficient = Double.MAX_VALUE;
|
||||
public double maxBladeExpansionCoefficient = 1D;
|
||||
public double minStatorExpansionCoefficient = 1D;
|
||||
public double maxStatorExpansionCoefficient = Double.MIN_VALUE;
|
||||
public int effectiveMaxLength = turbine_max_size;
|
||||
public double bearingTension = 0D;
|
||||
public DoubleList expansionLevels = new DoubleArrayList(), rawBladeEfficiencies = new DoubleArrayList();
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
|
@ -221,6 +227,14 @@ public class Turbine extends CuboidalMultiblock<ITurbinePart, TurbineUpdatePacke
|
|||
return bladeLength + shaftWidth / 2D;
|
||||
}
|
||||
|
||||
public int getMinimumBladeArea() {
|
||||
return 4 * Math.max(1, getMinimumInteriorLength() - 2);
|
||||
}
|
||||
|
||||
public int getMinimumBladeVolume() {
|
||||
return getBladeArea() * getMinimumInteriorLength();
|
||||
}
|
||||
|
||||
// Modified Kurtchekov stuff!
|
||||
|
||||
protected ITurbineRotorBlade getBlade(BlockPos pos) {
|
||||
|
@ -336,7 +350,7 @@ public class Turbine extends CuboidalMultiblock<ITurbinePart, TurbineUpdatePacke
|
|||
data.setDouble("maxBladeExpansionCoefficient", maxBladeExpansionCoefficient);
|
||||
data.setDouble("minStatorExpansionCoefficient", minStatorExpansionCoefficient);
|
||||
data.setDouble("maxStatorExpansionCoefficient", maxStatorExpansionCoefficient);
|
||||
data.setDouble("effectiveMaxLength", effectiveMaxLength);
|
||||
data.setInteger("effectiveMaxLength", effectiveMaxLength);
|
||||
data.setDouble("bearingTension", bearingTension);
|
||||
data.setInteger("expansionLevelsSize", expansionLevels.size());
|
||||
for (int i = 0; i < expansionLevels.size(); i++) {
|
||||
|
@ -383,7 +397,7 @@ public class Turbine extends CuboidalMultiblock<ITurbinePart, TurbineUpdatePacke
|
|||
maxBladeExpansionCoefficient = data.getDouble("maxBladeExpansionCoefficient");
|
||||
minStatorExpansionCoefficient = data.getDouble("minStatorExpansionCoefficient");
|
||||
maxStatorExpansionCoefficient = data.getDouble("maxStatorExpansionCoefficient");
|
||||
effectiveMaxLength = data.getDouble("effectiveMaxLength");
|
||||
effectiveMaxLength = data.getInteger("effectiveMaxLength");
|
||||
bearingTension = data.getDouble("bearingTension");
|
||||
expansionLevels = new DoubleArrayList();
|
||||
if (data.hasKey("expansionLevelsSize")) {
|
||||
|
|
|
@ -274,8 +274,10 @@ public class TurbineLogic extends MultiblockLogic<Turbine, TurbineLogic, ITurbin
|
|||
getTurbine().angVel = getTurbine().rotorAngle = 0F;
|
||||
getTurbine().flowDir = null;
|
||||
getTurbine().shaftWidth = getTurbine().inertia = getTurbine().bladeLength = getTurbine().noBladeSets = getTurbine().recipeInputRate = 0;
|
||||
getTurbine().totalExpansionLevel = getTurbine().idealTotalExpansionLevel = getTurbine().maxBladeExpansionCoefficient = getTurbine().minStatorExpansionCoefficient = 1D;
|
||||
getTurbine().totalExpansionLevel = getTurbine().idealTotalExpansionLevel = 1D;
|
||||
getTurbine().minBladeExpansionCoefficient = Double.MAX_VALUE;
|
||||
getTurbine().maxBladeExpansionCoefficient = 1D;
|
||||
getTurbine().minStatorExpansionCoefficient = 1D;
|
||||
getTurbine().maxStatorExpansionCoefficient = Double.MIN_VALUE;
|
||||
getTurbine().particleEffect = "cloud";
|
||||
getTurbine().particleSpeedMult = 1D / 23.2D;
|
||||
|
@ -848,7 +850,7 @@ public class TurbineLogic extends MultiblockLogic<Turbine, TurbineLogic, ITurbin
|
|||
getTurbine().recipeInputRate = Math.min(getTurbine().tanks.get(0).getFluidAmount(), (int) (turbine_tension_throughput_factor * getMaxRecipeRateMultiplier()));
|
||||
recipeInputRateDiff = Math.abs(recipeInputRateDiff - getTurbine().recipeInputRate);
|
||||
|
||||
double roundingFactor = Math.max(0D, 2D * Math.log1p(getTurbine().recipeInputRate / (1 + recipeInputRateDiff)));
|
||||
double roundingFactor = Math.max(0D, 1.5D * Math.log1p(getTurbine().recipeInputRate / (1D + recipeInputRateDiff)));
|
||||
getTurbine().recipeInputRateFP = (roundingFactor * getTurbine().recipeInputRateFP + getTurbine().recipeInputRate) / (1D + roundingFactor);
|
||||
|
||||
if (!getTurbine().tanks.get(1).isEmpty()) {
|
||||
|
@ -943,20 +945,18 @@ public class TurbineLogic extends MultiblockLogic<Turbine, TurbineLogic, ITurbin
|
|||
}
|
||||
|
||||
public double getThroughputEfficiency() {
|
||||
double leniencyMult = Math.max(turbine_throughput_efficiency_leniency, getTurbine().idealTotalExpansionLevel <= 1D || getTurbine().maxBladeExpansionCoefficient <= 1D ? Double.MAX_VALUE : Math.ceil(Math.log(getTurbine().idealTotalExpansionLevel) / Math.log(getTurbine().maxBladeExpansionCoefficient)));
|
||||
double absoluteLeniency = getTurbine().getBladeArea() * leniencyMult * turbine_mb_per_blade;
|
||||
return getMaxRecipeRateMultiplier() == 0 ? 1D : Math.min(1D, (getTurbine().recipeInputRateFP + absoluteLeniency) / getMaxRecipeRateMultiplier());
|
||||
double effectiveMinLength = getTurbine().idealTotalExpansionLevel <= 1D || getTurbine().maxBladeExpansionCoefficient <= 1D ? getMaximumInteriorLength() : Math.ceil(Math.log(getTurbine().idealTotalExpansionLevel) / Math.log(getTurbine().maxBladeExpansionCoefficient));
|
||||
double absoluteLeniency = effectiveMinLength * getTurbine().getMinimumBladeArea() * turbine_mb_per_blade;
|
||||
double throughputRatio = getMaxRecipeRateMultiplier() == 0 ? 1D : Math.min(1D, (getTurbine().recipeInputRateFP + absoluteLeniency) / getMaxRecipeRateMultiplier());
|
||||
return throughputRatio >= turbine_throughput_leniency_params[1] ? 1D : (1D - turbine_throughput_leniency_params[0]) * Math.sin(throughputRatio * Math.PI / (2D * turbine_throughput_leniency_params[1])) + turbine_throughput_leniency_params[0];
|
||||
}
|
||||
|
||||
public void setEffectiveMaxLength() {
|
||||
if (getTurbine().minBladeExpansionCoefficient <= 1) {
|
||||
if (getTurbine().minBladeExpansionCoefficient <= 1D || getTurbine().minStatorExpansionCoefficient >= 1D) {
|
||||
getTurbine().effectiveMaxLength = getMaximumInteriorLength();
|
||||
}
|
||||
else if (getTurbine().minStatorExpansionCoefficient >= 1) {
|
||||
getTurbine().effectiveMaxLength = NCMath.clamp(Math.log(getTurbine().idealTotalExpansionLevel) / Math.log(getTurbine().minBladeExpansionCoefficient), 1D, getMaximumInteriorLength());
|
||||
}
|
||||
else {
|
||||
getTurbine().effectiveMaxLength = NCMath.clamp((Math.log(getTurbine().idealTotalExpansionLevel) - getMaximumInteriorLength() * Math.log(getTurbine().minStatorExpansionCoefficient)) / (Math.log(getTurbine().minBladeExpansionCoefficient) - Math.log(getTurbine().minStatorExpansionCoefficient)), 1D, getMaximumInteriorLength());
|
||||
getTurbine().effectiveMaxLength = NCMath.toInt(Math.ceil(NCMath.clamp((Math.log(getTurbine().idealTotalExpansionLevel) - getMaximumInteriorLength() * Math.log(getTurbine().minStatorExpansionCoefficient)) / (Math.log(getTurbine().minBladeExpansionCoefficient) - Math.log(getTurbine().minStatorExpansionCoefficient)), 1D, getMaximumInteriorLength())));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1191,7 +1191,7 @@ public class TurbineLogic extends MultiblockLogic<Turbine, TurbineLogic, ITurbin
|
|||
for (ITurbineController controller : getParts(ITurbineController.class)) {
|
||||
controller.setIsRenderer(false);
|
||||
}
|
||||
NCUtil.getLogger().error("The assembly state of the turbine at " + getTurbine().getMiddleCoord().toString() + " is different between the server and client(s). It is recommended that the multiblock is completely disassambled and rebuilt if these errors continue!");
|
||||
NCUtil.getLogger().error("The assembly state of the turbine at " + getTurbine().getMiddleCoord().toString() + " is different between the server and client(s). It is recommended that the multiblock is completely disassambled and rebuilt if these errors continually appear!");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ import nc.multiblock.*;
|
|||
import nc.network.PacketHandler;
|
||||
import nc.radiation.*;
|
||||
import nc.radiation.environment.RadiationEnvironmentHandler;
|
||||
import nc.recipe.NCRecipes;
|
||||
import nc.recipe.*;
|
||||
import nc.recipe.vanilla.CraftingRecipeHandler;
|
||||
import nc.util.*;
|
||||
import nc.worldgen.biome.NCBiomes;
|
||||
|
@ -172,6 +172,8 @@ public class CommonProxy {
|
|||
|
||||
MinecraftForge.EVENT_BUS.register(new ItemUseHandler());
|
||||
|
||||
RecipeStats.init();
|
||||
|
||||
PlacementRule.postInit();
|
||||
|
||||
if (ModCheck.projectELoaded() && register_projecte_emc) {
|
||||
|
|
|
@ -508,8 +508,8 @@ public class RadSources {
|
|||
return (rad1 * amount1 + rad2 * amount2) * INGOT / 9D;
|
||||
}
|
||||
|
||||
public static double getDepletedFuelRadiation(double rad1, int amount1, double rad2, int amount2, double rad3, int amount3, double rad4, int amount4) {
|
||||
return (rad1 * amount1 + rad2 * amount2 + rad3 * amount3 + rad4 * amount4) * INGOT / 9D;
|
||||
public static double getDepletedFuelRadiation(double rad1, int amount1, double rad2, int amount2, double rad3, int amount3, double rad4, int amount4, double waste1, double waste2, double m, double r) {
|
||||
return (rad1 * amount1 + rad2 * amount2 + rad3 * amount3 + rad4 * amount4 + waste1 * m * r + waste2 * m * (1D - r)) * INGOT / 9D;
|
||||
}
|
||||
|
||||
public static final double TBU = getFuelRadiation(THORIUM, 8.5D, URANIUM_233, 0.5D);
|
||||
|
@ -548,75 +548,75 @@ public class RadSources {
|
|||
public static final double LECf_251 = getFuelRadiation(CALIFORNIUM_252, 8, CALIFORNIUM_251, 1);
|
||||
public static final double HECf_251 = getFuelRadiation(CALIFORNIUM_252, 6, CALIFORNIUM_251, 3);
|
||||
|
||||
public static final double DEPLETED_TBU = getDepletedFuelRadiation(URANIUM_233, 1, URANIUM_238, 5, NEPTUNIUM_236, 1, NEPTUNIUM_237, 1);
|
||||
public static final double DEPLETED_TBU = getDepletedFuelRadiation(URANIUM_233, 1, URANIUM_238, 5, NEPTUNIUM_236, 1, NEPTUNIUM_237, 1, STRONTIUM_90, CAESIUM_137, 0.5D, 0.5D);
|
||||
|
||||
public static final double DEPLETED_LEU_233 = getDepletedFuelRadiation(URANIUM_238, 5, PLUTONIUM_241, 1, PLUTONIUM_242, 1, AMERICIUM_243, 1);
|
||||
public static final double DEPLETED_HEU_233 = getDepletedFuelRadiation(URANIUM_235, 1, URANIUM_238, 2, PLUTONIUM_242, 3, AMERICIUM_243, 1);
|
||||
public static final double DEPLETED_LEU_235 = getDepletedFuelRadiation(URANIUM_238, 4, PLUTONIUM_239, 1, PLUTONIUM_242, 2, AMERICIUM_243, 1);
|
||||
public static final double DEPLETED_HEU_235 = getDepletedFuelRadiation(URANIUM_238, 3, NEPTUNIUM_236, 1, PLUTONIUM_242, 2, AMERICIUM_243, 1);
|
||||
public static final double DEPLETED_LEU_233 = getDepletedFuelRadiation(URANIUM_238, 5, PLUTONIUM_241, 1, PLUTONIUM_242, 1, AMERICIUM_243, 1, STRONTIUM_90, CAESIUM_137, 0.5D, 0.5D);
|
||||
public static final double DEPLETED_HEU_233 = getDepletedFuelRadiation(URANIUM_235, 1, URANIUM_238, 2, PLUTONIUM_242, 3, AMERICIUM_243, 1, STRONTIUM_90, CAESIUM_137, 1.5D, 0.5D);
|
||||
public static final double DEPLETED_LEU_235 = getDepletedFuelRadiation(URANIUM_238, 4, PLUTONIUM_239, 1, PLUTONIUM_242, 2, AMERICIUM_243, 1, 0D, CAESIUM_137, 0.5D, 0.5D);
|
||||
public static final double DEPLETED_HEU_235 = getDepletedFuelRadiation(URANIUM_238, 3, NEPTUNIUM_236, 1, PLUTONIUM_242, 2, AMERICIUM_243, 1, 0D, CAESIUM_137, 1.5D, 0.5D);
|
||||
|
||||
public static final double DEPLETED_LEN_236 = getDepletedFuelRadiation(URANIUM_238, 4, NEPTUNIUM_237, 1, PLUTONIUM_241, 1, PLUTONIUM_242, 2);
|
||||
public static final double DEPLETED_HEN_236 = getDepletedFuelRadiation(URANIUM_238, 4, PLUTONIUM_238, 1, PLUTONIUM_241, 1, PLUTONIUM_242, 1);
|
||||
public static final double DEPLETED_LEN_236 = getDepletedFuelRadiation(URANIUM_238, 4, NEPTUNIUM_237, 1, PLUTONIUM_241, 1, PLUTONIUM_242, 2, 0D, CAESIUM_137, 0.5D, 0.5D);
|
||||
public static final double DEPLETED_HEN_236 = getDepletedFuelRadiation(URANIUM_238, 4, PLUTONIUM_238, 1, PLUTONIUM_241, 1, PLUTONIUM_242, 1, 0D, CAESIUM_137, 1.5D, 0.5D);
|
||||
|
||||
public static final double DEPLETED_LEP_239 = getDepletedFuelRadiation(PLUTONIUM_242, 5, AMERICIUM_242, 1, AMERICIUM_243, 1, CURIUM_246, 1);
|
||||
public static final double DEPLETED_HEP_239 = getDepletedFuelRadiation(PLUTONIUM_241, 1, AMERICIUM_242, 1, AMERICIUM_243, 4, CURIUM_243, 1);
|
||||
public static final double DEPLETED_LEP_241 = getDepletedFuelRadiation(PLUTONIUM_242, 5, AMERICIUM_243, 1, CURIUM_246, 1, BERKELIUM_247, 1);
|
||||
public static final double DEPLETED_HEP_241 = getDepletedFuelRadiation(PLUTONIUM_241, 1, AMERICIUM_242, 1, AMERICIUM_243, 3, CURIUM_246, 2);
|
||||
public static final double DEPLETED_LEP_239 = getDepletedFuelRadiation(PLUTONIUM_242, 5, AMERICIUM_242, 1, AMERICIUM_243, 1, CURIUM_246, 1, STRONTIUM_90, PROMETHIUM_147, 0.5D, 0.5D);
|
||||
public static final double DEPLETED_HEP_239 = getDepletedFuelRadiation(PLUTONIUM_241, 1, AMERICIUM_242, 1, AMERICIUM_243, 4, CURIUM_243, 1, STRONTIUM_90, PROMETHIUM_147, 1.5D, 0.5D);
|
||||
public static final double DEPLETED_LEP_241 = getDepletedFuelRadiation(PLUTONIUM_242, 5, AMERICIUM_243, 1, CURIUM_246, 1, BERKELIUM_247, 1, STRONTIUM_90, PROMETHIUM_147, 0.5D, 0.5D);
|
||||
public static final double DEPLETED_HEP_241 = getDepletedFuelRadiation(PLUTONIUM_241, 1, AMERICIUM_242, 1, AMERICIUM_243, 3, CURIUM_246, 2, STRONTIUM_90, PROMETHIUM_147, 1.5D, 0.5D);
|
||||
|
||||
public static final double DEPLETED_MIX_239 = getDepletedFuelRadiation(URANIUM_238, 4, PLUTONIUM_241, 1, PLUTONIUM_242, 2, AMERICIUM_243, 1);
|
||||
public static final double DEPLETED_MIX_241 = getDepletedFuelRadiation(URANIUM_238, 3, PLUTONIUM_241, 1, PLUTONIUM_242, 3, AMERICIUM_243, 1);
|
||||
public static final double DEPLETED_MIX_239 = getDepletedFuelRadiation(URANIUM_238, 4, PLUTONIUM_241, 1, PLUTONIUM_242, 2, AMERICIUM_243, 1, STRONTIUM_90, PROMETHIUM_147, 0.5D, 0.5D);
|
||||
public static final double DEPLETED_MIX_241 = getDepletedFuelRadiation(URANIUM_238, 3, PLUTONIUM_241, 1, PLUTONIUM_242, 3, AMERICIUM_243, 1, STRONTIUM_90, PROMETHIUM_147, 0.5D, 0.5D);
|
||||
|
||||
public static final double DEPLETED_LEA_242 = getDepletedFuelRadiation(AMERICIUM_243, 3, CURIUM_245, 1, CURIUM_246, 3, BERKELIUM_248, 1);
|
||||
public static final double DEPLETED_HEA_242 = getDepletedFuelRadiation(AMERICIUM_243, 3, CURIUM_243, 1, CURIUM_246, 2, BERKELIUM_247, 1);
|
||||
public static final double DEPLETED_LEA_242 = getDepletedFuelRadiation(AMERICIUM_243, 3, CURIUM_245, 1, CURIUM_246, 3, BERKELIUM_248, 1, 0D, PROMETHIUM_147, 0.5D, 0.5D);
|
||||
public static final double DEPLETED_HEA_242 = getDepletedFuelRadiation(AMERICIUM_243, 3, CURIUM_243, 1, CURIUM_246, 2, BERKELIUM_247, 1, 0D, PROMETHIUM_147, 1.5D, 0.5D);
|
||||
|
||||
public static final double DEPLETED_LECm_243 = getDepletedFuelRadiation(CURIUM_246, 4, CURIUM_247, 1, BERKELIUM_247, 2, BERKELIUM_248, 1);
|
||||
public static final double DEPLETED_HECm_243 = getDepletedFuelRadiation(CURIUM_245, 1, CURIUM_246, 3, BERKELIUM_247, 2, BERKELIUM_248, 1);
|
||||
public static final double DEPLETED_LECm_245 = getDepletedFuelRadiation(CURIUM_246, 4, CURIUM_247, 1, BERKELIUM_247, 2, CALIFORNIUM_249, 1);
|
||||
public static final double DEPLETED_HECm_245 = getDepletedFuelRadiation(CURIUM_246, 3, CURIUM_247, 1, BERKELIUM_247, 2, CALIFORNIUM_249, 1);
|
||||
public static final double DEPLETED_LECm_247 = getDepletedFuelRadiation(CURIUM_246, 5, BERKELIUM_247, 1, BERKELIUM_248, 1, CALIFORNIUM_249, 1);
|
||||
public static final double DEPLETED_HECm_247 = getDepletedFuelRadiation(BERKELIUM_247, 4, BERKELIUM_248, 1, CALIFORNIUM_249, 1, CALIFORNIUM_251, 1);
|
||||
public static final double DEPLETED_LECm_243 = getDepletedFuelRadiation(CURIUM_246, 4, CURIUM_247, 1, BERKELIUM_247, 2, BERKELIUM_248, 1, 0D, PROMETHIUM_147, 0.5D, 0.5D);
|
||||
public static final double DEPLETED_HECm_243 = getDepletedFuelRadiation(CURIUM_245, 1, CURIUM_246, 3, BERKELIUM_247, 2, BERKELIUM_248, 1, 0D, PROMETHIUM_147, 1.5D, 0.5D);
|
||||
public static final double DEPLETED_LECm_245 = getDepletedFuelRadiation(CURIUM_246, 4, CURIUM_247, 1, BERKELIUM_247, 2, CALIFORNIUM_249, 1, 0D, EUROPIUM_155, 0.5D, 0.6D);
|
||||
public static final double DEPLETED_HECm_245 = getDepletedFuelRadiation(CURIUM_246, 3, CURIUM_247, 1, BERKELIUM_247, 2, CALIFORNIUM_249, 1, 0D, EUROPIUM_155, 1.5D, 0.6D);
|
||||
public static final double DEPLETED_LECm_247 = getDepletedFuelRadiation(CURIUM_246, 5, BERKELIUM_247, 1, BERKELIUM_248, 1, CALIFORNIUM_249, 1, 0D, EUROPIUM_155, 0.5D, 0.6D);
|
||||
public static final double DEPLETED_HECm_247 = getDepletedFuelRadiation(BERKELIUM_247, 4, BERKELIUM_248, 1, CALIFORNIUM_249, 1, CALIFORNIUM_251, 1, 0D, EUROPIUM_155, 1.5D, 0.6D);
|
||||
|
||||
public static final double DEPLETED_LEB_248 = getDepletedFuelRadiation(BERKELIUM_247, 5, BERKELIUM_248, 1, CALIFORNIUM_249, 1, CALIFORNIUM_251, 1);
|
||||
public static final double DEPLETED_HEB_248 = getDepletedFuelRadiation(BERKELIUM_248, 1, CALIFORNIUM_249, 1, CALIFORNIUM_251, 2, CALIFORNIUM_252, 3);
|
||||
public static final double DEPLETED_LEB_248 = getDepletedFuelRadiation(BERKELIUM_247, 5, BERKELIUM_248, 1, CALIFORNIUM_249, 1, CALIFORNIUM_251, 1, RUTHENIUM_106, PROMETHIUM_147, 0.5D, 0.6D);
|
||||
public static final double DEPLETED_HEB_248 = getDepletedFuelRadiation(BERKELIUM_248, 1, CALIFORNIUM_249, 1, CALIFORNIUM_251, 2, CALIFORNIUM_252, 3, RUTHENIUM_106, PROMETHIUM_147, 1.5D, 0.6D);
|
||||
|
||||
public static final double DEPLETED_LECf_249 = getDepletedFuelRadiation(CALIFORNIUM_252, 2, CALIFORNIUM_252, 2, CALIFORNIUM_252, 2, CALIFORNIUM_252, 2);
|
||||
public static final double DEPLETED_HECf_249 = getDepletedFuelRadiation(CALIFORNIUM_250, 1, CALIFORNIUM_252, 2, CALIFORNIUM_252, 2, CALIFORNIUM_252, 2);
|
||||
public static final double DEPLETED_LECf_251 = getDepletedFuelRadiation(CALIFORNIUM_252, 2, CALIFORNIUM_252, 2, CALIFORNIUM_252, 2, CALIFORNIUM_252, 2);
|
||||
public static final double DEPLETED_HECf_251 = getDepletedFuelRadiation(CALIFORNIUM_252, 2, CALIFORNIUM_252, 2, CALIFORNIUM_252, 2, CALIFORNIUM_252, 1);
|
||||
public static final double DEPLETED_LECf_249 = getDepletedFuelRadiation(CALIFORNIUM_252, 2, CALIFORNIUM_252, 2, CALIFORNIUM_252, 2, CALIFORNIUM_252, 2, RUTHENIUM_106, PROMETHIUM_147, 0.5D, 0.6D);
|
||||
public static final double DEPLETED_HECf_249 = getDepletedFuelRadiation(CALIFORNIUM_250, 1, CALIFORNIUM_252, 2, CALIFORNIUM_252, 2, CALIFORNIUM_252, 2, RUTHENIUM_106, PROMETHIUM_147, 1.5D, 0.6D);
|
||||
public static final double DEPLETED_LECf_251 = getDepletedFuelRadiation(CALIFORNIUM_252, 2, CALIFORNIUM_252, 2, CALIFORNIUM_252, 2, CALIFORNIUM_252, 2, RUTHENIUM_106, EUROPIUM_155, 0.5D, 0.6D);
|
||||
public static final double DEPLETED_HECf_251 = getDepletedFuelRadiation(CALIFORNIUM_252, 2, CALIFORNIUM_252, 2, CALIFORNIUM_252, 2, CALIFORNIUM_252, 1, RUTHENIUM_106, EUROPIUM_155, 1.5D, 0.6D);
|
||||
|
||||
public static final double TBU_FISSION = (TBU + DEPLETED_TBU + CAESIUM_137) / 64D;
|
||||
|
||||
public static final double LEU_233_FISSION = (LEU_233 + DEPLETED_LEU_233 + CAESIUM_137) / 64D;
|
||||
public static final double HEU_233_FISSION = (HEU_233 + DEPLETED_HEU_233 + CAESIUM_137) / 64D;
|
||||
public static final double LEU_235_FISSION = (LEU_235 + DEPLETED_LEU_235 + CAESIUM_137) / 64D;
|
||||
public static final double HEU_235_FISSION = (HEU_235 + DEPLETED_HEU_235 + CAESIUM_137) / 64D;
|
||||
public static final double LEU_233_FISSION = (LEU_233 + DEPLETED_LEU_233) / 64D;
|
||||
public static final double HEU_233_FISSION = (HEU_233 + DEPLETED_HEU_233) / 64D;
|
||||
public static final double LEU_235_FISSION = (LEU_235 + DEPLETED_LEU_235) / 64D;
|
||||
public static final double HEU_235_FISSION = (HEU_235 + DEPLETED_HEU_235) / 64D;
|
||||
|
||||
public static final double LEN_236_FISSION = (LEN_236 + DEPLETED_LEN_236 + CAESIUM_137) / 64D;
|
||||
public static final double HEN_236_FISSION = (HEN_236 + DEPLETED_HEN_236 + CAESIUM_137) / 64D;
|
||||
public static final double LEN_236_FISSION = (LEN_236 + DEPLETED_LEN_236) / 64D;
|
||||
public static final double HEN_236_FISSION = (HEN_236 + DEPLETED_HEN_236) / 64D;
|
||||
|
||||
public static final double LEP_239_FISSION = (LEP_239 + DEPLETED_LEP_239 + CAESIUM_137) / 64D;
|
||||
public static final double HEP_239_FISSION = (HEP_239 + DEPLETED_HEP_239 + CAESIUM_137) / 64D;
|
||||
public static final double LEP_241_FISSION = (LEP_241 + DEPLETED_LEP_241 + CAESIUM_137) / 64D;
|
||||
public static final double HEP_241_FISSION = (HEP_241 + DEPLETED_HEP_241 + CAESIUM_137) / 64D;
|
||||
public static final double LEP_239_FISSION = (LEP_239 + DEPLETED_LEP_239) / 64D;
|
||||
public static final double HEP_239_FISSION = (HEP_239 + DEPLETED_HEP_239) / 64D;
|
||||
public static final double LEP_241_FISSION = (LEP_241 + DEPLETED_LEP_241) / 64D;
|
||||
public static final double HEP_241_FISSION = (HEP_241 + DEPLETED_HEP_241) / 64D;
|
||||
|
||||
public static final double MIX_239_FISSION = (MIX_239 + DEPLETED_MIX_239 + CAESIUM_137) / 64D;
|
||||
public static final double MIX_241_FISSION = (MIX_241 + DEPLETED_MIX_241 + CAESIUM_137) / 64D;
|
||||
public static final double MIX_239_FISSION = (MIX_239 + DEPLETED_MIX_239) / 64D;
|
||||
public static final double MIX_241_FISSION = (MIX_241 + DEPLETED_MIX_241) / 64D;
|
||||
|
||||
public static final double LEA_242_FISSION = (LEA_242 + DEPLETED_LEA_242 + CAESIUM_137) / 64D;
|
||||
public static final double HEA_242_FISSION = (HEA_242 + DEPLETED_HEA_242 + CAESIUM_137) / 64D;
|
||||
public static final double LEA_242_FISSION = (LEA_242 + DEPLETED_LEA_242) / 64D;
|
||||
public static final double HEA_242_FISSION = (HEA_242 + DEPLETED_HEA_242) / 64D;
|
||||
|
||||
public static final double LECm_243_FISSION = (LECm_243 + DEPLETED_LECm_243 + CAESIUM_137) / 64D;
|
||||
public static final double HECm_243_FISSION = (HECm_243 + DEPLETED_HECm_243 + CAESIUM_137) / 64D;
|
||||
public static final double LECm_245_FISSION = (LECm_245 + DEPLETED_LECm_245 + CAESIUM_137) / 64D;
|
||||
public static final double HECm_245_FISSION = (HECm_245 + DEPLETED_HECm_245 + CAESIUM_137) / 64D;
|
||||
public static final double LECm_247_FISSION = (LECm_247 + DEPLETED_LECm_247 + CAESIUM_137) / 64D;
|
||||
public static final double HECm_247_FISSION = (HECm_247 + DEPLETED_HECm_247 + CAESIUM_137) / 64D;
|
||||
public static final double LECm_243_FISSION = (LECm_243 + DEPLETED_LECm_243) / 64D;
|
||||
public static final double HECm_243_FISSION = (HECm_243 + DEPLETED_HECm_243) / 64D;
|
||||
public static final double LECm_245_FISSION = (LECm_245 + DEPLETED_LECm_245) / 64D;
|
||||
public static final double HECm_245_FISSION = (HECm_245 + DEPLETED_HECm_245) / 64D;
|
||||
public static final double LECm_247_FISSION = (LECm_247 + DEPLETED_LECm_247) / 64D;
|
||||
public static final double HECm_247_FISSION = (HECm_247 + DEPLETED_HECm_247) / 64D;
|
||||
|
||||
public static final double LEB_248_FISSION = (LEB_248 + DEPLETED_LEB_248 + CAESIUM_137) / 64D;
|
||||
public static final double HEB_248_FISSION = (HEB_248 + DEPLETED_HEB_248 + CAESIUM_137) / 64D;
|
||||
public static final double LEB_248_FISSION = (LEB_248 + DEPLETED_LEB_248) / 64D;
|
||||
public static final double HEB_248_FISSION = (HEB_248 + DEPLETED_HEB_248) / 64D;
|
||||
|
||||
public static final double LECf_249_FISSION = (LECf_249 + DEPLETED_LECf_249 + CAESIUM_137) / 64D;
|
||||
public static final double HECf_249_FISSION = (HECf_249 + DEPLETED_HECf_249 + CAESIUM_137) / 64D;
|
||||
public static final double LECf_251_FISSION = (LECf_251 + DEPLETED_LECf_251 + CAESIUM_137) / 64D;
|
||||
public static final double HECf_251_FISSION = (HECf_251 + DEPLETED_HECf_251 + CAESIUM_137) / 64D;
|
||||
public static final double LECf_249_FISSION = (LECf_249 + DEPLETED_LECf_249) / 64D;
|
||||
public static final double HECf_249_FISSION = (HECf_249 + DEPLETED_HECf_249) / 64D;
|
||||
public static final double LECf_251_FISSION = (LECf_251 + DEPLETED_LECf_251) / 64D;
|
||||
public static final double HECf_251_FISSION = (HECf_251 + DEPLETED_HECf_251) / 64D;
|
||||
}
|
||||
|
|
|
@ -51,11 +51,7 @@ public class RadiationHandler {
|
|||
|
||||
@SubscribeEvent
|
||||
public void updatePlayerRadiation(TickEvent.PlayerTickEvent event) {
|
||||
if (!radiation_enabled_public) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!radiation_require_counter && event.phase == TickEvent.Phase.START && event.side == Side.CLIENT) {
|
||||
if (radiation_enabled_public && !radiation_require_counter && event.phase == TickEvent.Phase.START && event.side == Side.CLIENT) {
|
||||
playGeigerSound(event.player);
|
||||
}
|
||||
|
||||
|
@ -78,6 +74,10 @@ public class RadiationHandler {
|
|||
}
|
||||
}
|
||||
|
||||
if (!radiation_enabled_public) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (ModCheck.gameStagesLoaded()) {
|
||||
playerRads.setRadiationImmunityStage(default_rad_immunity ^ GameStageHelper.hasAnyOf(player, rad_immunity_stages));
|
||||
}
|
||||
|
@ -201,6 +201,10 @@ public class RadiationHandler {
|
|||
}
|
||||
}
|
||||
else {
|
||||
if (!radiation_enabled_public) {
|
||||
return;
|
||||
}
|
||||
|
||||
EntityPlayer player = event.player;
|
||||
IEntityRads playerRads = RadiationHelper.getEntityRadiation(player);
|
||||
if (playerRads == null) {
|
||||
|
@ -424,7 +428,7 @@ public class RadiationHandler {
|
|||
}
|
||||
|
||||
private static void mutateTerrain(World world, Chunk chunk, double radiation) {
|
||||
long j = Math.min(radiation_block_effect_max_rate, (long) Math.log(Math.E - 1D + radiation / getBlockMutationThreshold()));
|
||||
long j = Math.min(radiation_block_effect_max_rate, (long) Math.log(Math.E - 1D + radiation / RecipeStats.getBlockMutationThreshold()));
|
||||
while (j > 0) {
|
||||
j--;
|
||||
BlockPos randomChunkPos = newRandomPosInChunk(chunk);
|
||||
|
@ -445,7 +449,7 @@ public class RadiationHandler {
|
|||
}
|
||||
}
|
||||
|
||||
j = radiation == 0D ? radiation_block_effect_max_rate : Math.min(radiation_block_effect_max_rate, (long) Math.log(Math.E - 1D + getBlockPurificationThreshold() / radiation));
|
||||
j = radiation == 0D ? radiation_block_effect_max_rate : Math.min(radiation_block_effect_max_rate, (long) Math.log(Math.E - 1D + RecipeStats.getBlockPurificationThreshold() / radiation));
|
||||
while (j > 0) {
|
||||
j--;
|
||||
BlockPos randomChunkPos = newRandomPosInChunk(chunk);
|
||||
|
@ -466,36 +470,6 @@ public class RadiationHandler {
|
|||
}
|
||||
}
|
||||
|
||||
private static Double block_mutation_threshold = null;
|
||||
|
||||
private static double getBlockMutationThreshold() {
|
||||
if (block_mutation_threshold == null) {
|
||||
double threshold = Double.MAX_VALUE;
|
||||
for (ProcessorRecipe recipe : NCRecipes.radiation_block_mutation.getRecipeList()) {
|
||||
if (recipe != null) {
|
||||
threshold = Math.min(threshold, recipe.getBlockMutationThreshold());
|
||||
}
|
||||
}
|
||||
block_mutation_threshold = new Double(threshold);
|
||||
}
|
||||
return block_mutation_threshold.doubleValue();
|
||||
}
|
||||
|
||||
private static Double block_purification_threshold = null;
|
||||
|
||||
private static double getBlockPurificationThreshold() {
|
||||
if (block_purification_threshold == null) {
|
||||
double threshold = 0D;
|
||||
for (ProcessorRecipe recipe : NCRecipes.radiation_block_purification.getRecipeList()) {
|
||||
if (recipe != null) {
|
||||
threshold = Math.max(threshold, recipe.getBlockMutationThreshold());
|
||||
}
|
||||
}
|
||||
block_purification_threshold = new Double(threshold);
|
||||
}
|
||||
return block_purification_threshold.doubleValue();
|
||||
}
|
||||
|
||||
public static void playGeigerSound(EntityPlayer player) {
|
||||
IEntityRads entityRads = RadiationHelper.getEntityRadiation(player);
|
||||
if (entityRads == null || entityRads.isRawRadiationNegligible()) {
|
||||
|
|
|
@ -2,7 +2,7 @@ package nc.recipe;
|
|||
|
||||
import java.util.*;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.annotation.*;
|
||||
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
|
@ -23,9 +23,9 @@ import stanhebben.zenscript.annotations.*;
|
|||
@ZenRegister
|
||||
public abstract class AbstractRecipeHandler<RECIPE extends IRecipe> {
|
||||
|
||||
protected List<RECIPE> recipeList = new ArrayList<>();
|
||||
protected @Nonnull List<RECIPE> recipeList = new ArrayList<>();
|
||||
|
||||
protected Long2ObjectMap<RECIPE> recipeCache = new Long2ObjectOpenHashMap<>();
|
||||
protected @Nonnull Long2ObjectMap<RECIPE> recipeCache = new Long2ObjectOpenHashMap<>();
|
||||
|
||||
private static List<Class<?>> validItemInputs = Lists.newArrayList(IItemIngredient.class, ArrayList.class, String.class, Item.class, Block.class, ItemStack.class, ItemStack[].class);
|
||||
private static List<Class<?>> validFluidInputs = Lists.newArrayList(IFluidIngredient.class, ArrayList.class, String.class, Fluid.class, FluidStack.class, FluidStack[].class);
|
||||
|
|
|
@ -58,6 +58,8 @@ public class NCRecipes {
|
|||
public static RadiationBlockMutation radiation_block_mutation;
|
||||
public static RadiationBlockPurification radiation_block_purification;
|
||||
|
||||
public static ProcessorRecipeHandler[] processor_recipe_handlers;
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.LOW)
|
||||
public void registerRecipes(RegistryEvent.Register<IRecipe> event) {
|
||||
if (initialized) {
|
||||
|
@ -104,6 +106,8 @@ public class NCRecipes {
|
|||
radiation_block_mutation = new RadiationBlockMutation();
|
||||
radiation_block_purification = new RadiationBlockPurification();
|
||||
|
||||
processor_recipe_handlers = new ProcessorRecipeHandler[] {manufactory, separator, decay_hastener, fuel_reprocessor, alloy_furnace, infuser, melter, supercooler, electrolyzer, assembler, ingot_former, pressurizer, chemical_reactor, salt_mixer, crystallizer, enricher, extractor, centrifuge, rock_crusher};
|
||||
|
||||
CraftingRecipeHandler.registerCraftingRecipes();
|
||||
FurnaceRecipeHandler.registerFurnaceRecipes();
|
||||
GameRegistry.registerFuelHandler(new FurnaceFuelHandler());
|
||||
|
|
|
@ -104,15 +104,15 @@ public class ProcessorRecipe implements IRecipe {
|
|||
|
||||
// Decay Generator
|
||||
|
||||
public double getDecayLifetime() {
|
||||
public double getDecayGeneratorLifetime() {
|
||||
return (double) extras.get(0);
|
||||
}
|
||||
|
||||
public double getDecayPower() {
|
||||
public double getDecayGeneratorPower() {
|
||||
return (double) extras.get(1);
|
||||
}
|
||||
|
||||
public double getDecayRadiation() {
|
||||
public double getDecayGeneratorRadiation() {
|
||||
return (double) extras.get(2);
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,114 @@
|
|||
package nc.recipe;
|
||||
|
||||
import static nc.config.NCConfig.machine_update_rate;
|
||||
|
||||
import nc.config.NCConfig;
|
||||
import nc.util.NCMath;
|
||||
|
||||
public class RecipeStats {
|
||||
|
||||
private static double[] processor_max_base_process_time = new double[19];
|
||||
private static double[] processor_max_base_process_power = new double[19];
|
||||
private static int decay_generator_max_power;
|
||||
private static int fission_max_moderator_line_flux;
|
||||
private static int scrubber_max_process_power;
|
||||
private static double block_mutation_threshold;
|
||||
private static double block_purification_threshold;
|
||||
|
||||
public static void init() {
|
||||
setProcessorMaxStats();
|
||||
setDecayGeneratorMaxPower();
|
||||
setFissionMaxModeratorLineFlux();
|
||||
setScrubberMaxProcessPower();
|
||||
setBlockMutationThreshold();
|
||||
setBlockPurificationThreshold();
|
||||
}
|
||||
|
||||
public static double getProcessorMaxBaseProcessTime(int i) {
|
||||
return processor_max_base_process_time[i];
|
||||
}
|
||||
|
||||
public static double getProcessorMaxBaseProcessPower(int i) {
|
||||
return processor_max_base_process_power[i];
|
||||
}
|
||||
|
||||
private static void setProcessorMaxStats() {
|
||||
for (int i = 0; i < NCRecipes.processor_recipe_handlers.length; i++) {
|
||||
processor_max_base_process_time[i] = 1D;
|
||||
processor_max_base_process_power[i] = 0D;
|
||||
for (ProcessorRecipe recipe : NCRecipes.processor_recipe_handlers[i].getRecipeList()) {
|
||||
if (recipe != null) {
|
||||
processor_max_base_process_time[i] = Math.max(processor_max_base_process_time[i], recipe.getBaseProcessTime(NCConfig.processor_time[i]));
|
||||
processor_max_base_process_power[i] = Math.max(processor_max_base_process_power[i], recipe.getBaseProcessPower(NCConfig.processor_power[i]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static int getDecayGeneratorMaxPower() {
|
||||
return decay_generator_max_power;
|
||||
}
|
||||
|
||||
private static void setDecayGeneratorMaxPower() {
|
||||
double max = 0D;
|
||||
for (ProcessorRecipe recipe : NCRecipes.decay_generator.getRecipeList()) {
|
||||
if (recipe != null) {
|
||||
max = Math.max(max, recipe.getDecayGeneratorPower());
|
||||
}
|
||||
}
|
||||
decay_generator_max_power = NCMath.toInt(machine_update_rate * max);
|
||||
}
|
||||
|
||||
public static int getFissionMaxModeratorLineFlux() {
|
||||
return fission_max_moderator_line_flux;
|
||||
}
|
||||
|
||||
private static void setFissionMaxModeratorLineFlux() {
|
||||
fission_max_moderator_line_flux = 0;
|
||||
for (ProcessorRecipe recipe : NCRecipes.fission_moderator.getRecipeList()) {
|
||||
if (recipe != null) {
|
||||
fission_max_moderator_line_flux = Math.max(fission_max_moderator_line_flux, recipe.getFissionModeratorFluxFactor());
|
||||
}
|
||||
}
|
||||
fission_max_moderator_line_flux *= NCConfig.fission_neutron_reach;
|
||||
}
|
||||
|
||||
public static int getScrubberMaxProcessPower() {
|
||||
return scrubber_max_process_power;
|
||||
}
|
||||
|
||||
private static void setScrubberMaxProcessPower() {
|
||||
scrubber_max_process_power = 0;
|
||||
for (ProcessorRecipe recipe : NCRecipes.radiation_scrubber.getRecipeList()) {
|
||||
if (recipe != null) {
|
||||
scrubber_max_process_power = Math.max(scrubber_max_process_power, recipe.getScrubberProcessPower());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static double getBlockMutationThreshold() {
|
||||
return block_mutation_threshold;
|
||||
}
|
||||
|
||||
private static void setBlockMutationThreshold() {
|
||||
block_mutation_threshold = Double.MAX_VALUE;
|
||||
for (ProcessorRecipe recipe : NCRecipes.radiation_block_mutation.getRecipeList()) {
|
||||
if (recipe != null) {
|
||||
block_mutation_threshold = Math.min(block_mutation_threshold, recipe.getBlockMutationThreshold());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static double getBlockPurificationThreshold() {
|
||||
return block_purification_threshold;
|
||||
}
|
||||
|
||||
private static void setBlockPurificationThreshold() {
|
||||
block_purification_threshold = 0D;
|
||||
for (ProcessorRecipe recipe : NCRecipes.radiation_block_purification.getRecipeList()) {
|
||||
if (recipe != null) {
|
||||
block_purification_threshold = Math.max(block_purification_threshold, recipe.getBlockMutationThreshold());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -54,12 +54,12 @@ public class FuelReprocessorRecipes extends ProcessorRecipeHandler {
|
|||
addRecipe("depletedFuelIC2MOX", RegistryHelper.itemStackFromRegistry("ic2:nuclear:7", 7), RegistryHelper.itemStackFromRegistry("ic2:nuclear:7", 7), RegistryHelper.itemStackFromRegistry("ic2:nuclear:7", 7), RegistryHelper.itemStackFromRegistry("ic2:nuclear:7", 7), emptyItemStack(), emptyItemStack(), emptyItemStack(), emptyItemStack(), 1D, 1D);
|
||||
}
|
||||
|
||||
public void addReprocessingRecipes(String fuel, String out1, int n1, String out2, int n2, String out3, int n3, String out4, int n4, String waste1, String waste2, double w, int r) {
|
||||
public void addReprocessingRecipes(String fuel, String out1, int n1, String out2, int n2, String out3, int n3, String out4, int n4, String waste1, String waste2, double m, int r) {
|
||||
int extraReturn = 9 - n1 - n2 - n3 - n4;
|
||||
addRecipe(oreStack("ingotDepleted" + fuel + "TRISO", 9), oreStack("ingot" + out1 + "Carbide", n1), oreStack("ingot" + out2 + "Carbide", n2), chanceOreStack("dust" + waste1, 1, (int) (w * r)), oreStack("dustGraphite", extraReturn + 2), oreStack("ingot" + out3 + "Carbide", n3), oreStack("ingot" + out4 + "Carbide", n4), chanceOreStack("dust" + waste2, 1, (int) (w * (100 - r))), oreStack(OreDictHelper.oreExists("dustSiliconCarbide") ? "dustSiliconCarbide" : "ingotSiliconCarbide", 1), 1D, 1D);
|
||||
addRecipe(oreStack("ingotDepleted" + fuel + "Oxide", 9), oreStack("ingot" + out1 + "Oxide", n1), oreStack("ingot" + out2 + "Oxide", n2), chanceOreStack("dust" + waste1, 1, (int) (w * r)), emptyItemStack(), oreStack("ingot" + out3 + "Oxide", n3), oreStack("ingot" + out4 + "Oxide", n4), chanceOreStack("dust" + waste2, 1, (int) (w * (100 - r))), emptyItemStack(), 1D, 1D);
|
||||
addRecipe(oreStack("ingotDepleted" + fuel + "Nitride", 9), oreStack("ingot" + out1 + "Nitride", n1), oreStack("ingot" + out2 + "Nitride", n2), chanceOreStack("dust" + waste1, 1, (int) (w * r)), emptyItemStack(), oreStack("ingot" + out3 + "Nitride", n3), oreStack("ingot" + out4 + "Nitride", n4), chanceOreStack("dust" + waste2, 1, (int) (w * (100 - r))), emptyItemStack(), 1D, 1D);
|
||||
addRecipe(oreStack("ingotDepleted" + fuel + "ZA", 9), oreStack("ingot" + out1 + "ZA", n1), oreStack("ingot" + out2 + "ZA", n2), chanceOreStack("dust" + waste1, 1, (int) (w * r)), oreStack("dustZirconium", extraReturn), oreStack("ingot" + out3 + "ZA", n3), oreStack("ingot" + out4 + "ZA", n4), chanceOreStack("dust" + waste2, 1, (int) (w * (100 - r))), emptyItemStack(), 1D, 1D);
|
||||
addRecipe(oreStack("ingotDepleted" + fuel + "TRISO", 9), oreStack("ingot" + out1 + "Carbide", n1), oreStack("ingot" + out2 + "Carbide", n2), chanceOreStack("dust" + waste1, 1, (int) (m * r)), oreStack("dustGraphite", extraReturn + 2), oreStack("ingot" + out3 + "Carbide", n3), oreStack("ingot" + out4 + "Carbide", n4), chanceOreStack("dust" + waste2, 1, (int) (m * (100 - r))), oreStack(OreDictHelper.oreExists("dustSiliconCarbide") ? "dustSiliconCarbide" : "ingotSiliconCarbide", 1), 1D, 1D);
|
||||
addRecipe(oreStack("ingotDepleted" + fuel + "Oxide", 9), oreStack("ingot" + out1 + "Oxide", n1), oreStack("ingot" + out2 + "Oxide", n2), chanceOreStack("dust" + waste1, 1, (int) (m * r)), emptyItemStack(), oreStack("ingot" + out3 + "Oxide", n3), oreStack("ingot" + out4 + "Oxide", n4), chanceOreStack("dust" + waste2, 1, (int) (m * (100 - r))), emptyItemStack(), 1D, 1D);
|
||||
addRecipe(oreStack("ingotDepleted" + fuel + "Nitride", 9), oreStack("ingot" + out1 + "Nitride", n1), oreStack("ingot" + out2 + "Nitride", n2), chanceOreStack("dust" + waste1, 1, (int) (m * r)), emptyItemStack(), oreStack("ingot" + out3 + "Nitride", n3), oreStack("ingot" + out4 + "Nitride", n4), chanceOreStack("dust" + waste2, 1, (int) (m * (100 - r))), emptyItemStack(), 1D, 1D);
|
||||
addRecipe(oreStack("ingotDepleted" + fuel + "ZA", 9), oreStack("ingot" + out1 + "ZA", n1), oreStack("ingot" + out2 + "ZA", n2), chanceOreStack("dust" + waste1, 1, (int) (m * r)), oreStack("dustZirconium", extraReturn), oreStack("ingot" + out3 + "ZA", n3), oreStack("ingot" + out4 + "ZA", n4), chanceOreStack("dust" + waste2, 1, (int) (m * (100 - r))), emptyItemStack(), 1D, 1D);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -22,10 +22,14 @@ import net.minecraft.item.crafting.IRecipe;
|
|||
import net.minecraft.util.*;
|
||||
import net.minecraftforge.fml.common.registry.ForgeRegistries;
|
||||
import net.minecraftforge.oredict.*;
|
||||
import vazkii.patchouli.common.item.ItemModBook;
|
||||
|
||||
public class CraftingRecipeHandler {
|
||||
|
||||
public static void registerCraftingRecipes() {
|
||||
addShapelessOreRecipe(ItemModBook.forBook("nuclearcraft:guide"), new Object[] {Items.BOOK, "ingotUranium"});
|
||||
addShapelessOreRecipe(Items.BOOK, new Object[] {ItemModBook.forBook("nuclearcraft:guide")});
|
||||
|
||||
for (int i = 0; i < IngotType.values().length; i++) {
|
||||
String type = StringHelper.capitalize(IngotType.values()[i].getName());
|
||||
if (!ore_dict_raw_material_recipes) {
|
||||
|
|
|
@ -2,7 +2,7 @@ package nc.tile.generator;
|
|||
|
||||
import static nc.config.NCConfig.machine_update_rate;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.Random;
|
||||
|
||||
import nc.recipe.*;
|
||||
import nc.tile.dummy.IInterfaceable;
|
||||
|
@ -25,7 +25,7 @@ public class TileDecayGenerator extends TileEnergy implements ITickable, IInterf
|
|||
protected int generatorCount;
|
||||
|
||||
public TileDecayGenerator() {
|
||||
super(maxPower(), ITileEnergy.energyConnectionAll(EnergyConnection.OUT));
|
||||
super(2 * RecipeStats.getDecayGeneratorMaxPower(), ITileEnergy.energyConnectionAll(EnergyConnection.OUT));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -53,18 +53,6 @@ public class TileDecayGenerator extends TileEnergy implements ITickable, IInterf
|
|||
generatorCount %= machine_update_rate;
|
||||
}
|
||||
|
||||
private static int maxPower() {
|
||||
double max = 0D;
|
||||
List<ProcessorRecipe> recipes = NCRecipes.decay_generator.getRecipeList();
|
||||
for (ProcessorRecipe recipe : recipes) {
|
||||
if (recipe == null) {
|
||||
continue;
|
||||
}
|
||||
max = Math.max(max, recipe.getDecayPower());
|
||||
}
|
||||
return (int) (machine_update_rate * max);
|
||||
}
|
||||
|
||||
public int getGenerated() {
|
||||
double power = 0D;
|
||||
for (EnumFacing side : EnumFacing.VALUES) {
|
||||
|
@ -77,7 +65,7 @@ public class TileDecayGenerator extends TileEnergy implements ITickable, IInterf
|
|||
double radiation = 0D;
|
||||
for (EnumFacing side : EnumFacing.VALUES) {
|
||||
if (getDecayRecipe(side) != null) {
|
||||
radiation += getDecayRecipe(side).getDecayRadiation();
|
||||
radiation += getDecayRecipe(side).getDecayGeneratorRadiation();
|
||||
}
|
||||
}
|
||||
return machine_update_rate * radiation;
|
||||
|
@ -123,7 +111,7 @@ public class TileDecayGenerator extends TileEnergy implements ITickable, IInterf
|
|||
|
||||
@Override
|
||||
public int getSourceTier() {
|
||||
return EnergyHelper.getEUTier(maxPower());
|
||||
return EnergyHelper.getEUTier(RecipeStats.getDecayGeneratorMaxPower());
|
||||
}
|
||||
|
||||
// Recipe from BlockPos
|
||||
|
@ -136,14 +124,14 @@ public class TileDecayGenerator extends TileEnergy implements ITickable, IInterf
|
|||
if (getDecayRecipe(side) == null) {
|
||||
return 1200D;
|
||||
}
|
||||
return getDecayRecipe(side).getDecayLifetime();
|
||||
return getDecayRecipe(side).getDecayGeneratorLifetime();
|
||||
}
|
||||
|
||||
public double getRecipePower(EnumFacing side) {
|
||||
if (getDecayRecipe(side) == null) {
|
||||
return 0D;
|
||||
}
|
||||
return getDecayRecipe(side).getDecayPower();
|
||||
return getDecayRecipe(side).getDecayGeneratorPower();
|
||||
}
|
||||
|
||||
public ItemStack getOutput(EnumFacing side) {
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
package nc.tile.processor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import nc.recipe.*;
|
||||
import nc.recipe.RecipeStats;
|
||||
import nc.tile.dummy.IInterfaceable;
|
||||
import nc.util.NCMath;
|
||||
import net.minecraft.util.ITickable;
|
||||
|
@ -15,29 +13,7 @@ public abstract interface IProcessor extends ITickable, IInterfaceable {
|
|||
|
||||
public void refreshActivityOnProduction();
|
||||
|
||||
public static double maxStat(ProcessorRecipeHandler recipeHandler, int extraIndex) {
|
||||
double max = 1D;
|
||||
List<ProcessorRecipe> recipes = recipeHandler.getRecipeList();
|
||||
for (ProcessorRecipe recipe : recipes) {
|
||||
if (recipe == null || recipe.getExtras().size() <= extraIndex) {
|
||||
continue;
|
||||
}
|
||||
else if (recipe.getExtras().get(extraIndex) instanceof Double) {
|
||||
max = Math.max(max, (double) recipe.getExtras().get(extraIndex));
|
||||
}
|
||||
}
|
||||
return max;
|
||||
}
|
||||
|
||||
public static double maxBaseProcessTime(ProcessorRecipeHandler recipeHandler, int defaultProcessTime) {
|
||||
return Math.ceil(maxStat(recipeHandler, 0) * defaultProcessTime);
|
||||
}
|
||||
|
||||
public static double maxBaseProcessPower(ProcessorRecipeHandler recipeHandler, int defaultProcessPower) {
|
||||
return Math.ceil(maxStat(recipeHandler, 1) * defaultProcessPower);
|
||||
}
|
||||
|
||||
public static int getCapacity(ProcessorRecipeHandler recipeHandler, int defaultProcessTime, double speedMultiplier, int defaultProcessPower, double powerMultiplier) {
|
||||
return NCMath.toInt(Math.ceil(maxBaseProcessTime(recipeHandler, defaultProcessTime) / speedMultiplier) * Math.ceil(maxBaseProcessPower(recipeHandler, defaultProcessPower) * powerMultiplier));
|
||||
public static int getCapacity(int processorID, double speedMultiplier, double powerMultiplier) {
|
||||
return NCMath.toInt(Math.ceil(RecipeStats.getProcessorMaxBaseProcessTime(processorID) / speedMultiplier) * Math.ceil(RecipeStats.getProcessorMaxBaseProcessPower(processorID) * powerMultiplier));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ public class TileFluidProcessor extends TileEnergyFluidSidedInventory implements
|
|||
}
|
||||
|
||||
public TileFluidProcessor(String name, int fluidInSize, int fluidOutSize, @Nonnull List<ItemSorption> itemSorptions, @Nonnull IntList fluidCapacity, @Nonnull List<TankSorption> tankSorptions, List<List<String>> allowedFluids, int time, int power, boolean shouldLoseProgress, boolean upgrades, @Nonnull ProcessorRecipeHandler recipeHandler, int processorID, int sideConfigYOffset) {
|
||||
super(name, upgrades ? 2 : 0, ITileInventory.inventoryConnectionAll(itemSorptions), IProcessor.getCapacity(recipeHandler, time, 1D, power, 1D), power != 0 ? ITileEnergy.energyConnectionAll(EnergyConnection.IN) : ITileEnergy.energyConnectionAll(EnergyConnection.NON), fluidCapacity, allowedFluids, ITileFluid.fluidConnectionAll(tankSorptions));
|
||||
super(name, upgrades ? 2 : 0, ITileInventory.inventoryConnectionAll(itemSorptions), IProcessor.getCapacity(processorID, 1D, 1D), power != 0 ? ITileEnergy.energyConnectionAll(EnergyConnection.IN) : ITileEnergy.energyConnectionAll(EnergyConnection.NON), fluidCapacity, allowedFluids, ITileFluid.fluidConnectionAll(tankSorptions));
|
||||
fluidInputSize = fluidInSize;
|
||||
fluidOutputSize = fluidOutSize;
|
||||
|
||||
|
@ -179,7 +179,7 @@ public class TileFluidProcessor extends TileEnergyFluidSidedInventory implements
|
|||
}
|
||||
|
||||
public void setCapacityFromSpeed() {
|
||||
int capacity = IProcessor.getCapacity(recipeHandler, defaultProcessTime, getSpeedMultiplier(), defaultProcessPower, getPowerMultiplier());
|
||||
int capacity = IProcessor.getCapacity(processorID, getSpeedMultiplier(), getPowerMultiplier());
|
||||
getEnergyStorage().setStorageCapacity(capacity);
|
||||
getEnergyStorage().setMaxTransfer(capacity);
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ public class TileItemFluidProcessor extends TileEnergyFluidSidedInventory implem
|
|||
}
|
||||
|
||||
public TileItemFluidProcessor(String name, int itemInSize, int fluidInSize, int itemOutSize, int fluidOutSize, @Nonnull List<ItemSorption> itemSorptions, @Nonnull IntList fluidCapacity, @Nonnull List<TankSorption> tankSorptions, List<List<String>> allowedFluids, int time, int power, boolean shouldLoseProgress, boolean upgrades, @Nonnull ProcessorRecipeHandler recipeHandler, int processorID, int sideConfigYOffset) {
|
||||
super(name, itemInSize + itemOutSize + (upgrades ? 2 : 0), ITileInventory.inventoryConnectionAll(itemSorptions), IProcessor.getCapacity(recipeHandler, time, 1D, power, 1D), power != 0 ? ITileEnergy.energyConnectionAll(EnergyConnection.IN) : ITileEnergy.energyConnectionAll(EnergyConnection.NON), fluidCapacity, allowedFluids, ITileFluid.fluidConnectionAll(tankSorptions));
|
||||
super(name, itemInSize + itemOutSize + (upgrades ? 2 : 0), ITileInventory.inventoryConnectionAll(itemSorptions), IProcessor.getCapacity(processorID, 1D, 1D), power != 0 ? ITileEnergy.energyConnectionAll(EnergyConnection.IN) : ITileEnergy.energyConnectionAll(EnergyConnection.NON), fluidCapacity, allowedFluids, ITileFluid.fluidConnectionAll(tankSorptions));
|
||||
itemInputSize = itemInSize;
|
||||
fluidInputSize = fluidInSize;
|
||||
itemOutputSize = itemOutSize;
|
||||
|
@ -188,7 +188,7 @@ public class TileItemFluidProcessor extends TileEnergyFluidSidedInventory implem
|
|||
}
|
||||
|
||||
public void setCapacityFromSpeed() {
|
||||
int capacity = IProcessor.getCapacity(recipeHandler, defaultProcessTime, getSpeedMultiplier(), defaultProcessPower, getPowerMultiplier());
|
||||
int capacity = IProcessor.getCapacity(processorID, getSpeedMultiplier(), getPowerMultiplier());
|
||||
getEnergyStorage().setStorageCapacity(capacity);
|
||||
getEnergyStorage().setMaxTransfer(capacity);
|
||||
}
|
||||
|
|
|
@ -47,7 +47,7 @@ public class TileItemProcessor extends TileEnergySidedInventory implements IItem
|
|||
}
|
||||
|
||||
public TileItemProcessor(String name, int itemInSize, int itemOutSize, @Nonnull List<ItemSorption> itemSorptions, int time, int power, boolean shouldLoseProgress, boolean upgrades, @Nonnull ProcessorRecipeHandler recipeHandler, int processorID, int sideConfigYOffset) {
|
||||
super(name, itemInSize + itemOutSize + (upgrades ? 2 : 0), ITileInventory.inventoryConnectionAll(itemSorptions), IProcessor.getCapacity(recipeHandler, time, 1D, power, 1D), power != 0 ? ITileEnergy.energyConnectionAll(EnergyConnection.IN) : ITileEnergy.energyConnectionAll(EnergyConnection.NON));
|
||||
super(name, itemInSize + itemOutSize + (upgrades ? 2 : 0), ITileInventory.inventoryConnectionAll(itemSorptions), IProcessor.getCapacity(processorID, 1D, 1D), power != 0 ? ITileEnergy.energyConnectionAll(EnergyConnection.IN) : ITileEnergy.energyConnectionAll(EnergyConnection.NON));
|
||||
itemInputSize = itemInSize;
|
||||
itemOutputSize = itemOutSize;
|
||||
|
||||
|
@ -164,7 +164,7 @@ public class TileItemProcessor extends TileEnergySidedInventory implements IItem
|
|||
}
|
||||
|
||||
public void setCapacityFromSpeed() {
|
||||
int capacity = IProcessor.getCapacity(recipeHandler, defaultProcessTime, getSpeedMultiplier(), defaultProcessPower, getPowerMultiplier());
|
||||
int capacity = IProcessor.getCapacity(processorID, getSpeedMultiplier(), getPowerMultiplier());
|
||||
getEnergyStorage().setStorageCapacity(capacity);
|
||||
getEnergyStorage().setMaxTransfer(capacity);
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ package nc.tile.radiation;
|
|||
|
||||
import static nc.config.NCConfig.*;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.concurrent.*;
|
||||
|
||||
|
@ -31,22 +31,10 @@ public class TileRadiationScrubber extends TileItemFluidGenerator implements ITi
|
|||
private int radCheckCount = 0;
|
||||
|
||||
public TileRadiationScrubber() {
|
||||
super("radiation_scrubber", 1, 1, 1, 1, 0, defaultItemSorptions(1, 1), defaultTankCapacities(32000, 1, 1), defaultTankSorptions(1, 1), NCRecipes.radiation_scrubber_valid_fluids, maxPower(), NCRecipes.radiation_scrubber);
|
||||
super("radiation_scrubber", 1, 1, 1, 1, 0, defaultItemSorptions(1, 1), defaultTankCapacities(32000, 1, 1), defaultTankSorptions(1, 1), NCRecipes.radiation_scrubber_valid_fluids, NCMath.toInt(20 * RecipeStats.getScrubberMaxProcessPower()), NCRecipes.radiation_scrubber);
|
||||
setEnergyConnectionAll(EnergyConnection.IN);
|
||||
}
|
||||
|
||||
private static int maxPower() {
|
||||
int max = 0;
|
||||
List<ProcessorRecipe> recipes = NCRecipes.radiation_scrubber.getRecipeList();
|
||||
for (ProcessorRecipe recipe : recipes) {
|
||||
if (recipe == null) {
|
||||
continue;
|
||||
}
|
||||
max = Math.max(max, recipe.getScrubberProcessPower());
|
||||
}
|
||||
return 20 * max;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
super.onLoad();
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package nc.util;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.zip.*;
|
||||
|
||||
public class IOHelper {
|
||||
|
||||
|
@ -20,4 +21,49 @@ public class IOHelper {
|
|||
writer.close();
|
||||
reader.close();
|
||||
}
|
||||
|
||||
/** Modified from Fabian Braun's answer at https://stackoverflow.com/a/47595502 */
|
||||
public static boolean isZip(File file) {
|
||||
int signature = 0;
|
||||
try (RandomAccessFile raf = new RandomAccessFile(file, "r")) {
|
||||
signature = raf.readInt();
|
||||
}
|
||||
catch (IOException e) {
|
||||
|
||||
}
|
||||
return signature == 0x504B0304 || signature == 0x504B0506 || signature == 0x504B0708;
|
||||
}
|
||||
|
||||
/** Modified from Nam Ha Minh's posts at https://www.codejava.net/file-io-tutorials */
|
||||
public static void unzip(File zipFile, String dest) throws IOException {
|
||||
File destDir = new File(dest);
|
||||
if (!destDir.exists()) {
|
||||
destDir.mkdir();
|
||||
}
|
||||
|
||||
ZipInputStream zipStream = new ZipInputStream(new FileInputStream(zipFile));
|
||||
ZipEntry entry = zipStream.getNextEntry();
|
||||
while (entry != null) {
|
||||
String fileDest = dest + "/" + entry.getName();
|
||||
if (!entry.isDirectory()) {
|
||||
extract(zipStream, fileDest);
|
||||
}
|
||||
else {
|
||||
new File(fileDest).mkdirs();
|
||||
}
|
||||
zipStream.closeEntry();
|
||||
entry = zipStream.getNextEntry();
|
||||
}
|
||||
zipStream.close();
|
||||
}
|
||||
|
||||
private static void extract(ZipInputStream zipStream, String fileDest) throws IOException {
|
||||
BufferedOutputStream outStream = new BufferedOutputStream(new FileOutputStream(fileDest));
|
||||
byte[] bytesIn = new byte[1024];
|
||||
int read = 0;
|
||||
while ((read = zipStream.read(bytesIn)) != -1) {
|
||||
outStream.write(bytesIn, 0, read);
|
||||
}
|
||||
outStream.close();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,12 +22,10 @@ public class StringHelper {
|
|||
}
|
||||
|
||||
public static String removePrefix(String s, int length) {
|
||||
// int fixedLength = Math.min(length, s.length());
|
||||
return s.substring(length);
|
||||
}
|
||||
|
||||
public static String removeSuffix(String s, int length) {
|
||||
// int fixedLength = Math.min(length, s.length());
|
||||
return s.substring(0, s.length() - length);
|
||||
}
|
||||
|
||||
|
|
|
@ -2247,6 +2247,7 @@ jei.nuclearcraft.collector_production_rate=Production rate:
|
|||
jei.nuclearcraft.irradiator_flux_required=Flux required:
|
||||
jei.nuclearcraft.irradiator_heat_per_flux=Heat gen per flux:
|
||||
jei.nuclearcraft.irradiator_process_efficiency=Efficiency contribution:
|
||||
jei.nuclearcraft.radiation_per_flux=Radiation per flux:
|
||||
|
||||
jei.nuclearcraft.pebble_fuel_time=Base depletion time:
|
||||
jei.nuclearcraft.pebble_fuel_heat=Base heat gen:
|
||||
|
|
|
@ -436,7 +436,7 @@ fluid.deuterium=氘
|
|||
tile.nuclearcraft.fluid_tritium.name=氚
|
||||
fluid.tritium=氚
|
||||
|
||||
tile.nuclearcraft.fluid_helium3.name=氦-3
|
||||
tile.nuclearcraft.fluid_helium_3.name=氦-3
|
||||
fluid.helium3=氦-3
|
||||
|
||||
tile.nuclearcraft.fluid_helium.name=氦
|
||||
|
@ -488,17 +488,17 @@ tile.nuclearcraft.fluid_plasma.name=等离子体
|
|||
tile.nuclearcraft.fluid_plasma.desc=从聚变反应堆中产生。当与未充能的聚变电磁铁发生接触时可能导致火焰与爆炸。
|
||||
fluid.plasma=等离子体
|
||||
|
||||
tile.nuclearcraft.fluid_lithium6.name=熔融锂-6
|
||||
fluid.lithium6=熔融锂-6
|
||||
tile.nuclearcraft.fluid_lithium_6.name=熔融锂-6
|
||||
fluid.lithium_6=熔融锂-6
|
||||
|
||||
tile.nuclearcraft.fluid_lithium7.name=熔融锂-7
|
||||
fluid.lithium7=熔融锂-7
|
||||
tile.nuclearcraft.fluid_lithium_7.name=熔融锂-7
|
||||
fluid.lithium_7=熔融锂-7
|
||||
|
||||
tile.nuclearcraft.fluid_boron10.name=熔融硼-10
|
||||
fluid.boron10=熔融硼-10
|
||||
tile.nuclearcraft.fluid_boron_10.name=熔融硼-10
|
||||
fluid.boron_10=熔融硼-10
|
||||
|
||||
tile.nuclearcraft.fluid_boron11.name=熔融硼-11
|
||||
fluid.boron11=熔融硼-11
|
||||
tile.nuclearcraft.fluid_boron_11.name=熔融硼-11
|
||||
fluid.boron_11=熔融硼-11
|
||||
|
||||
tile.nuclearcraft.fluid_ferroboron.name=熔融硼铁合金
|
||||
fluid.ferroboron=熔融硼铁合金
|
||||
|
@ -697,6 +697,24 @@ fluid.alugentum=熔融银铝
|
|||
tile.nuclearcraft.fluid_alumina.name=熔融铁矾土
|
||||
fluid.alumina=熔融铁矾土
|
||||
|
||||
tile.nuclearcraft.fluid_strontium_90.name=熔融锶-90
|
||||
fluid.strontium_90=熔融锶-90
|
||||
|
||||
tile.nuclearcraft.fluid_molybdenum.name=熔融钼
|
||||
fluid.molybdenum=熔融钼
|
||||
|
||||
tile.nuclearcraft.fluid_ruthenium_106.name=熔融钌-106
|
||||
fluid.ruthenium_106=熔融钌-106
|
||||
|
||||
tile.nuclearcraft.fluid_caesium_137.name=熔融铯-137
|
||||
fluid.caesium_137=熔融铯-137
|
||||
|
||||
tile.nuclearcraft.fluid_promethium_147.name=熔融钷-147
|
||||
fluid.promethium_147=熔融钷-147
|
||||
|
||||
tile.nuclearcraft.fluid_europium_155.name=熔融铕-155
|
||||
fluid.europium_155=熔融铕-155
|
||||
|
||||
tile.nuclearcraft.fluid_thorium.name=熔融钍
|
||||
fluid.thorium=熔融钍
|
||||
tile.nuclearcraft.fluid_uranium.name=熔融铀
|
||||
|
@ -1574,6 +1592,7 @@ item.nuclearcraft.alloy.zircaloy.name=锆锡合金锭
|
|||
item.nuclearcraft.alloy.silicon_carbide.name=碳化硅锭
|
||||
item.nuclearcraft.alloy.sic_sic_cmc.name=碳化硅纤维增韧型碳化硅陶瓷基复合材料
|
||||
item.nuclearcraft.alloy.hsla_steel.name=高强度低合金钢锭
|
||||
item.nuclearcraft.alloy.zirconium_molybdenum.name=锆钼合金锭
|
||||
|
||||
item.nuclearcraft.compound.calcium_sulfate.name=硫酸钙
|
||||
item.nuclearcraft.compound.crystal_binder.name=水晶粘合剂
|
||||
|
@ -1616,6 +1635,12 @@ item.nuclearcraft.fission_dust.radium.name=镭粉
|
|||
item.nuclearcraft.fission_dust.polonium.name=钋粉
|
||||
item.nuclearcraft.fission_dust.tbp.name=镤-富集钍粉
|
||||
item.nuclearcraft.fission_dust.protactinium_233.name=镤-233粉
|
||||
item.nuclearcraft.fission_dust.strontium_90.name=锶-90粉
|
||||
item.nuclearcraft.fission_dust.molybdenum.name=钼粉
|
||||
item.nuclearcraft.fission_dust.ruthenium_106.name=钌-106粉
|
||||
item.nuclearcraft.fission_dust.caesium_137.name=铯-137粉
|
||||
item.nuclearcraft.fission_dust.promethium_147.name=钷-147粉
|
||||
item.nuclearcraft.fission_dust.europium_155.name=铕-155粉
|
||||
|
||||
item.nuclearcraft.uranium.233.name=铀-233
|
||||
item.nuclearcraft.uranium.233_c.name=铀-233 碳化物
|
||||
|
@ -2246,6 +2271,8 @@ jei.nuclearcraft.salt_fuel_criticality=燃料临界值:
|
|||
jei.nuclearcraft.salt_fuel_radiation=燃料辐射:
|
||||
jei.nuclearcraft.salt_fuel_self_priming=强中子射源!
|
||||
|
||||
jei.nuclearcraft.fission_emergency_cooling_per_mb=每mB输入提供冷却:
|
||||
|
||||
jei.nuclearcraft.fusion_time=基础连续时间:
|
||||
jei.nuclearcraft.fusion_power=基础能量上限:
|
||||
jei.nuclearcraft.fusion_temp=最佳温度:
|
||||
|
@ -2343,7 +2370,9 @@ gui.nc.config.energy_upgrade_power_laws_fp.comment=能量升级的功率设定
|
|||
gui.nc.config.energy_upgrade_multipliers_fp=能量升级倍率
|
||||
gui.nc.config.energy_upgrade_multipliers_fp.comment=能量升级的基础倍率。顺序:功率。
|
||||
gui.nc.config.rf_per_eu=[IC2]工业2的EU与RF的转换率
|
||||
gui.nc.config.rf_per_eu.comment=[IC2]工业2的能量单位与红石通量的比值。
|
||||
gui.nc.config.rf_per_eu.comment=[IC2]工业2和[GTCE]格雷科技:社区版的能量单位与红石通量的比值。
|
||||
gui.nc.config.enable_ic2_eu=启用[IC2]工业2的EU支持。
|
||||
gui.nc.config.enable_ic2_eu.comment=若设定为真(True),[IC2]工业2的能量将会被核电工艺的机器接受或发出。
|
||||
gui.nc.config.enable_gtce_eu=[GTCE]格雷科技:社区版的EU支持
|
||||
gui.nc.config.enable_gtce_eu.comment=如果设定为 (true) ,那么[GTCE]格雷科技:社区版的EU可以被核电工艺的机器接收。
|
||||
gui.nc.config.enable_mek_gas=启用[Mek]通用机械的气体
|
||||
|
@ -2381,9 +2410,9 @@ gui.nc.config.rtg_power.comment=放射性热电发电机的能量产出(单位
|
|||
gui.nc.config.solar_power=太阳能电池板能量产出
|
||||
gui.nc.config.solar_power.comment=太阳能电池板的能量产出(单位:RF/t)。顺序:基础,高级,贫铀,精英。
|
||||
gui.nc.config.decay_lifetime=衰变产能器平均寿命
|
||||
gui.nc.config.decay_lifetime.comment=与衰变产能器接触的放射性方块的平均寿命。顺序:钍,铀,枯竭钍,枯竭铀,枯竭镎,枯竭钚,枯竭镅,枯竭锔,枯竭锫,枯竭锎。
|
||||
gui.nc.config.decay_lifetime.comment=与衰变产能器接触的放射性方块的平均寿命。顺序:钍,铀,铀-238,镎-237,钚-242,镅-243,锔-246,锫-247,锎-252。
|
||||
gui.nc.config.decay_power=衰变产能器能量产出
|
||||
gui.nc.config.decay_power.comment=与衰变产能器接触的放射性方块的能量产出。顺序:钍,铀,枯竭钍,枯竭铀,枯竭镎,枯竭钚,枯竭镅,枯竭锔,枯竭锫,枯竭锎。
|
||||
gui.nc.config.decay_power.comment=与衰变产能器接触的放射性方块的能量产出。顺序:钍,铀,铀-238,镎-237,钚-242,镅-243,锔-246,锫-247,锎-252。
|
||||
|
||||
gui.nc.config.category.energy_storage=能量储存配置
|
||||
gui.nc.config.category.energy_storage.tooltip=配置对能量的储存。
|
||||
|
@ -2760,7 +2789,7 @@ gui.nc.config.radiation_scrubber_radius.comment=The range of scrubbers' search f
|
|||
gui.nc.config.radiation_scrubber_non_linear=Non-linear Scrubber Mechanics
|
||||
gui.nc.config.radiation_scrubber_non_linear.comment=Use a non-linear scrubbing rate equation instead of the linear behaviour?
|
||||
gui.nc.config.radiation_scrubber_param=Non-linear Scrubber Parameters
|
||||
gui.nc.config.radiation_scrubber_param.comment=The four parameters a,b,c,d in the non-linear scrubbing rate equation 'F = a^[-(S/b)^(S/c + 1)^(1/d)]', where 'F' is the remaining fraction of radiation left in the chunk's update buffer after scrubbing and 'S' is the effective number of scrubbers in the chunk after accounting for inefficiencies. It is recommended that you only modify these if you know what you are doing.
|
||||
gui.nc.config.radiation_scrubber_param.comment=The four parameters a,b,c,d in the non-linear scrubbing rate equation 'F = a^[-(S/b)^(S/c + 1)^(1/d)]', where 'F' is the remaining fraction of radiation left in the chunk's update buffer after scrubbing and 'S' is the effective number of scrubbers in the chunk after accounting for their efficiencies. It is recommended that you only modify these if you know what you are doing.
|
||||
gui.nc.config.radiation_scrubber_time=Scrubber Recipe Lifetime
|
||||
gui.nc.config.radiation_scrubber_time.comment=The lifetime in ticks of one item or 250 mB of fluid in an active scrubber. 顺序:borax dust, RadAway, Slow-Acting RadAway
|
||||
gui.nc.config.radiation_scrubber_power=Scrubber Recipe Power Use
|
||||
|
@ -2915,6 +2944,11 @@ nc.block.fission_vent_mode.input=输入
|
|||
nc.block.fission_vent_mode.output=输出
|
||||
nc.block.vent_toggle.mode=模式!
|
||||
|
||||
nc.block.port_toggle=切换端口为
|
||||
nc.block.fission_port_mode.input=输入
|
||||
nc.block.fission_port_mode.output=输出
|
||||
nc.block.port_toggle.mode=模式!
|
||||
|
||||
nc.block.fluid_toggle=将本面模式切换为:
|
||||
nc.block.fluid_toggle_opposite=将反面模式切换为:
|
||||
|
||||
|
@ -3005,6 +3039,8 @@ gui.nc.container.salt_fission_vessel.heat_stored=集群热量等级:
|
|||
gui.nc.container.salt_fission_heater.heater=裂变冷却液加热器
|
||||
gui.nc.container.salt_fission_heater.heat_stored=集群热量等级:
|
||||
|
||||
gui.nc.container.fission_heater_port.name=裂变冷却液加热器端口
|
||||
|
||||
gui.nc.container.fusion_core.reactor=聚变反应堆
|
||||
gui.nc.container.fusion_core.ring_incomplete=磁环未完成
|
||||
gui.nc.container.fusion_core.ring_incomplete_at=磁环未完成
|
||||
|
@ -3115,6 +3151,7 @@ nuclearcraft.fission_moderator.jei_name=裂变减速剂
|
|||
nuclearcraft.fission_reflector.jei_name=裂变反射器
|
||||
nuclearcraft.fission_heating.jei_name=固态燃料裂变加热
|
||||
nuclearcraft.multiblock_gui.salt_fission.jei_name=熔盐裂变
|
||||
nuclearcraft.fission_emergency_cooling.jei_name=熔盐反应堆紧急冷却
|
||||
nuclearcraft.multiblock_gui.coolant_heater.jei_name=熔盐冷却
|
||||
nuclearcraft.multiblock_gui.heat_exchanger.jei_name=热交换管道
|
||||
nuclearcraft.multiblock_gui.condenser.jei_name=冷凝管道
|
||||
|
@ -3373,6 +3410,10 @@ commands.nuclearcraft.set_chunk_radius_radiation.usage=/nc_set_chunk_radius_radi
|
|||
commands.nuclearcraft.set_world_radiation.usage=/nc_set_world_radiation <辐射量>
|
||||
commands.nuclearcraft.set_player_radiation.usage=/nc_set_world_radiation <辐射量> [玩家]
|
||||
|
||||
commands.nuclearcraft.reconstruct_script_addons.usage=/nc_reload_script_addons ["syntax"]
|
||||
commands.nuclearcraft.reconstruct_script_addons.success=重新构建脚本插件成功!
|
||||
commands.nuclearcraft.reconstruct_script_addons.fail=在尝试重新构建脚本插件时出现了一个错误……
|
||||
|
||||
message.nuclearcraft.radiation_config_info=服务端启用了关于辐射的设定!
|
||||
message.nuclearcraft.radiation_config_info_jei=服务端启用了关于辐射的设定!建议客户端一并启用,以查看与辐射相关的全部内容!
|
||||
|
||||
|
@ -3430,7 +3471,7 @@ nc.sf.placement_rule.adjacent.ambiguity0prev=!同一条线&&!同几条线&&!同
|
|||
nc.sf.placement_rule.adjacent.ambiguity0last=同一条线||同几条线||同一个垂直处
|
||||
nc.sf.placement_rule.adjacent.ambiguity1prev=在同一||在同几
|
||||
|
||||
nc.sf.casing0=%s反应堆外壳
|
||||
nc.sf.reactor_casing0=%s反应堆外壳
|
||||
nc.sf.cell0=%s有效的燃料单元
|
||||
nc.sf.vessel0=%s有效的燃料容器
|
||||
nc.sf.moderator0=%s可生效的且与有效单元相邻的减速剂
|
||||
|
@ -3506,6 +3547,7 @@ nc.sf.liquid_helium_heater0=%s有效的液氦加热器
|
|||
nc.sf.enderium_heater0=%s有效的末影加热器
|
||||
nc.sf.cryotheum_heater0=%s有效的凛冰加热器
|
||||
|
||||
nc.sf.turbine_casing0=%s 涡轮机外壳
|
||||
nc.sf.bearing0=%s有效的转子轴承
|
||||
nc.sf.connector0=%s有效的线圈连接器
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
{
|
||||
"anchor": "bin",
|
||||
"type": "blocks/1",
|
||||
"header": "Universal Bin",
|
||||
"header": "通用垃圾桶",
|
||||
"block": "nuclearcraft:bin",
|
||||
"text": "盒中黑洞,摧毁一切导入之物,包括但不限于:物品、流体、能量……"
|
||||
}
|
||||
|
|
2
todo.txt
|
@ -1,5 +1,3 @@
|
|||
New turbine penalty: "So perhaps there should be a second part of the penalty, i.e. like the fission one as Quantum suggests, with the leniency based on how small the turbine can be given that minimum number of rows"
|
||||
|
||||
Adjacent MSR vessels with same filter form bundle to share flux, shared criticality factor is sum of single vessel criticality factors
|
||||
|
||||
Take number of available open faces of vessel bundle into account when calculating the heat multiplier (and efficiency)
|
||||
|
|