Sound::encode() now always returns an array

This commit is contained in:
Dylan K. Taylor 2020-10-31 15:48:46 +00:00
parent 0cbc5c9a4a
commit 5a320f22b7
49 changed files with 102 additions and 105 deletions

View File

@ -477,9 +477,6 @@ class World implements ChunkManager{
*/
public function addSound(Vector3 $pos, Sound $sound, ?array $players = null) : void{
$pk = $sound->encode($pos);
if(!is_array($pk)){
$pk = [$pk];
}
if(count($pk) > 0){
if($players === null){
foreach($pk as $e){

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelEventPacket;
class AnvilBreakSound implements Sound{
public function encode(?Vector3 $pos){
return LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_ANVIL_BREAK, 0, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_ANVIL_BREAK, 0, $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelEventPacket;
class AnvilFallSound implements Sound{
public function encode(?Vector3 $pos){
return LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_ANVIL_FALL, 0, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_ANVIL_FALL, 0, $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelEventPacket;
class AnvilUseSound implements Sound{
public function encode(?Vector3 $pos){
return LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_ANVIL_USE, 0, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_ANVIL_USE, 0, $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
class ArrowHitSound implements Sound{
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_BOW_HIT, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_BOW_HIT, $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelEventPacket;
class BlazeShootSound implements Sound{
public function encode(?Vector3 $pos){
return LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_BLAZE_SHOOT, 0, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_BLAZE_SHOOT, 0, $pos)];
}
}

View File

@ -37,7 +37,7 @@ class BlockBreakSound implements Sound{
$this->block = $block;
}
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_BREAK, $pos, RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getFullId()));
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_BREAK, $pos, RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getFullId()))];
}
}

View File

@ -37,7 +37,7 @@ class BlockPlaceSound implements Sound{
$this->block = $block;
}
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_PLACE, $pos, RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getFullId()));
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_PLACE, $pos, RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getFullId()))];
}
}

View File

@ -40,11 +40,11 @@ class BlockPunchSound implements Sound{
$this->block = $block;
}
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(
LevelSoundEventPacket::SOUND_HIT,
$pos,
RuntimeBlockMapping::getInstance()->toRuntimeId($this->block->getFullId())
);
)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
class BowShootSound implements Sound{
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_BOW, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_BOW, $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
class BucketEmptyLavaSound implements Sound{
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_BUCKET_EMPTY_LAVA, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_BUCKET_EMPTY_LAVA, $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
class BucketEmptyWaterSound implements Sound{
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_BUCKET_EMPTY_WATER, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_BUCKET_EMPTY_WATER, $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
class BucketFillLavaSound implements Sound{
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_BUCKET_FILL_LAVA, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_BUCKET_FILL_LAVA, $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
class BucketFillWaterSound implements Sound{
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_BUCKET_FILL_WATER, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_BUCKET_FILL_WATER, $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
class ChestCloseSound implements Sound{
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_CHEST_CLOSED, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_CHEST_CLOSED, $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
class ChestOpenSound implements Sound{
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_CHEST_OPEN, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_CHEST_OPEN, $pos)];
}
}

View File

@ -39,7 +39,7 @@ class ClickSound implements Sound{
return $this->pitch;
}
public function encode(?Vector3 $pos){
return LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_CLICK, (int) ($this->pitch * 1000), $pos);
public function encode(?Vector3 $pos) : array{
return [LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_CLICK, (int) ($this->pitch * 1000), $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelEventPacket;
class DoorBumpSound implements Sound{
public function encode(?Vector3 $pos){
return LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_DOOR_BUMP, 0, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_DOOR_BUMP, 0, $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelEventPacket;
class DoorCrashSound implements Sound{
public function encode(?Vector3 $pos){
return LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_DOOR_CRASH, 0, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_DOOR_CRASH, 0, $pos)];
}
}

View File

@ -39,7 +39,7 @@ class DoorSound implements Sound{
return $this->pitch;
}
public function encode(?Vector3 $pos){
return LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_DOOR, (int) ($this->pitch * 1000), $pos);
public function encode(?Vector3 $pos) : array{
return [LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_DOOR, (int) ($this->pitch * 1000), $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
class EnderChestCloseSound implements Sound{
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_ENDERCHEST_CLOSED, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_ENDERCHEST_CLOSED, $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
class EnderChestOpenSound implements Sound{
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_ENDERCHEST_OPEN, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_ENDERCHEST_OPEN, $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelEventPacket;
class EndermanTeleportSound implements Sound{
public function encode(?Vector3 $pos){
return LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_ENDERMAN_TELEPORT, 0, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_ENDERMAN_TELEPORT, 0, $pos)];
}
}

View File

@ -31,12 +31,12 @@ use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
*/
class EntityAttackNoDamageSound implements Sound{
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(
LevelSoundEventPacket::SOUND_ATTACK_NODAMAGE,
$pos,
-1,
"minecraft:player"
);
)];
}
}

View File

@ -31,12 +31,12 @@ use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
*/
class EntityAttackSound implements Sound{
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(
LevelSoundEventPacket::SOUND_ATTACK_STRONG, //TODO: seems like ATTACK is dysfunctional
$pos,
-1,
"minecraft:player"
);
)];
}
}

View File

@ -44,13 +44,13 @@ class EntityLandSound implements Sound{
$this->blockLandedOn = $blockLandedOn;
}
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(
LevelSoundEventPacket::SOUND_LAND,
$pos,
RuntimeBlockMapping::getInstance()->toRuntimeId($this->blockLandedOn->getFullId()),
$this->entity::getNetworkTypeId()
//TODO: does isBaby have any relevance here?
);
)];
}
}

View File

@ -40,13 +40,13 @@ class EntityLongFallSound implements Sound{
$this->entity = $entity;
}
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(
LevelSoundEventPacket::SOUND_FALL_BIG,
$pos,
-1,
$this->entity::getNetworkTypeId()
//TODO: is isBaby relevant here?
);
)];
}
}

View File

@ -39,13 +39,13 @@ class EntityShortFallSound implements Sound{
$this->entity = $entity;
}
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(
LevelSoundEventPacket::SOUND_FALL_SMALL,
$pos,
-1,
$this->entity::getNetworkTypeId()
//TODO: does isBaby have any relevance here?
);
)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
class ExplodeSound implements Sound{
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_EXPLODE, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_EXPLODE, $pos)];
}
}

View File

@ -39,7 +39,7 @@ class FizzSound implements Sound{
return $this->pitch;
}
public function encode(?Vector3 $pos){
return LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_FIZZ, (int) ($this->pitch * 1000), $pos);
public function encode(?Vector3 $pos) : array{
return [LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_FIZZ, (int) ($this->pitch * 1000), $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
class FlintSteelSound implements Sound{
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_IGNITE, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_IGNITE, $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelEventPacket;
class GhastShootSound implements Sound{
public function encode(?Vector3 $pos){
return LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_GHAST_SHOOT, 0, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_GHAST_SHOOT, 0, $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelEventPacket;
class GhastSound implements Sound{
public function encode(?Vector3 $pos){
return LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_GHAST, 0, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_GHAST, 0, $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelEventPacket;
class IgniteSound implements Sound{
public function encode(?Vector3 $pos){
return LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_IGNITE, 0, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_IGNITE, 0, $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
class ItemBreakSound implements Sound{
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_BREAK, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_BREAK, $pos)];
}
}

View File

@ -39,7 +39,7 @@ class LaunchSound implements Sound{
return $this->pitch;
}
public function encode(?Vector3 $pos){
return LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_SHOOT, (int) ($this->pitch * 1000), $pos);
public function encode(?Vector3 $pos) : array{
return [LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_SHOOT, (int) ($this->pitch * 1000), $pos)];
}
}

View File

@ -41,7 +41,7 @@ class NoteSound implements Sound{
$this->note = $note;
}
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_NOTE, $pos, ($this->instrument->getMagicNumber() << 8) | $this->note);
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_NOTE, $pos, ($this->instrument->getMagicNumber() << 8) | $this->note)];
}
}

View File

@ -28,8 +28,8 @@ use pocketmine\network\mcpe\protocol\LevelEventPacket;
class PaintingPlaceSound implements Sound{
public function encode(?Vector3 $pos){
public function encode(?Vector3 $pos) : array{
//item frame and painting have the same sound
return LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_ITEMFRAME_PLACE, 0, $pos);
return [LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_ITEMFRAME_PLACE, 0, $pos)];
}
}

View File

@ -39,7 +39,7 @@ class PopSound implements Sound{
return $this->pitch;
}
public function encode(?Vector3 $pos){
return LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_POP, (int) ($this->pitch * 1000), $pos);
public function encode(?Vector3 $pos) : array{
return [LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_POP, (int) ($this->pitch * 1000), $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
class PotionSplashSound implements Sound{
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_GLASS, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_GLASS, $pos)];
}
}

View File

@ -36,7 +36,7 @@ class RecordSound implements Sound{
$this->recordType = $recordType;
}
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create($this->recordType->getSoundId(), $pos);
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create($this->recordType->getSoundId(), $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
class RecordStopSound implements Sound{
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_STOP_RECORD, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_STOP_RECORD, $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
class RedstonePowerOffSound implements Sound{
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_POWER_OFF, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_POWER_OFF, $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
class RedstonePowerOnSound implements Sound{
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_POWER_ON, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_POWER_ON, $pos)];
}
}

View File

@ -29,7 +29,7 @@ use pocketmine\network\mcpe\protocol\ClientboundPacket;
interface Sound{
/**
* @return ClientboundPacket|ClientboundPacket[]
* @return ClientboundPacket[]
*/
public function encode(?Vector3 $pos);
public function encode(?Vector3 $pos) : array;
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
class ThrowSound implements Sound{
public function encode(?Vector3 $pos){
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_THROW, $pos, -1, "minecraft:player");
public function encode(?Vector3 $pos) : array{
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_THROW, $pos, -1, "minecraft:player")];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelEventPacket;
class TotemUseSound implements Sound{
public function encode(?Vector3 $pos){
return LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_TOTEM, 0, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_TOTEM, 0, $pos)];
}
}

View File

@ -28,7 +28,7 @@ use pocketmine\network\mcpe\protocol\LevelEventPacket;
class XpCollectSound implements Sound{
public function encode(?Vector3 $pos){
return LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_ORB, 0, $pos);
public function encode(?Vector3 $pos) : array{
return [LevelEventPacket::create(LevelEventPacket::EVENT_SOUND_ORB, 0, $pos)];
}
}

View File

@ -41,9 +41,9 @@ class XpLevelUpSound implements Sound{
return $this->xpLevel;
}
public function encode(?Vector3 $pos){
public function encode(?Vector3 $pos) : array{
//No idea why such odd numbers, but this works...
//TODO: check arbitrary volume
return LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_LEVELUP, $pos, 0x10000000 * intdiv(min(30, $this->xpLevel), 5));
return [LevelSoundEventPacket::create(LevelSoundEventPacket::SOUND_LEVELUP, $pos, 0x10000000 * intdiv(min(30, $this->xpLevel), 5))];
}
}