Giter Club home page Giter Club logo

cards2.0's Introduction

cards2.0

A pluggable card game engine created by Tim De Mey coming with a plugin supporting a remake of MSN Messenger's Solitaire Showdown

Screenshot Solitaire Showdown

Project Goal

Back in the early nillies people could play Solitaire Showdown, a game included in the chat application MSN Messenger - later renamed to Windows Live Messenger. As Microsoft pulled the plug, this game is no longer available to the public, or at least not in its original form.

This project's goal is to replicate the original as close as possible. This is a screenshot of the original game.

The game is still unfinished as specific required parts are not yet (fully) developed. Some examples:

  • Score system
  • Sounds
  • UI must be reworked to resemble the original game

A pluggable card game engine

The main engine found in cards_framework must be started with a plugin in order to run a game. Currently, two plugins are supported:

Latest animated GIF

Screenshot Solitaire Showdown

Project History

  • Around 2015 I started with cards1.0. It used vectorial cards which was slow to render. The architecture was bad. In the end, this project was abandoned and it never produced a working game.
  • Development on cards2.0 started somewhere in october 2018 and was initially focused at making a standard, single player Solitaire game in order to have most of the UI stuff working, but already with Solitaire Showdown in mind.
  • Starting late 2018, netcode was added, after which the work on the primary goal, Solitaire Showdown, was started.
  • After a long period of doing nothing, I continued somewhere around January 2020, refactoring the complete codebase and throwing away unnecessary garbage. When that was done, support for undoing command chains was added. (In multiplayer the server may not accept commands that are already executed client-side. They are executed client-side and corrected afterwards if necessary, to ensure a smooth gameplay that never blocks).
  • The hardest part was then done. Support for lobbies was added, I completed the game logic, it all started coming together around April 2020. (see animated GIF 04/16/2020).
  • May 2020: Better handling of leaving players, lost connections, full lobbies, general cleanup of TCP connections in all these cases. Added score system. Support for animations other than cards. Added more card sprites for both front and back, and card stacks. (see animated GIF 05/21/2020)
  • June 2020: The entire scalable component and scalable resource system has been reworked. Resources are now preloaded before the game is started, and scaled resources are being cached. This results in a more instant UI update when the game is rescaled and all resources are only scaled once in a particular dimension, even if they are being used by multiple components. Up to this point, only images were supported as a "scalable resource". Support was added for text: the font itself is the scalable resource here. The first use case for scalable text was added to Solitaire Showdown, and is seen in the animation that shows the increment in score, when laying down a card on a cardstack. (see animated GIF 06/29/2020)
  • July 2020: Support for animations spanning resizements was added, so you can resize the window while animations are ongoing. This is the last part in making the game truely resizable at any moment. A counter for the SPECIAL stack in Solitaire Showdown was added as well. Font are handled better in terms of resizing the game. ScalableTextComponents now cache their content in a BufferedImage which is useful during rescale operations, to show a temporarily low-quality scaled version of the text until the resource (a font) is loaded. Work has begun on the HUD which means that the cards, the card stacks and their related imagery/text are no longer the only components on the playfield; the first added HUD items are the player names, positioned as in the original MSN game.
  • November 2020: Summer has passed - back to work after a break of several months. Several visuals have been created. Animation trajectories are pixel perfect in all resolutions. Game is really starting to look like the original now.
  • December 2020: Multiple "root" panels are now supported: "menu", "loading" and "game" panels were added. With this feature, a menu was added which will fully replace the menubar, and a loading screen can now be overlayed. Several architectural and logical fixes related to drag/animation and Z-layering of components have been implemented, making animations behave correctly.
  • January 2021: The window/frame/dialog system has been refactored. Dialogs are no longer seperate frames. The main window no longer has the default OS titlebar but a custom one, which blends better with the content panel. An in-game menu dialog has been added. For example, it allows a player to disconnect from the current game. Performance fixes have been made as in some cases the game didn't feel smooth. Shortcuts (e.g. ESC key for the in-game menu) have been implemented.
  • July 2021: Another big refactoring operation has been completed. All panels can now load their components in tiny batches, to keep the UI alive, e.g. to animate a loading panel while the Game panel is loading. Each panel also supports scalable components, and all components, whatever their parent container is, support features that were only available on the Game panel until now. This means that each panel and component have features such as: transparency, background alpha, foreground alpha, alpha on entire panels (incl. their child components), debug drawing, async component loading, async resource loading, etc. Next to pure UI improvements, the state cleanup issues have been solved. This means that when a player or the host leaves the game, the other party will get notified about it. Moreover, internal state is cleaned correctly, therefore both parties may start a new game without any issues - so you don't need to restart the application to play a second game!

cards2.0's People

Contributors

dependabot[bot] avatar t1mmos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

herbertmilhomme

cards2.0's Issues

State cleanup issue

State isn't correctly cleaned up after disconnect / end game, I ended up with 2 clients of which one was still using an 'old' game (exceptions like "can't find this card in the stack" etc.).

Don't have reproduction steps so this would involve some testing I guess.

Exception related to a command in quarantine

Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: A Quarantined command that gets accepted must be reexecutable, but it isn't: C_SolShowMove: The card to move from DEPOT to TURNOVER must be the third highest card
at gent.timdemey.cards.model.entities.commands.CommandHistory.accept(CommandHistory.java:683)
at gent.timdemey.cards.services.context.UICommandExecutor.execute(UICommandExecutor.java:119)
at gent.timdemey.cards.services.context.UICommandExecutor.lambda$0(UICommandExecutor.java:33)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.WaitDispatchSupport$2.run(Unknown Source)
at java.awt.WaitDispatchSupport$4.run(Unknown Source)
at java.awt.WaitDispatchSupport$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(Unknown Source)
at java.awt.Dialog.show(Unknown Source)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at java.awt.Window.setVisible(Unknown Source)
at java.awt.Dialog.setVisible(Unknown Source)
at gent.timdemey.cards.services.dialogs.DialogContent.show(DialogContent.java:61)
at gent.timdemey.cards.services.dialogs.DialogService.ShowAdvanced(DialogService.java:114)
at gent.timdemey.cards.services.dialogs.DialogService.ShowAdvanced(DialogService.java:51)
at gent.timdemey.cards.services.dialogs.DialogService.ShowMessage(DialogService.java:35)
at gent.timdemey.cards.model.entities.commands.D_OnReexecutionFail.showDialog(D_OnReexecutionFail.java:36)
at gent.timdemey.cards.model.entities.commands.DialogCommandBase.preExecute(DialogCommandBase.java:35)
at gent.timdemey.cards.model.entities.commands.CommandBase.preExecute(CommandBase.java:59)
at gent.timdemey.cards.services.context.UICommandExecutor.execute(UICommandExecutor.java:124)
at gent.timdemey.cards.services.context.UICommandExecutor.lambda$0(UICommandExecutor.java:33)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Resizing after connection lost leads to exception spam

When the server closes, the client shows a disconnected dialog (good).
However when resizing the frame, exception spam occurs.
Seems that the GamePanelManager is not cleared and is still requested to return its rescale requests. The question is: should it be nullified, reset? Can we resize the scalable components? If yes, we should support rescaling when State.Game == null. If the scalable components cannot be reused, we don't have anything to show, so rescaling would not make sense.

Titlebar buttons can have focus

They shouldn't be focusable because accidentally pressing spacebar may result in minimizing, maximizing or even closing the application!

Titlebar buttons can have focus

They shouldn't be focusable because accidentally pressing spacebar may result in minimizing, maximizing or even closing the application!

State cleanup issue: 2nd time a client joins a server, exception on end of DEPOT stack

INFO    AWT-EventQueue-0                         :: Showing dialog with title: Join Multiplayer Game
INFO    UI :: UDP Service Requester              :: This thread has started.
INFO    UI :: UDP Service Requester              :: Sending UDP broadcast messages...
INFO    UI :: UDP Service Requester              :: Waiting for answers...
INFO    UI :: UDP Service Requester              :: Received some UDP data
INFO    UI :: UDP Service Requester              :: Waiting for answers...
INFO    UI :: UDP Service Requester              :: Socket closed: ending this thread.
INFO    UI :: TCP_ConnectionPool                 :: Connecting to 192.168.0.165:9010
INFO    UI :: TCP_ConnectionPool                 :: Connected to 192.168.0.165:9010, local address is 192.168.0.151:49797
INFO    UI :: TCP_ConnectionPool                 :: A TCP connection was added to 192.168.0.165:9010
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_OnLobbyWelcome' from '192.168.0.165:9010'
INFO    AWT-EventQueue-0                         :: Showing dialog with title: Lobby of TEST
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_OnMultiplayerGameStarted' from '192.168.0.165:9010'
ERROR   AWT-EventQueue-0                         :: A ReadOnlyProperty for Property gent.timdemey.cards.model.state.State::GameState is not registered!
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
ERROR   UI :: TCP read (192.168.0.165:9010)      :: !!! EXCEPTION !!! Caught on thread UI :: TCP read (192.168.0.165:9010)
ERROR   UI :: TCP read (192.168.0.165:9010)      :: Following exception may be expected (connection closing):
java.net.SocketException: Connection reset
	at java.net.SocketInputStream.read(Unknown Source)
	at java.net.SocketInputStream.read(Unknown Source)
	at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
	at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
	at sun.nio.cs.StreamDecoder.read(Unknown Source)
	at java.io.InputStreamReader.read(Unknown Source)
	at java.io.BufferedReader.fill(Unknown Source)
	at java.io.BufferedReader.readLine(Unknown Source)
	at java.io.BufferedReader.readLine(Unknown Source)
	at gent.timdemey.cards.netcode.TCP_Connection.read(TCP_Connection.java:112)
	at gent.timdemey.cards.netcode.TCP_Connection.lambda$0(TCP_Connection.java:27)
	at java.lang.Thread.run(Unknown Source)
INFO    AWT-EventQueue-0                         :: Showing dialog with title: Connection lost
INFO    AWT-EventQueue-0                         :: Showing dialog with title: Join Multiplayer Game
INFO    UI :: UDP Service Requester              :: This thread has started.
INFO    UI :: UDP Service Requester              :: Sending UDP broadcast messages...
INFO    UI :: UDP Service Requester              :: Waiting for answers...
INFO    UI :: UDP Service Requester              :: Received some UDP data
INFO    UI :: UDP Service Requester              :: Waiting for answers...
INFO    UI :: UDP Service Requester              :: Socket closed: ending this thread.
INFO    UI :: TCP_ConnectionPool                 :: Connecting to 192.168.0.165:9010
INFO    UI :: TCP_ConnectionPool                 :: Connected to 192.168.0.165:9010, local address is 192.168.0.151:49808
INFO    UI :: TCP_ConnectionPool                 :: A TCP connection was added to 192.168.0.165:9010
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_OnLobbyWelcome' from '192.168.0.165:9010'
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: A state list cannot contain equal elements: Player
{
	id=62d5d750-b3f7-49f8-9284-9e41bcc0705a
	name=123
}
	at gent.timdemey.cards.model.state.StateListRef.checkNotContains(StateListRef.java:234)
	at gent.timdemey.cards.model.state.StateListRef.checkNotContains(StateListRef.java:242)
	at gent.timdemey.cards.model.state.StateListRef.addAll(StateListRef.java:46)
	at gent.timdemey.cards.model.entities.commands.C_OnLobbyWelcome.execute(C_OnLobbyWelcome.java:75)
	at gent.timdemey.cards.model.entities.commands.CommandBase.execute(CommandBase.java:53)
	at gent.timdemey.cards.services.context.UICommandExecutor.execute(UICommandExecutor.java:92)
	at gent.timdemey.cards.services.context.UICommandExecutor.schedule(UICommandExecutor.java:36)
	at gent.timdemey.cards.services.context.UICommandExecutor.lambda$0(UICommandExecutor.java:32)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_OnMultiplayerGameStarted' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException
	at com.google.common.base.Preconditions.checkState(Preconditions.java:429)
	at gent.timdemey.cards.services.position.SolShowPositionManager.getCardStackAt(SolShowPositionManager.java:193)
	at gent.timdemey.cards.services.gamepanel.CardDragListener.mousePressed(CardDragListener.java:149)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException
	at com.google.common.base.Preconditions.checkState(Preconditions.java:429)
	at gent.timdemey.cards.services.position.SolShowPositionManager.getCardStackAt(SolShowPositionManager.java:193)
	at gent.timdemey.cards.services.gamepanel.CardDragListener.mousePressed(CardDragListener.java:149)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException
	at com.google.common.base.Preconditions.checkState(Preconditions.java:429)
	at gent.timdemey.cards.services.position.SolShowPositionManager.getCardStackAt(SolShowPositionManager.java:193)
	at gent.timdemey.cards.services.gamepanel.CardDragListener.mousePressed(CardDragListener.java:149)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException
	at com.google.common.base.Preconditions.checkState(Preconditions.java:429)
	at gent.timdemey.cards.services.position.SolShowPositionManager.getCardStackAt(SolShowPositionManager.java:193)
	at gent.timdemey.cards.services.gamepanel.CardDragListener.mousePressed(CardDragListener.java:149)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException
	at com.google.common.base.Preconditions.checkState(Preconditions.java:429)
	at gent.timdemey.cards.services.position.SolShowPositionManager.getCardStackAt(SolShowPositionManager.java:193)
	at gent.timdemey.cards.services.gamepanel.CardDragListener.mousePressed(CardDragListener.java:149)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException
	at com.google.common.base.Preconditions.checkState(Preconditions.java:429)
	at gent.timdemey.cards.services.position.SolShowPositionManager.getCardStackAt(SolShowPositionManager.java:193)
	at gent.timdemey.cards.services.gamepanel.CardDragListener.mousePressed(CardDragListener.java:149)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_SolShowMove' from '192.168.0.165:9010'
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException
	at com.google.common.base.Preconditions.checkState(Preconditions.java:429)
	at gent.timdemey.cards.services.position.SolShowPositionManager.getCardStackAt(SolShowPositionManager.java:193)
	at gent.timdemey.cards.services.gamepanel.CardDragListener.mousePressed(CardDragListener.java:149)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException
	at com.google.common.base.Preconditions.checkState(Preconditions.java:429)
	at gent.timdemey.cards.services.position.SolShowPositionManager.getCardStackAt(SolShowPositionManager.java:193)
	at gent.timdemey.cards.services.gamepanel.CardDragListener.mousePressed(CardDragListener.java:149)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException
	at com.google.common.base.Preconditions.checkState(Preconditions.java:429)
	at gent.timdemey.cards.services.position.SolShowPositionManager.getCardStackAt(SolShowPositionManager.java:193)
	at gent.timdemey.cards.services.gamepanel.CardDragListener.mousePressed(CardDragListener.java:149)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException
	at com.google.common.base.Preconditions.checkState(Preconditions.java:429)
	at gent.timdemey.cards.services.position.SolShowPositionManager.getCardStackAt(SolShowPositionManager.java:193)
	at gent.timdemey.cards.services.gamepanel.CardDragListener.mousePressed(CardDragListener.java:149)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException
	at com.google.common.base.Preconditions.checkState(Preconditions.java:429)
	at gent.timdemey.cards.services.position.SolShowPositionManager.getCardStackAt(SolShowPositionManager.java:193)
	at gent.timdemey.cards.services.gamepanel.CardDragListener.mousePressed(CardDragListener.java:149)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException
	at com.google.common.base.Preconditions.checkState(Preconditions.java:429)
	at gent.timdemey.cards.services.position.SolShowPositionManager.getCardStackAt(SolShowPositionManager.java:193)
	at gent.timdemey.cards.services.gamepanel.CardDragListener.mousePressed(CardDragListener.java:149)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
INFO    UI :: TCP read (192.168.0.165:9010)      :: Received command 'C_Accept' from '192.168.0.165:9010'

Minimize/Maximize icon bug

Icon stays "maximized" when resizing the panel from maximized state e.g. at the top border.

Either resizing should be prohibited in maximized mode, or the icon should change whenever a resizement occurs.

Can't find any servers

Either the join dialog doesn't enlist servers, or the server is not correctly created

Rejection bug

Client log:

TRACE AWT-EventQueue-0 :: Cannot execute command C_SolShowPull (mousePressed/card) because: Cannot move from DEPOT to LAYDOWN
INFO AWT-EventQueue-0 :: Executing 'C_SolShowUse', id=d68df3e9-05dd-40d7-be26-91c95aca05bb...
INFO AWT-EventQueue-0 :: Executing 'C_SolShowMove', id=97ea972e-f9e7-42f0-a43a-dfee5329f25f...
TRACE AWT-EventQueue-0 :: CommandHistory::addAwaiting 'C_SolShowMove', id=97ea972e-f9e7-42f0-a43a-dfee5329f25f
TRACE AWT-EventQueue-0 :: Cannot execute command C_Undo (ActionService) because: CommandHistory cannot undo
TRACE AWT-EventQueue-0 :: Cannot execute command C_Redo (ActionService) because: CommandHistory cannot redo
INFO UI :: TCP read (192.168.0.165:9010) :: Received command 'C_Reject' from '192.168.0.165:9010'
INFO AWT-EventQueue-0 :: Executing 'C_Reject', id=cc4c8364-e3e4-4131-9b57-242ed33640d2...
TRACE AWT-EventQueue-0 :: CommandHistory::reject id=97ea972e-f9e7-42f0-a43a-dfee5329f25f
TRACE AWT-EventQueue-0 :: Cannot execute command C_Undo (ActionService) because: CommandHistory cannot undo
TRACE AWT-EventQueue-0 :: Cannot execute command C_Redo (ActionService) because: CommandHistory cannot redo

Server log:

INFO    Server :: TCP read (192.168.0.151:49910) :: Received command 'C_SolShowMove' from '192.168.0.151:49910'
INFO    Server :: CommandExecution               :: Processing command 'C_SolShowMove', id=ab9221ff-692a-4b5f-8bd1-bff9a1a2b1c5
INFO    Server :: CommandExecution               :: Can't execute syncable command: 'C_SolShowMove'. Responding with a C_Reject. Reason: Source stack doesn't contain the card with id f7002ef4-41ea-4902-999d-53d12b7be0f7

Ironically, the client was finally able to make his move when the server closed down! This is explained by the server no longer sending C_Reject messages, so the client can do what he wants. However, the client should have detected that the connection to the server was lost?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.