Buggy code:
i ++ ) { monopolyCards . add ( new DevelopmentCard ( DevCardType . MONOPOLY , 2 , false ) ) ; } for ( int i = 0 ; i < ( mPlayer . getOldDevCards ( ) . getYearOfPlenty ( ) ) ; i ++ ) { yearOfPlentyCards . add ( new DevelopmentCard ( DevCardType . YEAR_OF_PLENTY , 2 , false ) ) ; } for ( int i = 0 ; i < ( mPlayer . getOldDevCards ( ) . getRoadBuilding ( ) ) ; i ++ ) { roadBuilderCards . add ( new DevelopmentCard ( DevCardType . ROAD_BUILD , 2 , false ) ) ; } for ( int i = 0 ; i < ( mPlayer . getOldDevCards ( ) . getMonopoly ( ) ) ; i ++ ) { monumentCards . add ( new DevelopmentCard ( DevCardType . MONOPOLY , 2 , false ) ) ; } Player player = new Player ( mPlayer . getPlayerIndex ( ) , bank , brick , wheat , ore , sheep , wood , soldierCards , monopolyCards , yearOfPlentyCards , roadBuilderCards , monumentCards ) ; player . setPlayerColor ( getCatanColorFromString ( mPlayer . getColor ( ) ) ) ; player . setHasDiscarded ( mPlayer . isDiscarded ( ) ) ; player . setPlayerName ( mPlayer . getName ( ) ) ; player . setHasPlayedDevCardThisTurn ( mPlayer . isPlayedDevCard ( ) ) ; player . setPlayerId ( mPlayer . getPlayerID ( ) ) ; player . setTotalVictoryPoints ( mPlayer . getVictoryPoints ( ) ) ; players [ player . getPlayerIndex ( ) ] = player ; } ClientModel . MMap modelMap = model . getMap ( ) ; ArrayList < Hex > newHexes = new ArrayList < Hex > ( ) ; for ( ClientModel . MMap . MHex mHex : modelMap . getHexes ( ) ) { boolean hasRobber = false ; if ( ( model . getMap ( ) . getRobber ( ) ) == ( mHex . getLocation ( ) ) ) { hasRobber = true ; } newHexes . add ( new Hex ( ( ( mHex . getLocation ( ) . getX ( ) ) + 3 ) , ( ( mHex . getLocation ( ) . getY ( ) ) + 3 ) , getHexTypeFromString ( mHex . getResource ( ) ) , mHex . getNumber ( ) , hasRobber ) ) ; } Board board = new Board ( newHexes ) ; for ( ClientModel . MMap . Port port : modelMap . getPorts ( ) ) { HexLocation hexLoc = new HexLocation ( port . getLocation ( ) . getX ( ) , port . getLocation ( ) . getY ( ) ) ; PortType pt = getPortTypeFromString ( port . getResource ( ) ) ; board . initPortTypesFromServer ( hexLoc , pt ) ; } board . initBordersAndVertices ( ) ; for ( ClientModel . MMap . VertexObject settlement : modelMap . getSettlements ( ) ) { HexLocation hexLoc = new HexLocation ( settlement . getLocation ( ) . getX ( ) , settlement . getLocation ( ) . getY ( ) ) ; VertexDirection vd = getVertexDirectionFromString ( settlement . getLocation ( ) . getDirection ( ) ) ; try { players [ settlement . getOwner ( ) ] . getPlayerPieces ( ) . placeSettlement ( board . getVertex ( new shared . locations . VertexLocation ( hexLoc , vd ) ) ) ; } catch ( Exception e ) { System . out . println ( "something<seq2seq4repair_space>went<seq2seq4repair_space>screwy<seq2seq4repair_space>and<seq2seq4repair_space>we<seq2seq4repair_space>couldn't<seq2seq4repair_space>place<seq2seq4repair_space>the<seq2seq4repair_space>settlement" ) ; e . printStackTrace ( ) ; } } for ( ClientModel . MMap . VertexObject city : modelMap . getCities ( ) ) { HexLocation hexLoc = new HexLocation ( city . getLocation ( ) . getX ( ) , city . getLocation ( ) . getY ( ) ) ; VertexDirection vd = getVertexDirectionFromString ( city . getLocation ( ) . getDirection ( ) ) ; try { new shared . locations . VertexLocation ( hexLoc , vd ) ; board . getVertex ( new shared . locations . VertexLocation ( hexLoc , vd ) ) ; <START_BUG> players [ city . getOwner ( ) ] . getPlayerPieces ( ) . placeCity ( board . getVertex ( new shared . locations . VertexLocation ( hexLoc , vd ) ) ) ; <END_BUG> } catch ( Exception e ) { System . out . println ( "something<seq2seq4repair_space>went<seq2seq4repair_space>screwy<seq2seq4repair_space>and<seq2seq4repair_space>we<seq2seq4repair_space>couldn't<seq2seq4repair_space>place<seq2seq4repair_space>the<seq2seq4repair_space>city" ) ; e . printStackTrace ( ) ; } } for ( ClientModel . MMap . EdgeValue road : modelMap . getRoads ( ) ) { HexLocation hexLoc = new HexLocation ( road . getLocation ( ) . getX ( ) , road . getLocation ( ) . getY ( ) ) ; EdgeDirection ed = getEdgeDirectionFromString ( road . location . getDirection ( ) ) ; try { players [ road . getOwner ( ) ] . getPlayerPieces ( ) . placeRoad ( board . getEdge ( new shared . locations . EdgeLocation ( hexLoc , ed ) ) ) ; } catch ( Exception e ) { System . out . println ( "something<seq2seq4repair_space>went<seq2seq4repair_space>screwy<seq2seq4repair_space>and<seq2seq4repair_space>we<seq2seq4repair_space>couldn't<seq2seq4repair_space>place<seq2seq4repair_space>the<seq2seq4repair_space>road" ) ; e . printStackTrace ( ) ; } } version = new Game ( players , board , bank ) ; Game [ ] historyLines = new Game . Line [ model . getLog ( ) . getLines ( ) . length ] ; int i = 0 ; for ( ClientModel . MessageLine ml : model . getLog ( ) . getLines ( ) ) { Game . Line current = version . new Line ( ) ; current . setSource ( ml . getSource ( ) ) ; current . setMessage ( ml . getMessage ( ) ) ; historyLines [ i ] = current ; i ++ ; } Game [ ] chatLines = new Game . Line [ model . getChat ( ) . getLines ( ) . length ] ; i = 0 ;

Fix:
players [ city . getOwner ( ) ] . getPlayerPieces ( ) . placeInitialCity ( board . getVertex ( new shared . locations . VertexLocation ( hexLoc , vd ) ) ) ;