[LiteCore 1.0.9] Фикс входа двух игроков под одним ником

В данный момент на многих ядрах всё ещё присутствует уязвимость, позволяющая заходить двум людям с одного ника за счёт нажатия кнопки входа одновременно, LiteCore 1.0.9 не стал исключением. Это влечёт за собой множество последствий, начиная от дюпа инвентаря, заканчивая сломанной логикой плагинов. Я написал плагин, который исправляет эту уязвимость раз и навсегда.

Более того, плагин добавляет на сервер новый ивент PlayerDuplicateLoginEvent, который вы можете использовать для управления тем, что произойдёт в случае входа двух игроков одновременно.
Пример использования ивента можно найти в репозитории плагина.

Репозиторий на GitHub: GitHub - Gaprix/FixPlayerDuplication: LiteCore 1.0.9 plugin to fix a vulnerability with the possibility of logging in by two players with the same nicknames
Плагин (phar):
FixPlayerDuplication.phar (1.4 КБ)
Плагин (zip):
FixPlayerDuplication.zip (2.6 КБ)

5 симпатий

Блин красавец канешно слил,лайк однозначно

+10

23:04:48] [Aquamarine/CRITICAL]: “Невозможно обработать событие ‘pocketmine\event\server\DataPacketReceiveEvent’ в ‘FixPlayerDuplication v1’: Argument 1 passed to pocketmine\utils\UUID::equals() must be an instance of pocketmine\utils\UUID, string given, called in /root/d/plugins/FixPlayerDuplication/src/Gaprix/FixPlayerDuplication/FixPlayerDuplication.php on line 28 в Gaprix\FixPlayerDuplication\FixPlayerDuplication” [23:04:48] [Aquamarine/CRITICAL]: TypeError: “Argument 1 passed to pocketmine\utils\UUID::equals() must be an instance of pocketmine\utils\UUID, string given, called in /root/d/plugins/FixPlayerDuplication/src/Gaprix/FixPlayerDuplication/FixPlayerDuplication.php on line 28” (EXCEPTION) in “pmsrc/src/pocketmine/utils/UUID” at line 59 [23:04:48] [Aquamarine/CRITICAL]: #0 plugins/FixPlayerDuplication/src/Gaprix/FixPlayerDuplication/FixPlayerDuplication(28): pocketmine\utils\UUID->equals(string[36] 5f21bae6-bbc6-393a-9d3f-9cf245066fa0) [23:04:48] [Aquamarine/CRITICAL]: #1 pmsrc/src/pocketmine/plugin/MethodEventExecutor(45): Gaprix\FixPlayerDuplication\FixPlayerDuplication->onDataPacketReceive(object pocketmine\event\server\DataPacketReceiveEvent) [23:04:48] [Aquamarine/CRITICAL]: #2 pmsrc/src/pocketmine/plugin/RegisteredListener(96): pocketmine\plugin\MethodEventExecutor->execute(object Gaprix\FixPlayerDuplication\FixPlayerDuplication, object pocketmine\event\server\DataPacketReceiveEvent) [23:04:48] [Aquamarine/CRITICAL]: #3 pmsrc/src/pocketmine/plugin/PluginManager(741): pocketmine\plugin\RegisteredListener->callEvent(object pocketmine\event\server\DataPacketReceiveEvent) [23:04:48] [Aquamarine/CRITICAL]: #4 pmsrc/src/pocketmine/Player(2440): pocketmine\plugin\PluginManager->callEvent(object pocketmine\event\server\DataPacketReceiveEvent) [23:04:48] [Aquamarine/CRITICAL]: #5 pmsrc/src/pocketmine/network/Network(317): pocket[23:04:48] [Aquamarine/CRITICAL]: #4 pmsrc/src/pocketmine/Player(2440): pocketmine\plugin\PluginManager->callEvent(object pocketmine\event\server\DataPacketReceiveEvent) [23:04:48]

1 симпатия

крут, но только ведь по умолчанию игрок не кикается, вызывается ивент но если его не отменить, игрока не кикнет, вообще это не минус но те кто не разбираются в коде не поймут как юзать

Исправил, спасибо

1 симпатия

Нет, это не так работает. Вызывается ивент и если его не отменили, кикнет игрока, который нажал кнопку раньше. А если отменили, кикнет игрока, который пытается зайти вторым

2 симпатии

Фикс в посту?

Да. Просто скачай плагин заново

2 симпатии

Спасибо работает

1 симпатия

ок

А зачем на AM чекать, если там это пофикшено?

Не было пофикшено по крайней мере на момент создания этой темы

Уже и я пофиксил у себя в ядре)

еду [21:49:40] [Server thread/CRITICAL]: “Невозможно обработать событие ‘pocketmine\event\server\DataPacketReceiveEvent’ в ‘FixPlayerDuplication v1.1’: Call to a member function equals() on null в Gaprix\FixPlayerDuplication\FixPlayerDuplication” [21:49:40] [Server thread/CRITICAL]: Error: “Call to a member function equals() on null” (EXCEPTION) in “plugins/FixPlayerDuplication (2)/src/Gaprix/FixPlayerDuplication/FixPlayerDuplication” at line 29 [21:49:40] [Server thread/CRITICAL]: #0 pmsrc/src/pocketmine/plugin/MethodEventExecutor(45): Gaprix\FixPlayerDuplication\FixPlayerDuplication->onDataPacketReceive(object pocketmine\event\server\DataPacketReceiveEvent) [21:49:40] [Server thread/CRITICAL]: #1 pmsrc/src/pocketmine/plugin/RegisteredListener(96): pocketmine\plugin\MethodEventExecutor->execute(object Gaprix\FixPlayerDuplication\FixPlayerDuplication, object pocketmine\event\server\DataPacketReceiveEvent) [21:49:40] [Server thread/CRITICAL]: #2 pmsrc/src/pocketmine/plugin/PluginManager(741): pocketmine\plugin\RegisteredListener->callEvent(object pocketmine\event\server\DataPacketReceiveEvent) [21:49:40] [Server thread/CRITICAL]: #3 pmsrc/src/pocketmine/Player(2425): pocketmine\plugin\PluginManager->callEvent(object pocketmine\event\server\DataPacketReceiveEvent) [21:49:40] [Server thread/CRITICAL]: #4 pmsrc/src/pocketmine/network/Network(317): pocketmine\Player->handleDataPacket(object pocketmine\network\mcpe\protocol\LoginPacket) [21:49:40] [Server thread/CRITICAL]: #5 pmsrc/src/pocketmine/Player(2417): pocketmine\network\Network->processBatch(object pocketmine\network\mcpe\protocol\BatchPacket, object pocketmine\Player) [21:49:40] [Server thread/CRITICAL]: #6 pmsrc/src/pocketmine/network/mcpe/RakLibInterface(184): pocketmine\Player->handleDataPacket(object pocketmine\network\mcpe\protocol\BatchPacket)
[21:49:40] [Server thread/CRITICAL]: #7 pmsrc/src/raklib/server/ServerHandler(95): pocketmine\network\mcpe\RakLibInterface->handleEncapsulated(string[19] 178.178.87.144 3676, object raklib\protocol\EncapsulatedPacket, integer 0)
[21:49:40] [Server thread/CRITICAL]: #8 pmsrc/src/pocketmine/network/mcpe/RakLibInterface(114): raklib\server\ServerHandler->handlePacket()
[21:49:40] [Server thread/CRITICAL]: #9 pmsrc/src/pocketmine/network/mcpe/RakLibInterface(104): pocketmine\network\mcpe\RakLibInterface->process()
[21:49:40] [Server thread/CRITICAL]: #10 pmsrc/src/pocketmine/snooze/SleeperHandler(123): pocketmine\network\mcpe\RakLibInterface->pocketmine\network\mcpe{closure}() [21:49:40] [Server thread/CRITICAL]: #11 pmsrc/src/pocketmine/snooze/SleeperHandler(82): pocketmine\snooze\SleeperHandler->processNotifications()
[21:49:40] [Server thread/CRITICAL]: #12 pmsrc/src/pocketmine/Server(2603): pocketmine\snooze\SleeperHandler->sleepUntil(double 1654109380.7189)
[21:49:40] [Server thread/CRITICAL]: #13 pmsrc/src/pocketmine/Server(2449): pocketmine\Server->tickProcessor()
[21:49:40] [Server thread/CRITICAL]: #14 pmsrc/src/pocketmine/Server(2022): pocketmine\Server->start()
[21:49:40] [Server thread/CRITICAL]: #15 pmsrc/src/pocketmine/PocketMine(337): pocketmine\Server->__construct(object BaseClassLoader, object pocketmine\utils\MainLogger, string[8] /root/c/, string[16] /root/c/plugins/)

Обновил плагин: исправил предположительный баг. Скачайте заново из темы или отсюда:
FixPlayerDuplication.phar (1.4 КБ)

2 симпатии

Спасибо помогло)

1 симпатия

Жду логи

Плагин хорошо работает, все хорошо

1 симпатия