aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/metatileentity/implementations
diff options
context:
space:
mode:
authorJason Mitchell <mitchej@gmail.com>2019-07-15 19:47:31 -0700
committerJason Mitchell <mitchej@gmail.com>2019-07-15 19:47:31 -0700
commit1b7d5e176ec01d7b8fec464371b3e79144fffa8a (patch)
tree1ac96357da37d59d8ebe24add96d0c81368c0a27 /src/main/java/gregtech/api/metatileentity/implementations
parent30715b1438568a7594cbd7ef03e70f93adc76bdf (diff)
downloadGT5-Unofficial-1b7d5e176ec01d7b8fec464371b3e79144fffa8a.tar.gz
GT5-Unofficial-1b7d5e176ec01d7b8fec464371b3e79144fffa8a.tar.bz2
GT5-Unofficial-1b7d5e176ec01d7b8fec464371b3e79144fffa8a.zip
IC2 ENet compat for GT transformers & GT cables
* Fixes every face of ic2 nuclear reactors giving full energy * Should reduce performance concerns from previous ic2 energy compat * Removes Tec's workaround
Diffstat (limited to 'src/main/java/gregtech/api/metatileentity/implementations')
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java49
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Transformer.java30
2 files changed, 28 insertions, 51 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java
index 5b75b89d23..c55e346546 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java
@@ -156,34 +156,6 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile
return (int) mAmperage * 64;
}
- private void pullFromIc2EnergySources(IGregTechTileEntity aBaseMetaTileEntity) {
- if(!GT_Mod.gregtechproxy.ic2EnergySourceCompat) return;
-
- for( byte aSide = 0 ; aSide < 6 ; aSide++) if(isConnectedAtSide(aSide)) {
- final TileEntity tTileEntity = aBaseMetaTileEntity.getTileEntityAtSide(aSide);
- final TileEntity tEmitter;
- if (tTileEntity instanceof IReactorChamber)
- tEmitter = (TileEntity) ((IReactorChamber) tTileEntity).getReactor();
- else tEmitter = (tTileEntity == null || tTileEntity instanceof IEnergyTile || EnergyNet.instance == null) ? tTileEntity :
- EnergyNet.instance.getTileEntity(tTileEntity.getWorldObj(), tTileEntity.xCoord, tTileEntity.yCoord, tTileEntity.zCoord);
-
- if (tEmitter instanceof IEnergySource) {
- final GT_CoverBehavior coverBehavior = aBaseMetaTileEntity.getCoverBehaviorAtSide(aSide);
- final int coverId = aBaseMetaTileEntity.getCoverIDAtSide(aSide),
- coverData = aBaseMetaTileEntity.getCoverDataAtSide(aSide);
- final ForgeDirection tDirection = ForgeDirection.getOrientation(GT_Utility.getOppositeSide(aSide));
-
- if (((IEnergySource) tEmitter).emitsEnergyTo((TileEntity) aBaseMetaTileEntity, tDirection) &&
- coverBehavior.letsEnergyIn(aSide, coverId, coverData, aBaseMetaTileEntity)) {
- final long tEU = (long) ((IEnergySource) tEmitter).getOfferedEnergy();
-
- if (transferElectricity(aSide, tEU, 1, Sets.newHashSet((TileEntity) aBaseMetaTileEntity)) > 0)
- ((IEnergySource) tEmitter).drawEnergy(tEU);
- }
- }
- }
- }
-
@Override
public long injectEnergyUnits(byte aSide, long aVoltage, long aAmperage) {
if (!isConnectedAtSide(aSide) && aSide != 6)
@@ -324,8 +296,6 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile
@Override
public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
if (aBaseMetaTileEntity.isServerSide()) {
- if (GT_Mod.gregtechproxy.ic2EnergySourceCompat) pullFromIc2EnergySources(aBaseMetaTileEntity);
-
{ //amp handler
long worldTick = aBaseMetaTileEntity.getWorld().getTotalWorldTime();
@@ -604,4 +574,23 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile
if (inputAABB.intersectsWith(aabb)) outputAABB.add(aabb);
}
}
+
+ @Override
+ public boolean shouldJoinIc2Enet() {
+ if (!GT_Mod.gregtechproxy.ic2EnergySourceCompat) return false;
+
+ if (mConnections != 0) {
+ final IGregTechTileEntity baseMeta = getBaseMetaTileEntity();
+ for( byte aSide = 0 ; aSide < 6 ; aSide++) if(isConnectedAtSide(aSide)) {
+ final TileEntity tTileEntity = baseMeta.getTileEntityAtSide(aSide);
+ final TileEntity tEmitter = (tTileEntity == null || tTileEntity instanceof IEnergyTile || EnergyNet.instance == null) ? tTileEntity :
+ EnergyNet.instance.getTileEntity(tTileEntity.getWorldObj(), tTileEntity.xCoord, tTileEntity.yCoord, tTileEntity.zCoord);
+
+ if (tEmitter instanceof IEnergyEmitter)
+ return true;
+
+ }
+ }
+ return false;
+ }
}
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Transformer.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Transformer.java
index 72b24182df..f33b8aa3d9 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Transformer.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Transformer.java
@@ -1,23 +1,16 @@
package gregtech.api.metatileentity.implementations;
-import appeng.api.parts.IPartHost;
import cofh.api.energy.IEnergyProvider;
import cofh.api.energy.IEnergyStorage;
import crazypants.enderio.machine.capbank.TileCapBank;
import crazypants.enderio.machine.capbank.network.ICapBankNetwork;
import crazypants.enderio.power.IPowerContainer;
-import gregtech.GT_Mod;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.util.GT_Utility;
-import gregtech.common.GT_Proxy;
-import ic2.api.energy.tile.IEnergySource;
-import ic2.api.reactor.IReactor;
-import ic2.api.reactor.IReactorChamber;
-import ic2.core.block.reactor.tileentity.TileEntityNuclearReactorElectric;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@@ -147,30 +140,20 @@ public class GT_MetaTileEntity_Transformer extends GT_MetaTileEntity_TieredMachi
@Override
public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
- if (aBaseMetaTileEntity.isServerSide()) {
+ if (aBaseMetaTileEntity.isServerSide() && GregTech_API.mInputRF) {
aBaseMetaTileEntity.setActive(aBaseMetaTileEntity.isAllowedToWork());
for (byte i = 0; i < 6 && aBaseMetaTileEntity.getStoredEU() < aBaseMetaTileEntity.getEUCapacity(); i++)
if (aBaseMetaTileEntity.inputEnergyFrom(i)) {
TileEntity tTileEntity = aBaseMetaTileEntity.getTileEntityAtSide(i);
- if (tTileEntity instanceof IReactorChamber) {
- tTileEntity = (TileEntity) ((IReactorChamber) tTileEntity).getReactor();
- }
- if(tTileEntity instanceof IReactor && !GT_Mod.gregtechproxy.reactorsDone.add((IReactor) tTileEntity)){
- continue;
- }
- if (tTileEntity instanceof IEnergySource && !(tTileEntity instanceof IPartHost) && ((IEnergySource) tTileEntity).emitsEnergyTo((TileEntity) aBaseMetaTileEntity, ForgeDirection.getOrientation(GT_Utility.getOppositeSide(i)))) {
- long tEU = Math.min(maxEUInput(), (long) ((IEnergySource) tTileEntity).getOfferedEnergy());
- ((IEnergySource) tTileEntity).drawEnergy(tEU);
- aBaseMetaTileEntity.injectEnergyUnits((byte) 6, tEU, 1);
- } else if (GregTech_API.mInputRF && tTileEntity instanceof IEnergyProvider && ((IEnergyProvider) tTileEntity).extractEnergy(ForgeDirection.getOrientation(GT_Utility.getOppositeSide(i)), 1, true) == 1) {
+ if (tTileEntity instanceof IEnergyProvider && ((IEnergyProvider) tTileEntity).extractEnergy(ForgeDirection.getOrientation(GT_Utility.getOppositeSide(i)), 1, true) == 1) {
long tEU = (long) ((IEnergyProvider) tTileEntity).extractEnergy(ForgeDirection.getOrientation(GT_Utility.getOppositeSide(i)), GT_Utility.safeInt(maxEUInput() * 100L / GregTech_API.mRFtoEU), false);
tEU = tEU * GregTech_API.mRFtoEU / 100;
aBaseMetaTileEntity.injectEnergyUnits((byte) 6, Math.min(tEU, maxEUInput()), 1);
- } else if (GregTech_API.mInputRF && tTileEntity instanceof IEnergyStorage && ((IEnergyStorage) tTileEntity).extractEnergy(1, true) == 1) {
+ } else if (tTileEntity instanceof IEnergyStorage && ((IEnergyStorage) tTileEntity).extractEnergy(1, true) == 1) {
long tEU = (long) ((IEnergyStorage) tTileEntity).extractEnergy(GT_Utility.safeInt(maxEUInput() * 100L / GregTech_API.mRFtoEU), false);
tEU = tEU * GregTech_API.mRFtoEU / 100;
aBaseMetaTileEntity.injectEnergyUnits((byte) 6, Math.min(tEU, maxEUInput()), 1);
- } else if (GregTech_API.mInputRF && GregTech_API.meIOLoaded && tTileEntity instanceof IPowerContainer && ((IPowerContainer) tTileEntity).getEnergyStored() > 0) {
+ } else if (GregTech_API.meIOLoaded && tTileEntity instanceof IPowerContainer && ((IPowerContainer) tTileEntity).getEnergyStored() > 0) {
int storedRF = ((IPowerContainer) tTileEntity).getEnergyStored();
int extractRF = GT_Utility.safeInt(maxEUInput() * 100L / GregTech_API.mRFtoEU);
long tEU = 0;
@@ -233,4 +216,9 @@ public class GT_MetaTileEntity_Transformer extends GT_MetaTileEntity_TieredMachi
maxAmperesOut() +
trans("149","A");
}
+
+ @Override
+ public boolean shouldJoinIc2Enet() {
+ return true;
+ }
}