Skip to content
This repository has been archived by the owner on Feb 9, 2021. It is now read-only.

Commit

Permalink
Fixed players not calculating onGround correctly
Browse files Browse the repository at this point in the history
  • Loading branch information
shoghicp committed Jan 2, 2015
1 parent 3128ae9 commit 5fffabe
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 18 deletions.
28 changes: 18 additions & 10 deletions src/pocketmine/Player.php
Original file line number Diff line number Diff line change
Expand Up @@ -1103,17 +1103,25 @@ protected function processMovement($currentTick){

$diff = $diffX ** 2 + $diffY ** 2 + $diffZ ** 2;

if(!$revert and !$this->isSleeping() and $this->isSurvival()){
if($diff > 0.0625){
$revert = true;
//$this->server->getLogger()->warning($this->getName()." moved wrongly!");
}elseif($diff > 0){
$this->x = $this->newPosition->x;
$this->y = $this->newPosition->y;
$this->z = $this->newPosition->z;
$radius = $this->width / 2;
$this->boundingBox->setBounds($this->x - $radius, $this->y + $this->ySize, $this->z - $radius, $this->x + $radius, $this->y + $this->height + $this->ySize, $this->z + $radius);
if($this->isSurvival()){
if(!$revert and !$this->isSleeping()){
if($diff > 0.0625){
$revert = true;
$this->server->getLogger()->warning($this->getName()." moved wrongly!");
}elseif($diff > 0){
$this->x = $this->newPosition->x;
$this->y = $this->newPosition->y;
$this->z = $this->newPosition->z;
$radius = $this->width / 2;
$this->boundingBox->setBounds($this->x - $radius, $this->y + $this->ySize, $this->z - $radius, $this->x + $radius, $this->y + $this->height + $this->ySize, $this->z + $radius);
}
}
}elseif($diff > 0){
$this->x = $this->newPosition->x;
$this->y = $this->newPosition->y;
$this->z = $this->newPosition->z;
$radius = $this->width / 2;
$this->boundingBox->setBounds($this->x - $radius, $this->y + $this->ySize, $this->z - $radius, $this->x + $radius, $this->y + $this->height + $this->ySize, $this->z + $radius);
}
}

Expand Down
11 changes: 3 additions & 8 deletions src/pocketmine/entity/Entity.php
Original file line number Diff line number Diff line change
Expand Up @@ -931,18 +931,13 @@ public function move($dx, $dy, $dz){

$this->boundingBox->setBB($axisalignedbb);

$list = $this->level->getCollisionCubes($this, $this->boundingBox->addCoord($movX, $dy, $movZ), false);
$list = $this->level->getCollisionCubes($this, $this->boundingBox->addCoord($dx, $dy, $dz), false);

foreach($list as $bb){
$dy = $bb->calculateYOffset($this->boundingBox, $dy);
}

$this->boundingBox->offset(0, $dy, 0);
if($movY != $dy){
$dx = 0;
$dy = 0;
$dz = 0;
}

foreach($list as $bb){
$dx = $bb->calculateXOffset($this->boundingBox, $dx);
Expand All @@ -966,7 +961,7 @@ public function move($dx, $dy, $dz){
$dz = 0;
}

if($movY != $dy){
if($dy == 0){
$dx = 0;
$dy = 0;
$dz = 0;
Expand Down Expand Up @@ -1009,7 +1004,7 @@ public function move($dx, $dy, $dz){
if($this instanceof Player){
if(!$this->onGround or $movY != 0){
$bb = clone $this->boundingBox;
$bb->maxY = $bb->minY + 1;
$bb->minY -= 1;
if(count($this->level->getCollisionBlocks($bb->expand(0.01, 0.01, 0.01))) > 0){
$this->onGround = true;
}else{
Expand Down

0 comments on commit 5fffabe

Please sign in to comment.