77use pocketmine \network \mcpe \EntityEventBroadcaster ;
88use pocketmine \network \mcpe \PacketBroadcaster ;
99use pocketmine \network \mcpe \protocol \ProtocolInfo ;
10- use pocketmine \network \mcpe \raklib \RakLibInterface ;
10+ use pocketmine \network \mcpe \StandardEntityEventBroadcaster ;
11+ use pocketmine \network \mcpe \StandardPacketBroadcaster ;
1112use pocketmine \Server ;
12- use ReflectionClass ;
1313use function method_exists ;
1414
1515class 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}
0 commit comments