public static function emit(StringWriter $writer, Clip $clip)
 {
     $writer->appendBString($clip->getName());
     $writer->appendLong(count($clip->getBlocks()));
     foreach ($clip->getBlocks() as $key => $block) {
         $v = Clip::unkey($key);
         $writer->appendInt($v->x);
         $writer->appendShort($v->y);
         $writer->appendInt($v->z);
         $writer->appendByte($block->getID());
         $writer->appendByte($block->getDamage());
     }
 }
 public function setClip($name, Clip $clip)
 {
     if (strlen($name) >= 64) {
         throw new \InvalidArgumentException("Clip names must not exceed 64 characters!");
         // This exception will be caught at SubcommandMap.php
     }
     $blocks = $clip->getBlocks();
     $this->deleteClip($name);
     foreach ($blocks as $keyed => $block) {
         $unkeyed = Clip::unkey($keyed);
         $this->db->query("INSERT INTO clipboard_blocks VALUES (\n\t\t\t\t\t'{$this->db->escape_string($clip->getName())}',\n\t\t\t\t\t{$unkeyed->x},\n\t\t\t\t\t{$unkeyed->y},\n\t\t\t\t\t{$unkeyed->z},\n\t\t\t\t\t{$block->getID()},\n\t\t\t\t\t{$block->getDamage()}\n\t\t\t\t\t);");
     }
 }