From a12768cd189fcbca175295a948291a81f8c4d350 Mon Sep 17 00:00:00 2001 From: Jakub <53441451+kuba6000@users.noreply.github.com> Date: Fri, 17 Mar 2023 18:53:13 +0100 Subject: Show progress bar when generating mob recipe map (#59) * Show progress bar when generating mob recipe map * test * Check for BLS * Process on server start * Buildscript --- src/main/java/kubatech/api/LoaderReference.java | 1 + .../kubatech/api/helpers/ProgressBarWrapper.java | 55 ++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 src/main/java/kubatech/api/helpers/ProgressBarWrapper.java (limited to 'src/main/java/kubatech/api') diff --git a/src/main/java/kubatech/api/LoaderReference.java b/src/main/java/kubatech/api/LoaderReference.java index 5ae387ed63..16526b2b9e 100644 --- a/src/main/java/kubatech/api/LoaderReference.java +++ b/src/main/java/kubatech/api/LoaderReference.java @@ -18,4 +18,5 @@ public class LoaderReference { public static final boolean Forestry = Loader.isModLoaded("Forestry"); public static final boolean DraconicEvolution = Loader.isModLoaded("DraconicEvolution"); public static final boolean Avaritia = Loader.isModLoaded("Avaritia"); + 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); + } +} -- cgit