aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kubatech/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/kubatech/api')
-rw-r--r--src/main/java/kubatech/api/LoaderReference.java3
-rw-r--r--src/main/java/kubatech/api/helpers/ProgressBarWrapper.java55
2 files changed, 57 insertions, 1 deletions
diff --git a/src/main/java/kubatech/api/LoaderReference.java b/src/main/java/kubatech/api/LoaderReference.java
index 5d6545adae..192a7158a4 100644
--- a/src/main/java/kubatech/api/LoaderReference.java
+++ b/src/main/java/kubatech/api/LoaderReference.java
@@ -19,5 +19,6 @@ public class LoaderReference {
public static final boolean DraconicEvolution = Loader.isModLoaded("DraconicEvolution");
public static final boolean Avaritia = Loader.isModLoaded("Avaritia");
public static final boolean ProjRedIllumination = Loader.isModLoaded("ProjRed|Illumination");
- public static final boolean RandomThings = Loader.isModLoaded("RandomThings");
+ public static final boolean RandomThings = Loader.isModLoaded("RandomThings")
+ public static final boolean BetterLoadingScreen = Loader.isModLoaded("betterloadingscreen");
}
diff --git a/src/main/java/kubatech/api/helpers/ProgressBarWrapper.java b/src/main/java/kubatech/api/helpers/ProgressBarWrapper.java
new file mode 100644
index 0000000000..f1243c4d46
--- /dev/null
+++ b/src/main/java/kubatech/api/helpers/ProgressBarWrapper.java
@@ -0,0 +1,55 @@
+package kubatech.api.helpers;
+
+import static kubatech.api.utils.ModUtils.isClientSided;
+
+import java.io.IOException;
+
+import kubatech.Tags;
+import kubatech.api.LoaderReference;
+import alexiil.mods.load.ProgressDisplayer;
+import cpw.mods.fml.common.FMLCommonHandler;
+import cpw.mods.fml.common.ProgressManager;
+
+@SuppressWarnings("deprecation")
+public class ProgressBarWrapper {
+
+ ProgressManager.ProgressBar internalFMLBar;
+ boolean isFMLBar;
+ String name;
+ int maxSteps;
+ int steps = 0;
+
+ public ProgressBarWrapper(String name, int steps) {
+ if (!isClientSided) return;
+ maxSteps = steps;
+ this.name = name;
+ if (!LoaderReference.BetterLoadingScreen) {
+ internalFMLBar = ProgressManager.push(name, steps);
+ isFMLBar = true;
+ return;
+ }
+ isFMLBar = false;
+ }
+
+ public void step(String message) {
+ if (!isClientSided) return;
+ if (isFMLBar) internalFMLBar.step(message);
+ else {
+ steps++;
+ try {
+ ProgressDisplayer.displayProgress(
+ Tags.MODNAME + ": " + name + " -> " + message,
+ (float) steps / (float) maxSteps);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ // Prevent game freeze
+ FMLCommonHandler.instance().processWindowMessages();
+ }
+ }
+
+ public void end() {
+ if (!isClientSided) return;
+ if (isFMLBar) ProgressManager.pop(internalFMLBar);
+ }
+}