public void placeTunnelPiece(Position p, Location loc, boolean isB) { Road road = (Road) getBoard().get(p).getFeature(loc); if (!road.isTunnelOpen()) { throw new IllegalStateException("No open tunnel here."); } Player player = game.getActivePlayer(); int connectionId = getTunnelId(player, isB); decreaseTunnelTokens(player, isB); for (Road r : tunnels) { if (r.getTunnelEnd() == connectionId) { r.setTunnelEdge(road); road.setTunnelEdge(r); break; } } road.setTunnelEnd(connectionId); placedTunnelCurrentTurn = road; game.post(new TunnelPiecePlacedEvent(player, p, loc, isB)); }