Skip to content

Commit e0adc61

Browse files
committed
Fix #157
1 parent f4badb0 commit e0adc61

2 files changed

Lines changed: 7 additions & 40 deletions

File tree

PMUtils.php

Lines changed: 6 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
use pocketmine\network\mcpe\EntityEventBroadcaster;
88
use pocketmine\network\mcpe\PacketBroadcaster;
99
use pocketmine\network\mcpe\protocol\ProtocolInfo;
10-
use pocketmine\network\mcpe\raklib\RakLibInterface;
10+
use pocketmine\network\mcpe\StandardEntityEventBroadcaster;
11+
use pocketmine\network\mcpe\StandardPacketBroadcaster;
1112
use pocketmine\Server;
12-
use ReflectionClass;
1313
use function method_exists;
1414

1515
class PMUtils
@@ -20,48 +20,15 @@ public static function getPacketBroadcaster(Server $server): PacketBroadcaster
2020
return $server->getPacketBroadcaster(ProtocolInfo::CURRENT_PROTOCOL);
2121
}
2222

23-
$packetBroadcaster = self::getRaklibInterfacePropertyValue($server, 'packetBroadcaster');
24-
if ($packetBroadcaster instanceof PacketBroadcaster) {
25-
return $packetBroadcaster;
26-
}
27-
28-
throw new Exception("PacketBroadcaster isn't valid");
23+
return new StandardPacketBroadcaster($server, ProtocolInfo::CURRENT_PROTOCOL);
2924
}
3025

31-
public static function getEntityEventBroadcaster(Server $server): EntityEventBroadcaster
26+
public static function getEntityEventBroadcaster(Server $server, PacketBroadcaster $packetBroadcaster): EntityEventBroadcaster
3227
{
3328
if (method_exists($server, 'getEntityEventBroadcaster')) {
34-
return $server->getEntityEventBroadcaster(self::getPacketBroadcaster($server), TypeConverter::getInstance());
35-
}
36-
37-
$entityEventBroadcaster = self::getRaklibInterfacePropertyValue($server, 'entityEventBroadcaster');
38-
if ($entityEventBroadcaster instanceof EntityEventBroadcaster) {
39-
return $entityEventBroadcaster;
40-
}
41-
42-
throw new Exception("EntityEventBroadcaster isn't valid");
43-
}
44-
45-
private static function getRaklibInterfacePropertyValue(Server $server, string $propertyName): mixed
46-
{
47-
$interface = self::getRaklibInterface($server);
48-
$reflection = new ReflectionClass($interface);
49-
$property = $reflection->getProperty($propertyName);
50-
51-
return $property->getValue($interface);
52-
}
53-
54-
/**
55-
* @throws Exception
56-
*/
57-
private static function getRaklibInterface(Server $server): RakLibInterface
58-
{
59-
foreach ($server->getNetwork()->getInterfaces() as $interface) {
60-
if ($interface instanceof RakLibInterface) {
61-
return $interface;
62-
}
29+
return $server->getEntityEventBroadcaster($packetBroadcaster, TypeConverter::getInstance());
6330
}
6431

65-
throw new Exception("Raklib interface hasn't been registered");
32+
return new StandardEntityEventBroadcaster($packetBroadcaster, TypeConverter::getInstance());
6633
}
6734
}

ProxyNetworkInterface.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ public function __construct(PluginBase $plugin, int $port, ?string $composerPath
130130
$this->threadToMainReader = new PthreadsChannelReader($threadToMainBuffer);
131131

132132
$this->packetBroadcaster = PMUtils::getPacketBroadcaster($server);
133-
$this->entityEventBroadcaster = PMUtils::getEntityEventBroadcaster($server);
133+
$this->entityEventBroadcaster = PMUtils::getEntityEventBroadcaster($server, $this->packetBroadcaster);
134134

135135
PacketPool::getInstance()->registerPacket(new TickSyncPacket());
136136

0 commit comments

Comments
 (0)