public static void WritePropertyData(Wrapped wSock, PropertyData Data) {
     wSock.writeString(Data.Key);
     wSock.writeDouble(Data.Value);
     wSock.writeShort(Data.ListLength);
     
     for (int x = 0; x < Data.ListLength; x++)
         WriteModifierData(wSock, Data.Modifiers[x]);
 }
        public static void WritePropertyData(Wrapped wSock, PropertyData data) {
            wSock.writeString(data.Key);
            wSock.writeDouble(data.Value);
            wSock.writeVarInt(data.Modifiers.Length);

            foreach (var modifierData in data.Modifiers)
                WriteModifierData(wSock, modifierData);
        }
        public static PropertyData ReadPropertyData(Wrapped wSock) {
            var Data = new PropertyData();

            Data.Key = wSock.readString();
            Data.Value = wSock.readDouble();
            Data.ListLength = wSock.readShort();
            Data.Modifiers = new ModifierData[Data.ListLength];

            for (int x = 0; x < Data.ListLength; x++) 
                Data.Modifiers[x] = ReadModifierData(wSock);
            
            return Data;
        }
        public static PropertyData ReadPropertyData(Wrapped wSock) {
            var data = new PropertyData
            {
                Key = wSock.readString(),
                Value = wSock.readDouble()
            };

            var items = wSock.readVarInt();

            data.Modifiers = new ModifierData[items];

            for (var x = 0; x < items; x++) 
                data.Modifiers[x] = ReadModifierData(wSock);
            
            return data;
        }