public function setBlockData($x, $y, $z, $data)
{
$i = $x << 10 | $z << 6 | $y >> 1;
$old_m = ord($this->data[$i]);
if (($y & 1) === 0) {
$this->data[$i] = chr($old_m & 0xf0 | $data & 0xf);
} else {
$this->data[$i] = chr(($data & 0xf) << 4 | $old_m & 0xf);
}
$this->hasChanged = true;
}