robske110 / TicTacToe

Play TicTacToe with the help of item frames.
https://poggit.pmmp.io/p/TicTacToe
GNU Lesser General Public License v3.0
6 stars 3 forks source link

internal server error #17

Open ghost opened 4 years ago

ghost commented 4 years ago

just tried the latest dev branch commit and got a draw and this error showed up

2020-04-14 [10:08:06] [Server thread/CRITICAL]: Exception: "getOpponent: failed" (EXCEPTION) in "plugins/TicTacToe-Dev/src/robske_110/TTT/Game/Game" at line 180
2020-04-14 [10:08:06] [Server thread/DEBUG]: #0 plugins/TicTacToe-Dev/src/robske_110/TTT/Game/Game(59): robske_110\TTT\Game\Game->getOpponent(integer 67)
2020-04-14 [10:08:06] [Server thread/DEBUG]: #1 plugins/TicTacToe-Dev/src/robske_110/TTT/EventListener(32): robske_110\TTT\Game\Game->onGameMove(integer 67, object pocketmine\block\ItemFrame, object pocketmine\item\Item)
2020-04-14 [10:08:06] [Server thread/DEBUG]: #2 src/pocketmine/plugin/MethodEventExecutor(38): robske_110\TTT\EventListener->onItemFrameItemSet(object pocketmine\event\player\PlayerInteractEvent)
2020-04-14 [10:08:06] [Server thread/DEBUG]: #3 src/pocketmine/plugin/RegisteredListener(98): pocketmine\plugin\MethodEventExecutor->execute(object robske_110\TTT\EventListener, object pocketmine\event\player\PlayerInteractEvent)
2020-04-14 [10:08:06] [Server thread/DEBUG]: #4 src/pocketmine/event/Event(95): pocketmine\plugin\RegisteredListener->callEvent(object pocketmine\event\player\PlayerInteractEvent)
2020-04-14 [10:08:06] [Server thread/DEBUG]: #5 src/pocketmine/level/Level(1919): pocketmine\event\Event->call()
2020-04-14 [10:08:06] [Server thread/DEBUG]: #6 src/pocketmine/Player(2454): pocketmine\level\Level->useItemOn(object pocketmine\math\Vector3, object pocketmine\item\Item, integer 2, object pocketmine\math\Vector3, object pocketmine\Player, boolean 1)
2020-04-14 [10:08:06] [Server thread/DEBUG]: #7 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(151): pocketmine\Player->handleInventoryTransaction(object pocketmine\network\mcpe\protocol\InventoryTransactionPacket)
2020-04-14 [10:08:06] [Server thread/DEBUG]: #8 src/pocketmine/network/mcpe/protocol/InventoryTransactionPacket(178): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleInventoryTransaction(object pocketmine\network\mcpe\protocol\InventoryTransactionPacket)
2020-04-14 [10:08:06] [Server thread/DEBUG]: #9 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(111): pocketmine\network\mcpe\protocol\InventoryTransactionPacket->handle(object pocketmine\network\mcpe\PlayerNetworkSessionAdapter)
2020-04-14 [10:08:06] [Server thread/DEBUG]: #10 src/pocketmine/network/mcpe/protocol/BatchPacket(123): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(object pocketmine\network\mcpe\protocol\InventoryTransactionPacket)
2020-04-14 [10:08:06] [Server thread/DEBUG]: #11 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(111): pocketmine\network\mcpe\protocol\BatchPacket->handle(object pocketmine\network\mcpe\PlayerNetworkSessionAdapter)
2020-04-14 [10:08:06] [Server thread/DEBUG]: #12 src/pocketmine/Player(3161): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(object pocketmine\network\mcpe\protocol\BatchPacket)
2020-04-14 [10:08:06] [Server thread/DEBUG]: #13 src/pocketmine/network/mcpe/RakLibInterface(169): pocketmine\Player->handleDataPacket(object pocketmine\network\mcpe\protocol\BatchPacket)
2020-04-14 [10:08:06] [Server thread/DEBUG]: #14 vendor/pocketmine/raklib/src/server/ServerHandler(99): pocketmine\network\mcpe\RakLibInterface->handleEncapsulated(string[16] 5.156.38.14 1588, object raklib\protocol\EncapsulatedPacket, integer 0)
2020-04-14 [10:08:06] [Server thread/DEBUG]: #15 src/pocketmine/network/mcpe/RakLibInterface(109): raklib\server\ServerHandler->handlePacket()
2020-04-14 [10:08:06] [Server thread/DEBUG]: #16 src/pocketmine/network/mcpe/RakLibInterface(99): pocketmine\network\mcpe\RakLibInterface->process()
2020-04-14 [10:08:06] [Server thread/DEBUG]: #17 vendor/pocketmine/snooze/src/SleeperHandler(123): pocketmine\network\mcpe\RakLibInterface->pocketmine\network\mcpe\{closure}()
2020-04-14 [10:08:06] [Server thread/DEBUG]: #18 vendor/pocketmine/snooze/src/SleeperHandler(85): pocketmine\snooze\SleeperHandler->processNotifications()
2020-04-14 [10:08:06] [Server thread/DEBUG]: #19 src/pocketmine/Server(2349): pocketmine\snooze\SleeperHandler->sleepUntil(double 1586848086.959)
2020-04-14 [10:08:06] [Server thread/DEBUG]: #20 src/pocketmine/Server(2203): pocketmine\Server->tickProcessor()
2020-04-14 [10:08:06] [Server thread/DEBUG]: #21 src/pocketmine/Server(1785): pocketmine\Server->start()
2020-04-14 [10:08:06] [Server thread/DEBUG]: #22 src/pocketmine/PocketMine(268): pocketmine\Server->__construct(object BaseClassLoader, object pocketmine\utils\MainLogger, string[47] /home/minecraft/multicraft/servers/server22957/, string[55] /home/minecraft/multicraft/servers/server22957/plugins/)
2020-04-14 [10:08:06] [Server thread/DEBUG]: #23 src/pocketmine/PocketMine(291): pocketmine\server()
2020-04-14 [10:08:06] [Server thread/DEBUG]: #24 (1): require(string[109] phar:///home/minecraft/multicraft/jar/versions/PocketMine/PocketMine1.14-1.phar/)
2020-04-14 [10:08:06] [Server thread/INFO]: mote166[/5.156.38.14:1588] logged out due to Internal server error

idk why it doesn't show but the first line is

2020-04-14 [10:08:06] [Server thread/CRITICAL]: Exception: "getOpponent: failed" (EXCEPTION) in "plugins/TicTacToe-Dev/src/robske_110/TTT/Game/Game" at line 180

robske110 commented 4 years ago

Should be fixed in latest commits now, thank you for testing!

ghost commented 4 years ago

2020-04-14 [12:28:12] [Server thread/NOTICE]: [TicTacToe] A Game has been attempted to be constructed with an Arena which is either occupied or (more likely) its level got unloaded!


2020-04-14 [12:28:25] [Server thread/CRITICAL]: Exception: "getPlayerWithSymbol: failed" (EXCEPTION) in "plugins/TicTacToe-dev/src/robske_110/TTT/Game/Game" at line 169
2020-04-14 [12:28:25] [Server thread/DEBUG]: #0 plugins/TicTacToe-dev/src/robske_110/TTT/Game/Game(137): robske_110\TTT\Game\Game->getPlayerWithSymbol(string[0] )
2020-04-14 [12:28:25] [Server thread/DEBUG]: #1 plugins/TicTacToe-dev/src/robske_110/TTT/Game/Game(57): robske_110\TTT\Game\Game->checkForWin()
2020-04-14 [12:28:25] [Server thread/DEBUG]: #2 plugins/TicTacToe-dev/src/robske_110/TTT/EventListener(32): robske_110\TTT\Game\Game->onGameMove(integer 481, object pocketmine\block\ItemFrame, object pocketmine\item\Item)
2020-04-14 [12:28:25] [Server thread/DEBUG]: #3 src/pocketmine/plugin/MethodEventExecutor(38): robske_110\TTT\EventListener->onItemFrameItemSet(object pocketmine\event\player\PlayerInteractEvent)
2020-04-14 [12:28:25] [Server thread/DEBUG]: #4 src/pocketmine/plugin/RegisteredListener(98): pocketmine\plugin\MethodEventExecutor->execute(object robske_110\TTT\EventListener, object pocketmine\event\player\PlayerInteractEvent)
2020-04-14 [12:28:25] [Server thread/DEBUG]: #5 src/pocketmine/event/Event(95): pocketmine\plugin\RegisteredListener->callEvent(object pocketmine\event\player\PlayerInteractEvent)
2020-04-14 [12:28:25] [Server thread/DEBUG]: #6 src/pocketmine/level/Level(1919): pocketmine\event\Event->call()
2020-04-14 [12:28:25] [Server thread/DEBUG]: #7 src/pocketmine/Player(2454): pocketmine\level\Level->useItemOn(object pocketmine\math\Vector3, object pocketmine\item\Item, integer 2, object pocketmine\math\Vector3, object pocketmine\Player, boolean 1)
2020-04-14 [12:28:25] [Server thread/DEBUG]: #8 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(151): pocketmine\Player->handleInventoryTransaction(object pocketmine\network\mcpe\protocol\InventoryTransactionPacket)
2020-04-14 [12:28:25] [Server thread/DEBUG]: #9 src/pocketmine/network/mcpe/protocol/InventoryTransactionPacket(178): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleInventoryTransaction(object pocketmine\network\mcpe\protocol\InventoryTransactionPacket)
2020-04-14 [12:28:25] [Server thread/DEBUG]: #10 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(111): pocketmine\network\mcpe\protocol\InventoryTransactionPacket->handle(object pocketmine\network\mcpe\PlayerNetworkSessionAdapter)
2020-04-14 [12:28:25] [Server thread/DEBUG]: #11 src/pocketmine/network/mcpe/protocol/BatchPacket(123): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(object pocketmine\network\mcpe\protocol\InventoryTransactionPacket)
2020-04-14 [12:28:25] [Server thread/DEBUG]: #12 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(111): pocketmine\network\mcpe\protocol\BatchPacket->handle(object pocketmine\network\mcpe\PlayerNetworkSessionAdapter)
2020-04-14 [12:28:25] [Server thread/DEBUG]: #13 src/pocketmine/Player(3161): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(object pocketmine\network\mcpe\protocol\BatchPacket)
2020-04-14 [12:28:25] [Server thread/DEBUG]: #14 src/pocketmine/network/mcpe/RakLibInterface(169): pocketmine\Player->handleDataPacket(object pocketmine\network\mcpe\protocol\BatchPacket)
2020-04-14 [12:28:25] [Server thread/DEBUG]: #15 vendor/pocketmine/raklib/src/server/ServerHandler(99): pocketmine\network\mcpe\RakLibInterface->handleEncapsulated(string[17] 2.89.255.54 38941, object raklib\protocol\EncapsulatedPacket, integer 0)
2020-04-14 [12:28:25] [Server thread/DEBUG]: #16 src/pocketmine/network/mcpe/RakLibInterface(109): raklib\server\ServerHandler->handlePacket()
2020-04-14 [12:28:25] [Server thread/DEBUG]: #17 src/pocketmine/network/mcpe/RakLibInterface(99): pocketmine\network\mcpe\RakLibInterface->process()
2020-04-14 [12:28:25] [Server thread/DEBUG]: #18 vendor/pocketmine/snooze/src/SleeperHandler(123): pocketmine\network\mcpe\RakLibInterface->pocketmine\network\mcpe\{closure}()
2020-04-14 [12:28:25] [Server thread/DEBUG]: #19 vendor/pocketmine/snooze/src/SleeperHandler(85): pocketmine\snooze\SleeperHandler->processNotifications()
2020-04-14 [12:28:25] [Server thread/DEBUG]: #20 src/pocketmine/Server(2349): pocketmine\snooze\SleeperHandler->sleepUntil(double 1586856505.3619)
2020-04-14 [12:28:25] [Server thread/DEBUG]: #21 src/pocketmine/Server(2203): pocketmine\Server->tickProcessor()
2020-04-14 [12:28:25] [Server thread/DEBUG]: #22 src/pocketmine/Server(1785): pocketmine\Server->start()
2020-04-14 [12:28:25] [Server thread/DEBUG]: #23 src/pocketmine/PocketMine(268): pocketmine\Server->__construct(object BaseClassLoader, object pocketmine\utils\MainLogger, string[47] /home/minecraft/multicraft/servers/server22957/, string[55] /home/minecraft/multicraft/servers/server22957/plugins/)
2020-04-14 [12:28:25] [Server thread/DEBUG]: #24 src/pocketmine/PocketMine(291): pocketmine\server()
2020-04-14 [12:28:25] [Server thread/DEBUG]: #25 (1): require(string[109] phar:///home/minecraft/multicraft/jar/versions/PocketMine/PocketMine1.14-1.phar/)
2020-04-14 [12:28:25] [Server thread/INFO]: » inxr0  Left
2020-04-14 [12:28:25] [Server thread/INFO]: inxr0[/2.89.255.54:38941] logged out due to Internal server error```
robske110 commented 4 years ago

Is there a clear way to reproduce that error or does it happen at random? Is it occurring at game start or end?

ghost commented 4 years ago

no since he said he was going to win then it kicked him out of the server and i tried to win and nothing odd happened, it happens at game end

robske110 commented 4 years ago

I found the error for the crash, fixed in the dev branch (hopefully the last one). The notice is a bit weird though, do you see any "An Arena got permanently disabled due to: ARENA_LEVEL_NOT_LOADED" messages before that? How many arenas do you have?

ghost commented 4 years ago

no that one never showed, im testing with just one arena, after all issues are fixed i will try with multiple ones

ghost commented 4 years ago

i will test the latest commit in a couple of minutes

ghost commented 4 years ago

no errors now and i found out the cause or way to reproduce the arena is occupied or level unloaded ..etc

step1: make 2 players join and start a game. step2: make the third player touch the join sign while they are playing.

done, after they finish the game the last piece (always is gold) they put is still in there and when the next game starts the gold is still in there but you can still select it but if you have silver it won't show as a silver in the occupied frame.

i think this is because you set plugin to clear the item frame items only when a player joins the queue and not when the game actually starts, or you set it on both but somehow it doesn't get removed

EDIT: forgot to mention that the winner doesn't get his inventory cleared.

robske110 commented 4 years ago

Fixed the issue that the last item gets stuck in the item frames in the latest commit. I still cannot reproduce the "arena is occupied or level unloaded" error, can you give some more examples on how to trigger it? Will look into the inventory clearing issue.

ghost commented 4 years ago

none of the issues occur anymore, thanks for your efforts, i will keep the game open for the players for the next couple days and see if anything goes wrong.

for now, why don't you implement the game max time and per turn time features?

EDIT: ohh yeah forgot to mention that the game start teleportation isn't good since it teleports them into the itemframe position which is unconvenient, maybe back them from it by 1 block ?

ghost commented 4 years ago

the last item issue is still there,

when only 2 players join a game and finish it and it ENDS, the items in it doesn't get cleared until a player joins the queue, after that the game would run normally without issues, BUT!, when 2 players are playing and the third player joins the queue while they are playing, when the game ends the items in the item frames get cleared except for one, it stays there but you can still select it but if its gold and you are silver it will count as silver but will show as is ( gold ).

and there are no errors in the console nor the arena is occupied message , just the "ending game" and "end game done" messages