1
0
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.

39 changed files with 208 additions and 442 deletions

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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"));

View File

@ -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);

View File

@ -24,9 +24,7 @@ public class ScriptAddonHandler {
}
File scripts = new File("scripts/nc_script_addons");
if (scripts.exists()) {
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);
}
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) {

View File

@ -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");

View File

@ -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) {

View File

@ -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));
}
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));
}
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));
}
if (getFissionFuelSelfPriming()) {
tooltip.add(TextFormatting.DARK_AQUA + FUEL_SELF_PRIMING);
}

View File

@ -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 "";
}

View File

@ -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,33 +200,29 @@ 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;
}
}
}
}
if (amount < 0 || rule == null)
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);

View File

@ -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;

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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);

View File

@ -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);

View File

@ -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

View File

@ -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();

View File

@ -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

View File

@ -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();

View File

@ -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);
}
}
}

View File

@ -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

View File

@ -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) {

View File

@ -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;
}

View File

@ -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,21 +125,19 @@ 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;
}
}
}
}
if (amount < 0 || rule == null)
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);
}

View File

@ -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,17 +324,11 @@ 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);
}
}
if (RadWorlds.RAD_MAP.containsKey(dimension)) {
RadiationHelper.addToSourceBuffer(chunkSource, RadWorlds.RAD_MAP.get(dimension));

View File

@ -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

View File

@ -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();
}

View File

@ -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();

View File

@ -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());

View File

@ -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();
}

View File

@ -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();
}

View File

@ -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();
}

View File

@ -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;

View File

@ -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;
}
}
}

View File

@ -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;
}

View File

@ -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

View File

@ -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=裂变减速剂

View File

@ -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