Fixed saving
This commit is contained in:
parent
198305ff39
commit
f25bc6f941
|
@ -5,12 +5,13 @@ import java.util.Collection;
|
|||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Set;
|
||||
|
||||
import mekanism.api.IClientTicker;
|
||||
import mekanism.api.Coord4D;
|
||||
import mekanism.api.IClientTicker;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
@ -21,7 +22,7 @@ import cpw.mods.fml.common.FMLCommonHandler;
|
|||
|
||||
public abstract class DynamicNetwork<A, N extends DynamicNetwork<A, N>> implements ITransmitterNetwork<A, N>, IClientTicker
|
||||
{
|
||||
public HashSet<IGridTransmitter<N>> transmitters = new HashSet<IGridTransmitter<N>>();
|
||||
public LinkedHashSet<IGridTransmitter<N>> transmitters = new LinkedHashSet<IGridTransmitter<N>>();
|
||||
|
||||
public HashSet<A> possibleAcceptors = new HashSet<A>();
|
||||
public HashMap<A, ForgeDirection> acceptorDirections = new HashMap<A, ForgeDirection>();
|
||||
|
@ -45,6 +46,11 @@ public abstract class DynamicNetwork<A, N extends DynamicNetwork<A, N>> implemen
|
|||
transmitters.addAll(newTransmitters);
|
||||
}
|
||||
|
||||
public boolean isFirst(IGridTransmitter<N> transmitter)
|
||||
{
|
||||
return transmitters.iterator().next().equals(transmitter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeTransmitter(IGridTransmitter<N> transmitter)
|
||||
{
|
||||
|
|
|
@ -7,6 +7,7 @@ import mekanism.api.transmitters.TransmissionType;
|
|||
import mekanism.client.render.PartTransmitterIcons;
|
||||
import mekanism.client.render.RenderPartTransmitter;
|
||||
import mekanism.common.FluidNetwork;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import mekanism.common.util.PipeUtils;
|
||||
import net.minecraft.client.renderer.texture.IconRegister;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
@ -52,7 +53,17 @@ public class PartMechanicalPipe extends PartTransmitter<FluidNetwork> implements
|
|||
|
||||
cacheFluid = null;
|
||||
}
|
||||
|
||||
|
||||
if(getTransmitterNetwork(false) != null)
|
||||
{
|
||||
int last = lastWrite != null ? lastWrite.amount : 0;
|
||||
|
||||
if(last != getSaveShare())
|
||||
{
|
||||
MekanismUtils.saveChunk(tile());
|
||||
}
|
||||
}
|
||||
|
||||
IFluidHandler[] connectedAcceptors = PipeUtils.getConnectedAcceptors(tile());
|
||||
|
||||
for(ForgeDirection side : getConnections(ConnectionType.PULL))
|
||||
|
@ -76,6 +87,24 @@ public class PartMechanicalPipe extends PartTransmitter<FluidNetwork> implements
|
|||
|
||||
super.update();
|
||||
}
|
||||
|
||||
private int getSaveShare()
|
||||
{
|
||||
if(getTransmitterNetwork().fluidStored != null)
|
||||
{
|
||||
int remain = getTransmitterNetwork().fluidStored.amount%getTransmitterNetwork().transmitters.size();
|
||||
int toSave = getTransmitterNetwork().fluidStored.amount/getTransmitterNetwork().transmitters.size();
|
||||
|
||||
if(getTransmitterNetwork().isFirst((IGridTransmitter<FluidNetwork>)tile()))
|
||||
{
|
||||
toSave += remain;
|
||||
}
|
||||
|
||||
return toSave;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChunkUnload()
|
||||
|
@ -134,11 +163,20 @@ public class PartMechanicalPipe extends PartTransmitter<FluidNetwork> implements
|
|||
|
||||
if(getTransmitterNetwork().fluidStored != null)
|
||||
{
|
||||
int toSave = (int)Math.round(getTransmitterNetwork().fluidStored.amount*(1F/getTransmitterNetwork().transmitters.size()));
|
||||
FluidStack stack = new FluidStack(getTransmitterNetwork().fluidStored.getFluid(), toSave);
|
||||
|
||||
lastWrite = stack;
|
||||
nbtTags.setCompoundTag("cacheFluid", stack.writeToNBT(new NBTTagCompound()));
|
||||
int remain = getTransmitterNetwork().fluidStored.amount%getTransmitterNetwork().transmitters.size();
|
||||
int toSave = getTransmitterNetwork().fluidStored.amount/getTransmitterNetwork().transmitters.size();
|
||||
|
||||
if(getTransmitterNetwork().isFirst((IGridTransmitter<FluidNetwork>)tile()))
|
||||
{
|
||||
toSave += remain;
|
||||
}
|
||||
|
||||
if(toSave > 0)
|
||||
{
|
||||
FluidStack stack = new FluidStack(getTransmitterNetwork().fluidStored.getFluid(), toSave);
|
||||
lastWrite = stack;
|
||||
nbtTags.setCompoundTag("cacheFluid", stack.writeToNBT(new NBTTagCompound()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,8 @@ import mekanism.api.transmitters.TransmissionType;
|
|||
import mekanism.client.render.PartTransmitterIcons;
|
||||
import mekanism.client.render.RenderPartTransmitter;
|
||||
import mekanism.common.EnergyNetwork;
|
||||
import mekanism.common.FluidNetwork;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import net.minecraft.client.renderer.texture.IconRegister;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
@ -46,6 +48,16 @@ public class PartPressurizedTube extends PartTransmitter<GasNetwork>
|
|||
|
||||
cacheGas = null;
|
||||
}
|
||||
|
||||
if(getTransmitterNetwork(false) != null)
|
||||
{
|
||||
int last = lastWrite != null ? lastWrite.amount : 0;
|
||||
|
||||
if(last != getSaveShare())
|
||||
{
|
||||
MekanismUtils.saveChunk(tile());
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
float targetScale = getTransmitterNetwork().gasScale;
|
||||
|
@ -59,6 +71,24 @@ public class PartPressurizedTube extends PartTransmitter<GasNetwork>
|
|||
super.update();
|
||||
}
|
||||
|
||||
private int getSaveShare()
|
||||
{
|
||||
if(getTransmitterNetwork().gasStored != null)
|
||||
{
|
||||
int remain = getTransmitterNetwork().gasStored.amount%getTransmitterNetwork().transmitters.size();
|
||||
int toSave = getTransmitterNetwork().gasStored.amount/getTransmitterNetwork().transmitters.size();
|
||||
|
||||
if(getTransmitterNetwork().isFirst((IGridTransmitter<GasNetwork>)tile()))
|
||||
{
|
||||
toSave += remain;
|
||||
}
|
||||
|
||||
return toSave;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TransmitterType getTransmitter()
|
||||
{
|
||||
|
@ -122,11 +152,21 @@ public class PartPressurizedTube extends PartTransmitter<GasNetwork>
|
|||
|
||||
if(getTransmitterNetwork().gasStored != null)
|
||||
{
|
||||
int toSave = (int)Math.round(getTransmitterNetwork().gasStored.amount*(1F/getTransmitterNetwork().transmitters.size()));
|
||||
GasStack stack = new GasStack(getTransmitterNetwork().gasStored.getGas(), toSave);
|
||||
|
||||
lastWrite = stack;
|
||||
nbtTags.setCompoundTag("cacheGas", stack.write(new NBTTagCompound()));
|
||||
int remain = getTransmitterNetwork().gasStored.amount%getTransmitterNetwork().transmitters.size();
|
||||
int toSave = getTransmitterNetwork().gasStored.amount/getTransmitterNetwork().transmitters.size();
|
||||
|
||||
if(getTransmitterNetwork().isFirst((IGridTransmitter<GasNetwork>)tile()))
|
||||
{
|
||||
toSave += remain;
|
||||
}
|
||||
|
||||
if(toSave > 0)
|
||||
{
|
||||
GasStack stack = new GasStack(getTransmitterNetwork().gasStored.getGas(), toSave);
|
||||
|
||||
lastWrite = stack;
|
||||
nbtTags.setCompoundTag("cacheGas", stack.write(new NBTTagCompound()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -34,21 +34,18 @@ public class VoiceServerManager
|
|||
public void stop()
|
||||
{
|
||||
try {
|
||||
System.out.println("[Mekanism] VoiceServer: Shutting down server...");
|
||||
|
||||
try {
|
||||
listenThread.interrupt();
|
||||
} catch(Exception e) {}
|
||||
|
||||
foundLocal = false;
|
||||
|
||||
serverSocket.close();
|
||||
serverSocket = null;
|
||||
|
||||
System.out.println("[Mekanism] VoiceServer: Shutting down server...");
|
||||
} catch(SocketException e) {
|
||||
if(!e.getLocalizedMessage().toLowerCase().equals("socket closed"))
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
try {
|
||||
serverSocket.close();
|
||||
serverSocket = null;
|
||||
} catch(Exception e) {}
|
||||
} catch(Exception e) {
|
||||
System.err.println("[Mekanism] VoiceServer: Error while shutting down server.");
|
||||
e.printStackTrace();
|
||||
|
|
Loading…
Reference in a new issue