Bit of modularization

This commit is contained in:
Aidan Brady 2013-08-25 12:17:56 -04:00
parent 55fee96644
commit 13901f60b0
6 changed files with 69 additions and 291 deletions

View file

@ -1,6 +1,7 @@
package mekanism.api;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
@ -8,6 +9,7 @@ import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Set;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
@ -120,6 +122,72 @@ public abstract class DynamicNetwork<A, N> implements ITransmitterNetwork<A, N>
}
}
@Override
public void split(ITransmitter<N> splitPoint)
{
if(splitPoint instanceof TileEntity)
{
removeTransmitter(splitPoint);
TileEntity[] connectedBlocks = new TileEntity[6];
boolean[] dealtWith = {false, false, false, false, false, false};
for(ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS)
{
TileEntity sideTile = Object3D.get((TileEntity)splitPoint).getFromSide(direction).getTileEntity(((TileEntity)splitPoint).worldObj);
if(sideTile != null)
{
connectedBlocks[Arrays.asList(ForgeDirection.values()).indexOf(direction)] = sideTile;
}
}
for(int countOne = 0; countOne < connectedBlocks.length; countOne++)
{
TileEntity connectedBlockA = connectedBlocks[countOne];
if(TransmissionType.checkTransmissionType(connectedBlockA, getTransmissionType()) && !dealtWith[countOne])
{
NetworkFinder finder = new NetworkFinder(((TileEntity)splitPoint).worldObj, getTransmissionType(), Object3D.get(connectedBlockA), Object3D.get((TileEntity)splitPoint));
List<Object3D> partNetwork = finder.exploreNetwork();
for(int countTwo = countOne + 1; countTwo < connectedBlocks.length; countTwo++)
{
TileEntity connectedBlockB = connectedBlocks[countTwo];
if(TransmissionType.checkTransmissionType(connectedBlockB, getTransmissionType()) && !dealtWith[countTwo])
{
if(partNetwork.contains(Object3D.get(connectedBlockB)))
{
dealtWith[countTwo] = true;
}
}
}
Set<ITransmitter<N>> newNetCables = new HashSet<ITransmitter<N>>();
for(Object3D node : finder.iterated)
{
TileEntity nodeTile = node.getTileEntity(((TileEntity)splitPoint).worldObj);
if(TransmissionType.checkTransmissionType(nodeTile, getTransmissionType()))
{
if(nodeTile != splitPoint)
{
newNetCables.add((ITransmitter<N>)nodeTile);
}
}
}
ITransmitterNetwork<A, N> newNetwork = create(newNetCables);
newNetwork.refresh();
}
}
deregister();
}
}
@Override
public void setFixed(boolean value)
{

View file

@ -155,71 +155,6 @@ public class GasNetwork extends DynamicNetwork<IGasAcceptor, GasNetwork>
}
}
@Override
public void split(ITransmitter<GasNetwork> splitPoint)
{
if(splitPoint instanceof TileEntity)
{
removeTransmitter(splitPoint);
TileEntity[] connectedBlocks = new TileEntity[6];
boolean[] dealtWith = {false, false, false, false, false, false};
for(ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS)
{
TileEntity sideTile = Object3D.get((TileEntity)splitPoint).getFromSide(direction).getTileEntity(((TileEntity)splitPoint).worldObj);
if(sideTile != null)
{
connectedBlocks[Arrays.asList(ForgeDirection.values()).indexOf(direction)] = sideTile;
}
}
for(int countOne = 0; countOne < connectedBlocks.length; countOne++)
{
TileEntity connectedBlockA = connectedBlocks[countOne];
if(TransmissionType.checkTransmissionType(connectedBlockA, TransmissionType.GAS, (TileEntity) splitPoint) && !dealtWith[countOne])
{
NetworkFinder finder = new NetworkFinder(((TileEntity)splitPoint).worldObj, getTransmissionType(), Object3D.get(connectedBlockA), Object3D.get((TileEntity)splitPoint));
List<Object3D> partNetwork = finder.exploreNetwork();
for(int countTwo = countOne + 1; countTwo < connectedBlocks.length; countTwo++)
{
TileEntity connectedBlockB = connectedBlocks[countTwo];
if(TransmissionType.checkTransmissionType(connectedBlockB, TransmissionType.GAS, (TileEntity) splitPoint) && !dealtWith[countTwo])
{
if(partNetwork.contains(Object3D.get(connectedBlockB)))
{
dealtWith[countTwo] = true;
}
}
}
GasNetwork newNetwork = new GasNetwork();
for(Object3D node : finder.iterated)
{
TileEntity nodeTile = node.getTileEntity(((TileEntity)splitPoint).worldObj);
if(TransmissionType.checkTransmissionType(nodeTile, TransmissionType.GAS))
{
if(nodeTile != splitPoint)
{
newNetwork.transmitters.add((ITransmitter<GasNetwork>)nodeTile);
}
}
}
newNetwork.refresh();
}
}
deregister();
}
}
public static class GasTransferEvent extends Event
{
public final GasNetwork gasNetwork;

View file

@ -259,99 +259,6 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
newNetwork.refresh();
}
}
@Override
public void split(ITransmitter<EnergyNetwork> splitPoint)
{
if(splitPoint instanceof TileEntity)
{
removeTransmitter(splitPoint);
TileEntity[] connectedBlocks = new TileEntity[6];
boolean[] dealtWith = {false, false, false, false, false, false};
for(ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS)
{
TileEntity sideTile = Object3D.get((TileEntity)splitPoint).getFromSide(direction).getTileEntity(((TileEntity)splitPoint).worldObj);
if(sideTile != null)
{
connectedBlocks[Arrays.asList(ForgeDirection.values()).indexOf(direction)] = sideTile;
}
}
for(int countOne = 0; countOne < connectedBlocks.length; countOne++)
{
TileEntity connectedBlockA = connectedBlocks[countOne];
if(TransmissionType.checkTransmissionType(connectedBlockA, TransmissionType.ENERGY) && !dealtWith[countOne])
{
NetworkFinder finder = new NetworkFinder(((TileEntity)splitPoint).worldObj, getTransmissionType(), Object3D.get(connectedBlockA), Object3D.get((TileEntity)splitPoint));
List<Object3D> partNetwork = finder.exploreNetwork();
for(int countTwo = countOne + 1; countTwo < connectedBlocks.length; countTwo++)
{
TileEntity connectedBlockB = connectedBlocks[countTwo];
if(TransmissionType.checkTransmissionType(connectedBlockB, TransmissionType.ENERGY) && !dealtWith[countTwo])
{
if(partNetwork.contains(Object3D.get(connectedBlockB)))
{
dealtWith[countTwo] = true;
}
}
}
Set<ITransmitter<EnergyNetwork>> newNetCables = new HashSet<ITransmitter<EnergyNetwork>>();
for(Object3D node : finder.iterated)
{
TileEntity nodeTile = node.getTileEntity(((TileEntity)splitPoint).worldObj);
if(TransmissionType.checkTransmissionType(nodeTile, TransmissionType.ENERGY))
{
if(nodeTile != splitPoint)
{
newNetCables.add((ITransmitter<EnergyNetwork>)nodeTile);
}
}
}
EnergyNetwork newNetwork = new EnergyNetwork(newNetCables);
newNetwork.refresh();
}
}
deregister();
}
}
@Override
public void fixMessedUpNetwork(ITransmitter<EnergyNetwork> cable)
{
if(cable instanceof TileEntity)
{
NetworkFinder finder = new NetworkFinder(((TileEntity)cable).getWorldObj(), getTransmissionType(), Object3D.get((TileEntity)cable));
List<Object3D> partNetwork = finder.exploreNetwork();
Set<ITransmitter<EnergyNetwork>> newCables = new HashSet<ITransmitter<EnergyNetwork>>();
for(Object3D node : partNetwork)
{
TileEntity nodeTile = node.getTileEntity(((TileEntity)cable).worldObj);
if(nodeTile instanceof ITransmitter)
{
((ITransmitter<EnergyNetwork>)nodeTile).removeFromNetwork();
newCables.add((ITransmitter<EnergyNetwork>)nodeTile);
}
}
EnergyNetwork newNetwork = new EnergyNetwork(newCables);
newNetwork.refresh();
newNetwork.fixed = true;
deregister();
}
}
public static class EnergyTransferEvent extends Event
{

View file

@ -182,72 +182,6 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
newNetwork.refresh();
}
}
@Override
public void split(ITransmitter<FluidNetwork> splitPoint)
{
if(splitPoint instanceof TileEntity)
{
removeTransmitter(splitPoint);
TileEntity[] connectedBlocks = new TileEntity[6];
boolean[] dealtWith = {false, false, false, false, false, false};
for(ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS)
{
TileEntity sideTile = Object3D.get((TileEntity)splitPoint).getFromSide(direction).getTileEntity(((TileEntity)splitPoint).worldObj);
if(sideTile != null)
{
connectedBlocks[Arrays.asList(ForgeDirection.values()).indexOf(direction)] = sideTile;
}
}
for(int countOne = 0; countOne < connectedBlocks.length; countOne++)
{
TileEntity connectedBlockA = connectedBlocks[countOne];
if(TransmissionType.checkTransmissionType(connectedBlockA, TransmissionType.FLUID) && !dealtWith[countOne])
{
NetworkFinder finder = new NetworkFinder(((TileEntity)splitPoint).worldObj, getTransmissionType(), Object3D.get(connectedBlockA), Object3D.get((TileEntity)splitPoint));
List<Object3D> partNetwork = finder.exploreNetwork();
for(int countTwo = countOne + 1; countTwo < connectedBlocks.length; countTwo++)
{
TileEntity connectedBlockB = connectedBlocks[countTwo];
if(TransmissionType.checkTransmissionType(connectedBlockB, TransmissionType.FLUID) && !dealtWith[countTwo])
{
if(partNetwork.contains(Object3D.get(connectedBlockB)))
{
dealtWith[countTwo] = true;
}
}
}
Set<ITransmitter<FluidNetwork>> newNetPipes= new HashSet<ITransmitter<FluidNetwork>>();
for(Object3D node : finder.iterated)
{
TileEntity nodeTile = node.getTileEntity(((TileEntity)splitPoint).worldObj);
if(TransmissionType.checkTransmissionType(nodeTile, TransmissionType.FLUID))
{
if(nodeTile != splitPoint)
{
newNetPipes.add((ITransmitter<FluidNetwork>)nodeTile);
}
}
}
FluidNetwork newNetwork = new FluidNetwork(newNetPipes);
newNetwork.refresh();
}
}
deregister();
}
}
public static class FluidTransferEvent extends Event
{

View file

@ -100,72 +100,6 @@ public class InventoryNetwork extends DynamicNetwork<IInventory, InventoryNetwor
newNetwork.refresh();
}
}
@Override
public void split(ITransmitter<InventoryNetwork> splitPoint)
{
if(splitPoint instanceof TileEntity)
{
removeTransmitter(splitPoint);
TileEntity[] connectedBlocks = new TileEntity[6];
boolean[] dealtWith = {false, false, false, false, false, false};
for(ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS)
{
TileEntity sideTile = Object3D.get((TileEntity)splitPoint).getFromSide(direction).getTileEntity(((TileEntity)splitPoint).worldObj);
if(sideTile != null)
{
connectedBlocks[Arrays.asList(ForgeDirection.values()).indexOf(direction)] = sideTile;
}
}
for(int countOne = 0; countOne < connectedBlocks.length; countOne++)
{
TileEntity connectedBlockA = connectedBlocks[countOne];
if(TransmissionType.checkTransmissionType(connectedBlockA, TransmissionType.ITEM) && !dealtWith[countOne])
{
NetworkFinder finder = new NetworkFinder(((TileEntity)splitPoint).worldObj, getTransmissionType(), Object3D.get(connectedBlockA), Object3D.get((TileEntity)splitPoint));
List<Object3D> partNetwork = finder.exploreNetwork();
for(int countTwo = countOne + 1; countTwo < connectedBlocks.length; countTwo++)
{
TileEntity connectedBlockB = connectedBlocks[countTwo];
if(TransmissionType.checkTransmissionType(connectedBlockB, TransmissionType.ITEM) && !dealtWith[countTwo])
{
if(partNetwork.contains(Object3D.get(connectedBlockB)))
{
dealtWith[countTwo] = true;
}
}
}
Set<ITransmitter<InventoryNetwork>> newNetTransporters = new HashSet<ITransmitter<InventoryNetwork>>();
for(Object3D node : finder.iterated)
{
TileEntity nodeTile = node.getTileEntity(((TileEntity)splitPoint).worldObj);
if(TransmissionType.checkTransmissionType(nodeTile, TransmissionType.ITEM))
{
if(nodeTile != splitPoint)
{
newNetTransporters.add((ITransmitter<InventoryNetwork>)nodeTile);
}
}
}
InventoryNetwork newNetwork = new InventoryNetwork(newNetTransporters);
newNetwork.refresh();
}
}
deregister();
}
}
@Override
public String toString()

View file

@ -1207,7 +1207,7 @@ public class Mekanism
PacketHandler.registerPacket(PacketRedstoneControl.class);
//Donators
donators.add("mrgreaper");
donators.add("mrgreaper");
//Load proxy
proxy.registerRenderInformation();