Liquid: eliminate unnecessary Position allocations and getSide() calls

This commit is contained in:
Dylan K. Taylor 2023-10-19 17:09:13 +01:00
parent 9474324f75
commit dbb5a32a96
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D
2 changed files with 12 additions and 23 deletions

View File

@ -165,6 +165,10 @@ abstract class Liquid extends Transparent{
$vX = $vY = $vZ = 0; $vX = $vY = $vZ = 0;
$x = $this->position->getFloorX();
$y = $this->position->getFloorY();
$z = $this->position->getFloorZ();
$decay = $this->getEffectiveFlowDecay($this); $decay = $this->getEffectiveFlowDecay($this);
$world = $this->position->getWorld(); $world = $this->position->getWorld();
@ -172,11 +176,11 @@ abstract class Liquid extends Transparent{
foreach(Facing::HORIZONTAL as $j){ foreach(Facing::HORIZONTAL as $j){
[$dx, $dy, $dz] = Facing::OFFSET[$j]; [$dx, $dy, $dz] = Facing::OFFSET[$j];
$x = $this->position->x + $dx; $sideX = $x + $dx;
$y = $this->position->y + $dy; $sideY = $y + $dy;
$z = $this->position->z + $dz; $sideZ = $z + $dz;
$sideBlock = $world->getBlockAt($x, $y, $z); $sideBlock = $world->getBlockAt($sideX, $sideY, $sideZ);
$blockDecay = $this->getEffectiveFlowDecay($sideBlock); $blockDecay = $this->getEffectiveFlowDecay($sideBlock);
if($blockDecay < 0){ if($blockDecay < 0){
@ -184,7 +188,7 @@ abstract class Liquid extends Transparent{
continue; continue;
} }
$blockDecay = $this->getEffectiveFlowDecay($world->getBlockAt($x, $y - 1, $z)); $blockDecay = $this->getEffectiveFlowDecay($world->getBlockAt($sideX, $sideY - 1, $sideZ));
if($blockDecay >= 0){ if($blockDecay >= 0){
$realDecay = $blockDecay - ($decay - 8); $realDecay = $blockDecay - ($decay - 8);
@ -206,10 +210,10 @@ abstract class Liquid extends Transparent{
if($this->falling){ if($this->falling){
foreach(Facing::HORIZONTAL as $facing){ foreach(Facing::HORIZONTAL as $facing){
$pos = $this->position->getSide($facing); [$dx, $dy, $dz] = Facing::OFFSET[$facing];
if( if(
!$this->canFlowInto($world->getBlockAt($pos->x, $pos->y, $pos->z)) || !$this->canFlowInto($world->getBlockAt($x + $dx, $y + $dy, $z + $dz)) ||
!$this->canFlowInto($world->getBlockAt($pos->x, $pos->y + 1, $pos->z)) !$this->canFlowInto($world->getBlockAt($x + $dx, $y + $dy + 1, $z + $dz))
){ ){
$vector = $vector->normalize()->add(0, -6, 0); $vector = $vector->normalize()->add(0, -6, 0);
break; break;

View File

@ -285,31 +285,16 @@ parameters:
count: 1 count: 1
path: ../../../src/block/Leaves.php path: ../../../src/block/Leaves.php
-
message: "#^Parameter \\#1 \\$x of method pocketmine\\\\world\\\\World\\:\\:getBlockAt\\(\\) expects int, float\\|int given\\.$#"
count: 4
path: ../../../src/block/Liquid.php
- -
message: "#^Parameter \\#1 \\$x of method pocketmine\\\\world\\\\World\\:\\:isInWorld\\(\\) expects int, float\\|int given\\.$#" message: "#^Parameter \\#1 \\$x of method pocketmine\\\\world\\\\World\\:\\:isInWorld\\(\\) expects int, float\\|int given\\.$#"
count: 1 count: 1
path: ../../../src/block/Liquid.php path: ../../../src/block/Liquid.php
-
message: "#^Parameter \\#2 \\$y of method pocketmine\\\\world\\\\World\\:\\:getBlockAt\\(\\) expects int, float\\|int given\\.$#"
count: 4
path: ../../../src/block/Liquid.php
- -
message: "#^Parameter \\#2 \\$y of method pocketmine\\\\world\\\\World\\:\\:isInWorld\\(\\) expects int, float\\|int given\\.$#" message: "#^Parameter \\#2 \\$y of method pocketmine\\\\world\\\\World\\:\\:isInWorld\\(\\) expects int, float\\|int given\\.$#"
count: 1 count: 1
path: ../../../src/block/Liquid.php path: ../../../src/block/Liquid.php
-
message: "#^Parameter \\#3 \\$z of method pocketmine\\\\world\\\\World\\:\\:getBlockAt\\(\\) expects int, float\\|int given\\.$#"
count: 4
path: ../../../src/block/Liquid.php
- -
message: "#^Parameter \\#3 \\$z of method pocketmine\\\\world\\\\World\\:\\:isInWorld\\(\\) expects int, float\\|int given\\.$#" message: "#^Parameter \\#3 \\$z of method pocketmine\\\\world\\\\World\\:\\:isInWorld\\(\\) expects int, float\\|int given\\.$#"
count: 1 count: 1