|
18 | 18 | use pmmp\thread\Thread as NativeThread; |
19 | 19 | use pmmp\thread\ThreadSafeArray; |
20 | 20 | use pocketmine\network\mcpe\convert\TypeConverter; |
| 21 | +use pocketmine\network\mcpe\EntityEventBroadcaster; |
21 | 22 | use pocketmine\network\mcpe\NetworkSession; |
| 23 | +use pocketmine\network\mcpe\PacketBroadcaster; |
22 | 24 | use pocketmine\network\mcpe\protocol\PacketPool; |
| 25 | +use pocketmine\network\mcpe\protocol\serializer\PacketSerializerContext; |
23 | 26 | use pocketmine\network\mcpe\raklib\PthreadsChannelReader; |
24 | 27 | use pocketmine\network\mcpe\raklib\PthreadsChannelWriter; |
25 | 28 | use pocketmine\network\NetworkInterface; |
@@ -67,6 +70,13 @@ final class ProxyNetworkInterface implements NetworkInterface |
67 | 70 | /** @var PthreadsChannelReader */ |
68 | 71 | private PthreadsChannelReader $threadToMainReader; |
69 | 72 |
|
| 73 | + /** @var PacketSerializerContext */ |
| 74 | + private PacketSerializerContext $packetSerializerContext; |
| 75 | + /** @var PacketBroadcaster */ |
| 76 | + private PacketBroadcaster $packetBroadcaster; |
| 77 | + /** @var EntityEventBroadcaster */ |
| 78 | + private EntityEventBroadcaster $entityEventBroadcaster; |
| 79 | + |
70 | 80 | /** @var int */ |
71 | 81 | private int $receiveBytes = 0; |
72 | 82 | /** @var int */ |
@@ -119,6 +129,10 @@ public function __construct(PluginBase $plugin, int $port, ?string $composerPath |
119 | 129 | $this->mainToThreadWriter = new PthreadsChannelWriter($mainToThreadBuffer); |
120 | 130 | $this->threadToMainReader = new PthreadsChannelReader($threadToMainBuffer); |
121 | 131 |
|
| 132 | + $this->packetSerializerContext = PMUtils::getPacketSerializerContext($server); |
| 133 | + $this->packetBroadcaster = PMUtils::getPacketBroadcaster($server); |
| 134 | + $this->entityEventBroadcaster = PMUtils::getEntityEventBroadcaster($server); |
| 135 | + |
122 | 136 | PacketPool::getInstance()->registerPacket(new TickSyncPacket()); |
123 | 137 |
|
124 | 138 | $bandwidthTracker = $plugin->getServer()->getNetwork()->getBandwidthTracker(); |
@@ -273,19 +287,14 @@ public function putPacket(int $socketId, ProxyPacket $pk): void |
273 | 287 |
|
274 | 288 | public function createSession(int $socketId, string $ip, int $port): NetworkSession |
275 | 289 | { |
276 | | - $typeConverter = TypeConverter::getInstance(); |
277 | | - $packetSerializerContext = $this->server->getPacketSerializerContext($typeConverter); |
278 | | - $packetBroadcaster = $this->server->getPacketBroadcaster($packetSerializerContext); |
279 | | - $entityEventBroadcaster = $this->server->getEntityEventBroadcaster($packetBroadcaster, $typeConverter); |
280 | | - |
281 | 290 | $session = new NetworkSession( |
282 | 291 | $this->server, |
283 | 292 | $this->server->getNetwork()->getSessionManager(), |
284 | 293 | PacketPool::getInstance(), |
285 | | - $packetSerializerContext, |
| 294 | + $this->packetSerializerContext, |
286 | 295 | new ProxyPacketSender($socketId, $this), |
287 | | - $packetBroadcaster, |
288 | | - $entityEventBroadcaster, |
| 296 | + $this->packetBroadcaster, |
| 297 | + $this->entityEventBroadcaster, |
289 | 298 | MultiCompressor::getInstance(), |
290 | 299 | TypeConverter::getInstance(), |
291 | 300 | $ip, |
|
0 commit comments