В данный момент на многих ядрах всё ещё присутствует уязвимость, позволяющая заходить двум людям с одного ника за счёт нажатия кнопки входа одновременно, LiteCore 1.0.9 не стал исключением. Это влечёт за собой множество последствий, начиная от дюпа инвентаря, заканчивая сломанной логикой плагинов. Я написал плагин, который исправляет эту уязвимость раз и навсегда.
Более того, плагин добавляет на сервер новый ивент PlayerDuplicateLoginEvent, который вы можете использовать для управления тем, что произойдёт в случае входа двух игроков одновременно.
Пример использования ивента можно найти в репозитории плагина.
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]
крут, но только ведь по умолчанию игрок не кикается, вызывается ивент но если его не отменить, игрока не кикнет, вообще это не минус но те кто не разбираются в коде не поймут как юзать
Нет, это не так работает. Вызывается ивент и если его не отменили, кикнет игрока, который нажал кнопку раньше. А если отменили, кикнет игрока, который пытается зайти вторым