ItemEntity: fixed a bunch of suspicious logic in entityBaseTick()

closes #5580
This commit is contained in:
Dylan K. Taylor 2023-02-17 20:14:38 +00:00
parent 71aad310c6
commit b56b35b10d
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D

View File

@ -113,11 +113,18 @@ class ItemEntity extends Entity{
$hasUpdate = parent::entityBaseTick($tickDiff); $hasUpdate = parent::entityBaseTick($tickDiff);
if(!$this->isFlaggedForDespawn() && $this->pickupDelay !== self::NEVER_DESPAWN){ //Infinite delay if($this->isFlaggedForDespawn()){
return $hasUpdate;
}
if($this->pickupDelay !== self::NEVER_DESPAWN && $this->pickupDelay > 0){ //Infinite delay
$hasUpdate = true;
$this->pickupDelay -= $tickDiff; $this->pickupDelay -= $tickDiff;
if($this->pickupDelay < 0){ if($this->pickupDelay < 0){
$this->pickupDelay = 0; $this->pickupDelay = 0;
} }
}
if($this->hasMovementUpdate() && $this->despawnDelay % self::MERGE_CHECK_PERIOD === 0){ if($this->hasMovementUpdate() && $this->despawnDelay % self::MERGE_CHECK_PERIOD === 0){
$mergeable = [$this]; //in case the merge target ends up not being this $mergeable = [$this]; //in case the merge target ends up not being this
$mergeTarget = $this; $mergeTarget = $this;
@ -140,6 +147,8 @@ class ItemEntity extends Entity{
} }
} }
if(!$this->isFlaggedForDespawn() && $this->despawnDelay !== self::NEVER_DESPAWN){
$hasUpdate = true;
$this->despawnDelay -= $tickDiff; $this->despawnDelay -= $tickDiff;
if($this->despawnDelay <= 0){ if($this->despawnDelay <= 0){
$ev = new ItemDespawnEvent($this); $ev = new ItemDespawnEvent($this);
@ -148,7 +157,6 @@ class ItemEntity extends Entity{
$this->despawnDelay = self::DEFAULT_DESPAWN_DELAY; $this->despawnDelay = self::DEFAULT_DESPAWN_DELAY;
}else{ }else{
$this->flagForDespawn(); $this->flagForDespawn();
$hasUpdate = true;
} }
} }
} }