diff --git a/src/main/java/cpw/mods/fml/client/SplashProgress.java b/src/main/java/cpw/mods/fml/client/SplashProgress.java index 6c63f6c..f058a3b 100644 --- a/src/main/java/cpw/mods/fml/client/SplashProgress.java +++ b/src/main/java/cpw/mods/fml/client/SplashProgress.java @@ -363,7 +363,7 @@ drawBox(barWidth - 2, barHeight - 2); // slidy part setColor(barColor); - drawBox((barWidth - 2) * b.getStep() / b.getSteps(), barHeight - 2); + drawBox((barWidth - 2) * (b.getStep() + 1) / (b.getSteps() + 1), barHeight - 2); // Step can sometimes be 0. // progress text String progress = "" + b.getStep() + "/" + b.getSteps(); glTranslatef(((float)barWidth - 2) / 2 - fontRenderer.getStringWidth(progress), 2, 0); diff --git a/src/main/java/cpw/mods/fml/common/LoadController.java b/src/main/java/cpw/mods/fml/common/LoadController.java index 388a0ba..5f429e9 100644 --- a/src/main/java/cpw/mods/fml/common/LoadController.java +++ b/src/main/java/cpw/mods/fml/common/LoadController.java @@ -183,7 +183,7 @@ { modObjectList = buildModObjectList(); } - ProgressBar bar = ProgressManager.push(stateEvent.description(), activeModList.size()); + ProgressBar bar = ProgressManager.push(stateEvent.description(), activeModList.size(), true); for (ModContainer mc : activeModList) { bar.step(mc.getName()); diff --git a/src/main/java/cpw/mods/fml/common/ProgressManager.java b/src/main/java/cpw/mods/fml/common/ProgressManager.java index 1211d00..1ba6857 100644 --- a/src/main/java/cpw/mods/fml/common/ProgressManager.java +++ b/src/main/java/cpw/mods/fml/common/ProgressManager.java @@ -20,8 +20,20 @@ @Deprecated public static ProgressBar push(String title, int steps) { + return push(title, steps, false); + } + /** + * @deprecated not a stable API, will break, don't use this yet + */ + @Deprecated + public static ProgressBar push(String title, int steps, boolean timeEachStep) + { ProgressBar bar = new ProgressBar(title, steps); bars.add(bar); + if (timeEachStep) + { + bar.timeEachStep(); + } FMLCommonHandler.instance().processWindowMessages(); return bar; } @@ -34,6 +46,16 @@ { if(bar.getSteps() != bar.getStep()) throw new IllegalStateException("can't pop unfinished ProgressBar " + bar.getTitle()); bars.remove(bar); + if (bar.getSteps() != 0) + { + long newTime = System.nanoTime(); + if (bar.timeEachStep) + FMLLog.fine("Bar Step: %s - %s took %.3fs", bar.getTitle(), bar.getMessage(), ((float)(newTime - bar.lastTime) / 1000000 / 1000)); + if (bar.getSteps() == 1) + FMLLog.fine("Bar Finished: %s - %s took %.3fs", bar.getTitle(), bar.getMessage(), ((float)(newTime - bar.startTime) / 1000000 / 1000)); + else + FMLLog.fine("Bar Finished: %s took %.3fs", bar.getTitle(), ((float)(newTime - bar.startTime) / 1000000 / 1000)); + } FMLCommonHandler.instance().processWindowMessages(); } @@ -55,6 +77,9 @@ private final int steps; private volatile int step = 0; private volatile String message = ""; + private boolean timeEachStep = false; + private long startTime = System.nanoTime(); + private long lastTime = startTime; private ProgressBar(String title, int steps) { @@ -70,6 +95,12 @@ public void step(String message) { if(step >= steps) throw new IllegalStateException("too much steps for ProgressBar " + title); + if (timeEachStep && step != 0) + { + long newTime = System.nanoTime(); + FMLLog.fine("Bar Step: %s - %s took %.3fs", getTitle(), getMessage(), ((float)(newTime - lastTime) / 1000000 / 1000)); + lastTime = newTime; + } step++; this.message = FMLCommonHandler.instance().stripSpecialChars(message); FMLCommonHandler.instance().processWindowMessages(); @@ -94,5 +125,10 @@ { return message; } + + public void timeEachStep() + { + this.timeEachStep = true; + } } } \ No newline at end of file diff --git a/src/main/java/net/minecraft/client/Minecraft.java b/src/main/java/net/minecraft/client/Minecraft.java index 0eda6e3..71caf67 100644 --- a/src/main/java/net/minecraft/client/Minecraft.java +++ b/src/main/java/net/minecraft/client/Minecraft.java @@ -498,7 +498,7 @@ this.mcResourceManager.registerReloadListener(this.standardGalacticFontRenderer); this.mcResourceManager.registerReloadListener(new GrassColorReloadListener()); this.mcResourceManager.registerReloadListener(new FoliageColorReloadListener()); - cpw.mods.fml.common.ProgressManager.ProgressBar bar= cpw.mods.fml.common.ProgressManager.push("Rendering Setup", 9); + cpw.mods.fml.common.ProgressManager.ProgressBar bar= cpw.mods.fml.common.ProgressManager.push("Rendering Setup", 9, true); bar.step("Loading Render Manager"); RenderManager.instance.itemRenderer = new ItemRenderer(this); bar.step("Loading Entity Renderer"); diff --git a/src/main/java/net/minecraft/client/renderer/texture/TextureManager.java b/src/main/java/net/minecraft/client/renderer/texture/TextureManager.java index c1f161c..8b1fedb 100644 --- a/src/main/java/net/minecraft/client/renderer/texture/TextureManager.java +++ b/src/main/java/net/minecraft/client/renderer/texture/TextureManager.java @@ -162,12 +162,15 @@ public void onResourceManagerReload(IResourceManager p_110549_1_) { + cpw.mods.fml.common.ProgressManager.ProgressBar bar = cpw.mods.fml.common.ProgressManager.push("Reloading Texture Manager", this.mapTextureObjects.keySet().size(), true); Iterator iterator = this.mapTextureObjects.entrySet().iterator(); while (iterator.hasNext()) { Entry entry = (Entry)iterator.next(); + bar.step(entry.getKey().toString()); this.loadTexture((ResourceLocation)entry.getKey(), (ITextureObject)entry.getValue()); } + cpw.mods.fml.common.ProgressManager.pop(bar); } } \ No newline at end of file diff --git a/src/main/java/net/minecraft/client/resources/SimpleReloadableResourceManager.java b/src/main/java/net/minecraft/client/resources/SimpleReloadableResourceManager.java index ef96434..a197440 100644 --- a/src/main/java/net/minecraft/client/resources/SimpleReloadableResourceManager.java +++ b/src/main/java/net/minecraft/client/resources/SimpleReloadableResourceManager.java @@ -95,7 +95,7 @@ public void reloadResources(List p_110541_1_) { this.clearResources(); - cpw.mods.fml.common.ProgressManager.ProgressBar resReload = cpw.mods.fml.common.ProgressManager.push("Loading Resources", p_110541_1_.size()+1); + cpw.mods.fml.common.ProgressManager.ProgressBar resReload = cpw.mods.fml.common.ProgressManager.push("Loading Resources", p_110541_1_.size()+1, true); logger.info("Reloading ResourceManager: " + joinerResourcePacks.join(Iterables.transform(p_110541_1_, new Function() { private static final String __OBFID = "CL_00001092";