Entity: some cleanup of network position hacks

This commit is contained in:
Dylan K. Taylor 2020-06-27 23:16:04 +01:00
parent 1f0ea0c2c7
commit 87ce92d87e
6 changed files with 21 additions and 17 deletions

View File

@ -128,9 +128,6 @@ abstract class Entity{
/** @var float */
public $width;
/** @var float */
protected $baseOffset = 0.0;
/** @var float */
private $health = 20.0;
/** @var int */
@ -724,7 +721,7 @@ abstract class Entity{
}
public function getOffsetPosition(Vector3 $vector3) : Vector3{
return new Vector3($vector3->x, $vector3->y + $this->baseOffset, $vector3->z);
return $vector3;
}
protected function broadcastMovement(bool $teleport = false) : void{

View File

@ -37,6 +37,7 @@ use pocketmine\item\enchantment\Enchantment;
use pocketmine\item\FoodSource;
use pocketmine\item\Item;
use pocketmine\item\Totem;
use pocketmine\math\Vector3;
use pocketmine\nbt\NBT;
use pocketmine\nbt\tag\CompoundTag;
use pocketmine\nbt\tag\IntTag;
@ -90,8 +91,6 @@ class Human extends Living implements ProjectileSource, InventoryHolder{
/** @var int */
protected $xpSeed;
protected $baseOffset = 1.62;
public function __construct(Location $location, Skin $skin, ?CompoundTag $nbt = null){
$this->skin = $skin;
parent::__construct($location, $nbt);
@ -414,6 +413,10 @@ class Human extends Living implements ProjectileSource, InventoryHolder{
}
}
public function getOffsetPosition(Vector3 $vector3) : Vector3{
return $vector3->add(0, 1.621, 0); //TODO: +0.001 hack for MCPE falling underground
}
public function broadcastMovement(bool $teleport = false) : void{
//TODO: workaround 1.14.30 bug: MoveActor(Absolute|Delta)Packet don't work on players anymore :(
$pk = new MovePlayerPacket();

View File

@ -30,6 +30,7 @@ use pocketmine\entity\Entity;
use pocketmine\entity\Location;
use pocketmine\event\entity\EntityBlockChangeEvent;
use pocketmine\event\entity\EntityDamageEvent;
use pocketmine\math\Vector3;
use pocketmine\nbt\tag\ByteTag;
use pocketmine\nbt\tag\CompoundTag;
use pocketmine\nbt\tag\IntTag;
@ -45,8 +46,6 @@ class FallingBlock extends Entity{
public $width = 0.98;
public $height = 0.98;
protected $baseOffset = 0.49;
protected $gravity = 0.04;
protected $drag = 0.02;
@ -149,4 +148,8 @@ class FallingBlock extends Entity{
$properties->setInt(EntityMetadataProperties::VARIANT, $this->block->getRuntimeId());
}
public function getOffsetPosition(Vector3 $vector3) : Vector3{
return $vector3->add(0, 0.49, 0); //TODO: check if height affects this
}
}

View File

@ -29,6 +29,7 @@ use pocketmine\event\entity\ItemDespawnEvent;
use pocketmine\event\entity\ItemSpawnEvent;
use pocketmine\event\inventory\InventoryPickupItemEvent;
use pocketmine\item\Item;
use pocketmine\math\Vector3;
use pocketmine\nbt\tag\CompoundTag;
use pocketmine\network\mcpe\convert\TypeConverter;
use pocketmine\network\mcpe\protocol\AddItemActorPacket;
@ -55,7 +56,6 @@ class ItemEntity extends Entity{
public $width = 0.25;
public $height = 0.25;
protected $baseOffset = 0.125;
protected $gravity = 0.04;
protected $drag = 0.02;
@ -215,6 +215,10 @@ class ItemEntity extends Entity{
$player->getNetworkSession()->sendDataPacket($pk);
}
public function getOffsetPosition(Vector3 $vector3) : Vector3{
return $vector3->add(0, 0.125, 0);
}
public function onCollideWithPlayer(Player $player) : void{
if($this->getPickupDelay() !== 0){
return;

View File

@ -27,6 +27,7 @@ use pocketmine\entity\Entity;
use pocketmine\entity\Explosive;
use pocketmine\event\entity\EntityDamageEvent;
use pocketmine\event\entity\ExplosionPrimeEvent;
use pocketmine\math\Vector3;
use pocketmine\nbt\tag\CompoundTag;
use pocketmine\network\mcpe\protocol\types\entity\EntityIds;
use pocketmine\network\mcpe\protocol\types\entity\EntityMetadataCollection;
@ -43,8 +44,6 @@ class PrimedTNT extends Entity implements Explosive{
public $width = 0.98;
public $height = 0.98;
protected $baseOffset = 0.49;
protected $gravity = 0.04;
protected $drag = 0.02;
@ -126,4 +125,8 @@ class PrimedTNT extends Entity implements Explosive{
$properties->setGenericFlag(EntityMetadataFlags::IGNITED, true);
$properties->setInt(EntityMetadataProperties::FUSE_LENGTH, $this->fuse);
}
public function getOffsetPosition(Vector3 $vector3) : Vector3{
return $vector3->add(0, 0.49, 0);
}
}

View File

@ -2219,12 +2219,6 @@ class Player extends Human implements CommandSender, ChunkLoader, ChunkListener,
parent::broadcastAnimation($animation, $targets);
}
public function getOffsetPosition(Vector3 $vector3) : Vector3{
$result = parent::getOffsetPosition($vector3);
$result->y += 0.001; //Hack for MCPE falling underground for no good reason (TODO: find out why it's doing this)
return $result;
}
/**
* TODO: remove this
*/