Synchronized network code, should be thread safe.
This commit is contained in:
parent
f3838a1f7e
commit
5b44e0f409
9 changed files with 36 additions and 52 deletions
|
@ -46,7 +46,7 @@ public class GasNetwork extends DynamicNetwork<IGasAcceptor, GasNetwork>
|
|||
register();
|
||||
}
|
||||
|
||||
public int emit(int gasToSend, EnumGas transferType, TileEntity emitter)
|
||||
public synchronized int emit(int gasToSend, EnumGas transferType, TileEntity emitter)
|
||||
{
|
||||
List availableAcceptors = Arrays.asList(getAcceptors(transferType).toArray());
|
||||
|
||||
|
@ -88,7 +88,7 @@ public class GasNetwork extends DynamicNetwork<IGasAcceptor, GasNetwork>
|
|||
}
|
||||
|
||||
@Override
|
||||
public Set<IGasAcceptor> getAcceptors(Object... data)
|
||||
public synchronized Set<IGasAcceptor> getAcceptors(Object... data)
|
||||
{
|
||||
EnumGas transferType = (EnumGas)data[0];
|
||||
Set<IGasAcceptor> toReturn = new HashSet<IGasAcceptor>();
|
||||
|
@ -108,7 +108,7 @@ public class GasNetwork extends DynamicNetwork<IGasAcceptor, GasNetwork>
|
|||
}
|
||||
|
||||
@Override
|
||||
public void refresh()
|
||||
public synchronized void refresh()
|
||||
{
|
||||
Set<ITransmitter<GasNetwork>> iterTubes = (Set<ITransmitter<GasNetwork>>)transmitters.clone();
|
||||
Iterator<ITransmitter<GasNetwork>> it = iterTubes.iterator();
|
||||
|
@ -146,7 +146,7 @@ public class GasNetwork extends DynamicNetwork<IGasAcceptor, GasNetwork>
|
|||
}
|
||||
|
||||
@Override
|
||||
public void merge(GasNetwork network)
|
||||
public synchronized void merge(GasNetwork network)
|
||||
{
|
||||
if(network != null && network != this)
|
||||
{
|
||||
|
|
|
@ -97,7 +97,7 @@ public abstract class DynamicNetwork<A, N> implements ITransmitterNetwork<A, N>
|
|||
}
|
||||
|
||||
@Override
|
||||
public void fixMessedUpNetwork(ITransmitter<N> transmitter)
|
||||
public synchronized void fixMessedUpNetwork(ITransmitter<N> transmitter)
|
||||
{
|
||||
if(transmitter instanceof TileEntity)
|
||||
{
|
||||
|
@ -124,7 +124,7 @@ public abstract class DynamicNetwork<A, N> implements ITransmitterNetwork<A, N>
|
|||
}
|
||||
|
||||
@Override
|
||||
public void split(ITransmitter<N> splitPoint)
|
||||
public synchronized void split(ITransmitter<N> splitPoint)
|
||||
{
|
||||
if(splitPoint instanceof TileEntity)
|
||||
{
|
||||
|
@ -214,7 +214,7 @@ public abstract class DynamicNetwork<A, N> implements ITransmitterNetwork<A, N>
|
|||
|
||||
if(ignore != null)
|
||||
{
|
||||
for (int i = 0; i < ignore.length; i++)
|
||||
for(int i = 0; i < ignore.length; i++)
|
||||
{
|
||||
this.toIgnore.add(ignore[i]);
|
||||
}
|
||||
|
@ -227,8 +227,7 @@ public abstract class DynamicNetwork<A, N> implements ITransmitterNetwork<A, N>
|
|||
{
|
||||
iterated.add(location);
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
toIgnore.add(location);
|
||||
}
|
||||
|
||||
|
|
|
@ -69,10 +69,7 @@ public class TransmitterNetworkRegistry implements ITickHandler
|
|||
}
|
||||
|
||||
@Override
|
||||
public void tickStart(EnumSet<TickType> type, Object... tickData)
|
||||
{
|
||||
return;
|
||||
}
|
||||
public void tickStart(EnumSet<TickType> type, Object... tickData) {}
|
||||
|
||||
@Override
|
||||
public void tickEnd(EnumSet<TickType> type, Object... tickData)
|
||||
|
@ -133,14 +130,16 @@ public class TransmitterNetworkRegistry implements ITickHandler
|
|||
}
|
||||
}
|
||||
|
||||
public void refreshChunk(Chunk c)
|
||||
public synchronized void refreshChunk(Chunk c)
|
||||
{
|
||||
if(c != null)
|
||||
{
|
||||
Iterator it = c.chunkTileEntityMap.entrySet().iterator();
|
||||
|
||||
while(it.hasNext())
|
||||
{
|
||||
Object obj = it.next();
|
||||
|
||||
if(obj instanceof TileEntity)
|
||||
{
|
||||
TileEntity tileEntity = (TileEntity)obj;
|
||||
|
|
|
@ -45,7 +45,7 @@ public class ClientPlayerTickHandler implements ITickHandler
|
|||
{
|
||||
ItemConfigurator item = (ItemConfigurator)entityPlayer.getCurrentEquippedItem().getItem();
|
||||
|
||||
if(entityPlayer.isSneaking() && MekanismKeyHandler.modeSwitch.isPressed())
|
||||
if(entityPlayer.isSneaking() && MekanismKeyHandler.modeSwitchKey.pressed)
|
||||
{
|
||||
if(!lastTickUpdate)
|
||||
{
|
||||
|
@ -63,7 +63,7 @@ public class ClientPlayerTickHandler implements ITickHandler
|
|||
{
|
||||
ItemElectricBow item = (ItemElectricBow)entityPlayer.getCurrentEquippedItem().getItem();
|
||||
|
||||
if(entityPlayer.isSneaking() && MekanismKeyHandler.modeSwitch.isPressed())
|
||||
if(entityPlayer.isSneaking() && MekanismKeyHandler.modeSwitchKey.pressed)
|
||||
{
|
||||
if(!lastTickUpdate)
|
||||
{
|
||||
|
@ -81,7 +81,7 @@ public class ClientPlayerTickHandler implements ITickHandler
|
|||
{
|
||||
ItemWalkieTalkie item = (ItemWalkieTalkie)entityPlayer.getCurrentEquippedItem().getItem();
|
||||
|
||||
if(entityPlayer.isSneaking() && MekanismKeyHandler.modeSwitch.isPressed() && item.getOn(stack))
|
||||
if(entityPlayer.isSneaking() && MekanismKeyHandler.modeSwitchKey.pressed && item.getOn(stack))
|
||||
{
|
||||
if(!lastTickUpdate)
|
||||
{
|
||||
|
|
|
@ -14,14 +14,12 @@ import cpw.mods.fml.relauncher.SideOnly;
|
|||
@SideOnly(Side.CLIENT)
|
||||
public class MekanismKeyHandler extends KeyHandler
|
||||
{
|
||||
public static KeyBinding modeSwitch = new KeyBinding("Mekanism Mode Switch", Keyboard.KEY_M);
|
||||
public static KeyBinding voice = new KeyBinding("Mekanism Voice", Keyboard.KEY_U);
|
||||
|
||||
public static boolean voiceKeyDown = false;
|
||||
public static KeyBinding modeSwitchKey = new KeyBinding("Mekanism Mode Switch", Keyboard.KEY_M);
|
||||
public static KeyBinding voiceKey = new KeyBinding("Mekanism Voice", Keyboard.KEY_U);
|
||||
|
||||
public MekanismKeyHandler()
|
||||
{
|
||||
super(new KeyBinding[] {modeSwitch, voice}, new boolean[] {false, false});
|
||||
super(new KeyBinding[] {modeSwitchKey, voiceKey}, new boolean[] {false, false});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -31,22 +29,10 @@ public class MekanismKeyHandler extends KeyHandler
|
|||
}
|
||||
|
||||
@Override
|
||||
public void keyDown(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd, boolean isRepeat)
|
||||
{
|
||||
if(tickEnd && kb.keyCode == voice.keyCode)
|
||||
{
|
||||
voiceKeyDown = true;
|
||||
}
|
||||
}
|
||||
public void keyDown(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd, boolean isRepeat) {}
|
||||
|
||||
@Override
|
||||
public void keyUp(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd)
|
||||
{
|
||||
if(tickEnd && kb.keyCode == voice.keyCode)
|
||||
{
|
||||
voiceKeyDown = false;
|
||||
}
|
||||
}
|
||||
public void keyUp(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd) {}
|
||||
|
||||
@Override
|
||||
public EnumSet<TickType> ticks()
|
||||
|
|
|
@ -40,11 +40,11 @@ public class VoiceInput extends Thread
|
|||
|
||||
while(voiceClient.running)
|
||||
{
|
||||
if(MekanismKeyHandler.voiceKeyDown)
|
||||
if(MekanismKeyHandler.voiceKey.pressed)
|
||||
{
|
||||
targetLine.flush();
|
||||
|
||||
while(voiceClient.running && MekanismKeyHandler.voiceKeyDown)
|
||||
while(voiceClient.running && MekanismKeyHandler.voiceKey.pressed)
|
||||
{
|
||||
try {
|
||||
int availableBytes = audioInput.available();
|
||||
|
|
|
@ -61,7 +61,7 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
|
|||
register();
|
||||
}
|
||||
|
||||
public double getEnergyNeeded(List<TileEntity> ignored)
|
||||
public synchronized double getEnergyNeeded(List<TileEntity> ignored)
|
||||
{
|
||||
double totalNeeded = 0;
|
||||
|
||||
|
@ -91,7 +91,7 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
|
|||
return totalNeeded;
|
||||
}
|
||||
|
||||
public double emit(double energyToSend, ArrayList<TileEntity> ignored)
|
||||
public synchronized double emit(double energyToSend, ArrayList<TileEntity> ignored)
|
||||
{
|
||||
double energyAvailable = energyToSend;
|
||||
double sent;
|
||||
|
@ -149,7 +149,7 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
|
|||
}
|
||||
|
||||
@Override
|
||||
public Set<TileEntity> getAcceptors(Object... data)
|
||||
public synchronized Set<TileEntity> getAcceptors(Object... data)
|
||||
{
|
||||
Set<TileEntity> toReturn = new HashSet<TileEntity>();
|
||||
|
||||
|
@ -201,9 +201,9 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
|
|||
}
|
||||
|
||||
@Override
|
||||
public void refresh()
|
||||
public synchronized void refresh()
|
||||
{
|
||||
Set<ITransmitter<EnergyNetwork>> iterCables = (Set<ITransmitter<EnergyNetwork>>) transmitters.clone();
|
||||
Set<ITransmitter<EnergyNetwork>> iterCables = (Set<ITransmitter<EnergyNetwork>>)transmitters.clone();
|
||||
Iterator<ITransmitter<EnergyNetwork>> it = iterCables.iterator();
|
||||
|
||||
possibleAcceptors.clear();
|
||||
|
@ -248,7 +248,7 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
|
|||
}
|
||||
|
||||
@Override
|
||||
public void merge(EnergyNetwork network)
|
||||
public synchronized void merge(EnergyNetwork network)
|
||||
{
|
||||
if(network != null && network != this)
|
||||
{
|
||||
|
|
|
@ -52,7 +52,7 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
|
|||
register();
|
||||
}
|
||||
|
||||
public int getTotalNeeded(List<TileEntity> ignored)
|
||||
public synchronized int getTotalNeeded(List<TileEntity> ignored)
|
||||
{
|
||||
int toReturn = 0;
|
||||
|
||||
|
@ -72,7 +72,7 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
|
|||
return toReturn;
|
||||
}
|
||||
|
||||
public int emit(FluidStack fluidToSend, boolean doTransfer, TileEntity emitter)
|
||||
public synchronized int emit(FluidStack fluidToSend, boolean doTransfer, TileEntity emitter)
|
||||
{
|
||||
List availableAcceptors = Arrays.asList(getAcceptors(fluidToSend).toArray());
|
||||
|
||||
|
@ -115,7 +115,7 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
|
|||
}
|
||||
|
||||
@Override
|
||||
public Set<IFluidHandler> getAcceptors(Object... data)
|
||||
public synchronized Set<IFluidHandler> getAcceptors(Object... data)
|
||||
{
|
||||
FluidStack fluidToSend = (FluidStack)data[0];
|
||||
Set<IFluidHandler> toReturn = new HashSet<IFluidHandler>();
|
||||
|
@ -132,7 +132,7 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
|
|||
}
|
||||
|
||||
@Override
|
||||
public void refresh()
|
||||
public synchronized void refresh()
|
||||
{
|
||||
Set<ITransmitter<FluidNetwork>> iterPipes = (Set<ITransmitter<FluidNetwork>>)transmitters.clone();
|
||||
Iterator it = iterPipes.iterator();
|
||||
|
@ -171,7 +171,7 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
|
|||
}
|
||||
|
||||
@Override
|
||||
public void merge(FluidNetwork network)
|
||||
public synchronized void merge(FluidNetwork network)
|
||||
{
|
||||
if(network != null && network != this)
|
||||
{
|
||||
|
|
|
@ -44,13 +44,13 @@ public class InventoryNetwork extends DynamicNetwork<IInventory, InventoryNetwor
|
|||
}
|
||||
|
||||
@Override
|
||||
public Set<IInventory> getAcceptors(Object... data)
|
||||
public synchronized Set<IInventory> getAcceptors(Object... data)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refresh()
|
||||
public synchronized void refresh()
|
||||
{
|
||||
Set<ITransmitter<InventoryNetwork>> iterTransmitters = (Set<ITransmitter<InventoryNetwork>>)transmitters.clone();
|
||||
Iterator it = iterTransmitters.iterator();
|
||||
|
@ -88,7 +88,7 @@ public class InventoryNetwork extends DynamicNetwork<IInventory, InventoryNetwor
|
|||
}
|
||||
|
||||
@Override
|
||||
public void merge(InventoryNetwork network)
|
||||
public synchronized void merge(InventoryNetwork network)
|
||||
{
|
||||
if(network != null && network != this)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue