Mekanism-tilera-Edition/src/main/java/mekanism/common/network/PacketScubaTankData.java

116 lines
2.4 KiB
Java
Raw Normal View History

2013-12-06 21:26:44 +01:00
package mekanism.common.network;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
2013-12-06 21:26:44 +01:00
import mekanism.common.Mekanism;
import mekanism.common.PacketHandler;
2013-12-06 21:26:44 +01:00
import mekanism.common.item.ItemScubaTank;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
public class PacketScubaTankData extends MekanismPacket
2013-12-06 21:26:44 +01:00
{
public ScubaTankPacket packetType;
public String username;
2013-12-06 21:26:44 +01:00
public boolean value;
public PacketScubaTankData() {}
public PacketScubaTankData(ScubaTankPacket type, String name, boolean state)
2013-12-06 21:26:44 +01:00
{
packetType = type;
if(packetType == ScubaTankPacket.UPDATE)
2013-12-06 21:26:44 +01:00
{
username = name;
value = state;
2013-12-06 21:26:44 +01:00
}
}
@Override
public void write(ChannelHandlerContext ctx, ByteBuf dataStream)
{
dataStream.writeInt(packetType.ordinal());
if(packetType == ScubaTankPacket.UPDATE)
{
PacketHandler.writeString(dataStream, username);
dataStream.writeBoolean(value);
}
else if(packetType == ScubaTankPacket.FULL)
{
dataStream.writeInt(Mekanism.gasmaskOn.size());
for(String name : Mekanism.gasmaskOn)
{
PacketHandler.writeString(dataStream, name);
}
}
}
@Override
public void read(ChannelHandlerContext ctx, EntityPlayer player, ByteBuf dataStream)
2013-12-06 21:26:44 +01:00
{
packetType = ScubaTankPacket.values()[dataStream.readInt()];
if(packetType == ScubaTankPacket.FULL)
{
Mekanism.gasmaskOn.clear();
int amount = dataStream.readInt();
for(int i = 0; i < amount; i++)
{
Mekanism.gasmaskOn.add(PacketHandler.readString(dataStream));
}
}
else if(packetType == ScubaTankPacket.UPDATE)
2013-12-06 21:26:44 +01:00
{
String username = PacketHandler.readString(dataStream);
2013-12-06 21:26:44 +01:00
boolean value = dataStream.readBoolean();
if(value)
{
Mekanism.gasmaskOn.add(username);
}
else {
Mekanism.gasmaskOn.remove(username);
}
if(!player.worldObj.isRemote)
2013-12-06 21:26:44 +01:00
{
Mekanism.packetPipeline.sendToDimension(new PacketScubaTankData(ScubaTankPacket.UPDATE, username, value), player.worldObj.provider.dimensionId);
2013-12-06 21:26:44 +01:00
}
}
else if(packetType == ScubaTankPacket.MODE)
2013-12-06 21:26:44 +01:00
{
ItemStack stack = player.getEquipmentInSlot(3);
2013-12-06 21:26:44 +01:00
if(stack != null && stack.getItem() instanceof ItemScubaTank)
{
((ItemScubaTank)stack.getItem()).toggleFlowing(stack);
}
}
}
@Override
public void handleClientSide(EntityPlayer player)
{
}
@Override
public void handleServerSide(EntityPlayer player)
{
}
public static enum ScubaTankPacket
2013-12-06 21:26:44 +01:00
{
UPDATE,
FULL,
2013-12-06 21:26:44 +01:00
MODE;
}
}