@Override /** Draws the screen and all the components in it. */ public void drawScreen(int par1, int par2, float par3) { this.drawDefaultBackground(); int offset = Math.max(85 - modsMissing.missingMods.size() * 10, 10); this.drawCenteredString( this.fontRenderer, "Forge Mod Loader has found a problem with your minecraft installation", this.width / 2, offset, 0xFFFFFF); offset += 10; this.drawCenteredString( this.fontRenderer, "The mods and versions listed below could not be found", this.width / 2, offset, 0xFFFFFF); offset += 5; for (ArtifactVersion v : modsMissing.missingMods) { offset += 10; if (v instanceof DefaultArtifactVersion) { DefaultArtifactVersion dav = (DefaultArtifactVersion) v; if (dav.getRange() != null && dav.getRange().isUnboundedAbove()) { this.drawCenteredString( this.fontRenderer, String.format( "%s : minimum version required is %s", v.getLabel(), dav.getRange().getLowerBoundString()), this.width / 2, offset, 0xEEEEEE); continue; } } this.drawCenteredString( this.fontRenderer, String.format("%s : %s", v.getLabel(), v.getRangeString()), this.width / 2, offset, 0xEEEEEE); } offset += 20; this.drawCenteredString( this.fontRenderer, "The file 'ForgeModLoader-client-0.log' contains more information", this.width / 2, offset, 0xFFFFFF); }
private void buildGraph(List<ModContainer> modList, Map<String, ModContainer> nameLookup) { modGraph = new DirectedGraph<ModContainer>(); modGraph.addNode(beforeAll); modGraph.addNode(before); modGraph.addNode(afterAll); modGraph.addNode(after); modGraph.addEdge(before, after); modGraph.addEdge(beforeAll, before); modGraph.addEdge(after, afterAll); for (ModContainer mod : modList) { modGraph.addNode(mod); } for (ModContainer mod : modList) { if (mod.isImmutable()) { // Immutable mods are always before everything modGraph.addEdge(beforeAll, mod); modGraph.addEdge(mod, before); continue; } boolean preDepAdded = false; boolean postDepAdded = false; for (ArtifactVersion dep : mod.getDependencies()) { preDepAdded = true; String modid = dep.getLabel(); if (modid.equals("*")) { // We are "after" everything modGraph.addEdge(mod, afterAll); modGraph.addEdge(after, mod); postDepAdded = true; } else { modGraph.addEdge(before, mod); if (nameLookup.containsKey(modid) || Loader.isModLoaded(modid)) { modGraph.addEdge(nameLookup.get(modid), mod); } } } for (ArtifactVersion dep : mod.getDependants()) { postDepAdded = true; String modid = dep.getLabel(); if (modid.equals("*")) { // We are "before" everything modGraph.addEdge(beforeAll, mod); modGraph.addEdge(mod, before); preDepAdded = true; } else { modGraph.addEdge(mod, after); if (Loader.isModLoaded(modid)) { modGraph.addEdge(mod, nameLookup.get(modid)); } } } if (!preDepAdded) { modGraph.addEdge(before, mod); } if (!postDepAdded) { modGraph.addEdge(mod, after); } } }