setBuffer(chr($this->pid())); } public function setBuffer($buffer = ""){ $this->buffer = $buffer; $this->offset = 0; } public function getBuffer(){ return $this->buffer; } protected function get($len){ if($len <= 0){ $this->offset = strlen($this->buffer) - 1; return ""; } if($len === true){ return substr($this->buffer, $this->offset); } $this->offset += $len; return substr($this->buffer, $this->offset - $len, $len); } protected function put($str){ $this->buffer .= $str; } protected function getLong($unsigned = false){ return Utils::readLong($this->get(8), $unsigned); } protected function putLong($v){ $this->buffer .= Utils::writeLong($v); } protected function getInt(){ return Utils::readInt($this->get(4)); } protected function putInt($v){ $this->buffer .= Utils::writeInt($v); } protected function getShort($unsigned = false){ return Utils::readShort($this->get(2), $unsigned); } protected function putShort($v){ $this->buffer .= Utils::writeShort($v); } protected function getFloat(){ return Utils::readFloat($this->get(4)); } protected function putFloat($v){ $this->buffer .= Utils::writeFloat($v); } protected function getTriad(){ return Utils::readTriad($this->get(3)); } protected function putTriad($v){ $this->buffer .= Utils::writeTriad($v); } protected function getLTriad(){ return Utils::readTriad(strrev($this->get(3))); } protected function putLTriad($v){ $this->buffer .= strrev(Utils::writeTriad($v)); } protected function getByte(){ return ord($this->get(1)); } protected function putByte($v){ $this->buffer .= chr($v); } protected function getDataArray($len = 10){ $data = array(); for($i = 1; $i <= $len and !$this->feof(); ++$i){ $data[] = $this->get($this->getTriad()); } return $data; } protected function putDataArray(array $data = array()){ foreach($data as $v){ $this->putTriad(strlen($v)); $this->put($v); } } protected function getSlot(){ $id = $this->getShort(); $cnt = $this->getByte(); return BlockAPI::getItem( $id, $this->getShort(), $cnt ); } protected function putSlot(Item $item){ $this->putShort($item->getID()); $this->putByte($item->getCount()); $this->putShort($item->getMetadata()); } protected function getString(){ return $this->get($this->getShort(true)); } protected function putString($v){ $this->putShort(strlen($v)); $this->put($v); } protected function feof(){ return !isset($this->buffer{$this->offset}); } }