@Override
 public void writeEntityToNBT(NBTTagCompound compound) {
   super.writeEntityToNBT(compound);
   if (stack != null) {
     compound.setTag("fly_stack", stack.writeToNBT(new NBTTagCompound()));
   }
   compound.setBoolean("flare", isFire());
 }
 @Override
 public void writeEntityToNBT(NBTTagCompound compound) {
   super.writeEntityToNBT(compound);
   compound.setFloat("hitPosX", dataWatcher.getWatchableObjectFloat(HIT_POS_X));
   compound.setFloat("hitPosY", dataWatcher.getWatchableObjectFloat(HIT_POS_Y));
   compound.setFloat("hitPosZ", dataWatcher.getWatchableObjectFloat(HIT_POS_Z));
   compound.setInteger("hitX", hitX);
   compound.setInteger("hitY", hitY);
   compound.setInteger("hitZ", hitZ);
   compound.setByte("customInGround", (byte) (isInGround() ? 1 : 0));
   compound.setInteger("whipType", getType().ordinal());
 }
 @Override
 public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) {
   super.writeEntityToNBT(par1NBTTagCompound);
   par1NBTTagCompound.setInteger("metType", this.mID);
   par1NBTTagCompound.setBoolean("isRandom", this.isRandom);
 }
 public void writeEntityToNBT(NBTTagCompound tagcompound) {
   super.writeEntityToNBT(tagcompound);
 }