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

115 lines
2.4 KiB
Java

package mekanism.common.network;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import mekanism.common.Mekanism;
import mekanism.common.PacketHandler;
import mekanism.common.item.ItemScubaTank;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
public class PacketScubaTankData extends MekanismPacket
{
public ScubaTankPacket packetType;
public String username;
public boolean value;
public PacketScubaTankData() {}
public PacketScubaTankData(ScubaTankPacket type, String name, boolean state)
{
packetType = type;
if(packetType == ScubaTankPacket.UPDATE)
{
username = name;
value = state;
}
}
@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)
{
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)
{
String username = PacketHandler.readString(dataStream);
boolean value = dataStream.readBoolean();
if(value)
{
Mekanism.gasmaskOn.add(username);
}
else {
Mekanism.gasmaskOn.remove(username);
}
if(!player.worldObj.isRemote)
{
Mekanism.packetPipeline.sendToDimension(new PacketScubaTankData(ScubaTankPacket.UPDATE, username, value), player.worldObj.provider.dimensionId);
}
}
else if(packetType == ScubaTankPacket.MODE)
{
ItemStack stack = player.getEquipmentInSlot(3);
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
{
UPDATE,
FULL,
MODE;
}
}