aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBass <tudurap.com@gmail.com>2019-02-16 08:14:14 +0000
committerBass <tudurap.com@gmail.com>2019-02-16 08:14:14 +0000
commitee4bd9f91d4b8f85b550730aa1e3c63d91b3be2f (patch)
treed9177bdb474a4befe2cafc357f70207379dc6180 /src
parent14d4eef90b2fc83c81857de5b91a79a0d5f95299 (diff)
downloadGT5-Unofficial-ee4bd9f91d4b8f85b550730aa1e3c63d91b3be2f.tar.gz
GT5-Unofficial-ee4bd9f91d4b8f85b550730aa1e3c63d91b3be2f.tar.bz2
GT5-Unofficial-ee4bd9f91d4b8f85b550730aa1e3c63d91b3be2f.zip
Tesla WIP
Both types of tesla now map other teslas After talking to 0laf, I think a super high tier Tesla Cover for straight tower to machine transfers.
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/github/technus/tectech/loader/thing/CoverLoader.java6
-rw-r--r--src/main/java/com/github/technus/tectech/loader/thing/ThingsLoader.java1
-rw-r--r--src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_TeslaCoil.java2
-rw-r--r--src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_TeslaCoil_Ultimate.java8
-rw-r--r--src/main/java/com/github/technus/tectech/thing/item/TeslaCoilCoverUltimate.java36
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_teslaCoil.java178
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/single/GT_MetaTileEntity_TeslaCoil.java122
-rw-r--r--src/main/resources/assets/tectech/lang/en_US.lang1
-rw-r--r--src/main/resources/assets/tectech/lang/zh_CN.lang1
9 files changed, 210 insertions, 145 deletions
diff --git a/src/main/java/com/github/technus/tectech/loader/thing/CoverLoader.java b/src/main/java/com/github/technus/tectech/loader/thing/CoverLoader.java
index ca81427e03..e71489339e 100644
--- a/src/main/java/com/github/technus/tectech/loader/thing/CoverLoader.java
+++ b/src/main/java/com/github/technus/tectech/loader/thing/CoverLoader.java
@@ -3,15 +3,17 @@ package com.github.technus.tectech.loader.thing;
import com.github.technus.tectech.TecTech;
import com.github.technus.tectech.thing.cover.GT_Cover_TM_TeslaCoil;
+import com.github.technus.tectech.thing.cover.GT_Cover_TM_TeslaCoil_Ultimate;
import com.github.technus.tectech.thing.item.TeslaCoilCover;
+import com.github.technus.tectech.thing.item.TeslaCoilCoverUltimate;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Textures;
import gregtech.api.objects.GT_RenderedTexture;
import net.minecraft.item.ItemStack;
-
public class CoverLoader implements Runnable {
public void run(){
- GregTech_API.registerCover(new ItemStack(TeslaCoilCover.INSTANCE, 1), new GT_RenderedTexture(Textures.BlockIcons.VENT_ADVANCED), new GT_Cover_TM_TeslaCoil());
+ GregTech_API.registerCover(new ItemStack(TeslaCoilCover.INSTANCE, 1), new GT_RenderedTexture(Textures.BlockIcons.VENT_NORMAL), new GT_Cover_TM_TeslaCoil());
+ GregTech_API.registerCover(new ItemStack(TeslaCoilCoverUltimate.INSTANCE, 1), new GT_RenderedTexture(Textures.BlockIcons.VENT_ADVANCED), new GT_Cover_TM_TeslaCoil_Ultimate());
TecTech.LOGGER.info("Cover functionality registered");
}
}
diff --git a/src/main/java/com/github/technus/tectech/loader/thing/ThingsLoader.java b/src/main/java/com/github/technus/tectech/loader/thing/ThingsLoader.java
index e9967a3e62..6951ef6533 100644
--- a/src/main/java/com/github/technus/tectech/loader/thing/ThingsLoader.java
+++ b/src/main/java/com/github/technus/tectech/loader/thing/ThingsLoader.java
@@ -54,6 +54,7 @@ public class ThingsLoader implements Runnable {
TecTech.LOGGER.info("Reactor Simulator registered");
TeslaCoilCover.run();
+ TeslaCoilCoverUltimate.run();
TecTech.LOGGER.info("Covers Items registered");
ConstructableTriggerItem.run();
diff --git a/src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_TeslaCoil.java b/src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_TeslaCoil.java
index e1e1b9d595..bfb4ae9208 100644
--- a/src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_TeslaCoil.java
+++ b/src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_TeslaCoil.java
@@ -1,6 +1,6 @@
package com.github.technus.tectech.thing.cover;
-import gregtech.api.util.GT_CoverBehavior;
+ import gregtech.api.util.GT_CoverBehavior;
public class GT_Cover_TM_TeslaCoil extends GT_CoverBehavior {
public GT_Cover_TM_TeslaCoil() {
diff --git a/src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_TeslaCoil_Ultimate.java b/src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_TeslaCoil_Ultimate.java
new file mode 100644
index 0000000000..7ad6bc6f5f
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_TeslaCoil_Ultimate.java
@@ -0,0 +1,8 @@
+package com.github.technus.tectech.thing.cover;
+
+ import gregtech.api.util.GT_CoverBehavior;
+
+public class GT_Cover_TM_TeslaCoil_Ultimate extends GT_CoverBehavior {
+ public GT_Cover_TM_TeslaCoil_Ultimate() {
+ }
+} \ No newline at end of file
diff --git a/src/main/java/com/github/technus/tectech/thing/item/TeslaCoilCoverUltimate.java b/src/main/java/com/github/technus/tectech/thing/item/TeslaCoilCoverUltimate.java
new file mode 100644
index 0000000000..115f3a34c6
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/thing/item/TeslaCoilCoverUltimate.java
@@ -0,0 +1,36 @@
+package com.github.technus.tectech.thing.item;
+
+import com.github.technus.tectech.CommonValues;
+import cpw.mods.fml.common.registry.GameRegistry;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
+
+import java.util.List;
+
+import static com.github.technus.tectech.Reference.MODID;
+
+
+public final class TeslaCoilCoverUltimate extends Item {
+ public static TeslaCoilCoverUltimate INSTANCE;
+
+ public TeslaCoilCoverUltimate() {
+ setUnlocalizedName("tm.teslaCoilCoverUltimate");
+ setTextureName(MODID + ":itemParametrizerMemoryCardUnlocked");
+ }
+
+ @Override
+ public void addInformation(ItemStack aStack, EntityPlayer ep, List aList, boolean boo) {
+ aList.add(CommonValues.BASS_MARK);
+ aList.add("Tesla-Enables Machines! (BUT LOUDER!!)");
+ aList.add(EnumChatFormatting.BLUE + "Use on a machine to apply Tesla capabilities");
+ aList.add(EnumChatFormatting.BLUE + "Who the hell need cables anyway?");
+ }
+
+ public static void run() {
+ INSTANCE = new TeslaCoilCoverUltimate();
+ System.out.print(INSTANCE.getUnlocalizedName());
+ GameRegistry.registerItem(INSTANCE, INSTANCE.getUnlocalizedName());
+ }
+}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_teslaCoil.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_teslaCoil.java
index bb7c815416..926c5e5d30 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_teslaCoil.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_teslaCoil.java
@@ -1,6 +1,7 @@
package com.github.technus.tectech.thing.metaTileEntity.multi;
import com.github.technus.tectech.CommonValues;
+import com.github.technus.tectech.thing.cover.GT_Cover_TM_TeslaCoil_Ultimate;
import com.github.technus.tectech.thing.metaTileEntity.IConstructable;
import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_Capacitor;
import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_DynamoMulti;
@@ -20,7 +21,7 @@ import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
-import java.util.ArrayList;
+import java.util.*;
import static com.github.technus.tectech.CommonValues.V;
import static com.github.technus.tectech.Util.StructureBuilder;
@@ -45,8 +46,7 @@ public class GT_MetaTileEntity_TM_teslaCoil extends GT_MetaTileEntity_Multiblock
private int scanTimeMin = 100; //Min scan time in ticks
private int scanTimeTill = scanTimeMin; //Set default scan time
- private ArrayList<GT_MetaTileEntity_TeslaCoil> eTeslaList = new ArrayList<>(); //Makes a list of Smol Teslas
- private ArrayList<GT_MetaTileEntity_TM_teslaCoil> eTeslaTowerList = new ArrayList<>(); //Makes a list for BIGG Teslas
+ private Map<IGregTechTileEntity, Integer> eTeslaMap = new HashMap<IGregTechTileEntity, Integer>();//Tesla Map to map them tesla bois!
private float histLow = 0.25F; //Power pass is disabled if power is under this fraction
private float histHigh = 0.75F; //Power pass is enabled if power is over this fraction
@@ -54,8 +54,11 @@ public class GT_MetaTileEntity_TM_teslaCoil extends GT_MetaTileEntity_Multiblock
private float histLowLimit = 0.05F; //How low can you configure it?
private float histHighLimit = 0.95F; //How high can you configure it?
- private int scanRadius = 64; //Radius for small to tower transfers
- private int scanRadiusTower = scanRadius * 2; //Radius for tower to tower transfers
+ private int scanRadius = 64; //Tesla scan radius
+
+ private int transferRadiusTower = 32; //Radius for tower to tower transfers
+ private int transferRadiusTransceiver = 16; //Radius for tower to transceiver transfers
+ private int transferRadiusCoverUltimate = 16; //Radius for tower to ultimate cover transfers
private long outputVoltage = 512; //Tesla Voltage Output
private long outputCurrent = 1; //Tesla Current Output
@@ -68,12 +71,27 @@ public class GT_MetaTileEntity_TM_teslaCoil extends GT_MetaTileEntity_Multiblock
private long histLowParam = 0;
private long histHighParam = 0;
private long histScaleParam = 0;
- private int scanRadiusParam = 0;
- private int scanRadiusTowerParam = 0;
+ private int transferRadiusTowerParam = 0;
+ private int transferRadiusTransceiverParam = 0;
+ private int transferRadiusCoverUltimateParam = 0;
private long outputVoltageParam = 0;
private long outputCurrentParam = 0;
private int scanTimeMinParam = 0;
+ static <K, V extends Comparable<? super V>> SortedSet<Map.Entry<K, V>> entriesSortedByValues(Map<K, V> map) {
+ SortedSet<Map.Entry<K, V>> sortedEntries = new TreeSet<Map.Entry<K, V>>(
+ new Comparator<Map.Entry<K, V>>() {
+ @Override
+ public int compare(Map.Entry<K, V> e1, Map.Entry<K, V> e2) {
+ int res = e1.getValue().compareTo(e2.getValue());
+ return res != 0 ? res : 1; // Special fix to preserve items with equal values
+ }
+ }
+ );
+ sortedEntries.addAll(map.entrySet());
+ return sortedEntries;
+ }
+
//region structure
private static final String[][] shape0 = new String[][]{//3 16 0
{"\u000F", "A . ",},
@@ -295,8 +313,9 @@ public class GT_MetaTileEntity_TM_teslaCoil extends GT_MetaTileEntity_Multiblock
histLowParam = 0;
histHighParam = 0;
histScaleParam = 0;
- scanRadiusParam = 0;
- scanRadiusTowerParam = 0;
+ transferRadiusTowerParam = 0;
+ transferRadiusTransceiverParam = 0;
+ transferRadiusCoverUltimateParam = 0;
outputVoltageParam = 0;
outputCurrentParam = 0;
scanTimeMin = 0;
@@ -344,55 +363,24 @@ public class GT_MetaTileEntity_TM_teslaCoil extends GT_MetaTileEntity_Multiblock
scanTime++;
if (scanTime >= scanTimeTill) {
scanTime = 0;
-
- scanRadius = 64; //TODO Generate depending on power stored
- eTeslaList.clear();
-
- if (parametrized && scanRadiusParam > 0 && scanRadiusParam < scanRadius) {
- scanRadius = scanRadiusParam;
- }
+ eTeslaMap.clear();
for (int xPosOffset = -scanRadius; xPosOffset <= scanRadius; xPosOffset++) {
- for (int yPosOffset = -scanRadius; yPosOffset <= scanRadius; yPosOffset++) {
- for (int zPosOffset = -scanRadius; zPosOffset <= scanRadius; zPosOffset++) {
- if (xPosOffset == 0 && yPosOffset == 0 && zPosOffset == 0){
+ for (int yPosOffset = -scanRadius; yPosOffset <= scanRadius; yPosOffset++) {
+ for (int zPosOffset = -scanRadius; zPosOffset <= scanRadius; zPosOffset++) {
+ if (xPosOffset == 0 && yPosOffset == 0 && zPosOffset == 0) {
continue;
}
IGregTechTileEntity node = mte.getIGregTechTileEntityOffset(xPosOffset, yPosOffset, zPosOffset);
- if (node == null) {
- continue;
- }
- IMetaTileEntity nodeInside = node.getMetaTileEntity();
- if (nodeInside instanceof GT_MetaTileEntity_TeslaCoil){
- eTeslaList.add((GT_MetaTileEntity_TeslaCoil) nodeInside);
- }
- }
- }
- }
-
- scanRadiusTower = scanRadius * 2;
- eTeslaTowerList.clear();
-
- if (parametrized && scanRadiusTowerParam > 0 && scanRadiusTowerParam < scanRadiusTower) {
- scanRadiusTower = scanRadiusTowerParam;
- }
-
- for (int xPosOffset = -scanRadiusTower; xPosOffset <= scanRadiusTower; xPosOffset++) {
- for (int yPosOffset = -scanRadiusTower; yPosOffset <= scanRadiusTower; yPosOffset++) {
- for (int zPosOffset = -scanRadiusTower; zPosOffset <= scanRadiusTower; zPosOffset++) {
- if (xPosOffset == 0 && yPosOffset == 0 && zPosOffset == 0){
+ if (node == null) {
continue;
}
- IGregTechTileEntity node = mte.getIGregTechTileEntityOffset(xPosOffset, yPosOffset, zPosOffset);
- if (node == null) {
- continue;
- }
- IMetaTileEntity nodeInside = node.getMetaTileEntity();
- if (nodeInside instanceof GT_MetaTileEntity_TM_teslaCoil && node.isActive()){
- eTeslaTowerList.add((GT_MetaTileEntity_TM_teslaCoil) nodeInside);
- }
- }
- }
+ IMetaTileEntity nodeInside = node.getMetaTileEntity();
+ if (nodeInside instanceof GT_MetaTileEntity_TeslaCoil || nodeInside instanceof GT_MetaTileEntity_TM_teslaCoil && node.isActive() || (node.getCoverBehaviorAtSide((byte) 1) instanceof GT_Cover_TM_TeslaCoil_Ultimate)) {
+ eTeslaMap.put(node, (int) Math.ceil(Math.sqrt(xPosOffset * xPosOffset + yPosOffset * yPosOffset + zPosOffset * zPosOffset)));
+ }
+ }
+ }
}
}
@@ -402,50 +390,80 @@ public class GT_MetaTileEntity_TM_teslaCoil extends GT_MetaTileEntity_Multiblock
outputCurrent = 1;//TODO Generate depending on count of capacitors
if (parametrized && outputVoltageParam > 0 && outputVoltage > outputVoltageParam){
- outputVoltage = outputVoltageParam;}
+ outputVoltage = outputVoltageParam;
+ }
if (parametrized && outputCurrentParam > 0 && outputCurrent > outputCurrentParam){
- outputCurrent = outputCurrentParam;}
+ outputCurrent = outputCurrentParam;
+ }
outputEuT = outputVoltage * outputCurrent;
- long requestedSumEU = 0;
+ transferRadiusTower = 32; //TODO generate based on power stored
+ transferRadiusTransceiver = 16; //TODO generate based on power stored
+ transferRadiusCoverUltimate = 16; //TODO generate based on power stored
- //Clean the Smol Tesla list
- for (GT_MetaTileEntity_TeslaCoil Rx : eTeslaList.toArray(new GT_MetaTileEntity_TeslaCoil[eTeslaList.size()])) {
- try {
- requestedSumEU += Rx.maxEUStore() - Rx.getEUVar();
- } catch (Exception e) {
- eTeslaList.remove(Rx);
- }
+ if(parametrized && transferRadiusTowerParam > 0 && transferRadiusTowerParam < transferRadiusTower){
+ transferRadiusTower = transferRadiusTowerParam;
}
- //Clean the large tesla list
- for (GT_MetaTileEntity_TM_teslaCoil Rx : eTeslaTowerList.toArray(new GT_MetaTileEntity_TM_teslaCoil[eTeslaTowerList.size()])) {
- try {
- requestedSumEU += Rx.maxEUStore() - Rx.getEUVar();
- } catch (Exception e) {
- eTeslaTowerList.remove(Rx);
- }
+ if(parametrized && transferRadiusTransceiverParam > 0 && transferRadiusTransceiverParam < transferRadiusTransceiver){
+ transferRadiusTransceiver = transferRadiusTransceiverParam;
}
- //Try to send EU to the smol teslas
- for (GT_MetaTileEntity_TeslaCoil Rx : eTeslaList) {
- if (!Rx.powerPassToggle) {
- long euTran = outputVoltage;
- if (Rx.getBaseMetaTileEntity().injectEnergyUnits((byte)6, euTran, 1L) > 0L) {
- setEUVar(getEUVar() - euTran);
+ if(parametrized && transferRadiusCoverUltimateParam > 0 && transferRadiusCoverUltimateParam < transferRadiusCoverUltimate){
+ transferRadiusCoverUltimate = transferRadiusCoverUltimateParam;
+ }
+
+ //Clean the eTeslaMap
+ for (Map.Entry<IGregTechTileEntity, Integer> Rx : entriesSortedByValues(eTeslaMap)) {
+ IGregTechTileEntity node = Rx.getKey();
+ if (node != null) {
+ IMetaTileEntity nodeInside = node.getMetaTileEntity();
+ try {
+ if (nodeInside instanceof GT_MetaTileEntity_TM_teslaCoil && node.isActive()) {
+ GT_MetaTileEntity_TM_teslaCoil teslaTower = (GT_MetaTileEntity_TM_teslaCoil) nodeInside;
+ if (teslaTower.maxEUStore() > 0) {
+ continue;
+ }
+ } else if (nodeInside instanceof GT_MetaTileEntity_TeslaCoil) {
+ GT_MetaTileEntity_TeslaCoil teslaCoil = (GT_MetaTileEntity_TeslaCoil) nodeInside;
+ if (teslaCoil.getStoredEnergy()[1] > 0) {
+ continue;
+ }
+ } else if ((node.getCoverBehaviorAtSide((byte) 1) instanceof GT_Cover_TM_TeslaCoil_Ultimate) && node.getEUCapacity() > 0) {
+ continue;
+ }
+ } catch (Exception e) {
}
}
+ eTeslaMap.remove(Rx.getKey());
}
- //Try to send EU to big teslas
- for (GT_MetaTileEntity_TM_teslaCoil Rx : eTeslaTowerList) {
- if (!Rx.powerPassToggle) {
- long euTran = outputVoltage;
- if (Rx.getEUVar() + euTran <= (Rx.maxEUStore()/2)) {
+ //Power transfer
+ for (Map.Entry<IGregTechTileEntity, Integer> Rx : entriesSortedByValues(eTeslaMap)) {
+ IGregTechTileEntity node = Rx.getKey();
+ IMetaTileEntity nodeInside = node.getMetaTileEntity();
+ long euTran = outputVoltage;
+
+ if (nodeInside instanceof GT_MetaTileEntity_TM_teslaCoil && Rx.getValue() <= transferRadiusTower) {
+ GT_MetaTileEntity_TM_teslaCoil nodeTesla = (GT_MetaTileEntity_TM_teslaCoil) nodeInside;
+ if (!nodeTesla.powerPassToggle) {
+ if (nodeTesla.getEUVar() + euTran <= (nodeTesla.maxEUStore() / 2)) {
+ setEUVar(getEUVar() - euTran);
+ node.increaseStoredEnergyUnits(euTran, true);
+ }
+ }
+ } else if (nodeInside instanceof GT_MetaTileEntity_TeslaCoil && Rx.getValue() <= transferRadiusTransceiver) {
+ GT_MetaTileEntity_TeslaCoil nodeTesla = (GT_MetaTileEntity_TeslaCoil) nodeInside;
+ if (!nodeTesla.powerPassToggle) {
+ if (node.injectEnergyUnits((byte)6, euTran, 1L) > 0L) {
+ setEUVar(getEUVar() - euTran);
+ }
+ }
+ } else if ((node.getCoverBehaviorAtSide((byte) 1) instanceof GT_Cover_TM_TeslaCoil_Ultimate) && Rx.getValue() <= transferRadiusCoverUltimate){
+ if (node.injectEnergyUnits((byte)6, euTran, 1L) > 0L) {
setEUVar(getEUVar() - euTran);
- Rx.getBaseMetaTileEntity().increaseStoredEnergyUnits(euTran, true);
}
}
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/single/GT_MetaTileEntity_TeslaCoil.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/single/GT_MetaTileEntity_TeslaCoil.java
index a8797682e6..906ce556f7 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/single/GT_MetaTileEntity_TeslaCoil.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/single/GT_MetaTileEntity_TeslaCoil.java
@@ -25,27 +25,32 @@ public class GT_MetaTileEntity_TeslaCoil extends GT_MetaTileEntity_BasicBatteryB
private int scanTimeMin = 100; //Min scan time in ticks
private int scanTimeTill = scanTimeMin; //Set default scan time
- private Map<IGregTechTileEntity, Integer> eTeslaTowerMap = new HashMap<IGregTechTileEntity, Integer>();
+ private Map<IGregTechTileEntity, Integer> eTeslaMap = new HashMap<IGregTechTileEntity, Integer>();//Tesla Map to map them tesla bois!
private int histSteps = 20; //Hysteresis Resolution
private int histSettingLow = 3;
private int histSettingHigh = 15;
private int histLowLimit = 1; //How low can you configure it?
- private int histHighLimit = histSteps-1; //How high can you configure it?
+ private int histHighLimit = histSteps - 1; //How high can you configure it?
- private float histLow = (float)histSettingLow/histSteps; //Power pass is disabled if power is under this fraction
- private float histHigh = (float)histSettingHigh/histSteps; //Power pass is enabled if power is over this fraction
+ private float histLow = (float) histSettingLow / histSteps; //Power pass is disabled if power is under this fraction
+ private float histHigh = (float) histSettingHigh / histSteps; //Power pass is enabled if power is over this fraction
+
+ private int scanRadius = 32; //Tesla scan radius
+
+ private int transferRadiusTower = 32; //Radius for transceiver to tower transfers
+ private int transferRadiusCover = 16; //Radius for transceiver to cover transfers
- private int scanRadiusTower = 64; //Radius for tower to tower transfers
private long outputVoltage = 512; //Tesla Voltage Output
private long outputCurrent = 1; //Tesla Current Output
private long outputEuT = outputVoltage * outputCurrent; //Tesla Power Output
- static <K,V extends Comparable<? super V>> SortedSet<Map.Entry<K,V>> entriesSortedByValues(Map<K,V> map) {
- SortedSet<Map.Entry<K,V>> sortedEntries = new TreeSet<Map.Entry<K,V>>(
- new Comparator<Map.Entry<K,V>>() {
- @Override public int compare(Map.Entry<K,V> e1, Map.Entry<K,V> e2) {
+ static <K, V extends Comparable<? super V>> SortedSet<Map.Entry<K, V>> entriesSortedByValues(Map<K, V> map) {
+ SortedSet<Map.Entry<K, V>> sortedEntries = new TreeSet<Map.Entry<K, V>>(
+ new Comparator<Map.Entry<K, V>>() {
+ @Override
+ public int compare(Map.Entry<K, V> e1, Map.Entry<K, V> e2) {
int res = e1.getValue().compareTo(e2.getValue());
return res != 0 ? res : 1; // Special fix to preserve items with equal values
}
@@ -67,20 +72,20 @@ public class GT_MetaTileEntity_TeslaCoil extends GT_MetaTileEntity_BasicBatteryB
public void onScrewdriverRightClick(byte aSide, EntityPlayer aPlayer, float aX, float aY, float aZ) {
if (aPlayer.isSneaking()) {
- if (histSettingHigh<histHighLimit) {
+ if (histSettingHigh < histHighLimit) {
histSettingHigh++;
} else {
- histSettingHigh=histSettingLow+1;
+ histSettingHigh = histSettingLow + 1;
}
- histHigh = (float)histSettingHigh/histSteps;
+ histHigh = (float) histSettingHigh / histSteps;
PlayerChatHelper.SendInfo(aPlayer, "Hysteresis High Changed to " + round(histHigh * 100F) + "%");
} else {
- if (histSettingLow>histLowLimit) {
+ if (histSettingLow > histLowLimit) {
histSettingLow--;
} else {
- histSettingLow=histSettingHigh-1;
+ histSettingLow = histSettingHigh - 1;
}
- histLow = (float)histSettingLow/histSteps;
+ histLow = (float) histSettingLow / histSteps;
PlayerChatHelper.SendInfo(aPlayer, "Hysteresis Low Changed to " + round(histLow * 100F) + "%");
}
}
@@ -101,10 +106,6 @@ public class GT_MetaTileEntity_TeslaCoil extends GT_MetaTileEntity_BasicBatteryB
ItemStack[] var4 = this.mInventory;
int var5 = var4.length;
- if (aBaseMetaTileEntity.getCoverBehaviorAtSide((byte)1) instanceof GT_Cover_TM_TeslaCoil && scanTime == 0){
- System.out.println("I myself feel quite tesla enabled indeed!");
- }
-
for (int var6 = 0; var6 < var5; ++var6) {
ItemStack tStack = var4[var6];
if (GT_ModHandler.isElectricItem(tStack, this.mTier)) {
@@ -119,8 +120,7 @@ public class GT_MetaTileEntity_TeslaCoil extends GT_MetaTileEntity_BasicBatteryB
long energyMax = getStoredEnergy()[1];
long energyStored = getStoredEnergy()[0];
- float energyFrac = (float)energyStored/energyMax;
- //System.err.println(energyFrac); Debug energy fraction display
+ float energyFrac = (float) energyStored / energyMax;
//ePowerPass hist toggle
if (!powerPassToggle && energyFrac > histHigh) {
@@ -133,14 +133,12 @@ public class GT_MetaTileEntity_TeslaCoil extends GT_MetaTileEntity_BasicBatteryB
scanTime++;
if (scanTime >= scanTimeTill) {
scanTime = 0;
+ eTeslaMap.clear();
- scanRadiusTower = 64; //TODO Generate depending on power stored
- eTeslaTowerMap.clear();
-
- for (int xPosOffset = -scanRadiusTower; xPosOffset <= scanRadiusTower; xPosOffset++) {
- for (int yPosOffset = -scanRadiusTower; yPosOffset <= scanRadiusTower; yPosOffset++) {
- for (int zPosOffset = -scanRadiusTower; zPosOffset <= scanRadiusTower; zPosOffset++) {
- if (xPosOffset == 0 && yPosOffset == 0 && zPosOffset == 0){
+ for (int xPosOffset = -scanRadius; xPosOffset <= scanRadius; xPosOffset++) {
+ for (int yPosOffset = -scanRadius; yPosOffset <= scanRadius; yPosOffset++) {
+ for (int zPosOffset = -scanRadius; zPosOffset <= scanRadius; zPosOffset++) {
+ if (xPosOffset == 0 && yPosOffset == 0 && zPosOffset == 0) {
continue;
}
IGregTechTileEntity node = mte.getIGregTechTileEntityOffset(xPosOffset, yPosOffset, zPosOffset);
@@ -148,18 +146,14 @@ public class GT_MetaTileEntity_TeslaCoil extends GT_MetaTileEntity_BasicBatteryB
continue;
}
IMetaTileEntity nodeInside = node.getMetaTileEntity();
- if (nodeInside instanceof GT_MetaTileEntity_TM_teslaCoil && node.isActive() || (node.getCoverBehaviorAtSide((byte)1) instanceof GT_Cover_TM_TeslaCoil)){
- eTeslaTowerMap.put(node,(int)Math.ceil(Math.sqrt(xPosOffset*xPosOffset + yPosOffset*yPosOffset + zPosOffset*zPosOffset)));
+ if (nodeInside instanceof GT_MetaTileEntity_TM_teslaCoil && node.isActive() || (node.getCoverBehaviorAtSide((byte) 1) instanceof GT_Cover_TM_TeslaCoil)) {
+ eTeslaMap.put(node, (int) Math.ceil(Math.sqrt(xPosOffset * xPosOffset + yPosOffset * yPosOffset + zPosOffset * zPosOffset)));
}
}
}
}
}
- for (Map.Entry<IGregTechTileEntity, Integer> Rx : entriesSortedByValues(eTeslaTowerMap)) {
- System.out.println("yote @: " + Rx.getValue());
- }
-
//Stuff to do if ePowerPass
if (powerPassToggle) {
outputVoltage = 512;//TODO Set Depending On Tier
@@ -167,41 +161,45 @@ public class GT_MetaTileEntity_TeslaCoil extends GT_MetaTileEntity_BasicBatteryB
outputEuT = outputVoltage * outputCurrent;
- long requestedSumEU = 0;//TODO Find a use for requestedSumEU
+ transferRadiusTower = 32; //TODO generate based on power stored
+ transferRadiusCover = 16; //TODO generate based on power stored
- //Clean the node list SMALL INSTANCE REAPING DOESN'T WORK
- for (Map.Entry<IGregTechTileEntity, Integer> Rx : entriesSortedByValues(eTeslaTowerMap)) {
+ //Clean the eTeslaMap
+ for (Map.Entry<IGregTechTileEntity, Integer> Rx : entriesSortedByValues(eTeslaMap)) {
IGregTechTileEntity node = Rx.getKey();
- if (node == null) {
- eTeslaTowerMap.remove(Rx.getKey());
- System.err.println("Dead Tesla Reaped!");
- continue;
- }
- IMetaTileEntity nodeInside = node.getMetaTileEntity();
- try {
- if (nodeInside instanceof GT_MetaTileEntity_TM_teslaCoil && node.isActive()) {
- GT_MetaTileEntity_TM_teslaCoil teslaTower = (GT_MetaTileEntity_TM_teslaCoil) nodeInside;
- requestedSumEU += teslaTower.maxEUStore() - teslaTower.getEUVar();
- } else if ((node.getCoverBehaviorAtSide((byte) 1) instanceof GT_Cover_TM_TeslaCoil)) {
- requestedSumEU += node.getEUCapacity() - node.getStoredEU();
- } else {
- eTeslaTowerMap.remove(Rx.getKey());
- System.err.println("Dead Tesla Reaped!");
+ if (node != null) {
+ IMetaTileEntity nodeInside = node.getMetaTileEntity();
+ try {
+ if (nodeInside instanceof GT_MetaTileEntity_TM_teslaCoil && node.isActive()) {
+ GT_MetaTileEntity_TM_teslaCoil teslaTower = (GT_MetaTileEntity_TM_teslaCoil) nodeInside;
+ if (teslaTower.maxEUStore() > 0) {
+ continue;
+ }
+ } else if ((node.getCoverBehaviorAtSide((byte) 1) instanceof GT_Cover_TM_TeslaCoil) && node.getEUCapacity() > 0) {
+ continue;
+ }
+ } catch (Exception e) {
}
- } catch (Exception e) {
- eTeslaTowerMap.remove(Rx.getKey());
- System.err.println("Dead Tesla Reaped!");
}
+ eTeslaMap.remove(Rx.getKey());
}
- for (Map.Entry<IGregTechTileEntity, Integer> Rx : entriesSortedByValues(eTeslaTowerMap)) {
- GT_MetaTileEntity_TM_teslaCoil nodeInside = (GT_MetaTileEntity_TM_teslaCoil) Rx.getKey().getMetaTileEntity();
- if (!nodeInside.powerPassToggle) {
- long euTran = outputVoltage;
- if (nodeInside.getEUVar() + euTran <= (nodeInside.maxEUStore() / 2)) {
+ //Power transfer
+ for (Map.Entry<IGregTechTileEntity, Integer> Rx : entriesSortedByValues(eTeslaMap)) {
+ IGregTechTileEntity node = Rx.getKey();
+ IMetaTileEntity nodeInside = node.getMetaTileEntity();
+ long euTran = outputVoltage;
+ if (nodeInside instanceof GT_MetaTileEntity_TM_teslaCoil && Rx.getValue() <= transferRadiusTower) {
+ GT_MetaTileEntity_TM_teslaCoil nodeTesla = (GT_MetaTileEntity_TM_teslaCoil) nodeInside;
+ if (!nodeTesla.powerPassToggle) {
+ if (nodeTesla.getEUVar() + euTran <= (nodeTesla.maxEUStore() / 2)) {
+ setEUVar(getEUVar() - euTran);
+ node.increaseStoredEnergyUnits(euTran, true);
+ }
+ }
+ } else if ((node.getCoverBehaviorAtSide((byte) 1) instanceof GT_Cover_TM_TeslaCoil) && Rx.getValue() <= transferRadiusCover){
+ if (node.injectEnergyUnits((byte)6, euTran, 1L) > 0L) {
setEUVar(getEUVar() - euTran);
- nodeInside.getBaseMetaTileEntity().increaseStoredEnergyUnits(euTran, true);
- System.err.println("Energy Sent!");
}
}
}
diff --git a/src/main/resources/assets/tectech/lang/en_US.lang b/src/main/resources/assets/tectech/lang/en_US.lang
index 2c748a18d7..f01a74a0a2 100644
--- a/src/main/resources/assets/tectech/lang/en_US.lang
+++ b/src/main/resources/assets/tectech/lang/en_US.lang
@@ -10,6 +10,7 @@ item.em.parametrizerMemoryCard.name=Parametrizer Memory Card
item.em.EuMeterGT.name=GT EU meter
item.tm.teslaCoilCover.name=Tesla Coil Cover
+item.tm.teslaCoilCoverUltimate=Tesla Coil Cover Rich Edition
death.attack.microwaving=%1$s was dehydrated by radiation.
death.attack.microwaving.player=%1$s was dehydrated by radiation while fighting %2$s.
diff --git a/src/main/resources/assets/tectech/lang/zh_CN.lang b/src/main/resources/assets/tectech/lang/zh_CN.lang
index 47912d245d..52ae6c594d 100644
--- a/src/main/resources/assets/tectech/lang/zh_CN.lang
+++ b/src/main/resources/assets/tectech/lang/zh_CN.lang
@@ -7,6 +7,7 @@ item.em.debugBuilder.name=多方块机器蓝图
item.em.parametrizerMemoryCard.name=参量机记忆卡
item.tm.teslaCoilCover.name=Tesla Coil Cover
+item.tm.teslaCoilCoverUltimate=Tesla Coil Cover Rich Edition
death.attack.microwaving=%1$s 被辐射脱水
death.attack.microwaving.player=%1$s 在与 %2$s 战斗中被辐射脱水