aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/github/technus/tectech/TecTech.java2
-rw-r--r--src/main/java/com/github/technus/tectech/compatibility/dreamcraft/DreamCraftRecipeLoader.java27
-rw-r--r--src/main/java/com/github/technus/tectech/loader/TecTechConfig.java146
-rw-r--r--src/main/java/com/github/technus/tectech/loader/recipe/BloodyRecipeLoader.java22
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/spark/ThaumSpark.java29
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/tesla/ITeslaConnectable.java127
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/tesla/ITeslaConnectableSimple.java22
-rw-r--r--src/main/java/com/github/technus/tectech/thing/CustomItemList.java2
-rw-r--r--src/main/java/com/github/technus/tectech/thing/casing/GT_Block_CasingsBA0.java37
-rw-r--r--src/main/java/com/github/technus/tectech/thing/casing/GT_Item_CasingsBA0.java4
-rw-r--r--src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_TeslaCoil.java75
-rw-r--r--src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_TeslaCoil_Ultimate.java12
-rw-r--r--src/main/java/com/github/technus/tectech/thing/item/TeslaCoilCapacitor.java14
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_Capacitor.java18
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_teslaCoil.java595
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/single/GT_MetaTileEntity_TeslaCoil.java272
16 files changed, 850 insertions, 554 deletions
diff --git a/src/main/java/com/github/technus/tectech/TecTech.java b/src/main/java/com/github/technus/tectech/TecTech.java
index 47a3b576b1..809a7e877d 100644
--- a/src/main/java/com/github/technus/tectech/TecTech.java
+++ b/src/main/java/com/github/technus/tectech/TecTech.java
@@ -78,7 +78,7 @@ public class TecTech {
LOGGER.error(Reference.MODID + " could not load its config file. Things are going to be weird!");
}
- if (configTecTech.modAdminErrorLogs) {
+ if (configTecTech.MOD_ADMIN_ERROR_LOGS) {
LOGGER.setDebugOutput(DEBUG_MODE);
LOGGER.debug("moduleAdminErrorLogs is enabled");
moduleAdminErrorLogs = new IngameErrorLog();
diff --git a/src/main/java/com/github/technus/tectech/compatibility/dreamcraft/DreamCraftRecipeLoader.java b/src/main/java/com/github/technus/tectech/compatibility/dreamcraft/DreamCraftRecipeLoader.java
index 8047efe5a3..df5c11e67b 100644
--- a/src/main/java/com/github/technus/tectech/compatibility/dreamcraft/DreamCraftRecipeLoader.java
+++ b/src/main/java/com/github/technus/tectech/compatibility/dreamcraft/DreamCraftRecipeLoader.java
@@ -224,7 +224,12 @@ public class DreamCraftRecipeLoader implements Runnable {
GT_Values.RA.addAssemblerRecipe(new ItemStack[]{
GT_OreDictUnificator.get(OrePrefixes.wireGt02, Materials.SuperconductorLuV, 8),
getItemContainer("MicaInsulatorFoil").get(28)
- }, Materials.Indium.getMolten(144), CustomItemList.tM_TeslaPrimary_5.get(1), 50, 30720);
+ }, Materials.Indium.getMolten(144), CustomItemList.tM_TeslaPrimary_5.get(1), 200, 30720);
+ //Tesla Primary Coils T6
+ GT_Values.RA.addAssemblerRecipe(new ItemStack[]{
+ GT_OreDictUnificator.get(OrePrefixes.wireGt02, Materials.SuperconductorZPM, 8),
+ getItemContainer("MicaInsulatorFoil").get(32)
+ }, Materials.Naquadah.getMolten(144), CustomItemList.tM_TeslaPrimary_6.get(1), 200, 122880);
//endregion
@@ -1619,6 +1624,20 @@ public class DreamCraftRecipeLoader implements Runnable {
GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Aluminium, 24),
GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Silicone, 24),
}, Materials.Epoxid.getMolten(360), CustomItemList.teslaCapacitor.getWithDamage(1, 4), 320, 7680);
+ //LuV Tesla Capacitor
+ GT_Values.RA.addAssemblerRecipe(new ItemStack[]{
+ GT_OreDictUnificator.get(OrePrefixes.cableGt01, Materials.HSSG, 4),
+ GT_OreDictUnificator.get(OrePrefixes.itemCasing, Materials.BatteryAlloy, 14),
+ GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Aluminium, 28),
+ GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Silicone, 28),
+ }, Materials.Epoxid.getMolten(432), CustomItemList.teslaCapacitor.getWithDamage(1, 5), 320, 30720);
+ //ZPM Tesla Capacitor
+ GT_Values.RA.addAssemblerRecipe(new ItemStack[]{
+ GT_OreDictUnificator.get(OrePrefixes.cableGt01, Materials.Naquadah, 4),
+ GT_OreDictUnificator.get(OrePrefixes.itemCasing, Materials.BatteryAlloy, 16),
+ GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Aluminium, 32),
+ GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Silicone, 32),
+ }, Materials.Epoxid.getMolten(504), CustomItemList.teslaCapacitor.getWithDamage(1, 6), 320, 122880);
//Tesla Cover
GT_Values.RA.addAssemblerRecipe(new ItemStack[]{
CustomItemList.teslaComponent.getWithDamage(4, 0),
@@ -1683,6 +1702,12 @@ public class DreamCraftRecipeLoader implements Runnable {
//IV Tesla Capacitor
GT_Values.RA.addExtractorRecipe(CustomItemList.teslaCapacitor.getWithDamage(1, 4),
GT_OreDictUnificator.get(OrePrefixes.itemCasing, Materials.BatteryAlloy, 12), 300, 2);
+ //LuV Tesla Capacitor
+ GT_Values.RA.addExtractorRecipe(CustomItemList.teslaCapacitor.getWithDamage(1, 5),
+ GT_OreDictUnificator.get(OrePrefixes.itemCasing, Materials.BatteryAlloy, 14), 300, 2);
+ //ZPM Tesla Capacitor
+ GT_Values.RA.addExtractorRecipe(CustomItemList.teslaCapacitor.getWithDamage(1, 6),
+ GT_OreDictUnificator.get(OrePrefixes.itemCasing, Materials.BatteryAlloy, 16), 300, 2);
//endregion
diff --git a/src/main/java/com/github/technus/tectech/loader/TecTechConfig.java b/src/main/java/com/github/technus/tectech/loader/TecTechConfig.java
index 0c2920e585..66e549ddb1 100644
--- a/src/main/java/com/github/technus/tectech/loader/TecTechConfig.java
+++ b/src/main/java/com/github/technus/tectech/loader/TecTechConfig.java
@@ -9,87 +9,132 @@ public class TecTechConfig extends ConfigManager {
super(pConfigBaseDirectory, pModCollectionDirectory, pModID);
}
- public boolean modAdminErrorLogs;
-
//final static to allow compiler to remove the debug code when this is false
public static boolean DEBUG_MODE = false;
+ public boolean DISABLE_MATERIAL_LOADING_FFS;
+
public boolean BOOM_ENABLE;
+ public boolean DISABLE_BLOCK_HARDNESS_NERF;
public boolean EASY_SCAN;
public boolean NERF_FUSION;
public boolean ENABLE_TURRET_EXPLOSIONS;
- public boolean DISABLE_MATERIAL_LOADING_FFS;
- public boolean DISABLE_BLOCK_HARDNESS_NERF;
public float TURRET_DAMAGE_FACTOR;
public float TURRET_EXPLOSION_FACTOR;
- public float TESLA_MULTI_MIN_EFFICIENCY;
- public float TESLA_MULTI_MAX_EFFICIENCY;
- public float TESLA_MULTI_OVERDRIVE_LOSS;
- public float TESLA_SINGLE_MIN_EFFICIENCY;
- public float TESLA_SINGLE_MAX_EFFICIENCY;
- public float TESLA_SINGLE_OVERDRIVE_LOSS;
+ public boolean MOD_ADMIN_ERROR_LOGS;
+ public boolean TESLA_MULTI_GAS_OUTPUT;
+ public float TESLA_MULTI_LOSS_FACTOR_OVERDRIVE;
+ public int TESLA_MULTI_LOSS_PER_BLOCK_T0;
+ public int TESLA_MULTI_LOSS_PER_BLOCK_T1;
+ public int TESLA_MULTI_LOSS_PER_BLOCK_T2;
+ public int TESLA_MULTI_PLASMA_PER_SECOND_T1_HELIUM;
+ public int TESLA_MULTI_PLASMA_PER_SECOND_T1_NITROGEN;
+ public int TESLA_MULTI_PLASMA_PER_SECOND_T2_RADON;
+ public int TESLA_MULTI_RANGE_COEFFICIENT_PLASMA_T1;
+ public int TESLA_MULTI_RANGE_COEFFICIENT_PLASMA_T2;
+ public int TESLA_MULTI_RANGE_COVER;
+ public int TESLA_MULTI_RANGE_TOWER;
+ public int TESLA_MULTI_RANGE_TRANSCEIVER;
+ public float TESLA_SINGLE_LOSS_FACTOR_OVERDRIVE;
+ public int TESLA_SINGLE_LOSS_PER_BLOCK;
+ public int TESLA_SINGLE_RANGE;
/**
* This loading phases do not correspond to mod loading phases!
*/
@Override
protected void PreInit() {
- modAdminErrorLogs = false;
- EASY_SCAN = false;
+ DISABLE_MATERIAL_LOADING_FFS = false;
+
BOOM_ENABLE = true;
- NERF_FUSION = false;
DISABLE_BLOCK_HARDNESS_NERF = false;
+ EASY_SCAN = false;
+ NERF_FUSION = false;
ENABLE_TURRET_EXPLOSIONS = true;
- DISABLE_MATERIAL_LOADING_FFS = false;
TURRET_DAMAGE_FACTOR = 10;
TURRET_EXPLOSION_FACTOR = 1;
- TESLA_MULTI_MIN_EFFICIENCY = 0.955F;
- TESLA_MULTI_MAX_EFFICIENCY = 0.98F;
- TESLA_MULTI_OVERDRIVE_LOSS = 0.005F;
- TESLA_SINGLE_MIN_EFFICIENCY = 0.91F;
- TESLA_SINGLE_MAX_EFFICIENCY = 0.95F;
- TESLA_SINGLE_OVERDRIVE_LOSS = 0.010F;
- }
+ MOD_ADMIN_ERROR_LOGS = false;
+
+ TESLA_MULTI_GAS_OUTPUT = false;
+ TESLA_MULTI_LOSS_FACTOR_OVERDRIVE = 0.25F;
+ TESLA_MULTI_LOSS_PER_BLOCK_T0 = 1;
+ TESLA_MULTI_LOSS_PER_BLOCK_T1 = 1;
+ TESLA_MULTI_LOSS_PER_BLOCK_T2 = 1;
+ TESLA_MULTI_PLASMA_PER_SECOND_T1_HELIUM = 100;
+ TESLA_MULTI_PLASMA_PER_SECOND_T1_NITROGEN = 50;
+ TESLA_MULTI_PLASMA_PER_SECOND_T2_RADON = 50;
+ TESLA_MULTI_RANGE_COEFFICIENT_PLASMA_T1 = 2;
+ TESLA_MULTI_RANGE_COEFFICIENT_PLASMA_T2 = 4;
+ TESLA_MULTI_RANGE_COVER = 16;
+ TESLA_MULTI_RANGE_TOWER = 32;
+ TESLA_MULTI_RANGE_TRANSCEIVER = 16;
+ TESLA_SINGLE_LOSS_FACTOR_OVERDRIVE = 0.25F;
+ TESLA_SINGLE_LOSS_PER_BLOCK = 1;
+ TESLA_SINGLE_RANGE = 20;
+ }
/**
* This loading phases do not correspond to mod loading phases!
*/
@Override
protected void Init() {
- modAdminErrorLogs = _mainConfig.getBoolean("AdminErrorLog", "Modules", modAdminErrorLogs,
- "If set to true, every op/admin will receive all errors occurred during the startup phase as in game message on join");
- DEBUG_MODE = _mainConfig.getBoolean("DebugMode", "Debug", DEBUG_MODE,
+ DEBUG_MODE = _mainConfig.getBoolean("DebugMode", "debug", DEBUG_MODE,
"Enables logging and other purely debug features");
- EASY_SCAN = _mainConfig.getBoolean("EasyScan", "Features", EASY_SCAN,
- "Enables tricorder to scan EM i/o hatches directly, too CHEEKY");
- BOOM_ENABLE = _mainConfig.getBoolean("BoomEnable", "Features", BOOM_ENABLE,
+ DISABLE_MATERIAL_LOADING_FFS = _mainConfig.getBoolean("DisableMaterialLoading", "debug",
+ DISABLE_MATERIAL_LOADING_FFS, "Set to true to disable gregtech material processing");
+
+ BOOM_ENABLE = _mainConfig.getBoolean("BoomEnable", "features", BOOM_ENABLE,
"Set to false to disable explosions on everything bad that you can do");
- NERF_FUSION = _mainConfig.getBoolean("NerfFusion", "Features", NERF_FUSION,
+ DISABLE_BLOCK_HARDNESS_NERF = _mainConfig.getBoolean("DisableBlockHardnessNerf", "features",
+ DISABLE_BLOCK_HARDNESS_NERF, "Set to true to disable the block hardness nerf");
+ EASY_SCAN = _mainConfig.getBoolean("EasyScan", "features", EASY_SCAN,
+ "Enables tricorder to scan EM i/o hatches directly, too CHEEKY");
+ NERF_FUSION = _mainConfig.getBoolean("NerfFusion", "features", NERF_FUSION,
"Set to true to enable removal of plasmas heavier than Fe and other weird ones");
- ENABLE_TURRET_EXPLOSIONS = _mainConfig.getBoolean("TurretBoomEnable", "Features", ENABLE_TURRET_EXPLOSIONS,
- "Set to false to disable explosions caused by EM turrets");
- TURRET_DAMAGE_FACTOR = _mainConfig.getFloat("TurretDamageFactor", "Features", TURRET_DAMAGE_FACTOR, 0, Short.MAX_VALUE,
- "Damage is multiplied by this number");
- TURRET_EXPLOSION_FACTOR = _mainConfig.getFloat("TurretExplosionFactor", "Features", TURRET_EXPLOSION_FACTOR, 0, Short.MAX_VALUE,
- "Explosion strength is multiplied by this number");
- DISABLE_BLOCK_HARDNESS_NERF = _mainConfig.getBoolean("DisableBlockHardnessNerf", "Features", DISABLE_BLOCK_HARDNESS_NERF,
- "Set to true to disable the block hardness nerf");
- DISABLE_MATERIAL_LOADING_FFS = _mainConfig.getBoolean("DisableMaterialLoading", "Debug", DISABLE_MATERIAL_LOADING_FFS,
- "Set to true to disable gregtech material processing");
- TESLA_MULTI_MIN_EFFICIENCY = _mainConfig.getFloat("teslaMultiMinEfficency", "Features", TESLA_MULTI_MIN_EFFICIENCY, 0, 1,
- "Worst possible power loss per block for the multi block tesla");
- TESLA_MULTI_MAX_EFFICIENCY = _mainConfig.getFloat("teslaMultiMaxEfficency", "Features", TESLA_MULTI_MAX_EFFICIENCY, 0, 1,
- "Best possible power loss per block for the multi block tesla");
- TESLA_MULTI_OVERDRIVE_LOSS = _mainConfig.getFloat("teslaMultiOverdriveLoss", "Features", TESLA_MULTI_OVERDRIVE_LOSS, 0, 1,
- "Additional losses for overdrive use on the multi block tesla");
- TESLA_SINGLE_MIN_EFFICIENCY = _mainConfig.getFloat("teslaSingleMinEfficency", "Features", TESLA_SINGLE_MIN_EFFICIENCY, 0, 1,
- "Worst possible power loss per block for the single block tesla");
- TESLA_SINGLE_MAX_EFFICIENCY = _mainConfig.getFloat("teslaSingleMaxEfficency", "Features", TESLA_SINGLE_MAX_EFFICIENCY, 0, 1,
- "Best possible power loss per block for the single block tesla");
- TESLA_SINGLE_OVERDRIVE_LOSS = _mainConfig.getFloat("teslaSingleOverdriveLoss", "Features", TESLA_SINGLE_OVERDRIVE_LOSS, 0, 1,
- "Additional losses for overdrive use on the single block tesla");
+ ENABLE_TURRET_EXPLOSIONS = _mainConfig.getBoolean("TurretBoomEnable", "features",
+ ENABLE_TURRET_EXPLOSIONS, "Set to false to disable explosions caused by EM turrets");
+ TURRET_DAMAGE_FACTOR = _mainConfig.getFloat("TurretDamageFactor", "features", TURRET_DAMAGE_FACTOR,
+ 0, Short.MAX_VALUE, "Damage is multiplied by this number");
+ TURRET_EXPLOSION_FACTOR = _mainConfig.getFloat("TurretExplosionFactor", "features",
+ TURRET_EXPLOSION_FACTOR, 0, Short.MAX_VALUE, "Explosion strength is multiplied by this number");
+
+ MOD_ADMIN_ERROR_LOGS = _mainConfig.getBoolean("AdminErrorLog", "modules", MOD_ADMIN_ERROR_LOGS,
+ "If set to true, every op/admin will receive all errors occurred during the startup phase as in game message on join");
+
+ TESLA_MULTI_GAS_OUTPUT = _mainConfig.getBoolean("TeslaMultiGasOutput", "tesla_tweaks",
+ TESLA_MULTI_GAS_OUTPUT, "Set to true to enable outputting plasmas as gasses from the tesla tower with a 1:1 ratio");
+ TESLA_MULTI_LOSS_FACTOR_OVERDRIVE = _mainConfig.getFloat("TeslaMultiLossFactorOverdrive", "tesla_tweaks",
+ TESLA_MULTI_LOSS_FACTOR_OVERDRIVE, 0, 1, "Additional Tesla Tower power loss per amp as a factor of the tier voltage");
+ TESLA_MULTI_LOSS_PER_BLOCK_T0 = _mainConfig.getInt("TeslaMultiLossPerBlockT0", "tesla_tweaks",
+ TESLA_MULTI_LOSS_PER_BLOCK_T0, 0, Integer.MAX_VALUE, "Tesla Tower power transmission loss per block per amp using no plasmas");
+ TESLA_MULTI_LOSS_PER_BLOCK_T1 = _mainConfig.getInt("TeslaMultiLossPerBlockT1", "tesla_tweaks",
+ TESLA_MULTI_LOSS_PER_BLOCK_T1, 0, Integer.MAX_VALUE, "Tesla Tower power transmission loss per block per amp using helium or nitrogen plasma");
+ TESLA_MULTI_LOSS_PER_BLOCK_T2 = _mainConfig.getInt("TeslaMultiLossPerBlockT2", "tesla_tweaks",
+ TESLA_MULTI_LOSS_PER_BLOCK_T2, 0, Integer.MAX_VALUE, "Tesla Tower power transmission loss per block per amp using radon plasma");
+ TESLA_MULTI_PLASMA_PER_SECOND_T1_HELIUM = _mainConfig.getInt("TeslaMultiPlasmaPerSecondT1Helium",
+ "tesla_tweaks", TESLA_MULTI_PLASMA_PER_SECOND_T1_HELIUM, 0, Integer.MAX_VALUE, "Tesla Tower helium plasma consumed each second the tesla tower is active");
+ TESLA_MULTI_PLASMA_PER_SECOND_T1_NITROGEN = _mainConfig.getInt("TeslaMultiPlasmaPerSecondT1Nitrogen",
+ "tesla_tweaks", TESLA_MULTI_PLASMA_PER_SECOND_T1_NITROGEN, 0, Integer.MAX_VALUE, "Tesla Tower nitrogen plasma consumed each second the tesla tower is active");
+ TESLA_MULTI_PLASMA_PER_SECOND_T2_RADON = _mainConfig.getInt("TeslaMultiPlasmaPerSecondT2Radon",
+ "tesla_tweaks", TESLA_MULTI_PLASMA_PER_SECOND_T2_RADON, 0, Integer.MAX_VALUE, "Tesla Tower radon plasma consumed each second the tesla tower is active");
+ TESLA_MULTI_RANGE_COEFFICIENT_PLASMA_T1 = _mainConfig.getInt("TeslaMultiRangeCoefficientPlasmaT1",
+ "tesla_tweaks", TESLA_MULTI_RANGE_COEFFICIENT_PLASMA_T1, 0, Integer.MAX_VALUE, "Tesla Tower T1 Plasmas Range Multiplier");
+ TESLA_MULTI_RANGE_COEFFICIENT_PLASMA_T2 = _mainConfig.getInt("TeslaMultiRangeCoefficientPlasmaT2",
+ "tesla_tweaks", TESLA_MULTI_RANGE_COEFFICIENT_PLASMA_T2, 0, Integer.MAX_VALUE, "Tesla Tower T2 Plasmas Range Multiplier");
+ TESLA_MULTI_RANGE_COVER = _mainConfig.getInt("TeslaMultiRangeCover", "tesla_tweaks",
+ TESLA_MULTI_RANGE_COVER, 0, Integer.MAX_VALUE, "Tesla Tower to Tesla Coil Rich Edition Cover max range");
+ TESLA_MULTI_RANGE_TOWER = _mainConfig.getInt("TeslaMultiRangeTower", "tesla_tweaks",
+ TESLA_MULTI_RANGE_TOWER, 0, Integer.MAX_VALUE, "Tesla Tower to Tower max range");
+ TESLA_MULTI_RANGE_TRANSCEIVER = _mainConfig.getInt("TeslaMultiRangeTransceiver", "tesla_tweaks",
+ TESLA_MULTI_RANGE_TRANSCEIVER, 0, Integer.MAX_VALUE, "Tesla Tower to Transceiver max range");
+ TESLA_SINGLE_LOSS_FACTOR_OVERDRIVE = _mainConfig.getFloat("TeslaSingleLossFactorOverdrive", "tesla_tweaks",
+ TESLA_SINGLE_LOSS_FACTOR_OVERDRIVE, 0, 1, "Additional Tesla Transceiver power loss per amp as a factor of the tier voltage");
+ TESLA_SINGLE_LOSS_PER_BLOCK = _mainConfig.getInt("TeslaSingleLossPerBlock", "tesla_tweaks",
+ TESLA_SINGLE_LOSS_PER_BLOCK, 0, Integer.MAX_VALUE, "Tesla Transceiver power transmission loss per block per amp");
+ TESLA_SINGLE_RANGE = _mainConfig.getInt("TeslaSingleRange", "tesla_tweaks",
+ TESLA_SINGLE_RANGE, 0, Integer.MAX_VALUE, "Tesla Transceiver to max range");
}
/**
@@ -97,6 +142,5 @@ public class TecTechConfig extends ConfigManager {
*/
@Override
protected void PostInit() {
-
}
}
diff --git a/src/main/java/com/github/technus/tectech/loader/recipe/BloodyRecipeLoader.java b/src/main/java/com/github/technus/tectech/loader/recipe/BloodyRecipeLoader.java
index 70f64d3719..7b8cc14f4d 100644
--- a/src/main/java/com/github/technus/tectech/loader/recipe/BloodyRecipeLoader.java
+++ b/src/main/java/com/github/technus/tectech/loader/recipe/BloodyRecipeLoader.java
@@ -191,6 +191,7 @@ public class BloodyRecipeLoader implements Runnable {
GT_ModHandler.RecipeBits.BUFFERED | GT_ModHandler.RecipeBits.NOT_REMOVABLE,
new Object[]{"WWW", "WwW", "WWW",
'W', OrePrefixes.wireGt02.get(Materials.Superconductor)});
+ //TODO Add Tesla Primary Coils T6
//endregion
@@ -1157,6 +1158,21 @@ public class BloodyRecipeLoader implements Runnable {
GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Aluminium, 24),
GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Silicone, 24),
}, Materials.Epoxid.getMolten(360), CustomItemList.teslaCapacitor.getWithDamage(1, 4), 320, 7680);
+ //LuV Tesla Capacitor
+ GT_Values.RA.addAssemblerRecipe(new ItemStack[]{
+ GT_OreDictUnificator.get(OrePrefixes.cableGt01, Materials.HSSG, 4),
+ GT_OreDictUnificator.get(OrePrefixes.plate, Materials.BatteryAlloy, 14),
+ GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Aluminium, 28),
+ GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Silicone, 28),
+ }, Materials.Epoxid.getMolten(432), CustomItemList.teslaCapacitor.getWithDamage(1, 5), 320, 30720);
+ //ZPM Tesla Capacitor
+ //GT_Values.RA.addAssemblerRecipe(new ItemStack[]{
+ // GT_OreDictUnificator.get(OrePrefixes.cableGt01, Materials.Naquadah, 4),
+ // GT_OreDictUnificator.get(OrePrefixes.plate, Materials.BatteryAlloy, 16),
+ // GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Aluminium, 32),
+ // GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Silicone, 32),
+ //}, Materials.Epoxid.getMolten(504), CustomItemList.teslaCapacitor.getWithDamage(1, 6), 320, 122880);
+ //TODO Allow with the coils, useless alone and will only cause trouble
//Tesla Cover
GT_Values.RA.addAssemblerRecipe(new ItemStack[]{
CustomItemList.teslaComponent.getWithDamage(4, 0),
@@ -1221,6 +1237,12 @@ public class BloodyRecipeLoader implements Runnable {
//IV Tesla Capacitor
GT_Values.RA.addExtractorRecipe(CustomItemList.teslaCapacitor.getWithDamage(1, 4),
GT_OreDictUnificator.get(OrePrefixes.plate, Materials.BatteryAlloy, 12), 300, 2);
+ //LuV Tesla Capacitor
+ GT_Values.RA.addExtractorRecipe(CustomItemList.teslaCapacitor.getWithDamage(1, 5),
+ GT_OreDictUnificator.get(OrePrefixes.plate, Materials.BatteryAlloy, 14), 300, 2);
+ //ZPM Tesla Capacitor
+ GT_Values.RA.addExtractorRecipe(CustomItemList.teslaCapacitor.getWithDamage(1, 6),
+ GT_OreDictUnificator.get(OrePrefixes.plate, Materials.BatteryAlloy, 16), 300, 2);
//endregion
diff --git a/src/main/java/com/github/technus/tectech/mechanics/spark/ThaumSpark.java b/src/main/java/com/github/technus/tectech/mechanics/spark/ThaumSpark.java
index 604624828c..e31e63f250 100644
--- a/src/main/java/com/github/technus/tectech/mechanics/spark/ThaumSpark.java
+++ b/src/main/java/com/github/technus/tectech/mechanics/spark/ThaumSpark.java
@@ -1,5 +1,7 @@
package com.github.technus.tectech.mechanics.spark;
+import com.github.technus.tectech.util.Vec3Impl;
+
import java.io.Serializable;
import java.util.Objects;
@@ -9,22 +11,10 @@ public class ThaumSpark implements Serializable {
public int x, y, z, wID;
public byte xR, yR, zR;
- public ThaumSpark(){
- this.x = 0;
- this.z = 0;
- this.y = 0;
-
- this.xR = 0;
- this.yR = 0;
- this.zR = 0;
-
- this.wID = 0;
- }
-
public ThaumSpark(int x, int y, int z, byte xR, byte yR, byte zR, int wID) {
this.x = x;
- this.z = z;
this.y = y;
+ this.z = z;
this.xR = xR;
this.yR = yR;
@@ -33,6 +23,19 @@ public class ThaumSpark implements Serializable {
this.wID = wID;
}
+ public ThaumSpark(Vec3Impl origin, Vec3Impl target, int wID) {
+ this.x = origin.get0();
+ this.y = origin.get1();
+ this.z = origin.get2();
+
+ Vec3Impl offset = target.sub(origin);
+ this.xR = (byte) offset.get0();
+ this.yR = (byte) offset.get1();
+ this.zR = (byte) offset.get2();
+
+ this.wID = wID;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
diff --git a/src/main/java/com/github/technus/tectech/mechanics/tesla/ITeslaConnectable.java b/src/main/java/com/github/technus/tectech/mechanics/tesla/ITeslaConnectable.java
new file mode 100644
index 0000000000..07ecc4bc31
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/mechanics/tesla/ITeslaConnectable.java
@@ -0,0 +1,127 @@
+package com.github.technus.tectech.mechanics.tesla;
+
+import com.github.technus.tectech.mechanics.spark.ThaumSpark;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+
+import static com.github.technus.tectech.util.Util.entriesSortedByValues;
+import static java.lang.Math.sqrt;
+
+public interface ITeslaConnectable extends ITeslaConnectableSimple {
+ //Map with all Teslas in the same dimension and the distance to them //TODO Range
+ Map<ITeslaConnectableSimple, Integer> teslaNodeMap = new HashMap<>();
+ //ThaumCraft lighting coordinate pairs, so we can send them in bursts and save on lag
+ HashSet<ThaumSpark> sparkList = new HashSet<>();
+
+ //-128 to -1 disables capability
+ //0 means any source or target
+ //1 to 127 must match on source and target or source/target must be 0
+ byte getTeslaTransmissionCapability();
+
+ //Transmission Range is typically 16+ in blocks
+ int getTeslaTransmissionRange();
+ boolean isOverdriveEnabled();
+
+ int getTeslaEnergyLossPerBlock();
+ float getTeslaOverdriveLossCoefficient();
+
+ long getTeslaOutputVoltage();
+ long getTeslaOutputCurrent();
+
+ boolean teslaDrainEnergy(long teslaVoltageDrained);
+
+ class TeslaUtil {
+ public static final HashSet<ITeslaConnectableSimple> teslaNodeSet = new HashSet<>();//Targets for power transmission
+
+ public static void generateTeslaNodeMap(ITeslaConnectable origin) {
+ origin.teslaNodeMap.clear();
+ for (ITeslaConnectableSimple target : teslaNodeSet) {
+ //Sanity checks
+ if (target == null) {
+ //The Tesla Covers do not remove themselves from the list and this is the code that does
+ teslaNodeSet.remove(null);
+ continue;
+ } else if (origin.equals(target) || !origin.getTeslaDimension().equals(target.getTeslaDimension())) {
+ //Skip if looking at myself and skip if not in the same dimension
+ //TODO, INTERDIM?
+ continue;
+ } else if (origin.getTeslaTransmissionCapability() != 0 && origin.getTeslaReceptionCapability() != 0 &&
+ origin.getTeslaTransmissionCapability() != origin.getTeslaReceptionCapability()) {
+ //Skip if incompatible
+ continue;
+ }
+
+ //Range calc
+ int distance = (int) sqrt(origin.getTeslaPosition().distanceSq(target.getTeslaPosition()));
+ if (distance > origin.getTeslaTransmissionRange() * target.getTeslaReceptionCoefficient()) {
+ //Skip if the range is too vast
+ continue;
+ }
+ origin.teslaNodeMap.put(target, distance);
+ }
+ }
+
+ public static void cleanTeslaNodeMap(ITeslaConnectable origin) {
+ //TODO Do we still need this?
+ for (ITeslaConnectableSimple target : origin.teslaNodeMap.keySet()) {
+ if (target == null) {
+ origin.teslaNodeMap.remove(null);
+ }
+ }
+ }
+
+ public static long powerTeslaNodeMap(ITeslaConnectable origin) {
+ //Teslas can only send OR receive
+ if (origin.isTeslaReadyToReceive()) {
+ return 0L;//TODO Negative values to indicate charging?
+ }
+ long remainingAmperes = origin.getTeslaOutputCurrent();
+ while (remainingAmperes > 0) {
+ long startingAmperes = remainingAmperes;
+ for (Map.Entry<ITeslaConnectableSimple, Integer> Rx : entriesSortedByValues(teslaNodeMap)) {
+ if (origin.getTeslaStoredEnergy() < (origin.isOverdriveEnabled() ? origin.getTeslaOutputVoltage() * 2 : origin.getTeslaOutputVoltage())) {
+ //Return and end the tick if we're out of energy to send
+ return origin.getTeslaOutputCurrent() - remainingAmperes;
+ }
+
+ ITeslaConnectableSimple target = Rx.getKey();
+ int distance = Rx.getValue();
+
+ //Calculate the voltage output
+ long outputVoltageInjectable;
+ long outputVoltageConsumption;
+
+ if (origin.isOverdriveEnabled()) {
+ outputVoltageInjectable = origin.getTeslaOutputVoltage();
+ outputVoltageConsumption = origin.getTeslaOutputVoltage() + (distance * origin.getTeslaEnergyLossPerBlock()) +
+ (long) Math.round(origin.getTeslaOutputVoltage() * origin.getTeslaOverdriveLossCoefficient());
+ } else {
+ outputVoltageInjectable = origin.getTeslaOutputVoltage() - (distance * origin.getTeslaEnergyLossPerBlock());
+ outputVoltageConsumption = origin.getTeslaOutputVoltage();
+ }
+
+ //Skip the target if the cost is too high
+ if (origin.getTeslaStoredEnergy() < outputVoltageConsumption) {
+ continue;
+ }
+
+ if (target.teslaInjectEnergy(outputVoltageInjectable)) {
+ origin.teslaDrainEnergy(outputVoltageConsumption);
+ sparkList.add(new ThaumSpark(origin.getTeslaPosition(), target.getTeslaPosition(), origin.getTeslaDimension()));
+ remainingAmperes--;
+ }
+ if (remainingAmperes == 0) {
+ return origin.getTeslaOutputCurrent();
+ }
+ }
+ //End the tick after one iteration with no transmissions
+ if (remainingAmperes == startingAmperes) {
+ return origin.getTeslaOutputCurrent() - remainingAmperes;
+ }
+ }
+ return origin.getTeslaOutputCurrent() - remainingAmperes;
+ }
+ }
+}
diff --git a/src/main/java/com/github/technus/tectech/mechanics/tesla/ITeslaConnectableSimple.java b/src/main/java/com/github/technus/tectech/mechanics/tesla/ITeslaConnectableSimple.java
new file mode 100644
index 0000000000..3b56b6968c
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/mechanics/tesla/ITeslaConnectableSimple.java
@@ -0,0 +1,22 @@
+package com.github.technus.tectech.mechanics.tesla;
+
+import com.github.technus.tectech.util.Vec3Impl;
+
+public interface ITeslaConnectableSimple {
+ //-128 to -1 disables capability
+ //0 means any source or target
+ //1 to 127 must match on source and target or source/target must be 0
+ byte getTeslaReceptionCapability();
+
+ //Reception Coefficient is a range extension, typical is 1
+ float getTeslaReceptionCoefficient();
+
+ boolean isTeslaReadyToReceive();
+
+ long getTeslaStoredEnergy();
+
+ boolean teslaInjectEnergy(long teslaVoltageInjected);
+
+ Vec3Impl getTeslaPosition();
+ Integer getTeslaDimension();
+}
diff --git a/src/main/java/com/github/technus/tectech/thing/CustomItemList.java b/src/main/java/com/github/technus/tectech/thing/CustomItemList.java
index 5265ad25c6..a86695ff4a 100644
--- a/src/main/java/com/github/technus/tectech/thing/CustomItemList.java
+++ b/src/main/java/com/github/technus/tectech/thing/CustomItemList.java
@@ -78,7 +78,7 @@ public enum CustomItemList implements IItemContainer {
eM_Containment, eM_Containment_Field, eM_Containment_Advanced, eM_Coil, eM_Teleportation, eM_Dimensional, eM_Ultimate_Containment, eM_Ultimate_Containment_Advanced, eM_Ultimate_Containment_Field, eM_Spacetime, eM_Computer_Casing, eM_Computer_Bus, eM_Computer_Vent, eM_Hollow, eM_Power,
debugBlock,
- tM_TeslaBase, tM_TeslaToroid, tM_TeslaSecondary, tM_TeslaPrimary_0, tM_TeslaPrimary_1, tM_TeslaPrimary_2, tM_TeslaPrimary_3, tM_TeslaPrimary_4, tM_TeslaPrimary_5,
+ tM_TeslaBase, tM_TeslaToroid, tM_TeslaSecondary, tM_TeslaPrimary_0, tM_TeslaPrimary_1, tM_TeslaPrimary_2, tM_TeslaPrimary_3, tM_TeslaPrimary_4, tM_TeslaPrimary_5, tM_TeslaPrimary_6,
Machine_Multi_Microwave, Machine_Multi_TeslaCoil,
Machine_Multi_Transformer,
diff --git a/src/main/java/com/github/technus/tectech/thing/casing/GT_Block_CasingsBA0.java b/src/main/java/com/github/technus/tectech/thing/casing/GT_Block_CasingsBA0.java
index 6d5bcd2b04..0d2f710ae9 100644
--- a/src/main/java/com/github/technus/tectech/thing/casing/GT_Block_CasingsBA0.java
+++ b/src/main/java/com/github/technus/tectech/thing/casing/GT_Block_CasingsBA0.java
@@ -23,8 +23,8 @@ import static com.github.technus.tectech.TecTech.tectechTexturePage1;
* Created by danie_000 on 03.10.2016.
*/
public class GT_Block_CasingsBA0 extends GT_Block_Casings_Abstract {
- public static final byte texturePage=tectechTexturePage1;
- public static final short textureOffset = (texturePage << 7)+16;//Start of PAGE 8 (which is the 9th page) (8*128)+16
+ public static final byte texturePage = tectechTexturePage1;
+ public static final short textureOffset = (texturePage << 7) + 16;//Start of PAGE 8 (which is the 9th page) (8*128)+16
private static IIcon[] tM0 = new IIcon[2];
private static IIcon[] tM1 = new IIcon[2];
@@ -35,11 +35,12 @@ public class GT_Block_CasingsBA0 extends GT_Block_Casings_Abstract {
private static IIcon[] tM6 = new IIcon[2];
private static IIcon tM7;
private static IIcon[] tM8 = new IIcon[2];
+ private static IIcon[] tM9 = new IIcon[2];
public GT_Block_CasingsBA0() {
super(GT_Item_CasingsBA0.class, "gt.blockcasingsBA0", GT_Material_Casings.INSTANCE);
for (byte b = 0; b < 16; b = (byte) (b + 1)) {
- Textures.BlockIcons.casingTexturePages[texturePage][b+16] = new GT_CopiedBlockTexture(this, 6, b);
+ Textures.BlockIcons.casingTexturePages[texturePage][b + 16] = new GT_CopiedBlockTexture(this, 6, b);
/*IMPORTANT for block recoloring**/
}
@@ -49,6 +50,7 @@ public class GT_Block_CasingsBA0 extends GT_Block_Casings_Abstract {
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".3.name", "EV Superconductor Primary Tesla Windings");
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".4.name", "IV Superconductor Primary Tesla Windings");
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".5.name", "LuV Superconductor Primary Tesla Windings");
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".9.name", "ZPM Superconductor Primary Tesla Windings");
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".6.name", "Tesla Base Casing");
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".7.name", "Tesla Toroid Casing");
@@ -60,6 +62,7 @@ public class GT_Block_CasingsBA0 extends GT_Block_Casings_Abstract {
CustomItemList.tM_TeslaPrimary_3.set(new ItemStack(this, 1, 3));
CustomItemList.tM_TeslaPrimary_4.set(new ItemStack(this, 1, 4));
CustomItemList.tM_TeslaPrimary_5.set(new ItemStack(this, 1, 5));
+ CustomItemList.tM_TeslaPrimary_6.set(new ItemStack(this, 1, 9));
CustomItemList.tM_TeslaBase.set(new ItemStack(this, 1, 6));
CustomItemList.tM_TeslaToroid.set(new ItemStack(this, 1, 7));
@@ -80,6 +83,8 @@ public class GT_Block_CasingsBA0 extends GT_Block_Casings_Abstract {
tM4[1] = aIconRegister.registerIcon("gregtech:iconsets/TM_TESLA_WINDING_PRIMARY_SIDES_4");
tM5[0] = aIconRegister.registerIcon("gregtech:iconsets/TM_TESLA_WINDING_PRIMARY_TOP_BOTTOM_5");
tM5[1] = aIconRegister.registerIcon("gregtech:iconsets/TM_TESLA_WINDING_PRIMARY_SIDES_5");
+ tM9[0] = aIconRegister.registerIcon("gregtech:iconsets/TM_TESLA_WINDING_PRIMARY_TOP_BOTTOM_6");
+ tM9[1] = aIconRegister.registerIcon("gregtech:iconsets/TM_TESLA_WINDING_PRIMARY_SIDES_6");
tM6[0] = aIconRegister.registerIcon("gregtech:iconsets/TM_TESLA_BASE_TOP_BOTTOM");
tM6[1] = aIconRegister.registerIcon("gregtech:iconsets/TM_TESLA_BASE_SIDES");
@@ -92,7 +97,7 @@ public class GT_Block_CasingsBA0 extends GT_Block_Casings_Abstract {
public IIcon getIcon(int aSide, int aMeta) {
switch (aMeta) {
case 0:
- switch (aSide){
+ switch (aSide) {
case 0:
case 1:
return tM0[0];
@@ -100,7 +105,7 @@ public class GT_Block_CasingsBA0 extends GT_Block_Casings_Abstract {