mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-13 21:35:21 +00:00
Fix for block updates
This commit is contained in:
parent
b9eca491e8
commit
52b4220ade
@ -495,7 +495,7 @@ class BlockAPI{
|
|||||||
"z" => $spread[2][2],
|
"z" => $spread[2][2],
|
||||||
"type" => BLOCK_UPDATE_NORMAL,
|
"type" => BLOCK_UPDATE_NORMAL,
|
||||||
));
|
));
|
||||||
$this->server->api->level->setBlock($spread[2][0], $spread[2][1], $spread[2][2], $spread[0], $level | $down);
|
$this->server->api->level->setBlock($spread[2][0], $spread[2][1], $spread[2][2], $spread[0], $level | $down, false);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}elseif(isset(Material::$flowable[$spread[0]])){
|
}elseif(isset(Material::$flowable[$spread[0]])){
|
||||||
@ -505,10 +505,10 @@ class BlockAPI{
|
|||||||
"z" => $spread[2][2],
|
"z" => $spread[2][2],
|
||||||
"type" => BLOCK_UPDATE_NORMAL,
|
"type" => BLOCK_UPDATE_NORMAL,
|
||||||
));
|
));
|
||||||
$this->server->api->level->setBlock($spread[2][0], $spread[2][1], $spread[2][2], 10, $level | $down);
|
$this->server->api->level->setBlock($spread[2][0], $spread[2][1], $spread[2][2], 10, $level | $down, false);
|
||||||
return true;
|
return true;
|
||||||
}elseif(($source[1] & 0x08) === 0x08){
|
}elseif(($source[1] & 0x08) === 0x08){
|
||||||
$this->server->api->level->setBlock($spread[2][0], $spread[2][1], $spread[2][2], $source[0], $source[1] & 0x07);
|
$this->server->api->level->setBlock($spread[2][0], $spread[2][1], $spread[2][2], $source[0], $source[1] & 0x07, false);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -534,7 +534,7 @@ class BlockAPI{
|
|||||||
"z" => $spread[2][2],
|
"z" => $spread[2][2],
|
||||||
"type" => BLOCK_UPDATE_NORMAL,
|
"type" => BLOCK_UPDATE_NORMAL,
|
||||||
));
|
));
|
||||||
$this->server->api->level->setBlock($spread[2][0], $spread[2][1], $spread[2][2], $spread[0], $level | $down);
|
$this->server->api->level->setBlock($spread[2][0], $spread[2][1], $spread[2][2], $spread[0], $level | $down, false);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}elseif(isset(Material::$flowable[$spread[0]])){
|
}elseif(isset(Material::$flowable[$spread[0]])){
|
||||||
@ -544,10 +544,10 @@ class BlockAPI{
|
|||||||
"z" => $spread[2][2],
|
"z" => $spread[2][2],
|
||||||
"type" => BLOCK_UPDATE_NORMAL,
|
"type" => BLOCK_UPDATE_NORMAL,
|
||||||
));
|
));
|
||||||
$this->server->api->level->setBlock($spread[2][0], $spread[2][1], $spread[2][2], 8, $level | $down);
|
$this->server->api->level->setBlock($spread[2][0], $spread[2][1], $spread[2][2], 8, $level | $down, false);
|
||||||
return true;
|
return true;
|
||||||
}elseif(($source[1] & 0x08) === 0x08){
|
}elseif(($source[1] & 0x08) === 0x08){
|
||||||
$this->server->api->level->setBlock($spread[2][0], $spread[2][1], $spread[2][2], $source[0], $source[1] & 0x07);
|
$this->server->api->level->setBlock($spread[2][0], $spread[2][1], $spread[2][2], $source[0], $source[1] & 0x07, false);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -626,7 +626,7 @@ class BlockAPI{
|
|||||||
"z" => $block[2][2],
|
"z" => $block[2][2],
|
||||||
"type" => BLOCK_UPDATE_NORMAL,
|
"type" => BLOCK_UPDATE_NORMAL,
|
||||||
));
|
));
|
||||||
$this->server->api->level->setBlock($block[2][0], $block[2][1], $block[2][2], 0, 0);
|
$this->server->api->level->setBlock($block[2][0], $block[2][1], $block[2][2], 0, 0, false);
|
||||||
}else{
|
}else{
|
||||||
$block[1] = ($block[1] & 0x08) | $level;
|
$block[1] = ($block[1] & 0x08) | $level;
|
||||||
$this->server->schedule(10, array($this, "blockScheduler"), array(
|
$this->server->schedule(10, array($this, "blockScheduler"), array(
|
||||||
@ -665,7 +665,7 @@ class BlockAPI{
|
|||||||
"z" => $block[2][2],
|
"z" => $block[2][2],
|
||||||
"type" => BLOCK_UPDATE_NORMAL,
|
"type" => BLOCK_UPDATE_NORMAL,
|
||||||
));
|
));
|
||||||
$this->server->api->level->setBlock($block[2][0], $block[2][1], $block[2][2], $block[0], $block[1]);
|
$this->server->api->level->setBlock($block[2][0], $block[2][1], $block[2][2], $block[0], $block[1], false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -738,7 +738,7 @@ class BlockAPI{
|
|||||||
"z" => $block[2][2],
|
"z" => $block[2][2],
|
||||||
"type" => BLOCK_UPDATE_NORMAL,
|
"type" => BLOCK_UPDATE_NORMAL,
|
||||||
));
|
));
|
||||||
$this->server->api->level->setBlock($block[2][0], $block[2][1], $block[2][2], 0, 0);
|
$this->server->api->level->setBlock($block[2][0], $block[2][1], $block[2][2], 0, 0, false);
|
||||||
}else{
|
}else{
|
||||||
$block[1] = ($block[1] & 0x08) | $level;
|
$block[1] = ($block[1] & 0x08) | $level;
|
||||||
$this->server->schedule(20, array($this, "blockScheduler"), array(
|
$this->server->schedule(20, array($this, "blockScheduler"), array(
|
||||||
@ -777,7 +777,7 @@ class BlockAPI{
|
|||||||
"z" => $block[2][2],
|
"z" => $block[2][2],
|
||||||
"type" => BLOCK_UPDATE_NORMAL,
|
"type" => BLOCK_UPDATE_NORMAL,
|
||||||
));
|
));
|
||||||
$this->server->api->level->setBlock($block[2][0], $block[2][1], $block[2][2], $block[0], $block[1]);
|
$this->server->api->level->setBlock($block[2][0], $block[2][1], $block[2][2], $block[0], $block[1], false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -786,14 +786,14 @@ class BlockAPI{
|
|||||||
case 74:
|
case 74:
|
||||||
if($type === BLOCK_UPDATE_SCHEDULED or $type === BLOCK_UPDATE_RANDOM){
|
if($type === BLOCK_UPDATE_SCHEDULED or $type === BLOCK_UPDATE_RANDOM){
|
||||||
$changed = true;
|
$changed = true;
|
||||||
$this->server->api->level->setBlock($x, $y, $z, 73, $block[1]);
|
$this->server->api->level->setBlock($x, $y, $z, 73, $block[1], false);
|
||||||
$type = BLOCK_UPDATE_WEAK;
|
$type = BLOCK_UPDATE_WEAK;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 73:
|
case 73:
|
||||||
if($type === BLOCK_UPDATE_NORMAL){
|
if($type === BLOCK_UPDATE_NORMAL){
|
||||||
$changed = true;
|
$changed = true;
|
||||||
$this->server->api->level->setBlock($x, $y, $z, 74, $block[1]);
|
$this->server->api->level->setBlock($x, $y, $z, 74, $block[1], false);
|
||||||
$this->server->schedule(mt_rand(40, 100), array($this, "blockScheduler"), array(
|
$this->server->schedule(mt_rand(40, 100), array($this, "blockScheduler"), array(
|
||||||
"x" => $x,
|
"x" => $x,
|
||||||
"y" => $y,
|
"y" => $y,
|
||||||
|
@ -85,7 +85,7 @@ class LevelAPI{
|
|||||||
return $this->heightMap[$z][$x];
|
return $this->heightMap[$z][$x];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setBlock($x, $y, $z, $block, $meta = 0){
|
public function setBlock($x, $y, $z, $block, $meta = 0, $update = true){
|
||||||
$this->map->setBlock($x, $y, $z, $block, $meta);
|
$this->map->setBlock($x, $y, $z, $block, $meta);
|
||||||
$this->heightMap[$z][$x] = $this->map->getFloor($x, $z);
|
$this->heightMap[$z][$x] = $this->map->getFloor($x, $z);
|
||||||
if($this->server->api->dhandle("world.block.change", array(
|
if($this->server->api->dhandle("world.block.change", array(
|
||||||
@ -95,10 +95,12 @@ class LevelAPI{
|
|||||||
"block" => $block,
|
"block" => $block,
|
||||||
"meta" => $meta,
|
"meta" => $meta,
|
||||||
)) !== false){
|
)) !== false){
|
||||||
|
if($update === true){
|
||||||
$this->server->api->block->updateBlock($x, $y, $z, BLOCK_UPDATE_NORMAL);
|
$this->server->api->block->updateBlock($x, $y, $z, BLOCK_UPDATE_NORMAL);
|
||||||
$this->server->api->block->updateBlocksAround($x, $y, $z, BLOCK_UPDATE_NORMAL);
|
$this->server->api->block->updateBlocksAround($x, $y, $z, BLOCK_UPDATE_NORMAL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function getOrderedChunk($X, $Z, $columnsPerPacket = 2){
|
public function getOrderedChunk($X, $Z, $columnsPerPacket = 2){
|
||||||
$columnsPerPacket = max(1, (int) $columnsPerPacket);
|
$columnsPerPacket = max(1, (int) $columnsPerPacket);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user