Added workaround for #1527

This commit is contained in:
Shoghi Cervantes 2014-06-23 22:35:02 +02:00
parent 22533458ed
commit 88157d6e99
2 changed files with 19 additions and 7 deletions

View File

@ -843,12 +843,24 @@ abstract class Entity extends Position implements Metadatable{
return false;
}
}
if(!$this->justCreated){
$this->server->getPluginManager()->callEvent($ev = new EntityMoveEvent($this, $pos));
$ev = new EntityMoveEvent($this, $pos);
if($this instanceof Player){
for($side = 2; $side <= 5; ++$side){
$vector = $pos->getSide($side, 2);
if(!isset($this->usedChunks[Level::chunkHash($vector->x >> 4, $vector->z >> 4)])){
$ev->setCancelled(true);
break;
}
}
}
$this->server->getPluginManager()->callEvent($ev);
if($ev->isCancelled()){
return false;
}
}
$this->x = $pos->x;
$this->y = $pos->y;
$this->z = $pos->z;

View File

@ -123,17 +123,17 @@ class Vector3{
public function getSide($side, $step = 1){
switch((int) $side){
case 0:
return new Vector3($this->x, $this->y - (int) $step, $this->z);
return new Vector3($this->x, $this->y - $step, $this->z);
case 1:
return new Vector3($this->x, $this->y + (int) $step, $this->z);
return new Vector3($this->x, $this->y + $step, $this->z);
case 2:
return new Vector3($this->x, $this->y, $this->z - (int) $step);
return new Vector3($this->x, $this->y, $this->z - $step);
case 3:
return new Vector3($this->x, $this->y, $this->z + (int) $step);
return new Vector3($this->x, $this->y, $this->z + $step);
case 4:
return new Vector3($this->x - (int) $step, $this->y, $this->z);
return new Vector3($this->x - $step, $this->y, $this->z);
case 5:
return new Vector3($this->x + (int) $step, $this->y, $this->z);
return new Vector3($this->x + $step, $this->y, $this->z);
default:
return $this;
}