Source:
<code>private void updateRecents(String newValue) { this.recents.clearRecents(); String[] recentGames = null; final String preference = newValue; if (preference.contains(";")) { recentGames = preference.split(";"); } else { recentGames = new String[1]; recentGames[0] = preference; } if (recentGames == null || "".equals(recentGames)) { return; } else { final ApplicationAssets applicationAssets = this.controller .getApplicationAssets(); final Vector2 viewport = this.controller.getPlatform().getSize(); <START> final String ending = "/game.json"; <END> final I18N i18n = applicationAssets.getI18N(); final String mockupProjectsPath = MOCKUP_PROJECT_FILE.file() .getAbsolutePath(); for (final String recentGame : recentGames) { if (!recentGame.startsWith(mockupProjectsPath) || recentGame.isEmpty()) { continue; } final String loadingPath = recentGame + ending; final FileHandle projectFile = this.controller .getEditorGameAssets().absolute(loadingPath); if (!projectFile.exists()) { Gdx.app.log("Mockup InitialScreen", "Recent project " + loadingPath + " skipped 'cause the file does not exist"); continue; } try { final ModelEntity gameMetadata = controller .getEditorGameAssets().fromJson(ModelEntity.class, projectFile); this.recents.addRecent(new ProjectButton(viewport, i18n, gameMetadata, this.skin, this.controller, CombinedAction.class, OpenGame.class, new Object[] { recentGame }, ChangeView.class, new Object[] { ProjectScreen.NAME })); } catch (SerializationException e) { Gdx.app.log( "Mockup InitialScreen", "Recent project " + loadingPath + " skipped 'cause the project could not be loaded", e); continue; } } } }</code><technical_language>declaring "game.json" directly. GameStructure.GAME_FILE ModelEntityCategory.GAME.getRelativeEntityPath() instead</technical_language>

Target:
private void updateRecents(String newValue) { this.recents.clearRecents(); String[] recentGames = null; final String preference = newValue; if (preference.contains(";")) { recentGames = preference.split(";"); } else { recentGames = new String[1]; recentGames[0] = preference; } if (recentGames == null || "".equals(recentGames)) { return; } else { final ApplicationAssets applicationAssets = this.controller .getApplicationAssets(); final Vector2 viewport = this.controller.getPlatform().getSize(); final String ending = "/" + GameStructure.GAME_FILE; final I18N i18n = applicationAssets.getI18N(); final String mockupProjectsPath = MOCKUP_PROJECT_FILE.file() .getAbsolutePath(); for (final String recentGame : recentGames) { if (!recentGame.startsWith(mockupProjectsPath) || recentGame.isEmpty()) { continue; } final String loadingPath = recentGame + ending; final FileHandle projectFile = this.controller .getEditorGameAssets().absolute(loadingPath); if (!projectFile.exists()) { Gdx.app.log("Mockup InitialScreen", "Recent project " + loadingPath + " skipped 'cause the file does not exist"); continue; } try { final ModelEntity gameMetadata = controller .getEditorGameAssets().fromJson(ModelEntity.class, projectFile); this.recents.addRecent(new ProjectButton(viewport, i18n, gameMetadata, this.skin, this.controller, CombinedAction.class, OpenGame.class, new Object[] { recentGame }, ChangeView.class, new Object[] { ProjectScreen.NAME })); } catch (SerializationException e) { Gdx.app.log( "Mockup InitialScreen", "Recent project " + loadingPath + " skipped 'cause the project could not be loaded", e); continue; } } } }