Skip to content

Commit

Permalink
Don't allow initialising unused type converters
Browse files Browse the repository at this point in the history
  • Loading branch information
dries-c committed Jul 20, 2024
1 parent e3d885a commit 1fe0c65
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 28 deletions.
4 changes: 2 additions & 2 deletions src/network/mcpe/InventoryManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -444,8 +444,8 @@ private function itemStackExtraDataEqual(ItemStack $left, ItemStack $right) : bo
}

$typeConverter = $this->session->getTypeConverter();
$leftExtraData = $typeConverter->deserializeItemStackExtraData($this->session->getProtocolId(), $left->getRawExtraData(), $left->getId());
$rightExtraData = $typeConverter->deserializeItemStackExtraData($this->session->getProtocolId(), $right->getRawExtraData(), $right->getId());
$leftExtraData = $typeConverter->deserializeItemStackExtraData($left->getRawExtraData(), $left->getId());
$rightExtraData = $typeConverter->deserializeItemStackExtraData($right->getRawExtraData(), $right->getId());

$leftNbt = $leftExtraData->getNbt();
$rightNbt = $rightExtraData->getNbt();
Expand Down
6 changes: 3 additions & 3 deletions src/network/mcpe/convert/TypeConverter.php
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ public function netItemStackToCore(ItemStack $itemStack) : Item{
if($itemStack->getId() === 0){
return VanillaItems::AIR();
}
$extraData = $this->deserializeItemStackExtraData($this->getProtocolId(), $itemStack->getRawExtraData(), $itemStack->getId());
$extraData = $this->deserializeItemStackExtraData($itemStack->getRawExtraData(), $itemStack->getId());

$compound = $extraData->getNbt();

Expand Down Expand Up @@ -329,8 +329,8 @@ public static function broadcastByTypeConverter(array $players, \Closure $closur
}
}

public function deserializeItemStackExtraData(int $protocolId, string $extraData, int $id) : ItemStackExtraData{
$extraDataDeserializer = PacketSerializer::decoder($protocolId, $extraData, 0);
public function deserializeItemStackExtraData(string $extraData, int $id) : ItemStackExtraData{
$extraDataDeserializer = PacketSerializer::decoder($this->protocolId, $extraData, 0);
return $id === $this->shieldRuntimeId ?
ItemStackExtraDataShield::read($extraDataDeserializer) :
ItemStackExtraData::read($extraDataDeserializer);
Expand Down
8 changes: 1 addition & 7 deletions src/utils/ProtocolSingletonTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,7 @@ public function getProtocolId() : int{
/**
* @return array<int, self>
*/
public static function getAll(bool $create = false) : array{
if($create){
foreach(ProtocolInfo::ACCEPTED_PROTOCOL as $protocolId){
self::getInstance($protocolId);
}
}

public static function getAll() : array{
return self::$instance;
}

Expand Down
10 changes: 2 additions & 8 deletions src/world/sound/PressurePlateActivateSound.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,24 +23,18 @@

namespace pocketmine\world\sound;

use pocketmine\block\Block;
use pocketmine\math\Vector3;
use pocketmine\network\mcpe\convert\TypeConverter;
use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
use pocketmine\network\mcpe\protocol\types\LevelSoundEvent;

final class PressurePlateActivateSound implements Sound{

public function __construct(
private readonly Block $block
){}
final class PressurePlateActivateSound extends BlockSound{

public function encode(Vector3 $pos) : array{
return [LevelSoundEventPacket::nonActorSound(
LevelSoundEvent::PRESSURE_PLATE_CLICK_ON,
$pos,
false,
TypeConverter::getInstance()->getBlockTranslator()->internalIdToNetworkId($this->block->getStateId())
$this->toRuntimeId()
)];
}
}
10 changes: 2 additions & 8 deletions src/world/sound/PressurePlateDeactivateSound.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,24 +23,18 @@

namespace pocketmine\world\sound;

use pocketmine\block\Block;
use pocketmine\math\Vector3;
use pocketmine\network\mcpe\convert\TypeConverter;
use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
use pocketmine\network\mcpe\protocol\types\LevelSoundEvent;

final class PressurePlateDeactivateSound implements Sound{

public function __construct(
private readonly Block $block
){}
final class PressurePlateDeactivateSound extends BlockSound{

public function encode(Vector3 $pos) : array{
return [LevelSoundEventPacket::nonActorSound(
LevelSoundEvent::PRESSURE_PLATE_CLICK_OFF,
$pos,
false,
TypeConverter::getInstance()->getBlockTranslator()->internalIdToNetworkId($this->block->getStateId())
$this->toRuntimeId()
)];
}
}

0 comments on commit 1fe0c65

Please sign in to comment.