Skip to content

Commit 23d0d1a

Browse files
committed
Tracked commit 1
- Fix issues with energy cables. Would only accept one connection per block. - Change infinite energy cable energy amount to Integer.MAX_VALUE - Stop gas centrifuge from being able to store progress. The gas would just mix again. - Make the chemical boiler store progress. - Make the chemical extractor store progress.
1 parent deab7ad commit 23d0d1a

6 files changed

Lines changed: 38 additions & 27 deletions

File tree

src/main/java/physica/core/client/render/tile/TileRenderEnergyCable.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import net.minecraftforge.common.util.ForgeDirection;
1515
import physica.CoreReferences;
1616
import physica.api.core.cable.EnumConductorType;
17+
import physica.core.common.tile.cable.TileEnergyCable;
1718

1819
@SideOnly(Side.CLIENT)
1920
public class TileRenderEnergyCable extends TileEntitySpecialRenderer {
@@ -52,7 +53,7 @@ public final void renderTileEntityAt(TileEntity tile, double x, double y, double
5253
if (sideTile instanceof IEnergyConnection && ((IEnergyConnection) sideTile).canConnectEnergy(dir.getOpposite()))
5354
{
5455
drawConnection(dir);
55-
if (sideTile.getBlockMetadata() == meta)
56+
if (sideTile.getBlockMetadata() == meta && sideTile instanceof TileEnergyCable)
5657
{
5758
connections++;
5859
} else

src/main/java/physica/core/common/tile/TileInfiniteEnergy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
public class TileInfiniteEnergy extends TileBase implements IEnergyProvider {
1111

12-
public static final int VISIBLE_STORAGE = Integer.MAX_VALUE - 100;
12+
public static final int VISIBLE_STORAGE = Integer.MAX_VALUE;
1313

1414
@Override
1515
public void updateServer(int ticks)

src/main/java/physica/library/net/energy/EnergyNetwork.java

Lines changed: 34 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,17 @@
2121
import physica.library.net.EnergyNetworkRegistry;
2222

2323
public class EnergyNetwork {
24-
private static final int DEFAULT_VOLTAGE = 480;
25-
public HashSet<IConductor> conductorSet = new HashSet<>();
26-
public HashSet<TileEntity> acceptorSet = new HashSet<>();
27-
public HashMap<TileEntity, ForgeDirection> acceptorInputMap = new HashMap<>();
28-
private HashMap<EnumConductorType, HashSet<IConductor>> conductorTypeMap = new HashMap<>();
29-
private int energyTransmittedBuffer = 0;
30-
private int energyTransmittedLastTick = 0; // TODO: Work on implementing voltage. Is always an concurrent exception???
31-
private int ticksSinceNetworkCreate = 0;
32-
private boolean fixed = false;
33-
private int maxPowerTransfer = 0;
24+
private static final int DEFAULT_VOLTAGE = 480;
25+
public HashSet<IConductor> conductorSet = new HashSet<>();
26+
public HashSet<TileEntity> acceptorSet = new HashSet<>();
27+
public HashMap<TileEntity, HashSet<ForgeDirection>> acceptorInputMap = new HashMap<>();
28+
private HashMap<EnumConductorType, HashSet<IConductor>> conductorTypeMap = new HashMap<>();
29+
private int energyTransmittedBuffer = 0;
30+
private int energyTransmittedLastTick = 0;
31+
private int fixTimerTicksSinceNetworkCreate = 0;
32+
private int ticksSinceNetworkRefresh = 0;
33+
private boolean fixed = false;
34+
private int maxPowerTransfer = 0;
3435

3536
public int getEnergyTransmittedLastTick()
3637
{
@@ -85,7 +86,10 @@ public int emit(int energyToSend, ArrayList<TileEntity> ignored)
8586
remaining = 0;
8687
if (acceptor instanceof IEnergyReceiver)
8788
{
88-
energySent += ((IEnergyReceiver) acceptor).receiveEnergy(acceptorInputMap.get(acceptor).getOpposite(), currentSending, false);
89+
for (ForgeDirection connection : acceptorInputMap.get(acceptor))
90+
{
91+
energySent += ((IEnergyReceiver) acceptor).receiveEnergy(connection.getOpposite(), currentSending, false);
92+
}
8993
}
9094
}
9195
}
@@ -139,12 +143,15 @@ public Set<TileEntity> getEnergyAcceptors()
139143
if (acceptor instanceof IEnergyReceiver)
140144
{
141145
IEnergyReceiver receiver = (IEnergyReceiver) acceptor;
142-
ForgeDirection direction = acceptorInputMap.get(acceptor).getOpposite();
143-
if (receiver.canConnectEnergy(direction))
146+
for (ForgeDirection connection : acceptorInputMap.get(acceptor))
144147
{
145-
if (receiver.receiveEnergy(direction, Integer.MAX_VALUE, true) > 0 || receiver.getEnergyStored(direction) < receiver.getMaxEnergyStored(direction))
148+
ForgeDirection direction = connection.getOpposite();
149+
if (receiver.canConnectEnergy(direction))
146150
{
147-
toReturn.add(acceptor);
151+
if (receiver.receiveEnergy(direction, Integer.MAX_VALUE, true) > 0 || receiver.getEnergyStored(direction) < receiver.getMaxEnergyStored(direction))
152+
{
153+
toReturn.add(acceptor);
154+
}
148155
}
149156
}
150157
}
@@ -194,7 +201,9 @@ public void refresh()
194201
if (acceptor != null && !(acceptor instanceof IConductor))
195202
{
196203
acceptorSet.add(acceptor);
197-
acceptorInputMap.put(acceptor, ForgeDirection.getOrientation(Arrays.asList(acceptors).indexOf(acceptor)));
204+
HashSet<ForgeDirection> directions = acceptorInputMap.containsKey(acceptor) ? acceptorInputMap.get(acceptor) : new HashSet<>();
205+
directions.add(ForgeDirection.getOrientation(Arrays.asList(acceptors).indexOf(acceptor)));
206+
acceptorInputMap.put(acceptor, directions);
198207
}
199208
}
200209
}
@@ -393,14 +402,19 @@ public void tick()
393402
clearJoulesTransmitted();
394403
if (!fixed)
395404
{
396-
ticksSinceNetworkCreate += 1;
397-
if (ticksSinceNetworkCreate > 1200)
405+
fixTimerTicksSinceNetworkCreate += 1;
406+
if (fixTimerTicksSinceNetworkCreate > 1200)
398407
{
399-
ticksSinceNetworkCreate = 0;
408+
fixTimerTicksSinceNetworkCreate = 0;
400409
fixMessedUpNetwork(conductorSet.toArray(new IConductor[0])[0]);
401410
}
402411
}
403-
412+
ticksSinceNetworkRefresh++;
413+
if (ticksSinceNetworkRefresh > 1600)
414+
{
415+
ticksSinceNetworkRefresh = 0;
416+
refresh();
417+
}
404418
}
405419

406420
public void clearJoulesTransmitted()

src/nuclear/physica/nuclear/common/tile/TileChemicalBoiler.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ public void updateServer(int ticks)
7474
} else
7575
{
7676
drainBattery(SLOT_ENERGY);
77-
operatingTicks = 0;
7877
}
7978
ItemStack waterInput = getStackInSlot(SLOT_INPUT1);
8079
if (waterInput != null && waterInput.getItem() == Items.water_bucket && waterTank.getCapacity() - waterTank.getFluidAmount() >= 1000)

src/nuclear/physica/nuclear/common/tile/TileChemicalExtractor.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ public void updateServer(int ticks)
6969
} else
7070
{
7171
drainBattery(SLOT_ENERGY);
72-
operatingTicks = 0;
7372
}
7473
ItemStack input = getStackInSlot(SLOT_INPUT);
7574
if (input != null)

src/nuclear/physica/nuclear/common/tile/TileGasCentrifuge.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,6 @@ public void updateServer(int ticks)
5858
operatingTicks = 0;
5959
}
6060
extractEnergy();
61-
} else
62-
{
63-
operatingTicks = 0;
6461
}
6562
ForgeDirection direction = getFacing().getOpposite();
6663
TileEntity tile = worldObj.getTileEntity(xCoord + direction.offsetX, yCoord + direction.offsetY, zCoord + direction.offsetZ);
@@ -76,6 +73,7 @@ public void updateServer(int ticks)
7673
} else
7774
{
7875
drainBattery(SLOT_ENERGY);
76+
operatingTicks = 0;
7977
}
8078
}
8179

0 commit comments

Comments
 (0)