Fix for block updates

This commit is contained in:
Shoghi Cervantes Pueyo 2013-01-04 01:32:06 +01:00
parent b9eca491e8
commit 52b4220ade
2 changed files with 17 additions and 15 deletions

View File

@ -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,

View File

@ -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);