blob: 0791c7fe3a87c0afd38f48938e8593c77a3e499d [file] [log] [blame] [raw]
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.ItemJetpack;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
public class PacketJetpackData extends MekanismPacket
{
public JetpackPacket packetType;
public String username;
public boolean value;
public PacketJetpackData() {}
public PacketJetpackData(JetpackPacket type, String name, boolean state)
{
packetType = type;
if(packetType == JetpackPacket.UPDATE)
{
username = name;
value = state;
}
}
@Override
public void write(ChannelHandlerContext ctx, ByteBuf dataStream)
{
dataStream.writeInt(packetType.ordinal());
if(packetType == JetpackPacket.UPDATE)
{
PacketHandler.writeString(dataStream, username);
dataStream.writeBoolean(value);
}
else if(packetType == JetpackPacket.FULL)
{
dataStream.writeInt(Mekanism.jetpackOn.size());
for(String username : Mekanism.jetpackOn)
{
PacketHandler.writeString(dataStream, username);
}
}
}
@Override
public void read(ChannelHandlerContext ctx, EntityPlayer player, ByteBuf dataStream)
{
packetType = JetpackPacket.values()[dataStream.readInt()];
if(packetType == JetpackPacket.FULL)
{
Mekanism.jetpackOn.clear();
int amount = dataStream.readInt();
for(int i = 0; i < amount; i++)
{
Mekanism.jetpackOn.add(PacketHandler.readString(dataStream));
}
}
else if(packetType == JetpackPacket.UPDATE)
{
String username = PacketHandler.readString(dataStream);
boolean value = dataStream.readBoolean();
if(value)
{
Mekanism.jetpackOn.add(username);
}
else {
Mekanism.jetpackOn.remove(username);
}
if(!player.worldObj.isRemote)
{
Mekanism.packetPipeline.sendToDimension(new PacketJetpackData(JetpackPacket.UPDATE, username, value), player.worldObj.provider.dimensionId);
}
}
else if(packetType == JetpackPacket.MODE)
{
ItemStack stack = player.getEquipmentInSlot(3);
if(stack != null && stack.getItem() instanceof ItemJetpack)
{
((ItemJetpack)stack.getItem()).incrementMode(stack);
}
}
}
@Override
public void handleClientSide(EntityPlayer player)
{
}
@Override
public void handleServerSide(EntityPlayer player)
{
}
public static enum JetpackPacket
{
UPDATE,
FULL,
MODE;
}
}