public static function writeMetadata(array $data)
{
$m = "";
foreach ($data as $bottom => $d) {
$m .= chr($d[0] << 5 | $bottom & 0x1f);
switch ($d[0]) {
case Entity::DATA_TYPE_BYTE:
$m .= self::writeByte($d[1]);
break;
case Entity::DATA_TYPE_SHORT:
$m .= self::writeLShort($d[1]);
break;
case Entity::DATA_TYPE_INT:
$m .= self::writeLInt($d[1]);
break;
case Entity::DATA_TYPE_FLOAT:
$m .= self::writeLFloat($d[1]);
break;
case Entity::DATA_TYPE_STRING:
$m .= self::writeLShort(strlen($d[1])) . $d[1];
break;
case Entity::DATA_TYPE_SLOT:
$m .= self::writeLShort($d[1][0]);
$m .= self::writeByte($d[1][1]);
$m .= self::writeLShort($d[1][2]);
break;
case Entity::DATA_TYPE_POS:
$m .= self::writeLInt($d[1][0]);
$m .= self::writeLInt($d[1][1]);
$m .= self::writeLInt($d[1][2]);
break;
case Entity::DATA_TYPE_LONG:
$m .= self::writeLLong($d[1]);
break;
}
}
$m .= "";
return $m;
}