package minefantasy.mf2.network.packet;
import io.netty.buffer.ByteBuf;
import minefantasy.mf2.block.tileentity.TileEntityAnvilMF;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import cpw.mods.fml.common.network.ByteBufUtils;
public class AnvilPacket extends PacketMF
{
public static final String packetName = "MF2_AnvilPacket";
private int[] coords = new int[3];
private String resultName;
private String toolNeeded;
private String research;
private float[] floats = new float[6];
private int[] tiers = new int[2];
public AnvilPacket(TileEntityAnvilMF tile)
{
coords = new int[]{tile.xCoord, tile.yCoord, tile.zCoord};
resultName = tile.getResultName();
toolNeeded = tile.getToolNeeded();
research = tile.getResearchNeeded();
floats = new float[]{tile.progress, tile.progressMax, tile.qualityBalance, tile.thresholdPosition, tile.leftHit, tile.rightHit};
tiers = new int[]{tile.getToolTierNeeded(), tile.getAnvilTierNeeded()};
if(floats[1] <= 0)
{
floats[1] = 0;
}
}
public AnvilPacket() {
}
@Override
public void process(ByteBuf packet, EntityPlayer player)
{
coords = new int[]{packet.readInt(), packet.readInt(), packet.readInt()};
TileEntity entity = player.worldObj.getTileEntity(coords[0], coords[1], coords[2]);
if(entity != null && entity instanceof TileEntityAnvilMF)
{
floats[0] = packet.readFloat();
floats[1] = packet.readFloat();
floats[2] = packet.readFloat();
floats[3] = packet.readFloat();
floats[4] = packet.readFloat();
floats[5] = packet.readFloat();
tiers[0] = packet.readInt();
tiers[1] = packet.readInt();
resultName = ByteBufUtils.readUTF8String(packet);
toolNeeded = ByteBufUtils.readUTF8String(packet);
research = ByteBufUtils.readUTF8String(packet);
TileEntityAnvilMF anvil = (TileEntityAnvilMF)entity;
anvil.resName = resultName;
anvil.setToolType(toolNeeded);
anvil.progress = floats[0];
anvil.progressMax = floats[1];
anvil.qualityBalance = floats[2];
anvil.thresholdPosition = floats[3];
anvil.leftHit = floats[4];
anvil.rightHit = floats[5];
anvil.setHammerUsed(tiers[0]);
anvil.setRequiredAnvil(tiers[1]);
anvil.setResearch(research);
}
}
@Override
public String getChannel()
{
return packetName;
}
@Override
public void write(ByteBuf packet)
{
for(int a = 0; a < coords.length; a++)
{
packet.writeInt(coords[a]);
}
for(int a = 0; a < floats.length; a++)
{
packet.writeFloat(floats[a]);
}
packet.writeInt(tiers[0]);
packet.writeInt(tiers[1]);
ByteBufUtils.writeUTF8String(packet, resultName);
ByteBufUtils.writeUTF8String(packet, toolNeeded);
ByteBufUtils.writeUTF8String(packet, research);
}
}