optimize cables a bit
This commit is contained in:
@@ -1,6 +1,5 @@
|
|||||||
package storagecraft.tile;
|
package storagecraft.tile;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
@@ -26,11 +25,7 @@ public class TileCable extends TileSC {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addMachines(List<TileMachine> machines, TileController controller) {
|
public void addMachines(List<Vec3> visited, List<TileMachine> machines, TileController controller) {
|
||||||
addMachines(new ArrayList<Vec3>(), machines, controller);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addMachines(List<Vec3> visited, List<TileMachine> machines, TileController controller) {
|
|
||||||
for (Vec3 visitedBlock : visited) {
|
for (Vec3 visitedBlock : visited) {
|
||||||
if (visitedBlock.xCoord == xCoord && visitedBlock.yCoord == yCoord && visitedBlock.zCoord == zCoord) {
|
if (visitedBlock.xCoord == xCoord && visitedBlock.yCoord == yCoord && visitedBlock.zCoord == zCoord) {
|
||||||
return;
|
return;
|
||||||
|
@@ -10,6 +10,7 @@ import net.minecraft.item.Item;
|
|||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.Vec3;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
import storagecraft.storage.IStorage;
|
import storagecraft.storage.IStorage;
|
||||||
import storagecraft.storage.IStorageProvider;
|
import storagecraft.storage.IStorageProvider;
|
||||||
@@ -21,6 +22,8 @@ public class TileController extends TileSC implements IEnergyReceiver, INetworkT
|
|||||||
|
|
||||||
private List<TileMachine> machines = new ArrayList<TileMachine>();
|
private List<TileMachine> machines = new ArrayList<TileMachine>();
|
||||||
|
|
||||||
|
private List<Vec3> visitedCables = new ArrayList<Vec3>();
|
||||||
|
|
||||||
private EnergyStorage energy = new EnergyStorage(32000);
|
private EnergyStorage energy = new EnergyStorage(32000);
|
||||||
private int energyUsage;
|
private int energyUsage;
|
||||||
|
|
||||||
@@ -39,13 +42,15 @@ public class TileController extends TileSC implements IEnergyReceiver, INetworkT
|
|||||||
if (!isActive()) {
|
if (!isActive()) {
|
||||||
disconnectAll();
|
disconnectAll();
|
||||||
} else {
|
} else {
|
||||||
|
visitedCables.clear();
|
||||||
|
|
||||||
List<TileMachine> newMachines = new ArrayList<TileMachine>();
|
List<TileMachine> newMachines = new ArrayList<TileMachine>();
|
||||||
|
|
||||||
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
|
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
|
||||||
TileEntity tile = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ);
|
TileEntity tile = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ);
|
||||||
|
|
||||||
if (tile instanceof TileCable) {
|
if (tile instanceof TileCable) {
|
||||||
((TileCable) tile).addMachines(newMachines, this);
|
((TileCable) tile).addMachines(visitedCables, newMachines, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user