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)
|
||||
{
|
||||
transmitters.addAll(Arrays.asList(varPipes));
|
||||
updateCapacity();
|
||||
register();
|
||||
}
|
||||
|
||||
public GasNetwork(Collection<IGridTransmitter<GasNetwork>> collection)
|
||||
{
|
||||
transmitters.addAll(collection);
|
||||
updateCapacity();
|
||||
register();
|
||||
}
|
||||
|
||||
|
@ -97,8 +95,6 @@ public class GasNetwork extends DynamicNetwork<IGasHandler, GasNetwork>
|
|||
|
||||
gasScale = getScale();
|
||||
|
||||
updateCapacity();
|
||||
fullRefresh();
|
||||
register();
|
||||
}
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ import java.util.Set;
|
|||
|
||||
import mekanism.api.Coord4D;
|
||||
import mekanism.api.IClientTicker;
|
||||
import mekanism.common.Mekanism;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
public int getDimension()
|
||||
public World getWorld()
|
||||
{
|
||||
if(getSize() == 0)
|
||||
{
|
||||
return 0;
|
||||
return null;
|
||||
}
|
||||
|
||||
return transmitters.iterator().next().getTile().getWorldObj().provider.dimensionId;
|
||||
return transmitters.iterator().next().getTile().getWorldObj();
|
||||
}
|
||||
|
||||
protected AxisAlignedBB genPacketRange()
|
||||
|
@ -198,7 +211,8 @@ public abstract class DynamicNetwork<A, N extends DynamicNetwork<A, N>> implemen
|
|||
return possibleAcceptors.size();
|
||||
}
|
||||
|
||||
public synchronized void updateCapacity() {
|
||||
public synchronized void updateCapacity()
|
||||
{
|
||||
updateMeanCapacity();
|
||||
capacity = (int)meanCapacity * transmitters.size();
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ import java.util.Set;
|
|||
|
||||
import mekanism.api.EnumColor;
|
||||
import mekanism.api.IClientTicker;
|
||||
import mekanism.api.StackUtils;
|
||||
import mekanism.api.gas.GasStack;
|
||||
import mekanism.client.sound.GasMaskSound;
|
||||
import mekanism.client.sound.JetpackSound;
|
||||
|
@ -36,7 +37,6 @@ import mekanism.common.network.PacketScubaTankData.ScubaTankPacket;
|
|||
import mekanism.common.network.PacketWalkieTalkieState.WalkieTalkieStateMessage;
|
||||
import mekanism.common.util.LangUtils;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import mekanism.api.StackUtils;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.AbstractClientPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
|
@ -312,8 +312,15 @@ public class ClientTickHandler
|
|||
{
|
||||
if(!lastTickUpdate)
|
||||
{
|
||||
((ItemJetpack)jetpack.getItem()).incrementMode(jetpack);
|
||||
Mekanism.packetHandler.sendToServer(new JetpackDataMessage(JetpackPacket.MODE, null, false));
|
||||
if(mc.thePlayer.isSneaking())
|
||||
{
|
||||
((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");
|
||||
lastTickUpdate = true;
|
||||
}
|
||||
|
|
|
@ -43,22 +43,15 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
|
|||
public EnergyNetwork(IGridTransmitter<EnergyNetwork>... varCables)
|
||||
{
|
||||
transmitters.addAll(Arrays.asList(varCables));
|
||||
updateCapacity();
|
||||
register();
|
||||
}
|
||||
|
||||
public EnergyNetwork(Collection<IGridTransmitter<EnergyNetwork>> collection)
|
||||
{
|
||||
transmitters.addAll(collection);
|
||||
updateCapacity();
|
||||
register();
|
||||
}
|
||||
|
||||
public static double round(double d)
|
||||
{
|
||||
return Math.round(d * 10000)/10000;
|
||||
}
|
||||
|
||||
public EnergyNetwork(Set<EnergyNetwork> networks)
|
||||
{
|
||||
for(EnergyNetwork net : networks)
|
||||
|
@ -80,9 +73,13 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
|
|||
}
|
||||
}
|
||||
|
||||
fullRefresh();
|
||||
register();
|
||||
}
|
||||
|
||||
public static double round(double d)
|
||||
{
|
||||
return Math.round(d * 10000)/10000;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected synchronized void updateMeanCapacity()
|
||||
|
|
|
@ -43,14 +43,12 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
|
|||
public FluidNetwork(IGridTransmitter<FluidNetwork>... varPipes)
|
||||
{
|
||||
transmitters.addAll(Arrays.asList(varPipes));
|
||||
updateCapacity();
|
||||
register();
|
||||
}
|
||||
|
||||
public FluidNetwork(Collection<IGridTransmitter<FluidNetwork>> collection)
|
||||
{
|
||||
transmitters.addAll(collection);
|
||||
updateCapacity();
|
||||
register();
|
||||
}
|
||||
|
||||
|
@ -95,9 +93,6 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
|
|||
|
||||
fluidScale = getScale();
|
||||
|
||||
updateCapacity();
|
||||
|
||||
fullRefresh();
|
||||
register();
|
||||
}
|
||||
|
||||
|
|
|
@ -1424,7 +1424,7 @@ public class Mekanism
|
|||
public void onEnergyTransferred(EnergyTransferEvent event)
|
||||
{
|
||||
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) {}
|
||||
}
|
||||
|
||||
|
@ -1432,7 +1432,7 @@ public class Mekanism
|
|||
public void onGasTransferred(GasTransferEvent event)
|
||||
{
|
||||
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) {}
|
||||
}
|
||||
|
||||
|
@ -1440,7 +1440,7 @@ public class Mekanism
|
|||
public void onLiquidTransferred(FluidTransferEvent event)
|
||||
{
|
||||
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) {}
|
||||
}
|
||||
|
||||
|
|
|
@ -101,6 +101,8 @@ public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> extends Pa
|
|||
if(connectedNets.size() == 0)
|
||||
{
|
||||
theNetwork = createNetworkFromSingleTransmitter((IGridTransmitter<N>)tile());
|
||||
theNetwork.fullRefresh();
|
||||
theNetwork.updateCapacity();
|
||||
}
|
||||
else if(connectedNets.size() == 1)
|
||||
{
|
||||
|
@ -114,6 +116,8 @@ public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> extends Pa
|
|||
else {
|
||||
theNetwork = createNetworkByMergingSet(connectedNets);
|
||||
theNetwork.transmitters.add((IGridTransmitter<N>)tile());
|
||||
theNetwork.fullRefresh();
|
||||
theNetwork.updateCapacity();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -134,7 +134,9 @@ public class PartUniversalCable extends PartTransmitter<EnergyNetwork> implement
|
|||
super.refreshTransmitterNetwork();
|
||||
|
||||
if(MekanismUtils.useBuildCraft())
|
||||
{
|
||||
reconfigure();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -4,6 +4,7 @@ import io.netty.buffer.ByteBuf;
|
|||
import mekanism.common.Mekanism;
|
||||
import mekanism.common.PacketHandler;
|
||||
import mekanism.common.item.ItemJetpack;
|
||||
import mekanism.common.item.ItemJetpack.JetpackMode;
|
||||
import mekanism.common.network.PacketJetpackData.JetpackDataMessage;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
@ -39,7 +40,13 @@ public class PacketJetpackData implements IMessageHandler<JetpackDataMessage, IM
|
|||
|
||||
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)
|
||||
{
|
||||
packetType = type;
|
||||
value = state;
|
||||
|
||||
if(packetType == JetpackPacket.UPDATE)
|
||||
{
|
||||
username = name;
|
||||
value = state;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -71,7 +78,11 @@ public class PacketJetpackData implements IMessageHandler<JetpackDataMessage, IM
|
|||
{
|
||||
dataStream.writeInt(packetType.ordinal());
|
||||
|
||||
if(packetType == JetpackPacket.UPDATE)
|
||||
if(packetType == JetpackPacket.MODE)
|
||||
{
|
||||
dataStream.writeBoolean(value);
|
||||
}
|
||||
else if(packetType == JetpackPacket.UPDATE)
|
||||
{
|
||||
PacketHandler.writeString(dataStream, username);
|
||||
dataStream.writeBoolean(value);
|
||||
|
@ -92,7 +103,16 @@ public class PacketJetpackData implements IMessageHandler<JetpackDataMessage, IM
|
|||
{
|
||||
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();
|
||||
|
||||
|
@ -103,11 +123,6 @@ public class PacketJetpackData implements IMessageHandler<JetpackDataMessage, IM
|
|||
Mekanism.jetpackOn.add(PacketHandler.readString(dataStream));
|
||||
}
|
||||
}
|
||||
else if(packetType == JetpackPacket.UPDATE)
|
||||
{
|
||||
username = PacketHandler.readString(dataStream);
|
||||
value = dataStream.readBoolean();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue