Clean up LevelSoundEvent handling

This commit is contained in:
Dylan K. Taylor
2019-03-26 19:53:40 +00:00
parent e1504c668e
commit 0aebb3f4fb
38 changed files with 693 additions and 85 deletions

View File

@ -63,6 +63,7 @@ use pocketmine\level\light\LightPopulationTask;
use pocketmine\level\light\SkyLightUpdate;
use pocketmine\level\particle\DestroyBlockParticle;
use pocketmine\level\particle\Particle;
use pocketmine\level\sound\BlockPlaceSound;
use pocketmine\level\sound\Sound;
use pocketmine\math\AxisAlignedBB;
use pocketmine\math\Vector3;
@ -73,11 +74,9 @@ use pocketmine\nbt\tag\ListTag;
use pocketmine\nbt\tag\StringTag;
use pocketmine\network\mcpe\ChunkRequestTask;
use pocketmine\network\mcpe\CompressBatchPromise;
use pocketmine\network\mcpe\protocol\AddEntityPacket;
use pocketmine\network\mcpe\protocol\BlockEntityDataPacket;
use pocketmine\network\mcpe\protocol\ClientboundPacket;
use pocketmine\network\mcpe\protocol\LevelEventPacket;
use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
use pocketmine\network\mcpe\protocol\SetDifficultyPacket;
use pocketmine\network\mcpe\protocol\SetTimePacket;
use pocketmine\network\mcpe\protocol\UpdateBlockPacket;
@ -515,30 +514,6 @@ class Level implements ChunkManager, Metadatable{
}
}
/**
* Broadcasts a LevelSoundEvent to players in the area.
*
* @param Vector3 $pos
* @param int $soundId
* @param int $extraData
* @param int $entityTypeId
* @param bool $isBabyMob
*/
public function broadcastLevelSoundEvent(?Vector3 $pos, int $soundId, int $extraData = -1, int $entityTypeId = -1, bool $isBabyMob = false){
$pk = LevelSoundEventPacket::create(
$soundId,
$extraData,
$pos,
AddEntityPacket::LEGACY_ID_MAP_BC[$entityTypeId] ?? ":",
$isBabyMob
);
if($pos !== null){
$this->broadcastPacketToViewers($pos, $pk);
}else{
$this->broadcastGlobalPacket($pk);
}
}
public function getAutoSave() : bool{
return $this->autoSave;
}
@ -1895,7 +1870,7 @@ class Level implements ChunkManager, Metadatable{
}
if($playSound){
$this->broadcastLevelSoundEvent($hand, LevelSoundEventPacket::SOUND_PLACE, $hand->getRuntimeId());
$this->addSound($hand, new BlockPlaceSound($hand));
}
$item->pop();