/// <summary>
        /// updates an already existing object
        /// </summary>
        public virtual void UpdateObject(int par1, object par2Obj)
        {
            WatchableObject watchableobject = (WatchableObject)WatchedObjects[par1];

            if (!par2Obj.Equals(watchableobject.GetObject()))
            {
                watchableobject.SetObject(par2Obj);
                watchableobject.SetWatching(true);
                ObjectChanged = true;
            }
        }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: private static void writeWatchableObject(DataOutputStream par0DataOutputStream, WatchableObject par1WatchableObject) throws IOException
        private static void WriteWatchableObject(BinaryWriter par0DataOutputStream, WatchableObject par1WatchableObject)
        {
            int i = (par1WatchableObject.GetObjectType() << 5 | par1WatchableObject.GetDataValueId() & 0x1f) & 0xff;

            par0DataOutputStream.Write((byte)i);

            switch (par1WatchableObject.GetObjectType())
            {
            case 0:
                par0DataOutputStream.Write((byte)par1WatchableObject.GetObject());
                break;

            case 1:
                par0DataOutputStream.Write((short)par1WatchableObject.GetObject());
                break;

            case 2:
                par0DataOutputStream.Write((int)par1WatchableObject.GetObject());
                break;

            case 3:
                par0DataOutputStream.Write((float)par1WatchableObject.GetObject());
                break;

            case 4:
                Packet.WriteString((string)par1WatchableObject.GetObject(), par0DataOutputStream);
                break;

            case 5:
                ItemStack itemstack = (ItemStack)par1WatchableObject.GetObject();
                par0DataOutputStream.Write(itemstack.GetItem().ShiftedIndex);
                par0DataOutputStream.Write(itemstack.StackSize);
                par0DataOutputStream.Write(itemstack.GetItemDamage());
                break;

            case 6:
                ChunkCoordinates chunkcoordinates = (ChunkCoordinates)par1WatchableObject.GetObject();
                par0DataOutputStream.Write(chunkcoordinates.PosX);
                par0DataOutputStream.Write(chunkcoordinates.PosY);
                par0DataOutputStream.Write(chunkcoordinates.PosZ);
                break;
            }
        }