mirror of
https://github.com/turbodiesel4598/NuclearCraft
synced 2026-03-19 02:54:47 +01:00
Compare commits
No commits in common. "7126d35d3268c965dcbb21839ae6877bdc3aa1dd" and "3b6d30eb6f9136ea7808ed4aec295beea72c5a9b" have entirely different histories.
7126d35d32
...
3b6d30eb6f
@ -1,7 +1,7 @@
|
||||
mc_version=1.12.2
|
||||
forge_version=14.23.5.2847
|
||||
mapping_version=stable_39
|
||||
mod_version=2o.5.4
|
||||
mod_version=2o.5.4beta
|
||||
|
||||
ic2_version=2.8.221-ex112
|
||||
jei_version=4.16.1.301
|
||||
|
||||
@ -23,10 +23,8 @@ public class NCInfo {
|
||||
Lang.localise("info." + Global.MOD_ID + ".fission_fuel.base_time.desc", UnitHelper.applyTimeUnit(fuelInfo.getFissionFuelTime(), 3)),
|
||||
Lang.localise("info." + Global.MOD_ID + ".fission_fuel.base_heat.desc", UnitHelper.prefix(fuelInfo.getFissionFuelHeat(), 5, "H/t")),
|
||||
Lang.localise("info." + Global.MOD_ID + ".fission_fuel.base_efficiency.desc", NCMath.pcDecimalPlaces(fuelInfo.getFissionFuelEfficiency(), 1)),
|
||||
Lang.localise("info." + Global.MOD_ID + ".fission_fuel.criticality.desc", fuelInfo.getFissionFuelCriticality() + " N/t"));
|
||||
if (fission_decay_mechanics) {
|
||||
list.add(Lang.localise("info." + Global.MOD_ID + ".fission_fuel.decay_factor.desc", NCMath.pcDecimalPlaces(fuelInfo.getFissionFuelDecayFactor(), 1)));
|
||||
}
|
||||
Lang.localise("info." + Global.MOD_ID + ".fission_fuel.criticality.desc", fuelInfo.getFissionFuelCriticality() + " N/t"),
|
||||
Lang.localise("info." + Global.MOD_ID + ".fission_fuel.decay_factor.desc", NCMath.pcDecimalPlaces(fuelInfo.getFissionFuelDecayFactor(), 1)));
|
||||
if (fuelInfo.getFissionFuelSelfPriming()) {
|
||||
list.add(Lang.localise("info." + Global.MOD_ID + ".fission_fuel.self_priming.desc"));
|
||||
}
|
||||
@ -198,7 +196,7 @@ public class NCInfo {
|
||||
|
||||
// Extra Ore Drops
|
||||
|
||||
/*public static <T extends Enum<T> & IStringSerializable & IMetaEnum> String[][] oreDropInfo(String type, T[] values, int[] configIds, int[] metas) {
|
||||
public static <T extends Enum<T> & IStringSerializable & IMetaEnum> String[][] oreDropInfo(String type, T[] values, int[] configIds, int[] metas) {
|
||||
String[][] info = new String[values.length][];
|
||||
for (int i = 0; i < values.length; i++) {
|
||||
info[i] = null;
|
||||
@ -223,7 +221,7 @@ public class NCInfo {
|
||||
|
||||
public static <T extends Enum<T> & IStringSerializable & IMetaEnum> String[][] gemDustOreDropInfo() {
|
||||
return oreDropInfo("gem_dust", MetaEnums.GemDustType.values(), new int[] {4}, new int[] {6});
|
||||
}*/
|
||||
}
|
||||
|
||||
// Rad Shielding
|
||||
|
||||
|
||||
@ -107,14 +107,11 @@ public class NCConfig {
|
||||
public static double[] fission_irradiator_efficiency;
|
||||
public static int fission_cooling_efficiency_leniency;
|
||||
public static double[] fission_sparsity_penalty_params; // Multiplier, threshold
|
||||
|
||||
public static boolean fission_decay_mechanics;
|
||||
public static double[] fission_decay_build_up_times; // Decay heat, iodine, poison
|
||||
public static double[] fission_decay_lifetimes; // Decay heat, iodine, poison
|
||||
public static double[] fission_decay_equilibrium_factors; // Decay heat, iodine, poison
|
||||
public static double[] fission_decay_daughter_multipliers; // Iodine, poison
|
||||
public static double[] fission_decay_term_multipliers; // Exponential, linear
|
||||
|
||||
public static boolean fission_overheat;
|
||||
public static boolean fission_explosions;
|
||||
public static double fission_meltdown_radiation_multiplier;
|
||||
@ -339,13 +336,6 @@ public class NCConfig {
|
||||
public static double radiation_death_persist_fraction;
|
||||
public static double radiation_death_immunity_time;
|
||||
|
||||
/*public static String[] radiation_rads_text_color;
|
||||
public static String[] radiation_rate_text_color;
|
||||
public static String[] radiation_positive_food_rads_text_color;
|
||||
public static String[] radiation_negative_food_rads_text_color;
|
||||
public static String[] radiation_positive_food_resistance_text_color;
|
||||
public static String[] radiation_negative_food_resistance_text_color;*/
|
||||
|
||||
public static String[] radiation_player_debuff_lists;
|
||||
public static String[] radiation_passive_debuff_lists;
|
||||
public static String[] radiation_mob_buff_lists;
|
||||
@ -570,9 +560,6 @@ public class NCConfig {
|
||||
propertyFissionCoolingEfficiencyLeniency.setLanguageKey("gui.nc.config.fission_cooling_efficiency_leniency");
|
||||
Property propertyFissionSparsityPenaltyParams = config.get(CATEGORY_FISSION, "fission_sparsity_penalty_params", new double[] {0.5D, 0.75D}, Lang.localise("gui.nc.config.fission_sparsity_penalty_params.comment"), 0D, 1D);
|
||||
propertyFissionSparsityPenaltyParams.setLanguageKey("gui.nc.config.fission_sparsity_penalty_params");
|
||||
|
||||
Property propertyFissionDecayMechanics = config.get(CATEGORY_FISSION, "fission_decay_mechanics", false, Lang.localise("gui.nc.config.fission_decay_mechanics.comment"));
|
||||
propertyFissionDecayMechanics.setLanguageKey("gui.nc.config.fission_decay_mechanics");
|
||||
Property propertyFissionDecayBuildUpTimes = config.get(CATEGORY_FISSION, "fission_decay_build_up_times", new double[] {24000D, 24000D, 24000D}, Lang.localise("gui.nc.config.fission_decay_build_up_times.comment"), 0D, Integer.MAX_VALUE);
|
||||
propertyFissionDecayBuildUpTimes.setLanguageKey("gui.nc.config.fission_decay_build_up_times");
|
||||
Property propertyFissionDecayLifetimes = config.get(CATEGORY_FISSION, "fission_decay_lifetimes", new double[] {6000D, 8000D, 12000D}, Lang.localise("gui.nc.config.fission_decay_lifetimes.comment"), 0D, Integer.MAX_VALUE);
|
||||
@ -583,7 +570,6 @@ public class NCConfig {
|
||||
propertyFissionDecayDaughterMultipliers.setLanguageKey("gui.nc.config.fission_decay_daughter_multipliers");
|
||||
Property propertyFissionDecayTermMultipliers = config.get(CATEGORY_FISSION, "fission_decay_term_multipliers", new double[] {0.95D, 0.05D}, Lang.localise("gui.nc.config.fission_decay_term_multipliers.comment"), 0D, 1D);
|
||||
propertyFissionDecayTermMultipliers.setLanguageKey("gui.nc.config.fission_decay_term_multipliers");
|
||||
|
||||
Property propertyFissionOverheat = config.get(CATEGORY_FISSION, "fission_overheat", true, Lang.localise("gui.nc.config.fission_overheat.comment"));
|
||||
propertyFissionOverheat.setLanguageKey("gui.nc.config.fission_overheat");
|
||||
Property propertyFissionExplosions = config.get(CATEGORY_FISSION, "fission_explosions", false, Lang.localise("gui.nc.config.fission_explosions.comment"));
|
||||
@ -1002,19 +988,6 @@ public class NCConfig {
|
||||
Property propertyRadiationDeathImmunityTime = config.get(CATEGORY_RADIATION, "radiation_death_immunity_time", 90D, Lang.localise("gui.nc.config.radiation_death_immunity_time.comment"), 0D, 3600D);
|
||||
propertyRadiationDeathImmunityTime.setLanguageKey("gui.nc.config.radiation_death_immunity_time");
|
||||
|
||||
Property propertyRadiationRadsTextColor = config.get(CATEGORY_RADIATION, "radiation_rads_text_color", new String[] {"0.0_f", "30.0_e", "50.0_6", "70.0_c", "90.0_4"}, Lang.localise("gui.nc.config.radiation_rads_text_color.comment"));
|
||||
propertyRadiationRadsTextColor.setLanguageKey("gui.nc.config.radiation_rads_text_color");
|
||||
Property propertyRadiationRateTextColor = config.get(CATEGORY_RADIATION, "radiation_rate_text_color", new String[] {"0.0_f", "0.000000001_e", "0.001_6", "0.1_c", "1.0_4"}, Lang.localise("gui.nc.config.radiation_rate_text_color.comment"));
|
||||
propertyRadiationRateTextColor.setLanguageKey("gui.nc.config.radiation_rate_text_color");
|
||||
Property propertyRadiationPositiveFoodRadsTextColor = config.get(CATEGORY_RADIATION, "radiation_positive_food_rads_text_color", new String[] {"0.0_f", "0.1_e", "1.0_6", "10.0_c", "100.0_4"}, Lang.localise("gui.nc.config.radiation_positive_food_rads_text_color.comment"));
|
||||
propertyRadiationPositiveFoodRadsTextColor.setLanguageKey("gui.nc.config.radiation_positive_food_rads_text_color");
|
||||
Property propertyRadiationNegativeFoodRadsTextColor = config.get(CATEGORY_RADIATION, "radiation_negative_food_rads_text_color", new String[] {"0.0_b", "-10.0_9", "-100.0_d"}, Lang.localise("gui.nc.config.radiation_negative_food_rads_text_color.comment"));
|
||||
propertyRadiationNegativeFoodRadsTextColor.setLanguageKey("gui.nc.config.radiation_negative_food_rads_text_color");
|
||||
Property propertyRadiationPositiveFoodResistanceTextColor = config.get(CATEGORY_RADIATION, "radiation_positive_food_resistance_text_color", new String[] {"0.0_f"}, Lang.localise("gui.nc.config.radiation_positive_food_resistance_text_color.comment"));
|
||||
propertyRadiationPositiveFoodResistanceTextColor.setLanguageKey("gui.nc.config.radiation_positive_food_resistance_text_color");
|
||||
Property propertyRadiationNegativeFoodResistanceTextColor = config.get(CATEGORY_RADIATION, "radiation_negative_food_resistance_text_color", new String[] {"0.0_7"}, Lang.localise("gui.nc.config.radiation_negative_food_resistance_text_color.comment"));
|
||||
propertyRadiationNegativeFoodResistanceTextColor.setLanguageKey("gui.nc.config.radiation_negative_food_resistance_text_color");
|
||||
|
||||
Property propertyRadiationPlayerDebuffLists = config.get(CATEGORY_RADIATION, "radiation_player_debuff_lists", new String[] {"40.0_minecraft:weakness@1", "55.0_minecraft:weakness@1,minecraft:mining_fatigue@1", "70.0_minecraft:weakness@2,minecraft:mining_fatigue@1,minecraft:hunger@1", "80.0_minecraft:weakness@2,minecraft:mining_fatigue@2,minecraft:hunger@1,minecraft:poison@1", "90.0_minecraft:weakness@3,minecraft:mining_fatigue@3,minecraft:hunger@2,minecraft:poison@1,minecraft:wither@1"}, Lang.localise("gui.nc.config.radiation_player_debuff_lists.comment"));
|
||||
propertyRadiationPlayerDebuffLists.setLanguageKey("gui.nc.config.radiation_player_debuff_lists");
|
||||
Property propertyRadiationPassiveDebuffLists = config.get(CATEGORY_RADIATION, "radiation_passive_debuff_lists", new String[] {"40.0_minecraft:weakness@1", "55.0_minecraft:weakness@1,minecraft:mining_fatigue@1", "70.0_minecraft:weakness@2,minecraft:mining_fatigue@1,minecraft:hunger@1", "80.0_minecraft:weakness@2,minecraft:mining_fatigue@2,minecraft:hunger@1,minecraft:poison@1", "90.0_minecraft:weakness@3,minecraft:mining_fatigue@3,minecraft:hunger@2,minecraft:poison@1,minecraft:wither@1"}, Lang.localise("gui.nc.config.radiation_passive_debuff_lists.comment"));
|
||||
@ -1184,14 +1157,11 @@ public class NCConfig {
|
||||
propertyOrderFission.add(propertyFissionIrradiatorEfficiency.getName());
|
||||
propertyOrderFission.add(propertyFissionCoolingEfficiencyLeniency.getName());
|
||||
propertyOrderFission.add(propertyFissionSparsityPenaltyParams.getName());
|
||||
|
||||
propertyOrderFission.add(propertyFissionDecayMechanics.getName());
|
||||
propertyOrderFission.add(propertyFissionDecayBuildUpTimes.getName());
|
||||
propertyOrderFission.add(propertyFissionDecayLifetimes.getName());
|
||||
propertyOrderFission.add(propertyFissionDecayEquilibriumFactors.getName());
|
||||
propertyOrderFission.add(propertyFissionDecayDaughterMultipliers.getName());
|
||||
propertyOrderFission.add(propertyFissionDecayTermMultipliers.getName());
|
||||
|
||||
propertyOrderFission.add(propertyFissionOverheat.getName());
|
||||
propertyOrderFission.add(propertyFissionExplosions.getName());
|
||||
propertyOrderFission.add(propertyFissionMeltdownRadiationMultiplier.getName());
|
||||
@ -1541,14 +1511,11 @@ public class NCConfig {
|
||||
fission_irradiator_efficiency = readDoubleArrayFromConfig(propertyFissionIrradiatorEfficiency);
|
||||
fission_cooling_efficiency_leniency = propertyFissionCoolingEfficiencyLeniency.getInt();
|
||||
fission_sparsity_penalty_params = readDoubleArrayFromConfig(propertyFissionSparsityPenaltyParams);
|
||||
|
||||
fission_decay_mechanics = propertyFissionDecayMechanics.getBoolean();
|
||||
fission_decay_build_up_times = readDoubleArrayFromConfig(propertyFissionDecayBuildUpTimes);
|
||||
fission_decay_lifetimes = readDoubleArrayFromConfig(propertyFissionDecayLifetimes);
|
||||
fission_decay_equilibrium_factors = readDoubleArrayFromConfig(propertyFissionDecayEquilibriumFactors);
|
||||
fission_decay_daughter_multipliers = readDoubleArrayFromConfig(propertyFissionDecayDaughterMultipliers);
|
||||
fission_decay_term_multipliers = readDoubleArrayFromConfig(propertyFissionDecayTermMultipliers);
|
||||
|
||||
fission_overheat = propertyFissionOverheat.getBoolean();
|
||||
fission_explosions = propertyFissionExplosions.getBoolean();
|
||||
fission_meltdown_radiation_multiplier = propertyFissionMeltdownRadiationMultiplier.getDouble();
|
||||
@ -1890,14 +1857,11 @@ public class NCConfig {
|
||||
propertyFissionIrradiatorEfficiency.set(fission_irradiator_efficiency);
|
||||
propertyFissionCoolingEfficiencyLeniency.set(fission_cooling_efficiency_leniency);
|
||||
propertyFissionSparsityPenaltyParams.set(fission_sparsity_penalty_params);
|
||||
|
||||
propertyFissionDecayMechanics.set(fission_decay_mechanics);
|
||||
propertyFissionDecayBuildUpTimes.set(fission_decay_build_up_times);
|
||||
propertyFissionDecayLifetimes.set(fission_decay_lifetimes);
|
||||
propertyFissionDecayEquilibriumFactors.set(fission_decay_equilibrium_factors);
|
||||
propertyFissionDecayDaughterMultipliers.set(fission_decay_daughter_multipliers);
|
||||
propertyFissionDecayTermMultipliers.set(fission_decay_term_multipliers);
|
||||
|
||||
propertyFissionOverheat.set(fission_overheat);
|
||||
propertyFissionExplosions.set(fission_explosions);
|
||||
propertyFissionMeltdownRadiationMultiplier.set(fission_meltdown_radiation_multiplier);
|
||||
|
||||
@ -84,17 +84,11 @@ public class DungeonLootHandler {
|
||||
}
|
||||
}
|
||||
|
||||
/*if (addPlating) {
|
||||
pool.addEntry(new LootEntryItem(NCItems.part, 15, 0, lootFunctions(0, 3, 3, 6), noCondition, Global.MOD_ID + ":plating"));
|
||||
}
|
||||
|
||||
if (addSolenoids) {
|
||||
pool.addEntry(new LootEntryItem(NCItems.part, 15, 0, lootFunctions(4, 5, 4, 8), noCondition, Global.MOD_ID + ":solenoids"));
|
||||
}
|
||||
|
||||
if (addMachinery) {
|
||||
pool.addEntry(new LootEntryItem(NCItems.part, 20, 0, lootFunctions(7, 9, 2, 4), noCondition, Global.MOD_ID + ":machinery"));
|
||||
}*/
|
||||
/* if (addPlating) { pool.addEntry(new LootEntryItem(NCItems.part, 15, 0, lootFunctions(0, 3, 3, 6), noCondition, Global.MOD_ID + ":plating")); }
|
||||
*
|
||||
* if (addSolenoids) { pool.addEntry(new LootEntryItem(NCItems.part, 15, 0, lootFunctions(4, 5, 4, 8), noCondition, Global.MOD_ID + ":solenoids")); }
|
||||
*
|
||||
* if (addMachinery) { pool.addEntry(new LootEntryItem(NCItems.part, 20, 0, lootFunctions(7, 9, 2, 4), noCondition, Global.MOD_ID + ":machinery")); } */
|
||||
|
||||
if (addOther) {
|
||||
pool.addEntry(new LootEntryItem(NCItems.dominos, 3, 0, lootFunctions(0, 0, 2, 4), noCondition, Global.MOD_ID + ":dominos"));
|
||||
|
||||
@ -326,9 +326,7 @@ public class GuiHandler implements IGuiHandler {
|
||||
return new GuiRockCrusher(player, (RockCrusher) tile);
|
||||
}
|
||||
case 100:
|
||||
/*if (tile instanceof TileFissionController) {
|
||||
return new GuiFissionController(player, (TileFissionController) tile);
|
||||
}*/
|
||||
/* if (tile instanceof TileFissionController) { return new GuiFissionController(player, (TileFissionController) tile); } */
|
||||
case 101:
|
||||
if (tile instanceof TileSolidFissionController) {
|
||||
return new GuiSolidFissionController(player, (TileSolidFissionController) tile);
|
||||
|
||||
@ -24,9 +24,7 @@ public class ScriptAddonHandler {
|
||||
}
|
||||
|
||||
File scripts = new File("scripts/nc_script_addons");
|
||||
if (scripts.exists()) {
|
||||
FileUtils.deleteDirectory(scripts);
|
||||
}
|
||||
FileUtils.deleteDirectory(scripts);
|
||||
scripts.mkdirs();
|
||||
new File("scripts/nc_script_addons/DONT_PUT_YOUR_SCRIPTS_IN_HERE").createNewFile();
|
||||
|
||||
@ -35,29 +33,17 @@ public class ScriptAddonHandler {
|
||||
oldWarning.delete();
|
||||
}
|
||||
|
||||
File cot = new File("resources/contenttweaker"), cotBackup = new File("resources/.contenttweaker");
|
||||
if (cot.exists()) {
|
||||
FileUtils.copyDirectory(cot, cotBackup);
|
||||
}
|
||||
|
||||
File temp = new File("resources/nuclearcraft/addons/.temp");
|
||||
temp.mkdirs();
|
||||
|
||||
File addons = new File("resources/nuclearcraft/addons");
|
||||
extractAddons(addons);
|
||||
copyAddons(addons);
|
||||
if (temp.exists()) {
|
||||
FileUtils.deleteDirectory(temp);
|
||||
}
|
||||
FileUtils.deleteDirectory(temp);
|
||||
|
||||
for (File f : SCRIPT_ADDON_DIRS) {
|
||||
NCUtil.getLogger().info("Constructed \"" + f.getName() + "\" Script Addon!");
|
||||
}
|
||||
|
||||
if (cotBackup.exists()) {
|
||||
FileUtils.copyDirectory(cotBackup, cot);
|
||||
FileUtils.deleteDirectory(cotBackup);
|
||||
}
|
||||
}
|
||||
|
||||
public static String removeVersionSuffix(String name) {
|
||||
|
||||
@ -117,9 +117,9 @@ public class NCItems {
|
||||
|
||||
public static void init() {
|
||||
ingot = withName(new NCItemMeta(MetaEnums.IngotType.class), "ingot");
|
||||
dust = withName(new NCItemMeta(MetaEnums.DustType.class/*, NCInfo.dustOreDropInfo()*/), "dust");
|
||||
gem = withName(new NCItemMeta(MetaEnums.GemType.class/*, NCInfo.gemOreDropInfo()*/), "gem");
|
||||
gem_dust = withName(new NCItemMeta(MetaEnums.GemDustType.class/*, NCInfo.gemDustOreDropInfo()*/), "gem_dust");
|
||||
dust = withName(new NCItemMeta(MetaEnums.DustType.class, NCInfo.dustOreDropInfo()), "dust");
|
||||
gem = withName(new NCItemMeta(MetaEnums.GemType.class, NCInfo.gemOreDropInfo()), "gem");
|
||||
gem_dust = withName(new NCItemMeta(MetaEnums.GemDustType.class, NCInfo.gemDustOreDropInfo()), "gem_dust");
|
||||
alloy = withName(new NCItemMeta(MetaEnums.AlloyType.class), "alloy");
|
||||
compound = withName(new NCItemMeta(MetaEnums.CompoundType.class), "compound");
|
||||
|
||||
|
||||
@ -923,10 +923,10 @@ public class CTRegistration {
|
||||
NCRecipes.separator.addRecipe("ingot" + rawOre + "Carbide", "ingot" + rawOre, "dustGraphite", 1D, 1D);
|
||||
NCRecipes.assembler.addRecipe(AbstractRecipeHandler.oreStack("ingot" + rawOre + "Carbide", 9), "dustGraphite", "ingotPyrolyticCarbon", "ingotSiliconCarbide", AbstractRecipeHandler.oreStack("ingot" + rawOre + "TRISO", 9), 1D, 1D);
|
||||
|
||||
NCRecipes.pebble_fission.addRecipe("ingot" + rawOre + "TRISO", "ingotDepleted" + rawOre + "TRISO", (int) (TRISO_TIME_MULT * stats.time), (int) (TRISO_HEAT_MULT * stats.heat), stats.efficiency, (int) (TRISO_CRIT_MULT * stats.crit), stats.decay, stats.prime, stats.radiation);
|
||||
NCRecipes.solid_fission.addRecipe("ingot" + rawOre + "Oxide", "ingotDepleted" + rawOre + "Oxide", (int) (SFR_TIME_MULT[0] * stats.time), (int) (SFR_HEAT_MULT[0] * stats.heat), stats.efficiency, (int) (SFR_CRIT_MULT[0] * stats.crit), stats.decay, stats.prime, stats.radiation);
|
||||
NCRecipes.solid_fission.addRecipe("ingot" + rawOre + "Nitride", "ingotDepleted" + rawOre + "Nitride", (int) (SFR_TIME_MULT[1] * stats.time), (int) (SFR_HEAT_MULT[1] * stats.heat), stats.efficiency, (int) (SFR_CRIT_MULT[1] * stats.crit), stats.decay, stats.prime, stats.radiation);
|
||||
NCRecipes.solid_fission.addRecipe("ingot" + rawOre + "ZA", "ingotDepleted" + rawOre + "ZA", (int) (SFR_TIME_MULT[2] * stats.time), (int) (SFR_HEAT_MULT[2] * stats.heat), stats.efficiency, (int) (SFR_CRIT_MULT[2] * stats.crit), stats.decay, stats.prime, stats.radiation);
|
||||
NCRecipes.pebble_fission.addRecipe("ingot" + rawOre + "TRISO", "ingotDepleted" + rawOre + "TRISO", (int) (TRISO_TIME_MULT * stats.time), (int) (TRISO_HEAT_MULT * stats.heat), stats.efficiency, TRISO_CRIT_MULT * stats.crit, stats.decay, stats.prime, stats.radiation);
|
||||
NCRecipes.solid_fission.addRecipe("ingot" + rawOre + "Oxide", "ingotDepleted" + rawOre + "Oxide", (int) (SFR_TIME_MULT[0] * stats.time), (int) (SFR_HEAT_MULT[0] * stats.heat), stats.efficiency, SFR_CRIT_MULT[0] * stats.crit, stats.decay, stats.prime, stats.radiation);
|
||||
NCRecipes.solid_fission.addRecipe("ingot" + rawOre + "Nitride", "ingotDepleted" + rawOre + "Nitride", (int) (SFR_TIME_MULT[1] * stats.time), (int) (SFR_HEAT_MULT[1] * stats.heat), stats.efficiency, SFR_CRIT_MULT[1] * stats.crit, stats.decay, stats.prime, stats.radiation);
|
||||
NCRecipes.solid_fission.addRecipe("ingot" + rawOre + "ZA", "ingotDepleted" + rawOre + "ZA", (int) (SFR_TIME_MULT[2] * stats.time), (int) (SFR_HEAT_MULT[2] * stats.heat), stats.efficiency, SFR_CRIT_MULT[2] * stats.crit, stats.decay, stats.prime, stats.radiation);
|
||||
}
|
||||
|
||||
if (rawFluid != null) {
|
||||
|
||||
@ -613,7 +613,7 @@ public class JEIRecipeWrapper {
|
||||
if (efficiency > 0D) {
|
||||
tooltip.add(TextFormatting.LIGHT_PURPLE + EFFICIENCY + " " + TextFormatting.WHITE + NCMath.pcDecimalPlaces(efficiency, 1));
|
||||
}
|
||||
double radiation = getIrradiatorBaseProcessRadiation() / RecipeStats.getFissionMaxModeratorLineFlux();
|
||||
double radiation = getIrradiatorBaseProcessRadiation();
|
||||
if (radiation > 0D) {
|
||||
tooltip.add(TextFormatting.GOLD + RADIATION_PER_FLUX + " " + RadiationHelper.getRadiationTextColor(radiation) + UnitHelper.prefix(radiation, 3, "Rad/N"));
|
||||
}
|
||||
@ -697,9 +697,7 @@ public class JEIRecipeWrapper {
|
||||
tooltip.add(TextFormatting.YELLOW + FUEL_HEAT + " " + TextFormatting.WHITE + UnitHelper.prefix(getFissionFuelHeat(), 5, "H/t"));
|
||||
tooltip.add(TextFormatting.LIGHT_PURPLE + FUEL_EFFICIENCY + " " + TextFormatting.WHITE + NCMath.pcDecimalPlaces(getFissionFuelEfficiency(), 1));
|
||||
tooltip.add(TextFormatting.RED + FUEL_CRITICALITY + " " + TextFormatting.WHITE + getFissionFuelCriticality() + " N/t");
|
||||
if (fission_decay_mechanics) {
|
||||
tooltip.add(TextFormatting.GRAY + FUEL_DECAY_FACTOR + " " + TextFormatting.WHITE + NCMath.pcDecimalPlaces(getFissionFuelDecayFactor(), 1));
|
||||
}
|
||||
tooltip.add(TextFormatting.GRAY + FUEL_DECAY_FACTOR + " " + TextFormatting.WHITE + NCMath.pcDecimalPlaces(getFissionFuelDecayFactor(), 1));
|
||||
if (getFissionFuelSelfPriming()) {
|
||||
tooltip.add(TextFormatting.DARK_AQUA + FUEL_SELF_PRIMING);
|
||||
}
|
||||
@ -790,9 +788,7 @@ public class JEIRecipeWrapper {
|
||||
tooltip.add(TextFormatting.YELLOW + FUEL_HEAT + " " + TextFormatting.WHITE + UnitHelper.prefix(getFissionFuelHeat(), 5, "H/t"));
|
||||
tooltip.add(TextFormatting.LIGHT_PURPLE + FUEL_EFFICIENCY + " " + TextFormatting.WHITE + NCMath.pcDecimalPlaces(getFissionFuelEfficiency(), 1));
|
||||
tooltip.add(TextFormatting.RED + FUEL_CRITICALITY + " " + TextFormatting.WHITE + getFissionFuelCriticality() + " N/t");
|
||||
if (fission_decay_mechanics) {
|
||||
tooltip.add(TextFormatting.GRAY + FUEL_DECAY_FACTOR + " " + TextFormatting.WHITE + NCMath.pcDecimalPlaces(getFissionFuelDecayFactor(), 1));
|
||||
}
|
||||
tooltip.add(TextFormatting.GRAY + FUEL_DECAY_FACTOR + " " + TextFormatting.WHITE + NCMath.pcDecimalPlaces(getFissionFuelDecayFactor(), 1));
|
||||
if (getFissionFuelSelfPriming()) {
|
||||
tooltip.add(TextFormatting.DARK_AQUA + FUEL_SELF_PRIMING);
|
||||
}
|
||||
@ -915,9 +911,7 @@ public class JEIRecipeWrapper {
|
||||
tooltip.add(TextFormatting.YELLOW + FUEL_HEAT + " " + TextFormatting.WHITE + UnitHelper.prefix(getFissionFuelHeat(), 5, "H/t"));
|
||||
tooltip.add(TextFormatting.LIGHT_PURPLE + FUEL_EFFICIENCY + " " + TextFormatting.WHITE + NCMath.pcDecimalPlaces(getFissionFuelEfficiency(), 1));
|
||||
tooltip.add(TextFormatting.RED + FUEL_CRITICALITY + " " + TextFormatting.WHITE + getFissionFuelCriticality() + " N/t");
|
||||
if (fission_decay_mechanics) {
|
||||
tooltip.add(TextFormatting.GRAY + FUEL_DECAY_FACTOR + " " + TextFormatting.WHITE + NCMath.pcDecimalPlaces(getFissionFuelDecayFactor(), 1));
|
||||
}
|
||||
tooltip.add(TextFormatting.GRAY + FUEL_DECAY_FACTOR + " " + TextFormatting.WHITE + NCMath.pcDecimalPlaces(getFissionFuelDecayFactor(), 1));
|
||||
if (getFissionFuelSelfPriming()) {
|
||||
tooltip.add(TextFormatting.DARK_AQUA + FUEL_SELF_PRIMING);
|
||||
}
|
||||
|
||||
@ -249,22 +249,14 @@ public abstract class PlacementRule<T extends ITileMultiblockPart> {
|
||||
throw new IllegalArgumentException("Adjacency placement rule with ID \"" + ruleID + "\" can only require zero adjacencies if also an exact rule!");
|
||||
}
|
||||
if (adjType == AdjacencyType.AXIAL && (amount & 1) != 0) {
|
||||
throw new IllegalArgumentException("Axial adjacency placement rule with ID \"" + ruleID + "\" must require an even number of adjacencies!");
|
||||
throw new IllegalArgumentException("Axial placement rule with ID \"" + ruleID + "\" must require an even number of adjacencies!");
|
||||
}
|
||||
if (adjType == AdjacencyType.VERTEX) {
|
||||
if (amount != 3) {
|
||||
throw new IllegalArgumentException("Vertex adjacency placement rule with ID \"" + ruleID + "\" must require three adjacencies!");
|
||||
throw new IllegalArgumentException("Vertex placement rule with ID \"" + ruleID + "\" must require three adjacencies!");
|
||||
}
|
||||
if (countType == CountType.AT_MOST) {
|
||||
throw new IllegalArgumentException("Vertex adjacency placement rule with ID \"" + ruleID + "\" can not be an 'at most' rule!");
|
||||
}
|
||||
}
|
||||
if (adjType == AdjacencyType.EDGE) {
|
||||
if (amount != 2) {
|
||||
throw new IllegalArgumentException("Edge adjacency placement rule with ID \"" + ruleID + "\" must require two adjacencies!");
|
||||
}
|
||||
if (countType == CountType.AT_MOST) {
|
||||
throw new IllegalArgumentException("Edge adjacency placement rule with ID \"" + ruleID + "\" can not be an 'at most' rule!");
|
||||
throw new IllegalArgumentException("Vertex placement rule with ID \"" + ruleID + "\" can not be an 'at most' rule!");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -367,8 +359,8 @@ public abstract class PlacementRule<T extends ITileMultiblockPart> {
|
||||
if (count != amount)
|
||||
return false;
|
||||
|
||||
loop: for (EnumFacing[] typeDirs : (adjType == AdjacencyType.VERTEX ? PosHelper.VERTEX_DIRS : PosHelper.EDGE_DIRS)) {
|
||||
for (EnumFacing dir : typeDirs) {
|
||||
loop: for (EnumFacing[] vertexDirs : PosHelper.vertexDirsList()) {
|
||||
for (EnumFacing dir : vertexDirs) {
|
||||
if (!dirs[dir.getIndex()]) {
|
||||
continue loop;
|
||||
}
|
||||
@ -378,8 +370,8 @@ public abstract class PlacementRule<T extends ITileMultiblockPart> {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
loop: for (EnumFacing[] typeDirs : (adjType == AdjacencyType.VERTEX ? PosHelper.VERTEX_DIRS : PosHelper.EDGE_DIRS)) {
|
||||
for (EnumFacing dir : typeDirs) {
|
||||
loop: for (EnumFacing[] vertexDirs : PosHelper.vertexDirsList()) {
|
||||
for (EnumFacing dir : vertexDirs) {
|
||||
if (!satisfied(tile, dir)) {
|
||||
continue loop;
|
||||
}
|
||||
@ -397,8 +389,7 @@ public abstract class PlacementRule<T extends ITileMultiblockPart> {
|
||||
public enum AdjacencyType {
|
||||
STANDARD,
|
||||
AXIAL,
|
||||
VERTEX,
|
||||
EDGE;
|
||||
VERTEX;
|
||||
|
||||
public String tooltipSubstring(int amount) {
|
||||
switch (this) {
|
||||
@ -408,8 +399,6 @@ public abstract class PlacementRule<T extends ITileMultiblockPart> {
|
||||
return amount == 2 ? "_along_axis" : "_along_axes";
|
||||
case VERTEX:
|
||||
return "_at_vertex";
|
||||
case EDGE:
|
||||
return "_along_edge";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
|
||||
@ -152,7 +152,7 @@ public abstract class FissionPlacement {
|
||||
s = s.replaceAll("at exactly one vertex", "vertex");
|
||||
|
||||
boolean exact = s.contains("exact"), atMost = s.contains("at most");
|
||||
boolean axial = s.contains("axial"), vertex = s.contains("vertex"), edge = s.contains("edge");
|
||||
boolean axial = s.contains("axial"), vertex = s.contains("vertex");
|
||||
|
||||
if ((exact && atMost) || (axial && vertex))
|
||||
return null;
|
||||
@ -167,13 +167,6 @@ public abstract class FissionPlacement {
|
||||
s = s.replaceAll("at a vertex", "");
|
||||
s = s.replaceAll("at vertex", "");
|
||||
s = s.replaceAll("vertex", "");
|
||||
s = s.replaceAll("at one edge", "");
|
||||
s = s.replaceAll("at an edge", "");
|
||||
s = s.replaceAll("at edge", "");
|
||||
s = s.replaceAll("along one edge", "");
|
||||
s = s.replaceAll("along an edge", "");
|
||||
s = s.replaceAll("along edge", "");
|
||||
s = s.replaceAll("edge", "");
|
||||
|
||||
int amount = -1;
|
||||
String rule = null, type = null;
|
||||
@ -207,24 +200,20 @@ public abstract class FissionPlacement {
|
||||
}
|
||||
else if (split[i].contains("sink")) {
|
||||
rule = "sink";
|
||||
if (i > 0) {
|
||||
if (i > 0)
|
||||
type = split[i - 1];
|
||||
}
|
||||
else {
|
||||
else
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else if (split[i].contains("vessel")) {
|
||||
rule = "vessel";
|
||||
}
|
||||
else if (split[i].contains("heater")) {
|
||||
rule = "heater";
|
||||
if (i > 0) {
|
||||
if (i > 0)
|
||||
type = split[i - 1];
|
||||
}
|
||||
else {
|
||||
else
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -233,7 +222,7 @@ public abstract class FissionPlacement {
|
||||
return null;
|
||||
|
||||
CountType countType = exact ? CountType.EXACTLY : (atMost ? CountType.AT_MOST : CountType.AT_LEAST);
|
||||
AdjacencyType adjType = axial ? AdjacencyType.AXIAL : (vertex ? AdjacencyType.VERTEX : (edge ? AdjacencyType.EDGE : AdjacencyType.STANDARD));
|
||||
AdjacencyType adjType = axial ? AdjacencyType.AXIAL : (vertex ? AdjacencyType.VERTEX : AdjacencyType.STANDARD);
|
||||
|
||||
if (rule.equals("casing")) {
|
||||
return new AdjacentCasing(amount, countType, adjType);
|
||||
|
||||
@ -379,6 +379,7 @@ public class FissionReactorLogic extends MultiblockLogic<FissionReactor, Fission
|
||||
public void iterateClusterSearch(IFissionComponent rootComponent) {
|
||||
final Object2IntMap<IFissionComponent> clusterSearchCache = new Object2IntOpenHashMap<>();
|
||||
rootComponent.clusterSearch(null, clusterSearchCache, componentFailCache, assumedValidCache);
|
||||
|
||||
do {
|
||||
final Iterator<IFissionComponent> clusterSearchIterator = clusterSearchCache.keySet().iterator();
|
||||
final Object2IntMap<IFissionComponent> clusterSearchSubCache = new Object2IntOpenHashMap<>();
|
||||
@ -508,7 +509,7 @@ public class FissionReactorLogic extends MultiblockLogic<FissionReactor, Fission
|
||||
|
||||
public void refreshFuelComponentLocal(IFissionFuelComponent fuelComponent) {}
|
||||
|
||||
public void refreshFuelComponentModerators(IFissionFuelComponent fuelComponent, final Long2ObjectMap<IFissionComponent> componentFailCache, final Long2ObjectMap<IFissionComponent> assumedValidCache) {}
|
||||
public void refreshFuelComponentModerators(IFissionFuelComponent fuelComponent, final Long2ObjectMap<IFissionComponent> assumedValidCache) {}
|
||||
|
||||
public boolean isShieldActiveModerator(TileFissionShield shield, boolean activeModeratorPos) {
|
||||
return false;
|
||||
|
||||
@ -67,9 +67,7 @@ public class BlockFissionIrradiator extends BlockFissionPart {
|
||||
// world.updateComparatorOutputLevel(pos, this);
|
||||
// FissionReactor reactor = irradiator.getMultiblock();
|
||||
// world.removeTileEntity(pos);
|
||||
/*if (reactor != null) {
|
||||
reactor.getLogic().refreshPorts();
|
||||
}*/
|
||||
/* if (reactor != null) { reactor.getLogic().refreshPorts(); } */
|
||||
}
|
||||
}
|
||||
// super.breakBlock(world, pos, state);
|
||||
|
||||
@ -4,6 +4,7 @@ import static nc.block.property.BlockProperties.ACTIVE;
|
||||
|
||||
import nc.block.tile.IActivatable;
|
||||
import nc.multiblock.fission.tile.TileFissionShield;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.state.*;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
@ -82,15 +83,13 @@ public abstract class BlockFissionShield extends BlockFissionPart implements IAc
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess world, BlockPos pos, EnumFacing side) {
|
||||
/*IBlockState otherState = world.getBlockState(pos.offset(side));
|
||||
IBlockState otherState = world.getBlockState(pos.offset(side));
|
||||
Block block = otherState.getBlock();
|
||||
|
||||
if (blockState != otherState) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return block == this ? false : super.shouldSideBeRendered(blockState, world, pos, side);*/
|
||||
|
||||
return true;
|
||||
return block == this ? false : super.shouldSideBeRendered(blockState, world, pos, side);
|
||||
}
|
||||
}
|
||||
|
||||
@ -68,9 +68,7 @@ public abstract class BlockFissionItemMetaPort<PORT extends TileFissionItemPort<
|
||||
// world.updateComparatorOutputLevel(pos, this);
|
||||
// FissionReactor reactor = port.getMultiblock();
|
||||
// world.removeTileEntity(pos);
|
||||
/*if (reactor != null) {
|
||||
reactor.getLogic().refreshPorts();
|
||||
}*/
|
||||
/* if (reactor != null) { reactor.getLogic().refreshPorts(); } */
|
||||
}
|
||||
}
|
||||
// super.breakBlock(world, pos, state);
|
||||
|
||||
@ -66,9 +66,7 @@ public abstract class BlockFissionItemPort<PORT extends TileFissionItemPort<PORT
|
||||
// world.updateComparatorOutputLevel(pos, this);
|
||||
// FissionReactor reactor = port.getMultiblock();
|
||||
// world.removeTileEntity(pos);
|
||||
/*if (reactor != null) {
|
||||
reactor.getLogic().refreshPorts();
|
||||
}*/
|
||||
/* if (reactor != null) { reactor.getLogic().refreshPorts(); } */
|
||||
}
|
||||
}
|
||||
// super.breakBlock(world, pos, state);
|
||||
|
||||
@ -140,7 +140,7 @@ public class MoltenSaltFissionLogic extends FissionReactorLogic {
|
||||
@Override
|
||||
public void refreshAllFuelComponentModerators() {
|
||||
for (TileSaltFissionVessel vessel : getParts(TileSaltFissionVessel.class)) {
|
||||
refreshFuelComponentModerators(vessel, componentFailCache, assumedValidCache);
|
||||
refreshFuelComponentModerators(vessel, assumedValidCache);
|
||||
}
|
||||
}
|
||||
|
||||
@ -354,8 +354,8 @@ public class MoltenSaltFissionLogic extends FissionReactorLogic {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refreshFuelComponentModerators(IFissionFuelComponent fuelComponent, final Long2ObjectMap<IFissionComponent> componentFailCache, final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
fuelComponent.defaultRefreshModerators(componentFailCache, assumedValidCache);
|
||||
public void refreshFuelComponentModerators(IFissionFuelComponent fuelComponent, final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
fuelComponent.defaultRefreshModerators(assumedValidCache);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -374,12 +374,12 @@ public class TileSaltFissionVessel extends TileFissionPart implements ITileFilte
|
||||
|
||||
/** Fix to force adjacent moderators to be active */
|
||||
@Override
|
||||
public void defaultRefreshModerators(final Long2ObjectMap<IFissionComponent> componentFailCache, final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
public void defaultRefreshModerators(final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
if (isProcessing) {
|
||||
defaultRefreshAdjacentActiveModerators(componentFailCache, assumedValidCache);
|
||||
defaultRefreshAdjacentActiveModerators(assumedValidCache);
|
||||
}
|
||||
else if (getDecayHeating() > 0) {
|
||||
defaultForceAdjacentActiveModerators(componentFailCache, assumedValidCache);
|
||||
defaultForceAdjacentActiveModerators(assumedValidCache);
|
||||
}
|
||||
}
|
||||
|
||||
@ -494,11 +494,6 @@ public class TileSaltFissionVessel extends TileFissionPart implements ITileFilte
|
||||
}
|
||||
|
||||
public void updateDecayFractions() {
|
||||
if (fission_decay_mechanics) {
|
||||
decayHeatFraction = iodineFraction = poisonFraction = 0D;
|
||||
return;
|
||||
}
|
||||
|
||||
int oldCriticality = getCriticality();
|
||||
boolean oldHasEnoughFlux = hasEnoughFlux();
|
||||
int oldDecayHeating = getDecayHeating();
|
||||
|
||||
@ -87,7 +87,7 @@ public class SolidFuelFissionLogic extends FissionReactorLogic {
|
||||
@Override
|
||||
public void refreshAllFuelComponentModerators() {
|
||||
for (TileSolidFissionCell cell : getParts(TileSolidFissionCell.class)) {
|
||||
refreshFuelComponentModerators(cell, componentFailCache, assumedValidCache);
|
||||
refreshFuelComponentModerators(cell, assumedValidCache);
|
||||
}
|
||||
}
|
||||
|
||||
@ -279,8 +279,8 @@ public class SolidFuelFissionLogic extends FissionReactorLogic {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refreshFuelComponentModerators(IFissionFuelComponent fuelComponent, final Long2ObjectMap<IFissionComponent> componentFailCache, final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
fuelComponent.defaultRefreshModerators(componentFailCache, assumedValidCache);
|
||||
public void refreshFuelComponentModerators(IFissionFuelComponent fuelComponent, final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
fuelComponent.defaultRefreshModerators(assumedValidCache);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -340,12 +340,12 @@ public class TileSolidFissionCell extends TileFissionPart implements ITileFilter
|
||||
|
||||
/** Fix to force adjacent moderators to be active */
|
||||
@Override
|
||||
public void defaultRefreshModerators(final Long2ObjectMap<IFissionComponent> componentFailCache, final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
public void defaultRefreshModerators(final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
if (isProcessing) {
|
||||
defaultRefreshAdjacentActiveModerators(componentFailCache, assumedValidCache);
|
||||
defaultRefreshAdjacentActiveModerators(assumedValidCache);
|
||||
}
|
||||
else if (getDecayHeating() > 0) {
|
||||
defaultForceAdjacentActiveModerators(componentFailCache, assumedValidCache);
|
||||
defaultForceAdjacentActiveModerators(assumedValidCache);
|
||||
}
|
||||
}
|
||||
|
||||
@ -460,11 +460,6 @@ public class TileSolidFissionCell extends TileFissionPart implements ITileFilter
|
||||
}
|
||||
|
||||
public void updateDecayFractions() {
|
||||
if (fission_decay_mechanics) {
|
||||
decayHeatFraction = iodineFraction = poisonFraction = 0D;
|
||||
return;
|
||||
}
|
||||
|
||||
int oldCriticality = getCriticality();
|
||||
boolean oldHasEnoughFlux = hasEnoughFlux();
|
||||
int oldDecayHeating = getDecayHeating();
|
||||
|
||||
@ -139,7 +139,7 @@ public interface IFissionFuelComponent extends IFissionFluxSink, IFissionHeating
|
||||
fuelComponent.getModeratorLineEfficiencies()[dir.getOpposite().getIndex()] = moderatorEfficiency / (i - 1);
|
||||
fuelComponent.incrementHeatMultiplier();
|
||||
|
||||
updateModeratorLine(fuelComponent, dir, line, componentFailCache, assumedValidCache);
|
||||
updateModeratorLine(fuelComponent, dir, line, assumedValidCache);
|
||||
|
||||
fluxSearchCache.add(fuelComponent);
|
||||
}
|
||||
@ -154,7 +154,7 @@ public interface IFissionFuelComponent extends IFissionFluxSink, IFissionHeating
|
||||
getModeratorLineEfficiencies()[dir.getIndex()] = fluxSink.moderatorLineEfficiencyFactor() * moderatorEfficiency / (i - 1);
|
||||
incrementHeatMultiplier();
|
||||
|
||||
updateModeratorLine(fluxSink, dir, line, componentFailCache, assumedValidCache);
|
||||
updateModeratorLine(fluxSink, dir, line, assumedValidCache);
|
||||
}
|
||||
}
|
||||
else if (i - 1 <= fission_neutron_reach / 2) {
|
||||
@ -169,12 +169,12 @@ public interface IFissionFuelComponent extends IFissionFluxSink, IFissionHeating
|
||||
|
||||
if (isFunctional()) {
|
||||
onModeratorLineComplete(line, dir);
|
||||
addToModeratorCache(line, getMultiblock().activeModeratorCache, getMultiblock().passiveModeratorCache, componentFailCache, assumedValidCache);
|
||||
addToModeratorCache(line, getMultiblock().activeModeratorCache, getMultiblock().passiveModeratorCache, assumedValidCache);
|
||||
getMultiblock().activeReflectorCache.add(offPos.toLong());
|
||||
}
|
||||
else {
|
||||
getModeratorLineCaches()[dir.getIndex()] = line;
|
||||
addToModeratorCache(line, dir, getActiveReflectorModeratorCaches(), getPassiveReflectorModeratorCaches(), componentFailCache, assumedValidCache);
|
||||
addToModeratorCache(line, dir, getActiveReflectorModeratorCaches(), getPassiveReflectorModeratorCaches(), assumedValidCache);
|
||||
getActiveReflectorCache().add(offPos.toLong());
|
||||
}
|
||||
}
|
||||
@ -243,15 +243,15 @@ public interface IFissionFuelComponent extends IFissionFluxSink, IFissionHeating
|
||||
}
|
||||
|
||||
/** Adds to the full reactor cache, not the local cache! */
|
||||
public static void addToModeratorCache(ModeratorLine line, LongSet activeCache, LongSet passiveCache, final Long2ObjectMap<IFissionComponent> componentFailCache, final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
public static void addToModeratorCache(ModeratorLine line, LongSet activeCache, LongSet passiveCache, final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
for (ModeratorBlockInfo info : line.info) {
|
||||
addToModeratorCache(info, activeCache, passiveCache, componentFailCache, assumedValidCache);
|
||||
addToModeratorCache(info, activeCache, passiveCache, assumedValidCache);
|
||||
}
|
||||
}
|
||||
|
||||
/** Adds to the full reactor cache, not the local cache! */
|
||||
public static void addToModeratorCache(ModeratorBlockInfo info, LongSet activeCache, LongSet passiveCache, final Long2ObjectMap<IFissionComponent> componentFailCache, final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
if (info.component != null && !componentFailCache.containsKey(info.posLong)) {
|
||||
public static void addToModeratorCache(ModeratorBlockInfo info, LongSet activeCache, LongSet passiveCache, final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
if (info.component != null) {
|
||||
assumedValidCache.put(info.posLong, info.component);
|
||||
info.component.onAddedToModeratorCache(info);
|
||||
}
|
||||
@ -261,15 +261,15 @@ public interface IFissionFuelComponent extends IFissionFluxSink, IFissionHeating
|
||||
}
|
||||
|
||||
/** Adds to local cache, not the reactor cache! */
|
||||
public static void addToModeratorCache(ModeratorLine line, EnumFacing dir, LongSet[] activeCache, LongSet[] passiveCache, final Long2ObjectMap<IFissionComponent> componentFailCache, final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
public static void addToModeratorCache(ModeratorLine line, EnumFacing dir, LongSet[] activeCache, LongSet[] passiveCache, final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
for (ModeratorBlockInfo info : line.info) {
|
||||
addToModeratorCache(info, dir, activeCache, passiveCache, componentFailCache, assumedValidCache);
|
||||
addToModeratorCache(info, dir, activeCache, passiveCache, assumedValidCache);
|
||||
}
|
||||
}
|
||||
|
||||
/** Adds to local cache, not the reactor cache! */
|
||||
public static void addToModeratorCache(ModeratorBlockInfo info, EnumFacing dir, LongSet[] activeCache, LongSet[] passiveCache, final Long2ObjectMap<IFissionComponent> componentFailCache, final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
if (info.component != null && !componentFailCache.containsKey(info.posLong)) {
|
||||
public static void addToModeratorCache(ModeratorBlockInfo info, EnumFacing dir, LongSet[] activeCache, LongSet[] passiveCache, final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
if (info.component != null) {
|
||||
assumedValidCache.put(info.posLong, info.component);
|
||||
info.component.onAddedToModeratorCache(info);
|
||||
}
|
||||
@ -291,16 +291,16 @@ public interface IFissionFuelComponent extends IFissionFluxSink, IFissionHeating
|
||||
}
|
||||
}
|
||||
|
||||
public default void updateModeratorLine(IFissionFluxSink fluxSink, EnumFacing dir, ModeratorLine line, final Long2ObjectMap<IFissionComponent> componentFailCache, final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
public default void updateModeratorLine(IFissionFluxSink fluxSink, EnumFacing dir, ModeratorLine line, final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
fluxSink.refreshIsProcessing(false);
|
||||
line.info.get(line.info.size() - 1).updateModeratorPosValidity(fluxSink.canSupportActiveModerator(true));
|
||||
if (isFunctional() && fluxSink.isFunctional()) {
|
||||
onModeratorLineComplete(line, dir);
|
||||
addToModeratorCache(line, getMultiblock().activeModeratorCache, getMultiblock().passiveModeratorCache, componentFailCache, assumedValidCache);
|
||||
addToModeratorCache(line, getMultiblock().activeModeratorCache, getMultiblock().passiveModeratorCache, assumedValidCache);
|
||||
}
|
||||
else {
|
||||
getModeratorLineCaches()[dir.getIndex()] = line;
|
||||
addToModeratorCache(line, dir, getActiveModeratorCaches(), getPassiveModeratorCaches(), componentFailCache, assumedValidCache);
|
||||
addToModeratorCache(line, dir, getActiveModeratorCaches(), getPassiveModeratorCaches(), assumedValidCache);
|
||||
}
|
||||
getAdjacentFluxSinks()[dir.getIndex()] = fluxSink;
|
||||
}
|
||||
@ -322,29 +322,29 @@ public interface IFissionFuelComponent extends IFissionFluxSink, IFissionHeating
|
||||
}
|
||||
|
||||
/** Fix to force adjacent moderators to be active */
|
||||
public default void defaultRefreshModerators(final Long2ObjectMap<IFissionComponent> componentFailCache, final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
public default void defaultRefreshModerators(final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
if (isFunctional()) {
|
||||
defaultRefreshAdjacentActiveModerators(componentFailCache, assumedValidCache);
|
||||
defaultRefreshAdjacentActiveModerators(assumedValidCache);
|
||||
}
|
||||
}
|
||||
|
||||
public default void defaultRefreshAdjacentActiveModerators(final Long2ObjectMap<IFissionComponent> componentFailCache, final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
public default void defaultRefreshAdjacentActiveModerators(final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
for (EnumFacing dir : EnumFacing.VALUES) {
|
||||
IFissionFluxSink fluxSink = getAdjacentFluxSinks()[dir.getIndex()];
|
||||
if (fluxSink != null && fluxSink.isFunctional()) {
|
||||
BlockPos adjPos = getTilePos().offset(dir);
|
||||
if (getMultiblock().passiveModeratorCache.contains(adjPos.toLong())) {
|
||||
addToModeratorCache(getModeratorBlockInfo(adjPos, dir, canSupportActiveModerator(true)), getMultiblock().activeModeratorCache, getMultiblock().passiveModeratorCache, componentFailCache, assumedValidCache);
|
||||
addToModeratorCache(getModeratorBlockInfo(adjPos, dir, canSupportActiveModerator(true)), getMultiblock().activeModeratorCache, getMultiblock().passiveModeratorCache, assumedValidCache);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public default void defaultForceAdjacentActiveModerators(final Long2ObjectMap<IFissionComponent> componentFailCache, final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
public default void defaultForceAdjacentActiveModerators(final Long2ObjectMap<IFissionComponent> assumedValidCache) {
|
||||
for (EnumFacing dir : EnumFacing.VALUES) {
|
||||
ModeratorBlockInfo info = getModeratorBlockInfo(getTilePos().offset(dir), dir, true);
|
||||
if (info != null) {
|
||||
addToModeratorCache(info, getMultiblock().activeModeratorCache, getMultiblock().passiveModeratorCache, componentFailCache, assumedValidCache);
|
||||
addToModeratorCache(info, getMultiblock().activeModeratorCache, getMultiblock().passiveModeratorCache, assumedValidCache);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -94,29 +94,21 @@ public class TileFissionComputerPort extends TileFissionPart implements SimpleCo
|
||||
return new Object[] {isMultiblockAssembled() ? getMultiblock().rawHeating : 0D};
|
||||
}
|
||||
|
||||
/*@Callback
|
||||
@Optional.Method(modid = "opencomputers")
|
||||
public Object[] getNetHeatingRate(Context context, Arguments args) {
|
||||
return new Object[] {isMultiblockAssembled() ? getMultiblock().getNetHeatingRate(false) : 0D};
|
||||
}*/
|
||||
/* @Callback
|
||||
*
|
||||
* @Optional.Method(modid = "opencomputers") public Object[] getNetHeatingRate(Context context, Arguments args) { return new Object[] {isMultiblockAssembled() ? getMultiblock().getNetHeatingRate(false) : 0D}; } */
|
||||
|
||||
/*@Callback
|
||||
@Optional.Method(modid = "opencomputers")
|
||||
public Object[] getRawEfficiency(Context context, Arguments args) {
|
||||
return new Object[] {isMultiblockAssembled() ? getMultiblock().rawEfficiency : 0D};
|
||||
}*/
|
||||
/* @Callback
|
||||
*
|
||||
* @Optional.Method(modid = "opencomputers") public Object[] getRawEfficiency(Context context, Arguments args) { return new Object[] {isMultiblockAssembled() ? getMultiblock().rawEfficiency : 0D}; } */
|
||||
|
||||
/*@Callback
|
||||
@Optional.Method(modid = "opencomputers")
|
||||
public Object[] getHeatMultiplier(Context context, Arguments args) {
|
||||
return new Object[] {isMultiblockAssembled() ? getMultiblock().heatMult : 0D};
|
||||
}*/
|
||||
/* @Callback
|
||||
*
|
||||
* @Optional.Method(modid = "opencomputers") public Object[] getHeatMultiplier(Context context, Arguments args) { return new Object[] {isMultiblockAssembled() ? getMultiblock().heatMult : 0D}; } */
|
||||
|
||||
/*@Callback
|
||||
@Optional.Method(modid = "opencomputers")
|
||||
public Object[] getCoolingEfficiency(Context context, Arguments args) {
|
||||
return new Object[] {isMultiblockAssembled() ? getMultiblock().coolingEfficiency : 0D};
|
||||
}*/
|
||||
/* @Callback
|
||||
*
|
||||
* @Optional.Method(modid = "opencomputers") public Object[] getCoolingEfficiency(Context context, Arguments args) { return new Object[] {isMultiblockAssembled() ? getMultiblock().coolingEfficiency : 0D}; } */
|
||||
|
||||
@Callback
|
||||
@Optional.Method(modid = "opencomputers")
|
||||
@ -148,67 +140,25 @@ public class TileFissionComputerPort extends TileFissionPart implements SimpleCo
|
||||
return new Object[] {isMultiblockAssembled() ? getMultiblock().clusterCount : 0};
|
||||
}
|
||||
|
||||
/*@Callback
|
||||
@Optional.Method(modid = "opencomputers")
|
||||
public Object[] getVesselStats(Context context, Arguments args) {
|
||||
if (isMultiblockAssembled()) {
|
||||
List<Object[]> stats = new ArrayList<>();
|
||||
for (TileSaltFissionVessel vessel : getMultiblock().getVessels()) {
|
||||
stats.add(new Object[] {new Object[] {vessel.getPos().getX(), vessel.getPos().getY(), vessel.getPos().getZ()}, vessel.isProcessing, vessel.time, vessel.recipeInfo != null ? vessel.baseProcessTime / vessel.getSpeedMultiplier() : 0D, vessel.getProcessHeat(), vessel.getEfficiency(), vessel.getHeatMultiplier()});
|
||||
}
|
||||
return new Object[] {stats.toArray()};
|
||||
}
|
||||
else
|
||||
return new Object[] {};
|
||||
}*/
|
||||
/* @Callback
|
||||
*
|
||||
* @Optional.Method(modid = "opencomputers") public Object[] getVesselStats(Context context, Arguments args) { if (isMultiblockAssembled()) { List<Object[]> stats = new ArrayList<>(); for (TileSaltFissionVessel vessel : getMultiblock().getVessels()) { stats.add(new Object[] { new Object[] {vessel.getPos().getX(), vessel.getPos().getY(), vessel.getPos().getZ()}, vessel.isProcessing, vessel.time, vessel.recipeInfo != null ? vessel.baseProcessTime/vessel.getSpeedMultiplier() : 0D, vessel.getProcessHeat(), vessel.getEfficiency(), vessel.getHeatMultiplier() }); } return new Object[] {stats.toArray()}; } else return new Object[] {}; } */
|
||||
|
||||
/*@Callback
|
||||
@Optional.Method(modid = "opencomputers")
|
||||
public Object[] getHeaterStats(Context context, Arguments args) {
|
||||
if (isMultiblockAssembled()) {
|
||||
List<Object[]> stats = new ArrayList<>();
|
||||
for (TileSaltFissionHeater heater : getMultiblock().getHeaters()) {
|
||||
stats.add(new Object[] {new Object[] {heater.getPos().getX(), heater.getPos().getY(), heater.getPos().getZ()}, heater.getCoolantName(), heater.isProcessing, heater.time, heater.recipeInfo != null ? heater.baseProcessTime / heater.getSpeedMultiplier() : 0D, heater.baseProcessCooling});
|
||||
}
|
||||
return new Object[] {stats.toArray()};
|
||||
}
|
||||
else
|
||||
return new Object[] {};
|
||||
}*/
|
||||
/* @Callback
|
||||
*
|
||||
* @Optional.Method(modid = "opencomputers") public Object[] getHeaterStats(Context context, Arguments args) { if (isMultiblockAssembled()) { List<Object[]> stats = new ArrayList<>(); for (TileSaltFissionHeater heater : getMultiblock().getHeaters()) { stats.add(new Object[] { new Object[] {heater.getPos().getX(), heater.getPos().getY(), heater.getPos().getZ()}, heater.getCoolantName(), heater.isProcessing, heater.time, heater.recipeInfo != null ? heater.baseProcessTime/heater.getSpeedMultiplier() : 0D, heater.baseProcessCooling }); } return new Object[] {stats.toArray()}; } else return new Object[] {}; } */
|
||||
|
||||
/*@Callback
|
||||
@Optional.Method(modid = "opencomputers")
|
||||
public Object[] getModeratorStats(Context context, Arguments args) {
|
||||
if (isMultiblockAssembled()) {
|
||||
List<Object[]> stats = new ArrayList<>();
|
||||
for (TileSaltFissionModerator moderator : getMultiblock().getModerators()) {
|
||||
stats.add(new Object[] {new Object[] {moderator.getPos().getX(), moderator.getPos().getY(), moderator.getPos().getZ()}, moderator.isInValidPosition, moderator.isInModerationLine});
|
||||
}
|
||||
return new Object[] {stats.toArray()};
|
||||
}
|
||||
else
|
||||
return new Object[] {};
|
||||
}*/
|
||||
/* @Callback
|
||||
*
|
||||
* @Optional.Method(modid = "opencomputers") public Object[] getModeratorStats(Context context, Arguments args) { if (isMultiblockAssembled()) { List<Object[]> stats = new ArrayList<>(); for (TileSaltFissionModerator moderator : getMultiblock().getModerators()) { stats.add( new Object[] { new Object[] {moderator.getPos().getX(), moderator.getPos().getY(), moderator.getPos().getZ()}, moderator.isInValidPosition, moderator.isInModerationLine }); } return new Object[] {stats.toArray()}; } else return new Object[] {}; } */
|
||||
|
||||
/*@Callback
|
||||
@Optional.Method(modid = "opencomputers")
|
||||
public Object[] activate(Context context, Arguments args) {
|
||||
if (isMultiblockAssembled()) {
|
||||
getMultiblock().computerActivated = true;
|
||||
getMultiblock().setIsReactorOn();
|
||||
}
|
||||
return new Object[] {};
|
||||
}*/
|
||||
/* @Callback
|
||||
*
|
||||
* @Optional.Method(modid = "opencomputers") public Object[] activate(Context context, Arguments args) { if (isMultiblockAssembled()) { getMultiblock().computerActivated = true; getMultiblock().setIsReactorOn(); } return new Object[] {}; } */
|
||||
|
||||
/*@Callback
|
||||
@Optional.Method(modid = "opencomputers")
|
||||
public Object[] deactivate(Context context, Arguments args) {
|
||||
if (isMultiblockAssembled()) {
|
||||
getMultiblock().computerActivated = false;
|
||||
getMultiblock().setIsReactorOn();
|
||||
}
|
||||
return new Object[] {};
|
||||
}*/
|
||||
/* @Callback
|
||||
*
|
||||
* @Optional.Method(modid = "opencomputers") public Object[] deactivate(Context context, Arguments args) { if (isMultiblockAssembled()) { getMultiblock().computerActivated = false; getMultiblock().setIsReactorOn(); } return new Object[] {}; } */
|
||||
|
||||
//TODO
|
||||
@Callback
|
||||
|
||||
@ -88,11 +88,7 @@ public class TileFissionSource extends TileFissionPart {
|
||||
return new int[] {2, 3, 4, 5};
|
||||
}
|
||||
|
||||
/*@Override
|
||||
public void onLoad() {
|
||||
world.neighborChanged(pos, getBlockType(), pos);
|
||||
super.onLoad();
|
||||
}*/
|
||||
/* @Override public void onLoad() { world.neighborChanged(pos, getBlockType(), pos); super.onLoad(); } */
|
||||
|
||||
@Override
|
||||
public void onBlockNeighborChanged(IBlockState state, World world, BlockPos pos, BlockPos fromPos) {
|
||||
|
||||
@ -453,8 +453,7 @@ public class TurbineLogic extends MultiblockLogic<Turbine, TurbineLogic, ITurbin
|
||||
|
||||
if (getTurbine().isInMinWall(axis, pos)) {
|
||||
EnumFacing thisFlowDir = EnumFacing.getFacingFromAxis(AxisDirection.POSITIVE, axis);
|
||||
// Make sure that all inlets are in the same wall
|
||||
if (getTurbine().flowDir != null && getTurbine().flowDir != thisFlowDir) {
|
||||
if (getTurbine().flowDir != null && getTurbine().flowDir != thisFlowDir) { // make sure that all inlets are in the same wall
|
||||
multiblock.setLastError(Global.MOD_ID + ".multiblock_validation.turbine.valve_wrong_wall", pos);
|
||||
return false;
|
||||
}
|
||||
@ -464,8 +463,7 @@ public class TurbineLogic extends MultiblockLogic<Turbine, TurbineLogic, ITurbin
|
||||
}
|
||||
else if (getTurbine().isInMaxWall(axis, pos)) {
|
||||
EnumFacing thisFlowDir = EnumFacing.getFacingFromAxis(AxisDirection.NEGATIVE, axis);
|
||||
// Make sure that all inlets are in the same wall
|
||||
if (getTurbine().flowDir != null && getTurbine().flowDir != thisFlowDir) {
|
||||
if (getTurbine().flowDir != null && getTurbine().flowDir != thisFlowDir) { // make sure that all inlets are in the same wall
|
||||
multiblock.setLastError(Global.MOD_ID + ".multiblock_validation.turbine.valve_wrong_wall", pos);
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -92,7 +92,7 @@ public abstract class TurbinePlacement {
|
||||
s = s.replaceAll("at exactly one vertex", "vertex");
|
||||
|
||||
boolean exact = s.contains("exact"), atMost = s.contains("at most");
|
||||
boolean axial = s.contains("axial"), vertex = s.contains("vertex"), edge = s.contains("edge");
|
||||
boolean axial = s.contains("axial"), vertex = s.contains("vertex");
|
||||
|
||||
if ((exact && atMost) || (axial && vertex))
|
||||
return null;
|
||||
@ -107,13 +107,6 @@ public abstract class TurbinePlacement {
|
||||
s = s.replaceAll("at a vertex", "");
|
||||
s = s.replaceAll("at vertex", "");
|
||||
s = s.replaceAll("vertex", "");
|
||||
s = s.replaceAll("at one edge", "");
|
||||
s = s.replaceAll("at an edge", "");
|
||||
s = s.replaceAll("at edge", "");
|
||||
s = s.replaceAll("along one edge", "");
|
||||
s = s.replaceAll("along an edge", "");
|
||||
s = s.replaceAll("along edge", "");
|
||||
s = s.replaceAll("edge", "");
|
||||
|
||||
int amount = -1;
|
||||
String rule = null, type = null;
|
||||
@ -124,10 +117,7 @@ public abstract class TurbinePlacement {
|
||||
amount = StringHelper.NUMBER_S2I_MAP.getInt(split[i]);
|
||||
}
|
||||
else if (rule == null) {
|
||||
if (split[i].contains("wall") || split[i].contains("casing")) {
|
||||
rule = "casing";
|
||||
}
|
||||
else if (split[i].contains("bearing")) {
|
||||
if (split[i].contains("bearing")) {
|
||||
rule = "bearing";
|
||||
}
|
||||
else if (split[i].contains("connector")) {
|
||||
@ -135,12 +125,10 @@ public abstract class TurbinePlacement {
|
||||
}
|
||||
else if (split[i].contains("coil")) {
|
||||
rule = "coil";
|
||||
if (i > 0) {
|
||||
if (i > 0)
|
||||
type = split[i - 1];
|
||||
}
|
||||
else {
|
||||
else
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -149,7 +137,7 @@ public abstract class TurbinePlacement {
|
||||
return null;
|
||||
|
||||
CountType countType = exact ? CountType.EXACTLY : (atMost ? CountType.AT_MOST : CountType.AT_LEAST);
|
||||
AdjacencyType adjType = axial ? AdjacencyType.AXIAL : (vertex ? AdjacencyType.VERTEX : (edge ? AdjacencyType.EDGE : AdjacencyType.STANDARD));
|
||||
AdjacencyType adjType = axial ? AdjacencyType.AXIAL : (vertex ? AdjacencyType.VERTEX : AdjacencyType.STANDARD);
|
||||
|
||||
if (rule.equals("casing")) {
|
||||
return new AdjacentCasing(amount, countType, adjType);
|
||||
@ -182,7 +170,7 @@ public abstract class TurbinePlacement {
|
||||
throw new IllegalArgumentException("Adjacency placement rule with ID \"" + ruleID + "\" can not require more than four adjacencies!");
|
||||
}
|
||||
if (adjType == AdjacencyType.VERTEX) {
|
||||
throw new IllegalArgumentException("Vertex adjacency placement rule with ID \"" + ruleID + "\" is disallowed as turbine dynamos have no depth!");
|
||||
throw new IllegalArgumentException("Vertex placement rule with ID \"" + ruleID + "\" is disallowed as turbine dynamos have no depth!");
|
||||
}
|
||||
super.checkIsRuleAllowed(ruleID);
|
||||
}
|
||||
|
||||
@ -230,21 +230,12 @@ public class RadiationHandler {
|
||||
if (event.phase != TickEvent.Phase.START || event.side == Side.CLIENT || !(event.world instanceof WorldServer)) {
|
||||
return;
|
||||
}
|
||||
|
||||
WorldServer world = (WorldServer) event.world;
|
||||
|
||||
ChunkProviderServer chunkProvider = world.getChunkProvider();
|
||||
Collection<Chunk> loadedChunks = chunkProvider.getLoadedChunks();
|
||||
int chunkArrSize = loadedChunks.size();
|
||||
Chunk[] chunkArray = null;
|
||||
try {
|
||||
chunkArray = loadedChunks.toArray(new Chunk[chunkArrSize]);
|
||||
}
|
||||
catch (Exception e) {}
|
||||
|
||||
if (chunkArray == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Chunk[] chunkArray = loadedChunks.toArray(new Chunk[chunkArrSize]);
|
||||
int chunkStart = RAND.nextInt(chunkArrSize + 1);
|
||||
int chunksPerTick = Math.min(radiation_world_chunks_per_tick, chunkArrSize);
|
||||
int tickMult = chunkArrSize > 0 ? Math.max(1, chunkArrSize / chunksPerTick) : 1;
|
||||
@ -333,16 +324,10 @@ public class RadiationHandler {
|
||||
chunkSource.setEffectiveScrubberCount(0D);
|
||||
|
||||
Collection<TileEntity> tileCollection = chunk.getTileEntityMap().values();
|
||||
TileEntity[] tileArray = null;
|
||||
try {
|
||||
tileArray = tileCollection.toArray(new TileEntity[tileCollection.size()]);
|
||||
}
|
||||
catch (Exception e) {}
|
||||
TileEntity[] tileArray = tileCollection.toArray(new TileEntity[tileCollection.size()]);
|
||||
|
||||
if (tileArray != null) {
|
||||
for (TileEntity tile : tileArray) {
|
||||
RadiationHelper.transferRadiationFromProviderToChunkBuffer(tile, tile_side, chunkSource);
|
||||
}
|
||||
for (TileEntity tile : tileArray) {
|
||||
RadiationHelper.transferRadiationFromProviderToChunkBuffer(tile, tile_side, chunkSource);
|
||||
}
|
||||
|
||||
if (RadWorlds.RAD_MAP.containsKey(dimension)) {
|
||||
|
||||
@ -358,13 +358,7 @@ public class RadiationHelper {
|
||||
|
||||
// Biome -> Player
|
||||
|
||||
/*public static double transferBackgroundRadsToPlayer(Biome biome, IEntityRads playerRads, EntityPlayer player, int updateRate) {
|
||||
Double biomeRadiation = RadBiomes.RAD_MAP.get(biome);
|
||||
if (biomeRadiation == null) {
|
||||
return 0D;
|
||||
}
|
||||
return addRadsToPlayer(playerRads, player, biomeRadiation, updateRate);
|
||||
}*/
|
||||
/* public static double transferBackgroundRadsToPlayer(Biome biome, IEntityRads playerRads, EntityPlayer player, int updateRate) { Double biomeRadiation = RadBiomes.RAD_MAP.get(biome); if (biomeRadiation == null) { return 0D; } return addRadsToPlayer(playerRads, player, biomeRadiation, updateRate); } */
|
||||
|
||||
// Source -> Entity
|
||||
|
||||
@ -377,12 +371,7 @@ public class RadiationHelper {
|
||||
|
||||
// Biome -> Entity
|
||||
|
||||
/*public static void transferBackgroundRadsToEntity(Biome biome, IEntityRads entityRads, EntityLiving entityLiving, int updateRate) {
|
||||
Double biomeRadiation = RadBiomes.RAD_MAP.get(biome);
|
||||
if (biomeRadiation != null) {
|
||||
entityRads.setRadiationLevel(addRadsToEntity(entityRads, entityLiving, biomeRadiation, updateRate));
|
||||
}
|
||||
}*/
|
||||
/* public static void transferBackgroundRadsToEntity(Biome biome, IEntityRads entityRads, EntityLiving entityLiving, int updateRate) { Double biomeRadiation = RadBiomes.RAD_MAP.get(biome); if (biomeRadiation != null) { entityRads.setRadiationLevel(addRadsToEntity(entityRads, entityLiving, biomeRadiation, updateRate)); } } */
|
||||
|
||||
// Entity Symptoms
|
||||
|
||||
|
||||
@ -78,7 +78,7 @@ public class RadiationRenders {
|
||||
MC.fontRenderer.drawString(info, xPos + (104 - infoWidth) / 2, yPos + 1, 0);
|
||||
MC.fontRenderer.drawString(info, xPos + (104 - infoWidth) / 2, yPos - 1, 0);
|
||||
}
|
||||
MC.fontRenderer.drawString(info, xPos + (104 - infoWidth) / 2, yPos, playerRads.isImmune() ? 0x55FF55 : TextHelper.T2I_MAP.getInt(RadiationHelper.getRadiationTextColor(playerRads)));
|
||||
MC.fontRenderer.drawString(info, xPos + (104 - infoWidth) / 2, yPos, playerRads.isImmune() ? 0x55FF55 : TextHelper.getFormatColor(RadiationHelper.getRadiationTextColor(playerRads)));
|
||||
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
|
||||
@ -112,10 +112,6 @@ public class RenderTurbineRotor extends TileEntitySpecialRenderer<TileTurbineCon
|
||||
|
||||
GlStateManager.pushMatrix();
|
||||
|
||||
if (turbine.renderPosArray.length < 1 + 4 * flowLength * shaftWidth + depth) {
|
||||
return;
|
||||
}
|
||||
|
||||
Vector3f renderPos = turbine.renderPosArray[4 * flowLength * shaftWidth + depth];
|
||||
GlStateManager.translate(renderPos.x + 0.5D, renderPos.y + 0.5D, renderPos.z + 0.5D);
|
||||
GlStateManager.scale(flowDir.getAxis() == Axis.X ? 1D : depthScale, flowDir.getAxis() == Axis.Y ? 1D : depthScale, flowDir.getAxis() == Axis.Z ? 1D : depthScale);
|
||||
@ -132,10 +128,6 @@ public class RenderTurbineRotor extends TileEntitySpecialRenderer<TileTurbineCon
|
||||
public void renderShaft(Turbine turbine, BlockRendererDispatcher renderer, float bright, IBlockState shaftState, EnumFacing flowDir, int flowLength, int shaftWidth, int depth) {
|
||||
GlStateManager.pushMatrix();
|
||||
|
||||
if (turbine.renderPosArray.length < 1 + 4 * flowLength * shaftWidth + depth) {
|
||||
return;
|
||||
}
|
||||
|
||||
Vector3f renderPos = turbine.renderPosArray[4 * flowLength * shaftWidth + depth];
|
||||
GlStateManager.translate(renderPos.x + 0.5D, renderPos.y + 0.5D, renderPos.z + 0.5D);
|
||||
GlStateManager.scale(flowDir.getAxis() == Axis.X ? 1D : shaftWidth, flowDir.getAxis() == Axis.Y ? 1D : shaftWidth, flowDir.getAxis() == Axis.Z ? 1D : shaftWidth);
|
||||
@ -156,10 +148,6 @@ public class RenderTurbineRotor extends TileEntitySpecialRenderer<TileTurbineCon
|
||||
|
||||
int i = jMult + depth;
|
||||
|
||||
if (turbine.rotorStateArray.length < i + 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (int w = 0; w < shaftWidth; w++) {
|
||||
GlStateManager.pushMatrix();
|
||||
|
||||
|
||||
@ -213,9 +213,7 @@ public interface ITileInventory<T extends TileEntity & ITileInventory> extends I
|
||||
return;
|
||||
}
|
||||
|
||||
/*if (ModCheck.mekanismLoaded() && tile.hasCapability(CapabilityHelper.LOGISTICAL_TRANSPORTER_CAPABILITY, side.getOpposite())) {
|
||||
ILogisticalTransporter lt = tile.getCapability(CapabilityHelper.LOGISTICAL_TRANSPORTER_CAPABILITY, side.getOpposite());
|
||||
}*/
|
||||
/* if (ModCheck.mekanismLoaded() && tile.hasCapability(CapabilityHelper.LOGISTICAL_TRANSPORTER_CAPABILITY, side.getOpposite())) { ILogisticalTransporter lt = tile.getCapability(CapabilityHelper.LOGISTICAL_TRANSPORTER_CAPABILITY, side.getOpposite()); } */
|
||||
|
||||
if (tile.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side.getOpposite())) {
|
||||
IItemHandler adjInv = tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side.getOpposite());
|
||||
|
||||
@ -184,8 +184,7 @@ public class TileFluidProcessor extends TileEnergyFluidSidedInventory implements
|
||||
getEnergyStorage().setMaxTransfer(capacity);
|
||||
}
|
||||
|
||||
// Needed for Galacticraft
|
||||
private int getMaxEnergyModified() {
|
||||
private int getMaxEnergyModified() { // Needed for Galacticraft
|
||||
return ModCheck.galacticraftLoaded() ? Math.max(0, getMaxEnergyStored() - 16) : getMaxEnergyStored();
|
||||
}
|
||||
|
||||
|
||||
@ -193,8 +193,7 @@ public class TileItemFluidProcessor extends TileEnergyFluidSidedInventory implem
|
||||
getEnergyStorage().setMaxTransfer(capacity);
|
||||
}
|
||||
|
||||
// Needed for Galacticraft
|
||||
private int getMaxEnergyModified() {
|
||||
private int getMaxEnergyModified() { // Needed for Galacticraft
|
||||
return ModCheck.galacticraftLoaded() ? Math.max(0, getMaxEnergyStored() - 16) : getMaxEnergyStored();
|
||||
}
|
||||
|
||||
|
||||
@ -169,8 +169,7 @@ public class TileItemProcessor extends TileEnergySidedInventory implements IItem
|
||||
getEnergyStorage().setMaxTransfer(capacity);
|
||||
}
|
||||
|
||||
// Needed for Galacticraft
|
||||
private int getMaxEnergyModified() {
|
||||
private int getMaxEnergyModified() { // Needed for Galacticraft
|
||||
return ModCheck.galacticraftLoaded() ? Math.max(0, getMaxEnergyStored() - 16) : getMaxEnergyStored();
|
||||
}
|
||||
|
||||
|
||||
@ -69,41 +69,18 @@ public class PosHelper {
|
||||
|
||||
// Vertices
|
||||
|
||||
public static final EnumFacing[][] VERTEX_DIRS = new EnumFacing[][] {
|
||||
new EnumFacing[] {EnumFacing.DOWN, EnumFacing.NORTH, EnumFacing.WEST},
|
||||
new EnumFacing[] {EnumFacing.DOWN, EnumFacing.NORTH, EnumFacing.EAST},
|
||||
new EnumFacing[] {EnumFacing.DOWN, EnumFacing.SOUTH, EnumFacing.WEST},
|
||||
new EnumFacing[] {EnumFacing.DOWN, EnumFacing.SOUTH, EnumFacing.EAST},
|
||||
new EnumFacing[] {EnumFacing.UP, EnumFacing.NORTH, EnumFacing.WEST},
|
||||
new EnumFacing[] {EnumFacing.UP, EnumFacing.NORTH, EnumFacing.EAST},
|
||||
new EnumFacing[] {EnumFacing.UP, EnumFacing.SOUTH, EnumFacing.WEST},
|
||||
new EnumFacing[] {EnumFacing.UP, EnumFacing.SOUTH, EnumFacing.EAST}
|
||||
};
|
||||
private static final EnumFacing[] VERTEX_DNW = new EnumFacing[] {EnumFacing.DOWN, EnumFacing.NORTH, EnumFacing.WEST};
|
||||
private static final EnumFacing[] VERTEX_DNE = new EnumFacing[] {EnumFacing.DOWN, EnumFacing.NORTH, EnumFacing.EAST};
|
||||
private static final EnumFacing[] VERTEX_DSW = new EnumFacing[] {EnumFacing.DOWN, EnumFacing.SOUTH, EnumFacing.WEST};
|
||||
private static final EnumFacing[] VERTEX_DSE = new EnumFacing[] {EnumFacing.DOWN, EnumFacing.SOUTH, EnumFacing.EAST};
|
||||
private static final EnumFacing[] VERTEX_UNW = new EnumFacing[] {EnumFacing.UP, EnumFacing.NORTH, EnumFacing.WEST};
|
||||
private static final EnumFacing[] VERTEX_UNE = new EnumFacing[] {EnumFacing.UP, EnumFacing.NORTH, EnumFacing.EAST};
|
||||
private static final EnumFacing[] VERTEX_USW = new EnumFacing[] {EnumFacing.UP, EnumFacing.SOUTH, EnumFacing.WEST};
|
||||
private static final EnumFacing[] VERTEX_USE = new EnumFacing[] {EnumFacing.UP, EnumFacing.SOUTH, EnumFacing.EAST};
|
||||
|
||||
// Edges
|
||||
|
||||
public static final EnumFacing[][] EDGE_DIRS = new EnumFacing[][] {
|
||||
new EnumFacing[] {EnumFacing.DOWN, EnumFacing.NORTH},
|
||||
new EnumFacing[] {EnumFacing.DOWN, EnumFacing.SOUTH},
|
||||
new EnumFacing[] {EnumFacing.DOWN, EnumFacing.WEST},
|
||||
new EnumFacing[] {EnumFacing.DOWN, EnumFacing.EAST},
|
||||
new EnumFacing[] {EnumFacing.UP, EnumFacing.NORTH},
|
||||
new EnumFacing[] {EnumFacing.UP, EnumFacing.SOUTH},
|
||||
new EnumFacing[] {EnumFacing.UP, EnumFacing.WEST},
|
||||
new EnumFacing[] {EnumFacing.UP, EnumFacing.EAST},
|
||||
new EnumFacing[] {EnumFacing.NORTH, EnumFacing.WEST},
|
||||
new EnumFacing[] {EnumFacing.NORTH, EnumFacing.WEST},
|
||||
new EnumFacing[] {EnumFacing.SOUTH, EnumFacing.EAST},
|
||||
new EnumFacing[] {EnumFacing.SOUTH, EnumFacing.EAST}
|
||||
};
|
||||
|
||||
// Planes
|
||||
|
||||
public static final EnumFacing[][] PLANE_DIRS = new EnumFacing[][] {
|
||||
new EnumFacing[] {EnumFacing.DOWN, EnumFacing.UP, EnumFacing.NORTH, EnumFacing.SOUTH},
|
||||
new EnumFacing[] {EnumFacing.NORTH, EnumFacing.SOUTH, EnumFacing.WEST, EnumFacing.EAST},
|
||||
new EnumFacing[] {EnumFacing.WEST, EnumFacing.EAST, EnumFacing.DOWN, EnumFacing.UP}
|
||||
};
|
||||
public static List<EnumFacing[]> vertexDirsList() {
|
||||
return Lists.newArrayList(VERTEX_DNW, VERTEX_DNE, VERTEX_DSW, VERTEX_DSE, VERTEX_UNW, VERTEX_UNE, VERTEX_USW, VERTEX_USE);
|
||||
}
|
||||
|
||||
// Axes
|
||||
|
||||
@ -113,7 +90,7 @@ public class PosHelper {
|
||||
return axis == EnumFacing.Axis.X ? 0 : axis == EnumFacing.Axis.Y ? 1 : 2;
|
||||
}
|
||||
|
||||
public static final EnumFacing.AxisDirection[] AXIS_DIRS = new EnumFacing.AxisDirection[] {EnumFacing.AxisDirection.POSITIVE, EnumFacing.AxisDirection.NEGATIVE};
|
||||
public static final EnumFacing.AxisDirection[] AXISDIRS = new EnumFacing.AxisDirection[] {EnumFacing.AxisDirection.POSITIVE, EnumFacing.AxisDirection.NEGATIVE};
|
||||
|
||||
public static int getAxisDirIndex(@Nonnull EnumFacing.AxisDirection dir) {
|
||||
return dir == EnumFacing.AxisDirection.POSITIVE ? 0 : 1;
|
||||
|
||||
@ -1,36 +1,45 @@
|
||||
package nc.util;
|
||||
|
||||
import it.unimi.dsi.fastutil.objects.*;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
|
||||
public class TextHelper {
|
||||
|
||||
public static final Object2IntMap<TextFormatting> T2I_MAP = new Object2IntOpenHashMap<>();
|
||||
public static final Object2ObjectMap<String, TextFormatting> S2T_MAP = new Object2ObjectOpenHashMap<>();
|
||||
|
||||
static {
|
||||
T2I_MAP.defaultReturnValue(0xFFFFFF);
|
||||
S2T_MAP.defaultReturnValue(TextFormatting.WHITE);
|
||||
|
||||
T2I_MAP.put(TextFormatting.BLACK, 0x000000);
|
||||
T2I_MAP.put(TextFormatting.DARK_BLUE, 0x0000AA);
|
||||
T2I_MAP.put(TextFormatting.DARK_GREEN, 0x00AA00);
|
||||
T2I_MAP.put(TextFormatting.DARK_AQUA, 0x00AAAA);
|
||||
T2I_MAP.put(TextFormatting.DARK_RED, 0xAA0000);
|
||||
T2I_MAP.put(TextFormatting.DARK_PURPLE, 0xAA00AA);
|
||||
T2I_MAP.put(TextFormatting.GOLD, 0xFFAA00);
|
||||
T2I_MAP.put(TextFormatting.GRAY, 0xAAAAAA);
|
||||
T2I_MAP.put(TextFormatting.DARK_GRAY, 0x555555);
|
||||
T2I_MAP.put(TextFormatting.BLUE, 0x5555FF);
|
||||
T2I_MAP.put(TextFormatting.GREEN, 0x55FF55);
|
||||
T2I_MAP.put(TextFormatting.AQUA, 0x55FFFF);
|
||||
T2I_MAP.put(TextFormatting.RED, 0xFF5555);
|
||||
T2I_MAP.put(TextFormatting.LIGHT_PURPLE, 0xFF55FF);
|
||||
T2I_MAP.put(TextFormatting.YELLOW, 0xFFFF55);
|
||||
T2I_MAP.put(TextFormatting.WHITE, 0xFFFFFF);
|
||||
|
||||
for (TextFormatting formatting : TextFormatting.values()) {
|
||||
S2T_MAP.put(formatting.toString(), formatting);
|
||||
public static int getFormatColor(TextFormatting format) {
|
||||
switch (format) {
|
||||
case BLACK:
|
||||
return 0x000000;
|
||||
case DARK_BLUE:
|
||||
return 0x0000AA;
|
||||
case DARK_GREEN:
|
||||
return 0x00AA00;
|
||||
case DARK_AQUA:
|
||||
return 0x00AAAA;
|
||||
case DARK_RED:
|
||||
return 0xAA0000;
|
||||
case DARK_PURPLE:
|
||||
return 0xAA00AA;
|
||||
case GOLD:
|
||||
return 0xFFAA00;
|
||||
case GRAY:
|
||||
return 0xAAAAAA;
|
||||
case DARK_GRAY:
|
||||
return 0x555555;
|
||||
case BLUE:
|
||||
return 0x5555FF;
|
||||
case GREEN:
|
||||
return 0x55FF55;
|
||||
case AQUA:
|
||||
return 0x55FFFF;
|
||||
case RED:
|
||||
return 0xFF5555;
|
||||
case LIGHT_PURPLE:
|
||||
return 0xFF55FF;
|
||||
case YELLOW:
|
||||
return 0xFFFF55;
|
||||
case WHITE:
|
||||
return 0xFFFFFF;
|
||||
default:
|
||||
return 0xFFFFFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,7 +5,6 @@ import net.minecraft.util.math.MathHelper;
|
||||
public class UnitHelper {
|
||||
|
||||
public static final String[] SI_PREFIX = new String[] {" y", " z", " a", " f", " p", " n", " u", " m", " ", " k", " M", " G", " T", " P", " E", " Z", " Y"};
|
||||
public static final String[] SI_PREFIX_2 = new String[] {" y", " z", " a", " f", " p", " n", " u", " m", "", " k", " M", " G", " T", " P", " E", " Z", " Y"};
|
||||
|
||||
// Long
|
||||
|
||||
@ -14,7 +13,7 @@ public class UnitHelper {
|
||||
int prefixNumber = minPrefixNumber;
|
||||
|
||||
boolean hasMax = max != Long.MIN_VALUE;
|
||||
String slashMaxVal = !hasMax ? "" : SI_PREFIX_2[prefixNumber] + " / " + max;
|
||||
String slashMaxVal = !hasMax ? "" : " / " + max;
|
||||
String sign = value < 0D ? "-" : "";
|
||||
if (value == 0D) {
|
||||
return value + slashMaxVal + SI_PREFIX[prefixNumber] + unit;
|
||||
@ -42,7 +41,7 @@ public class UnitHelper {
|
||||
continue;
|
||||
}
|
||||
if (value != 0L) {
|
||||
slashMaxVal = !hasMax ? "" : SI_PREFIX_2[prefixNumber] + " / " + max;
|
||||
slashMaxVal = !hasMax ? "" : " / " + max;
|
||||
return sign + value + slashMaxVal + SI_PREFIX[prefixNumber] + unit;
|
||||
}
|
||||
value = NCMath.magnitudeMult(value, 3);
|
||||
@ -51,7 +50,7 @@ public class UnitHelper {
|
||||
}
|
||||
else {
|
||||
if (length <= maxLengthFixed) {
|
||||
slashMaxVal = !hasMax ? "" : SI_PREFIX_2[prefixNumber] + " / " + max;
|
||||
slashMaxVal = !hasMax ? "" : " / " + max;
|
||||
return sign + value + slashMaxVal + SI_PREFIX[prefixNumber] + unit;
|
||||
}
|
||||
value = NCMath.magnitudeMult(value, -3);
|
||||
@ -62,7 +61,7 @@ public class UnitHelper {
|
||||
descending = false;
|
||||
}
|
||||
}
|
||||
slashMaxVal = !hasMax ? "" : SI_PREFIX_2[SI_PREFIX.length - 1] + " / " + NCMath.magnitudeMult(max, -3);
|
||||
slashMaxVal = !hasMax ? "" : " / " + NCMath.magnitudeMult(max, -3);
|
||||
return sign + NCMath.magnitudeMult(value, -3) + slashMaxVal + SI_PREFIX[SI_PREFIX.length - 1] + unit;
|
||||
}
|
||||
|
||||
@ -85,7 +84,7 @@ public class UnitHelper {
|
||||
int prefixNumber = minPrefixNumber;
|
||||
|
||||
boolean hasMax = max != Double.MIN_VALUE;
|
||||
String slashMaxVal = !hasMax ? "" : SI_PREFIX_2[prefixNumber] + " / " + (long) max;
|
||||
String slashMaxVal = !hasMax ? "" : " / " + (long) max;
|
||||
String sign = value < 0D ? "-" : "";
|
||||
if (value == 0D) {
|
||||
return (long) value + slashMaxVal + SI_PREFIX[prefixNumber] + unit;
|
||||
@ -113,7 +112,7 @@ public class UnitHelper {
|
||||
continue;
|
||||
}
|
||||
if ((long) value != 0L) {
|
||||
slashMaxVal = !hasMax ? "" : SI_PREFIX_2[prefixNumber] + " / " + (long) max;
|
||||
slashMaxVal = !hasMax ? "" : " / " + (long) max;
|
||||
return sign + (long) value + slashMaxVal + SI_PREFIX[prefixNumber] + unit;
|
||||
}
|
||||
value = NCMath.magnitudeMult(value, 3);
|
||||
@ -122,7 +121,7 @@ public class UnitHelper {
|
||||
}
|
||||
else {
|
||||
if (length <= maxLengthFixed) {
|
||||
slashMaxVal = !hasMax ? "" : SI_PREFIX_2[prefixNumber] + " / " + (long) max;
|
||||
slashMaxVal = !hasMax ? "" : " / " + (long) max;
|
||||
return sign + (long) value + slashMaxVal + SI_PREFIX[prefixNumber] + unit;
|
||||
}
|
||||
value = NCMath.magnitudeMult(value, -3);
|
||||
@ -133,7 +132,7 @@ public class UnitHelper {
|
||||
descending = false;
|
||||
}
|
||||
}
|
||||
slashMaxVal = !hasMax ? "" : SI_PREFIX_2[SI_PREFIX.length - 1] + " / " + (long) NCMath.magnitudeMult(max, -3);
|
||||
slashMaxVal = !hasMax ? "" : " / " + (long) NCMath.magnitudeMult(max, -3);
|
||||
return sign + (long) NCMath.magnitudeMult(value, -3) + slashMaxVal + SI_PREFIX[SI_PREFIX.length - 1] + unit;
|
||||
}
|
||||
|
||||
|
||||
@ -1538,11 +1538,9 @@ item.nuclearcraft.ingot.graphite.name=Graphite Ingot
|
||||
item.nuclearcraft.ingot.beryllium.name=Beryllium Ingot
|
||||
item.nuclearcraft.ingot.zirconium.name=Zirconium Ingot
|
||||
item.nuclearcraft.ingot.manganese.name=Manganese Ingot
|
||||
item.nuclearcraft.ingot.manganese.desc=Produced by smelting rhodochrosite dust three times.
|
||||
item.nuclearcraft.ingot.aluminum.name=Aluminum Ingot
|
||||
item.nuclearcraft.ingot.silver.name=Silver Ingot
|
||||
item.nuclearcraft.ingot.manganese_oxide.name=Manganese Oxide Ingot
|
||||
item.nuclearcraft.ingot.manganese_oxide.desc=Produced by smelting rhodochrosite dust twice.
|
||||
item.nuclearcraft.ingot.manganese_dioxide.name=Manganese Dioxide Ingot
|
||||
|
||||
item.nuclearcraft.dust.copper.name=Copper Dust
|
||||
@ -1555,26 +1553,24 @@ item.nuclearcraft.dust.lithium.name=Lithium Dust
|
||||
item.nuclearcraft.dust.magnesium.name=Magnesium Dust
|
||||
item.nuclearcraft.dust.graphite.name=Graphite Dust
|
||||
item.nuclearcraft.dust.beryllium.name=Beryllium Dust
|
||||
#item.nuclearcraft.dust.beryllium.desc=Obtained alongside Coal when breaking Coal Ore.
|
||||
item.nuclearcraft.dust.beryllium.desc=Obtained alongside Coal when breaking Coal Ore.
|
||||
item.nuclearcraft.dust.zirconium.name=Zirconium Dust
|
||||
#item.nuclearcraft.dust.zirconium.desc=Obtained alongside Nether Quartz when breaking Nether Quartz Ore.
|
||||
item.nuclearcraft.dust.zirconium.desc=Obtained alongside Nether Quartz when breaking Nether Quartz Ore.
|
||||
item.nuclearcraft.dust.manganese.name=Manganese Dust
|
||||
item.nuclearcraft.dust.aluminum.name=Aluminum Dust
|
||||
item.nuclearcraft.dust.silver.name=Silver Dust
|
||||
item.nuclearcraft.dust.manganese_oxide.name=Manganese Oxide Dust
|
||||
item.nuclearcraft.dust.manganese_oxide.desc=Produced by smelting rhodochrosite dust.
|
||||
item.nuclearcraft.dust.manganese_dioxide.name=Manganese Dioxide Dust
|
||||
|
||||
item.nuclearcraft.gem.rhodochrosite.name=Rhodochrosite
|
||||
#item.nuclearcraft.gem.rhodochrosite.desc=Obtained alongside Redstone when breaking Redstone Ore.
|
||||
item.nuclearcraft.gem.rhodochrosite.desc=Smelt twice to produce a manganese oxide ingot, and once more to produce a manganese ingot.
|
||||
item.nuclearcraft.gem.rhodochrosite.desc=Obtained alongside Redstone when breaking Redstone Ore.
|
||||
item.nuclearcraft.gem.boron_nitride.name=Cubic Boron Nitride
|
||||
item.nuclearcraft.gem.fluorite.name=Fluorite
|
||||
#item.nuclearcraft.gem.fluorite.desc=Obtained alongside Lapis Lazuli when breaking Lapis Lazuli Ore.
|
||||
item.nuclearcraft.gem.fluorite.desc=Obtained alongside Lapis Lazuli when breaking Lapis Lazuli Ore.
|
||||
item.nuclearcraft.gem.villiaumite.name=Villiaumite
|
||||
#item.nuclearcraft.gem.villiaumite.desc=Obtained alongside Diamonds when breaking Diamond Ore.
|
||||
item.nuclearcraft.gem.villiaumite.desc=Obtained alongside Diamonds when breaking Diamond Ore.
|
||||
item.nuclearcraft.gem.carobbiite.name=Carobbiite
|
||||
#item.nuclearcraft.gem.carobbiite.desc=Obtained alongside Diamonds when breaking Diamond Ore.
|
||||
item.nuclearcraft.gem.carobbiite.desc=Obtained alongside Diamonds when breaking Diamond Ore.
|
||||
item.nuclearcraft.gem.boron_arsenide.name=Boron Arsenide
|
||||
item.nuclearcraft.gem.silicon.name=Silicon
|
||||
|
||||
@ -1585,7 +1581,7 @@ item.nuclearcraft.gem_dust.obsidian.name=Crushed Obsidian
|
||||
item.nuclearcraft.gem_dust.boron_nitride.name=Hexagonal Boron Nitride
|
||||
item.nuclearcraft.gem_dust.fluorite.name=Crushed Fluorite
|
||||
item.nuclearcraft.gem_dust.sulfur.name=Sulfur
|
||||
#item.nuclearcraft.gem_dust.sulfur.desc=Obtained alongside Coal when breaking Coal Ore.
|
||||
item.nuclearcraft.gem_dust.sulfur.desc=Obtained alongside Coal when breaking Coal Ore.
|
||||
item.nuclearcraft.gem_dust.coal.name=Crushed Coal
|
||||
item.nuclearcraft.gem_dust.villiaumite.name=Crushed Villiaumite
|
||||
item.nuclearcraft.gem_dust.carobbiite.name=Crushed Carobbiite
|
||||
@ -2849,7 +2845,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)^(1 + S/c)^(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_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. Order: borax dust, RadAway, Slow-Acting RadAway
|
||||
gui.nc.config.radiation_scrubber_power=Scrubber Recipe Power Use
|
||||
@ -3507,19 +3503,17 @@ nc.sf.placement_rule.adjacent.at_least=at least %1$s
|
||||
nc.sf.placement_rule.adjacent.at_least_along_axis=at least %1$s along a common axis
|
||||
nc.sf.placement_rule.adjacent.at_least_along_axes=at least %1$s along common axes
|
||||
nc.sf.placement_rule.adjacent.at_least_at_vertex=at least %1$s at a common vertex
|
||||
nc.sf.placement_rule.adjacent.at_least_along_edge=at least %1$s at a common edge
|
||||
nc.sf.placement_rule.adjacent.exactly=exactly %1$s
|
||||
nc.sf.placement_rule.adjacent.exactly_along_axis=exactly %1$s which must share a common axis
|
||||
nc.sf.placement_rule.adjacent.exactly_along_axes=exactly %1$s which must share common axes
|
||||
nc.sf.placement_rule.adjacent.exactly_at_vertex=exactly %1$s which must share a common vertex
|
||||
nc.sf.placement_rule.adjacent.exactly_along_edge=exactly %1$s which must share a common edge
|
||||
nc.sf.placement_rule.adjacent.at_most=at most %1$s
|
||||
nc.sf.placement_rule.adjacent.at_most_along_axis=at most %1$s along a common axis
|
||||
nc.sf.placement_rule.adjacent.at_most_along_axes=at most %1$s along common axes
|
||||
nc.sf.placement_rule.adjacent.no=absolutely %1$s
|
||||
|
||||
nc.sf.placement_rule.adjacent.ambiguity0prev=!common axis&&!common axes&&!common vertex&&!common edge
|
||||
nc.sf.placement_rule.adjacent.ambiguity0last=common axis||common axes||common vertex||common edge
|
||||
nc.sf.placement_rule.adjacent.ambiguity0prev=!common axis&&!common axes&&!common vertex
|
||||
nc.sf.placement_rule.adjacent.ambiguity0last=common axis||common axes||common vertex
|
||||
nc.sf.placement_rule.adjacent.ambiguity1prev=share a common||share common
|
||||
|
||||
nc.sf.reactor_casing0=%s reactor casing
|
||||
@ -3542,8 +3536,8 @@ nc.sf.irradiator1=%s functional irradiators
|
||||
nc.sf.shield0=%s valid open shield
|
||||
nc.sf.shield1=%s valid open shields
|
||||
|
||||
nc.sf.any_sink0=%s sink of any type
|
||||
nc.sf.any_sink1=%s sinks of any type
|
||||
nc.sf.any_sink0=%s of any sink
|
||||
nc.sf.any_sink1=any %s sinks
|
||||
nc.sf.water_sink0=%s valid water sink
|
||||
nc.sf.water_sink1=%s valid water sinks
|
||||
nc.sf.iron_sink0=%s valid iron sink
|
||||
@ -3609,8 +3603,8 @@ nc.sf.enderium_sink1=%s valid enderium sinks
|
||||
nc.sf.cryotheum_sink0=%s valid cryotheum sink
|
||||
nc.sf.cryotheum_sink1=%s valid cryotheum sinks
|
||||
|
||||
nc.sf.any_heater0=%s heater of any type
|
||||
nc.sf.any_heater1=%s heaters of any type
|
||||
nc.sf.any_heater0=%s of any heater
|
||||
nc.sf.any_heater1=any %s heaters
|
||||
nc.sf.standard_heater0=%s functional standard heater
|
||||
nc.sf.standard_heater1=%s functional standard heaters
|
||||
nc.sf.iron_heater0=%s functional iron heater
|
||||
|
||||
@ -2250,16 +2250,16 @@ item.nuclearcraft.foursmore.name=四层棉花糖巧克力夹心饼干
|
||||
|
||||
item.nuclearcraft.record_wanderer.name=音乐唱片
|
||||
item.nuclearcraft.record_wanderer.des0=Dion - The Wanderer
|
||||
item.nuclearcraft.record_wanderer.des1=8-Bit 版本制作者:8 Bit Universe
|
||||
item.nuclearcraft.record_wanderer.des1=8-Bit版本制作者:8 Bit Universe
|
||||
item.nuclearcraft.record_end_of_the_world.name=音乐唱片
|
||||
item.nuclearcraft.record_end_of_the_world.des0=Skeeter Davis - The End of the World
|
||||
item.nuclearcraft.record_end_of_the_world.des1=8-Bit 版本制作者:GermanPikachuGaming
|
||||
item.nuclearcraft.record_end_of_the_world.des1=8-Bit版本制作者:GermanPikachuGaming
|
||||
item.nuclearcraft.record_money_for_nothing.name=音乐唱片
|
||||
item.nuclearcraft.record_money_for_nothing.des0=Dire Straits - Money For Nothing
|
||||
item.nuclearcraft.record_money_for_nothing.des1=8-Bit 版本制作者:Omnigrad
|
||||
item.nuclearcraft.record_money_for_nothing.des1=8-Bit版本制作者:Omnigrad
|
||||
item.nuclearcraft.record_hyperspace.name=音乐唱片
|
||||
item.nuclearcraft.record_hyperspace.des0=Ur-Quan Masters - Hyperspace
|
||||
item.nuclearcraft.record_hyperspace.des1=制作者:Riku Nuottajärvi
|
||||
item.nuclearcraft.record_hyperspace.des1=原制作者:Riku Nuottajärvi
|
||||
|
||||
entity.nuclearcraft.feral_ghoul.name=狂尸鬼
|
||||
|
||||
@ -2688,8 +2688,6 @@ gui.nc.config.turbine_sound_volume.comment=调整能听到涡轮机声音的范
|
||||
gui.nc.config.category.quantum=量子配置
|
||||
gui.nc.config.category.quantum.tooltip=配置量子相关的内容。
|
||||
|
||||
gui.nc.config.quantum_server_enabled=在专用服务器上启用
|
||||
gui.nc.config.quantum_server_enabled.comment=量子计算机可以在专用服务器上工作吗?默认为否 (false),因为此功能会占用服务器内存,并且生成的代码存储在服务端而非客户端。
|
||||
gui.nc.config.quantum_max_qubits=最大量子位数量
|
||||
gui.nc.config.quantum_max_qubits.comment=一个量子计算机最多拥有的量子位数量。!!!警告!!!超过七个量子位的电路可能会消耗大量的系统资源,并占用巨大的内存!在调整此限制时需要进行 特别的 注意!
|
||||
gui.nc.config.quantum_max_qubits_code=最大编程用量子位数量
|
||||
@ -3211,8 +3209,8 @@ nuclearcraft.multiblock_validation.turbine.space_between_blades=叶片和定子
|
||||
nuclearcraft.multiblock_validation.turbine.different_type_blades=每个转子轴上四个面所对应的叶片和定子必须完全相同。
|
||||
nuclearcraft.multiblock_validation.turbine.missing_blades=每个转子轴上四个面所对应的叶片和定子必须完全搭建到墙壁。
|
||||
|
||||
nuclearcraft.multiblock_validation.quantum_computer.server_disabled=服务端配置文件允许时,量子计算机才能正常工作。
|
||||
nuclearcraft.multiblock_validation.quantum_computer.too_many_qubits=现在有 %s 个量子位连接到了这个量子计算机上——最多只能有 %s 个。
|
||||
nuclearcraft.multiblock_validation.quantum_computer.too_many_qubits=最多只能有一个代码生成器连接到这个量子计算机上。
|
||||
|
||||
nuclearcraft.collector.jei_name=收集器
|
||||
nuclearcraft.multiblock_gui.fission_moderator.jei_name=裂变减速剂
|
||||
|
||||
8
todo.txt
8
todo.txt
@ -1,8 +1,12 @@
|
||||
Radiation text colours config
|
||||
Optional minimum and maximum N/t for irradiator recipes
|
||||
Isotope + fuel script addon CT helper methods
|
||||
|
||||
Radiation level colours config
|
||||
#suggestions (May 29)
|
||||
|
||||
Move fission recipe stat multipliers to logic (instead of recipe addition)
|
||||
|
||||
Fix shield lag issue
|
||||
|
||||
Read Pu + Fatmice neutron poison discussion (+ "Technically, almost all of the neutron poisons were removed with the spent fuel")
|
||||
Reduce neutron poison lifetime
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user