mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-05-13 09:19:42 +00:00
Fixed SimpleChunk metadata
This commit is contained in:
parent
4354d76cae
commit
429f7ffe8d
@ -143,7 +143,7 @@ class SimpleChunk{
|
|||||||
*/
|
*/
|
||||||
public function getBlockData($x, $y, $z){
|
public function getBlockData($x, $y, $z){
|
||||||
$m = ord($this->meta[$y >> 4]{(($y & 0x0f) << 7) + ($z << 3) + ($x >> 1)});
|
$m = ord($this->meta[$y >> 4]{(($y & 0x0f) << 7) + ($z << 3) + ($x >> 1)});
|
||||||
if(($y & 1) === 0){
|
if(($x & 1) === 0){
|
||||||
return $m & 0x0F;
|
return $m & 0x0F;
|
||||||
}else{
|
}else{
|
||||||
return $m >> 4;
|
return $m >> 4;
|
||||||
@ -159,7 +159,7 @@ class SimpleChunk{
|
|||||||
public function setBlockData($x, $y, $z, $data){
|
public function setBlockData($x, $y, $z, $data){
|
||||||
$i = (($y & 0x0f) << 7) + ($z << 3) + ($x >> 1);
|
$i = (($y & 0x0f) << 7) + ($z << 3) + ($x >> 1);
|
||||||
$old_m = ord($this->meta[$y >> 4]{$i});
|
$old_m = ord($this->meta[$y >> 4]{$i});
|
||||||
if(($y & 1) === 0){
|
if(($x & 1) === 0){
|
||||||
$this->meta[$y >> 4]{$i} = chr(($old_m & 0xf0) | ($data & 0x0f));
|
$this->meta[$y >> 4]{$i} = chr(($old_m & 0xf0) | ($data & 0x0f));
|
||||||
}else{
|
}else{
|
||||||
$this->meta[$y >> 4]{$i} = chr((($data & 0x0f) << 4) | ($old_m & 0x0f));
|
$this->meta[$y >> 4]{$i} = chr((($data & 0x0f) << 4) | ($old_m & 0x0f));
|
||||||
|
@ -53,7 +53,7 @@ class ChunkSection implements \pocketmine\level\format\ChunkSection{
|
|||||||
|
|
||||||
public function getBlockData($x, $y, $z){
|
public function getBlockData($x, $y, $z){
|
||||||
$m = ord($this->data{($y << 7) + ($z << 3) + ($x >> 1)});
|
$m = ord($this->data{($y << 7) + ($z << 3) + ($x >> 1)});
|
||||||
if(($y & 1) === 0){
|
if(($x & 1) === 0){
|
||||||
return $m & 0x0F;
|
return $m & 0x0F;
|
||||||
}else{
|
}else{
|
||||||
return $m >> 4;
|
return $m >> 4;
|
||||||
@ -63,7 +63,7 @@ class ChunkSection implements \pocketmine\level\format\ChunkSection{
|
|||||||
public function setBlockData($x, $y, $z, $data){
|
public function setBlockData($x, $y, $z, $data){
|
||||||
$i = ($y << 7) + ($z << 3) + ($x >> 1);
|
$i = ($y << 7) + ($z << 3) + ($x >> 1);
|
||||||
$old_m = ord($this->data{$i});
|
$old_m = ord($this->data{$i});
|
||||||
if(($y & 1) === 0){
|
if(($x & 1) === 0){
|
||||||
$this->data{$i} = chr(($old_m & 0xf0) | ($data & 0x0f));
|
$this->data{$i} = chr(($old_m & 0xf0) | ($data & 0x0f));
|
||||||
}else{
|
}else{
|
||||||
$this->data{$i} = chr((($data & 0x0f) << 4) | ($old_m & 0x0f));
|
$this->data{$i} = chr((($data & 0x0f) << 4) | ($old_m & 0x0f));
|
||||||
@ -74,7 +74,7 @@ class ChunkSection implements \pocketmine\level\format\ChunkSection{
|
|||||||
$i = ($y << 8) + ($z << 4) + $x;
|
$i = ($y << 8) + ($z << 4) + $x;
|
||||||
$blockId = ord($this->blocks{$i});
|
$blockId = ord($this->blocks{$i});
|
||||||
$m = ord($this->data{$i >> 1});
|
$m = ord($this->data{$i >> 1});
|
||||||
if(($y & 1) === 0){
|
if(($x & 1) === 0){
|
||||||
$meta = $m & 0x0F;
|
$meta = $m & 0x0F;
|
||||||
}else{
|
}else{
|
||||||
$meta = $m >> 4;
|
$meta = $m >> 4;
|
||||||
@ -90,7 +90,7 @@ class ChunkSection implements \pocketmine\level\format\ChunkSection{
|
|||||||
if($meta !== null){
|
if($meta !== null){
|
||||||
$i >>= 1;
|
$i >>= 1;
|
||||||
$old_m = ord($this->data{$i});
|
$old_m = ord($this->data{$i});
|
||||||
if(($y & 1) === 0){
|
if(($x & 1) === 0){
|
||||||
$this->data{$i} = chr(($old_m & 0xf0) | ($meta & 0x0f));
|
$this->data{$i} = chr(($old_m & 0xf0) | ($meta & 0x0f));
|
||||||
}else{
|
}else{
|
||||||
$this->data{$i} = chr((($meta & 0x0f) << 4) | ($old_m & 0x0f));
|
$this->data{$i} = chr((($meta & 0x0f) << 4) | ($old_m & 0x0f));
|
||||||
@ -100,7 +100,7 @@ class ChunkSection implements \pocketmine\level\format\ChunkSection{
|
|||||||
|
|
||||||
public function getBlockSkyLight($x, $y, $z){
|
public function getBlockSkyLight($x, $y, $z){
|
||||||
$sl = ord($this->skyLight{($y << 7) + ($z << 3) + ($x >> 1)});
|
$sl = ord($this->skyLight{($y << 7) + ($z << 3) + ($x >> 1)});
|
||||||
if(($y & 1) === 0){
|
if(($x & 1) === 0){
|
||||||
return $sl & 0x0F;
|
return $sl & 0x0F;
|
||||||
}else{
|
}else{
|
||||||
return $sl >> 4;
|
return $sl >> 4;
|
||||||
@ -110,7 +110,7 @@ class ChunkSection implements \pocketmine\level\format\ChunkSection{
|
|||||||
public function setBlockSkyLight($x, $y, $z, $level){
|
public function setBlockSkyLight($x, $y, $z, $level){
|
||||||
$i = ($y << 7) + ($z << 3) + ($x >> 1);
|
$i = ($y << 7) + ($z << 3) + ($x >> 1);
|
||||||
$old_sl = ord($this->skyLight{$i});
|
$old_sl = ord($this->skyLight{$i});
|
||||||
if(($y & 1) === 0){
|
if(($x & 1) === 0){
|
||||||
$this->skyLight{$i} = chr(($old_sl & 0xf0) | ($level & 0x0f));
|
$this->skyLight{$i} = chr(($old_sl & 0xf0) | ($level & 0x0f));
|
||||||
}else{
|
}else{
|
||||||
$this->skyLight{$i} = chr((($level & 0x0f) << 4) | ($old_sl & 0x0f));
|
$this->skyLight{$i} = chr((($level & 0x0f) << 4) | ($old_sl & 0x0f));
|
||||||
@ -119,7 +119,7 @@ class ChunkSection implements \pocketmine\level\format\ChunkSection{
|
|||||||
|
|
||||||
public function getBlockLight($x, $y, $z){
|
public function getBlockLight($x, $y, $z){
|
||||||
$l = ord($this->blockLight{($y << 7) + ($z << 3) + ($x >> 1)});
|
$l = ord($this->blockLight{($y << 7) + ($z << 3) + ($x >> 1)});
|
||||||
if(($y & 1) === 0){
|
if(($x & 1) === 0){
|
||||||
return $l & 0x0F;
|
return $l & 0x0F;
|
||||||
}else{
|
}else{
|
||||||
return $l >> 4;
|
return $l >> 4;
|
||||||
@ -129,7 +129,7 @@ class ChunkSection implements \pocketmine\level\format\ChunkSection{
|
|||||||
public function setBlockLight($x, $y, $z, $level){
|
public function setBlockLight($x, $y, $z, $level){
|
||||||
$i = ($y << 7) + ($z << 3) + ($x >> 1);
|
$i = ($y << 7) + ($z << 3) + ($x >> 1);
|
||||||
$old_l = ord($this->blockLight{$i});
|
$old_l = ord($this->blockLight{$i});
|
||||||
if(($y & 1) === 0){
|
if(($x & 1) === 0){
|
||||||
$this->blockLight{$i} = chr(($old_l & 0xf0) | ($level & 0x0f));
|
$this->blockLight{$i} = chr(($old_l & 0xf0) | ($level & 0x0f));
|
||||||
}else{
|
}else{
|
||||||
$this->blockLight{$i} = chr((($level & 0x0f) << 4) | ($old_l & 0x0f));
|
$this->blockLight{$i} = chr((($level & 0x0f) << 4) | ($old_l & 0x0f));
|
||||||
@ -148,8 +148,14 @@ class ChunkSection implements \pocketmine\level\format\ChunkSection{
|
|||||||
public function getBlockDataColumn($x, $z){
|
public function getBlockDataColumn($x, $z){
|
||||||
$i = ($z << 3) + ($x >> 1);
|
$i = ($z << 3) + ($x >> 1);
|
||||||
$column = "";
|
$column = "";
|
||||||
for($y = 0; $y < 16; $y += 2){
|
if(($x & 1) === 0){
|
||||||
$column .= chr((ord($this->data{($y << 7) + $i}) & 0x0f) | ((ord($this->data{(($y + 1) << 7) + $i}) & 0x0f) << 4));
|
for($y = 0; $y < 16; $y += 2){
|
||||||
|
$column .= chr((ord($this->data{($y << 7) + $i}) & 0x0f) | ((ord($this->data{(($y + 1) << 7) + $i}) & 0x0f) << 4));
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
for($y = 0; $y < 16; $y += 2){
|
||||||
|
$column .= chr(((ord($this->data{($y << 7) + $i}) & 0xf0) >> 4) | (ord($this->data{(($y + 1) << 7) + $i}) & 0xf0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $column;
|
return $column;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user