public function getClip($name) { $result = $this->db->query("SELECT * FROM clipboard_blocks WHERE name = '{$this->db->escape_string($name)}';"); $blocks = []; while (is_array($data = $result->fetch_assoc())) { $blocks[Clip::key(new Vector3($data["x"], $data["y"], $data["z"]))] = Block::get($data["id"], $data["damage"]); $rname = $data["name"]; // restore the cases } $result->close(); if (!isset($rname)) { return null; } $clip = new Clip($blocks, null, $rname); return $clip; }
public static function parse(StringReader $reader) { $name = $reader->readBString(); $length = $reader->readLong(false); $blocks = []; for ($i = 0; $i < $length; $i++) { if ($reader->feof()) { throw new \Exception("Unexpected end of file"); } $x = $reader->readInt(); $y = $reader->readShort(); $z = $reader->readInt(); $v = new Vector3($x, $y, $z); $blocks[Clip::key($v)] = Block::get($reader->readByte(false), $reader->readByte(false)); } return new Clip($blocks, null, $name); }