Fixed an issue where networks would be forgotten, made shift-M turn jetpack off immediately, simplified network code a bit
This commit is contained in:
parent
321411ee3a
commit
78c0cc4c7c
9 changed files with 68 additions and 38 deletions
|
@ -45,14 +45,12 @@ public class GasNetwork extends DynamicNetwork<IGasHandler, GasNetwork>
|
||||||
public GasNetwork(IGridTransmitter<GasNetwork>... varPipes)
|
public GasNetwork(IGridTransmitter<GasNetwork>... varPipes)
|
||||||
{
|
{
|
||||||
transmitters.addAll(Arrays.asList(varPipes));
|
transmitters.addAll(Arrays.asList(varPipes));
|
||||||
updateCapacity();
|
|
||||||
register();
|
register();
|
||||||
}
|
}
|
||||||
|
|
||||||
public GasNetwork(Collection<IGridTransmitter<GasNetwork>> collection)
|
public GasNetwork(Collection<IGridTransmitter<GasNetwork>> collection)
|
||||||
{
|
{
|
||||||
transmitters.addAll(collection);
|
transmitters.addAll(collection);
|
||||||
updateCapacity();
|
|
||||||
register();
|
register();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,8 +95,6 @@ public class GasNetwork extends DynamicNetwork<IGasHandler, GasNetwork>
|
||||||
|
|
||||||
gasScale = getScale();
|
gasScale = getScale();
|
||||||
|
|
||||||
updateCapacity();
|
|
||||||
fullRefresh();
|
|
||||||
register();
|
register();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ import java.util.Set;
|
||||||
|
|
||||||
import mekanism.api.Coord4D;
|
import mekanism.api.Coord4D;
|
||||||
import mekanism.api.IClientTicker;
|
import mekanism.api.IClientTicker;
|
||||||
|
import mekanism.common.Mekanism;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.AxisAlignedBB;
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
|
@ -52,8 +53,20 @@ public abstract class DynamicNetwork<A, N extends DynamicNetwork<A, N>> implemen
|
||||||
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
|
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
|
||||||
{
|
{
|
||||||
Coord4D coord = Coord4D.get(transmitter.getTile()).getFromSide(side);
|
Coord4D coord = Coord4D.get(transmitter.getTile()).getFromSide(side);
|
||||||
possibleAcceptors.remove(coord);
|
|
||||||
acceptorDirections.remove(coord.getTileEntity(transmitter.getTile().getWorldObj()));
|
if(possibleAcceptors.containsKey(coord))
|
||||||
|
{
|
||||||
|
clearIfNecessary(coord, transmitter, side.getOpposite());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void clearIfNecessary(Coord4D acceptor, IGridTransmitter<N> transmitter, ForgeDirection side)
|
||||||
|
{
|
||||||
|
if(acceptor.getTileEntity(getWorld()) == null || acceptor.getTileEntity(getWorld()).isInvalid() || transmitter.canConnectToAcceptor(side, true))
|
||||||
|
{
|
||||||
|
possibleAcceptors.remove(acceptor);
|
||||||
|
acceptorDirections.remove(acceptor.getTileEntity(getWorld()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,14 +105,14 @@ public abstract class DynamicNetwork<A, N extends DynamicNetwork<A, N>> implemen
|
||||||
return packetRange;
|
return packetRange;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getDimension()
|
public World getWorld()
|
||||||
{
|
{
|
||||||
if(getSize() == 0)
|
if(getSize() == 0)
|
||||||
{
|
{
|
||||||
return 0;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return transmitters.iterator().next().getTile().getWorldObj().provider.dimensionId;
|
return transmitters.iterator().next().getTile().getWorldObj();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected AxisAlignedBB genPacketRange()
|
protected AxisAlignedBB genPacketRange()
|
||||||
|
@ -198,7 +211,8 @@ public abstract class DynamicNetwork<A, N extends DynamicNetwork<A, N>> implemen
|
||||||
return possibleAcceptors.size();
|
return possibleAcceptors.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void updateCapacity() {
|
public synchronized void updateCapacity()
|
||||||
|
{
|
||||||
updateMeanCapacity();
|
updateMeanCapacity();
|
||||||
capacity = (int)meanCapacity * transmitters.size();
|
capacity = (int)meanCapacity * transmitters.size();
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ import java.util.Set;
|
||||||
|
|
||||||
import mekanism.api.EnumColor;
|
import mekanism.api.EnumColor;
|
||||||
import mekanism.api.IClientTicker;
|
import mekanism.api.IClientTicker;
|
||||||
|
import mekanism.api.StackUtils;
|
||||||
import mekanism.api.gas.GasStack;
|
import mekanism.api.gas.GasStack;
|
||||||
import mekanism.client.sound.GasMaskSound;
|
import mekanism.client.sound.GasMaskSound;
|
||||||
import mekanism.client.sound.JetpackSound;
|
import mekanism.client.sound.JetpackSound;
|
||||||
|
@ -36,7 +37,6 @@ import mekanism.common.network.PacketScubaTankData.ScubaTankPacket;
|
||||||
import mekanism.common.network.PacketWalkieTalkieState.WalkieTalkieStateMessage;
|
import mekanism.common.network.PacketWalkieTalkieState.WalkieTalkieStateMessage;
|
||||||
import mekanism.common.util.LangUtils;
|
import mekanism.common.util.LangUtils;
|
||||||
import mekanism.common.util.MekanismUtils;
|
import mekanism.common.util.MekanismUtils;
|
||||||
import mekanism.api.StackUtils;
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.entity.AbstractClientPlayer;
|
import net.minecraft.client.entity.AbstractClientPlayer;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
@ -312,8 +312,15 @@ public class ClientTickHandler
|
||||||
{
|
{
|
||||||
if(!lastTickUpdate)
|
if(!lastTickUpdate)
|
||||||
{
|
{
|
||||||
((ItemJetpack)jetpack.getItem()).incrementMode(jetpack);
|
if(mc.thePlayer.isSneaking())
|
||||||
Mekanism.packetHandler.sendToServer(new JetpackDataMessage(JetpackPacket.MODE, null, false));
|
{
|
||||||
|
((ItemJetpack)jetpack.getItem()).setMode(stack, JetpackMode.DISABLED);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
((ItemJetpack)jetpack.getItem()).incrementMode(jetpack);
|
||||||
|
}
|
||||||
|
|
||||||
|
Mekanism.packetHandler.sendToServer(new JetpackDataMessage(JetpackPacket.MODE, null, mc.thePlayer.isSneaking()));
|
||||||
SoundHandler.playSound("mekanism:etc.Hydraulic");
|
SoundHandler.playSound("mekanism:etc.Hydraulic");
|
||||||
lastTickUpdate = true;
|
lastTickUpdate = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,22 +43,15 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
|
||||||
public EnergyNetwork(IGridTransmitter<EnergyNetwork>... varCables)
|
public EnergyNetwork(IGridTransmitter<EnergyNetwork>... varCables)
|
||||||
{
|
{
|
||||||
transmitters.addAll(Arrays.asList(varCables));
|
transmitters.addAll(Arrays.asList(varCables));
|
||||||
updateCapacity();
|
|
||||||
register();
|
register();
|
||||||
}
|
}
|
||||||
|
|
||||||
public EnergyNetwork(Collection<IGridTransmitter<EnergyNetwork>> collection)
|
public EnergyNetwork(Collection<IGridTransmitter<EnergyNetwork>> collection)
|
||||||
{
|
{
|
||||||
transmitters.addAll(collection);
|
transmitters.addAll(collection);
|
||||||
updateCapacity();
|
|
||||||
register();
|
register();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static double round(double d)
|
|
||||||
{
|
|
||||||
return Math.round(d * 10000)/10000;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EnergyNetwork(Set<EnergyNetwork> networks)
|
public EnergyNetwork(Set<EnergyNetwork> networks)
|
||||||
{
|
{
|
||||||
for(EnergyNetwork net : networks)
|
for(EnergyNetwork net : networks)
|
||||||
|
@ -80,9 +73,13 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fullRefresh();
|
|
||||||
register();
|
register();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static double round(double d)
|
||||||
|
{
|
||||||
|
return Math.round(d * 10000)/10000;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected synchronized void updateMeanCapacity()
|
protected synchronized void updateMeanCapacity()
|
||||||
|
|
|
@ -43,14 +43,12 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
|
||||||
public FluidNetwork(IGridTransmitter<FluidNetwork>... varPipes)
|
public FluidNetwork(IGridTransmitter<FluidNetwork>... varPipes)
|
||||||
{
|
{
|
||||||
transmitters.addAll(Arrays.asList(varPipes));
|
transmitters.addAll(Arrays.asList(varPipes));
|
||||||
updateCapacity();
|
|
||||||
register();
|
register();
|
||||||
}
|
}
|
||||||
|
|
||||||
public FluidNetwork(Collection<IGridTransmitter<FluidNetwork>> collection)
|
public FluidNetwork(Collection<IGridTransmitter<FluidNetwork>> collection)
|
||||||
{
|
{
|
||||||
transmitters.addAll(collection);
|
transmitters.addAll(collection);
|
||||||
updateCapacity();
|
|
||||||
register();
|
register();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,9 +93,6 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
|
||||||
|
|
||||||
fluidScale = getScale();
|
fluidScale = getScale();
|
||||||
|
|
||||||
updateCapacity();
|
|
||||||
|
|
||||||
fullRefresh();
|
|
||||||
register();
|
register();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1424,7 +1424,7 @@ public class Mekanism
|
||||||
public void onEnergyTransferred(EnergyTransferEvent event)
|
public void onEnergyTransferred(EnergyTransferEvent event)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
packetHandler.sendToDimension(new TransmitterUpdateMessage(PacketType.ENERGY, Coord4D.get((TileEntity)event.energyNetwork.transmitters.iterator().next()), event.power), event.energyNetwork.getDimension());
|
packetHandler.sendToDimension(new TransmitterUpdateMessage(PacketType.ENERGY, Coord4D.get((TileEntity)event.energyNetwork.transmitters.iterator().next()), event.power), event.energyNetwork.getWorld().provider.dimensionId);
|
||||||
} catch(Exception e) {}
|
} catch(Exception e) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1432,7 +1432,7 @@ public class Mekanism
|
||||||
public void onGasTransferred(GasTransferEvent event)
|
public void onGasTransferred(GasTransferEvent event)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
packetHandler.sendToDimension(new TransmitterUpdateMessage(PacketType.GAS, Coord4D.get((TileEntity)event.gasNetwork.transmitters.iterator().next()), event.transferType, event.didTransfer), event.gasNetwork.getDimension());
|
packetHandler.sendToDimension(new TransmitterUpdateMessage(PacketType.GAS, Coord4D.get((TileEntity)event.gasNetwork.transmitters.iterator().next()), event.transferType, event.didTransfer), event.gasNetwork.getWorld().provider.dimensionId);
|
||||||
} catch(Exception e) {}
|
} catch(Exception e) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1440,7 +1440,7 @@ public class Mekanism
|
||||||
public void onLiquidTransferred(FluidTransferEvent event)
|
public void onLiquidTransferred(FluidTransferEvent event)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
packetHandler.sendToDimension(new TransmitterUpdateMessage(PacketType.FLUID, Coord4D.get((TileEntity)event.fluidNetwork.transmitters.iterator().next()), event.fluidType, event.didTransfer), event.fluidNetwork.getDimension());
|
packetHandler.sendToDimension(new TransmitterUpdateMessage(PacketType.FLUID, Coord4D.get((TileEntity)event.fluidNetwork.transmitters.iterator().next()), event.fluidType, event.didTransfer), event.fluidNetwork.getWorld().provider.dimensionId);
|
||||||
} catch(Exception e) {}
|
} catch(Exception e) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -101,6 +101,8 @@ public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> extends Pa
|
||||||
if(connectedNets.size() == 0)
|
if(connectedNets.size() == 0)
|
||||||
{
|
{
|
||||||
theNetwork = createNetworkFromSingleTransmitter((IGridTransmitter<N>)tile());
|
theNetwork = createNetworkFromSingleTransmitter((IGridTransmitter<N>)tile());
|
||||||
|
theNetwork.fullRefresh();
|
||||||
|
theNetwork.updateCapacity();
|
||||||
}
|
}
|
||||||
else if(connectedNets.size() == 1)
|
else if(connectedNets.size() == 1)
|
||||||
{
|
{
|
||||||
|
@ -114,6 +116,8 @@ public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> extends Pa
|
||||||
else {
|
else {
|
||||||
theNetwork = createNetworkByMergingSet(connectedNets);
|
theNetwork = createNetworkByMergingSet(connectedNets);
|
||||||
theNetwork.transmitters.add((IGridTransmitter<N>)tile());
|
theNetwork.transmitters.add((IGridTransmitter<N>)tile());
|
||||||
|
theNetwork.fullRefresh();
|
||||||
|
theNetwork.updateCapacity();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -134,7 +134,9 @@ public class PartUniversalCable extends PartTransmitter<EnergyNetwork> implement
|
||||||
super.refreshTransmitterNetwork();
|
super.refreshTransmitterNetwork();
|
||||||
|
|
||||||
if(MekanismUtils.useBuildCraft())
|
if(MekanismUtils.useBuildCraft())
|
||||||
|
{
|
||||||
reconfigure();
|
reconfigure();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -4,6 +4,7 @@ import io.netty.buffer.ByteBuf;
|
||||||
import mekanism.common.Mekanism;
|
import mekanism.common.Mekanism;
|
||||||
import mekanism.common.PacketHandler;
|
import mekanism.common.PacketHandler;
|
||||||
import mekanism.common.item.ItemJetpack;
|
import mekanism.common.item.ItemJetpack;
|
||||||
|
import mekanism.common.item.ItemJetpack.JetpackMode;
|
||||||
import mekanism.common.network.PacketJetpackData.JetpackDataMessage;
|
import mekanism.common.network.PacketJetpackData.JetpackDataMessage;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
@ -39,7 +40,13 @@ public class PacketJetpackData implements IMessageHandler<JetpackDataMessage, IM
|
||||||
|
|
||||||
if(stack != null && stack.getItem() instanceof ItemJetpack)
|
if(stack != null && stack.getItem() instanceof ItemJetpack)
|
||||||
{
|
{
|
||||||
((ItemJetpack)stack.getItem()).incrementMode(stack);
|
if(!message.value)
|
||||||
|
{
|
||||||
|
((ItemJetpack)stack.getItem()).incrementMode(stack);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
((ItemJetpack)stack.getItem()).setMode(stack, JetpackMode.DISABLED);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,11 +65,11 @@ public class PacketJetpackData implements IMessageHandler<JetpackDataMessage, IM
|
||||||
public JetpackDataMessage(JetpackPacket type, String name, boolean state)
|
public JetpackDataMessage(JetpackPacket type, String name, boolean state)
|
||||||
{
|
{
|
||||||
packetType = type;
|
packetType = type;
|
||||||
|
value = state;
|
||||||
|
|
||||||
if(packetType == JetpackPacket.UPDATE)
|
if(packetType == JetpackPacket.UPDATE)
|
||||||
{
|
{
|
||||||
username = name;
|
username = name;
|
||||||
value = state;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +78,11 @@ public class PacketJetpackData implements IMessageHandler<JetpackDataMessage, IM
|
||||||
{
|
{
|
||||||
dataStream.writeInt(packetType.ordinal());
|
dataStream.writeInt(packetType.ordinal());
|
||||||
|
|
||||||
if(packetType == JetpackPacket.UPDATE)
|
if(packetType == JetpackPacket.MODE)
|
||||||
|
{
|
||||||
|
dataStream.writeBoolean(value);
|
||||||
|
}
|
||||||
|
else if(packetType == JetpackPacket.UPDATE)
|
||||||
{
|
{
|
||||||
PacketHandler.writeString(dataStream, username);
|
PacketHandler.writeString(dataStream, username);
|
||||||
dataStream.writeBoolean(value);
|
dataStream.writeBoolean(value);
|
||||||
|
@ -92,7 +103,16 @@ public class PacketJetpackData implements IMessageHandler<JetpackDataMessage, IM
|
||||||
{
|
{
|
||||||
packetType = JetpackPacket.values()[dataStream.readInt()];
|
packetType = JetpackPacket.values()[dataStream.readInt()];
|
||||||
|
|
||||||
if(packetType == JetpackPacket.FULL)
|
if(packetType == JetpackPacket.MODE)
|
||||||
|
{
|
||||||
|
value = dataStream.readBoolean();
|
||||||
|
}
|
||||||
|
else if(packetType == JetpackPacket.UPDATE)
|
||||||
|
{
|
||||||
|
username = PacketHandler.readString(dataStream);
|
||||||
|
value = dataStream.readBoolean();
|
||||||
|
}
|
||||||
|
else if(packetType == JetpackPacket.FULL)
|
||||||
{
|
{
|
||||||
Mekanism.jetpackOn.clear();
|
Mekanism.jetpackOn.clear();
|
||||||
|
|
||||||
|
@ -103,11 +123,6 @@ public class PacketJetpackData implements IMessageHandler<JetpackDataMessage, IM
|
||||||
Mekanism.jetpackOn.add(PacketHandler.readString(dataStream));
|
Mekanism.jetpackOn.add(PacketHandler.readString(dataStream));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(packetType == JetpackPacket.UPDATE)
|
|
||||||
{
|
|
||||||
username = PacketHandler.readString(dataStream);
|
|
||||||
value = dataStream.readBoolean();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue