Bit of modularization
This commit is contained in:
parent
55fee96644
commit
13901f60b0
6 changed files with 69 additions and 291 deletions
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -1207,7 +1207,7 @@ public class Mekanism
|
|||
PacketHandler.registerPacket(PacketRedstoneControl.class);
|
||||
|
||||
//Donators
|
||||
donators.add("mrgreaper");
|
||||
donators.add("mrgreaper");
|
||||
|
||||
//Load proxy
|
||||
proxy.registerRenderInformation();
|
||||
|
|
Loading…
Add table
Reference in a new issue