From 27b1cba881ed126854c4ada694d3442b89d4f375 Mon Sep 17 00:00:00 2001 From: Natty <31473117+493msi@users.noreply.github.com> Date: Wed, 6 Apr 2022 21:46:47 +0200 Subject: [PATCH] Fixed mod load order --- UPDATE_NOTES.md | 3 +++ .../src/main/kotlin/org/plutoengine/Versions.kt | 2 +- .../main/java/org/plutoengine/mod/ModLoader.java | 13 +++++++------ .../mods/tefek.plutoshader/info.json | 7 +++++++ .../src/main/java/org/plutoengine/demo/Main.java | 16 ++++++++++++++++ 5 files changed, 34 insertions(+), 7 deletions(-) create mode 100755 engine-demo/basic-application/mods/tefek.plutoshader/info.json diff --git a/UPDATE_NOTES.md b/UPDATE_NOTES.md index 8154af8..c32c1eb 100755 --- a/UPDATE_NOTES.md +++ b/UPDATE_NOTES.md @@ -1,3 +1,6 @@ +## 22.0.0.0-alpha.5 +* `[PlutoRuntime]` Fixed module load ordering + ## 22.0.0.0-alpha.4 * `[PlutoRuntime]` Implemented optional `ResourceFileSystem` features diff --git a/buildSrc/src/main/kotlin/org/plutoengine/Versions.kt b/buildSrc/src/main/kotlin/org/plutoengine/Versions.kt index 8f02e60..dfca1c6 100755 --- a/buildSrc/src/main/kotlin/org/plutoengine/Versions.kt +++ b/buildSrc/src/main/kotlin/org/plutoengine/Versions.kt @@ -22,7 +22,7 @@ object Versions { const val isPrerelease = true const val prereleaseName = "alpha" - const val prerealeaseUpdate = 4 + const val prerealeaseUpdate = 5 val versionFull = if (isPrerelease) diff --git a/engine-core/plutoruntime/src/main/java/org/plutoengine/mod/ModLoader.java b/engine-core/plutoruntime/src/main/java/org/plutoengine/mod/ModLoader.java index b0367a9..1327862 100755 --- a/engine-core/plutoruntime/src/main/java/org/plutoengine/mod/ModLoader.java +++ b/engine-core/plutoruntime/src/main/java/org/plutoengine/mod/ModLoader.java @@ -104,9 +104,6 @@ public final class ModLoader extends PlutoLocalComponent var mod = Mod.from(modID, modInterface.dependencies(), modInterface.version(), modClass); - this.modNameLookup.put(modID, mod); - this.modLookup.put(modClass, mod); - this.loadList.add(mod); var dependencies = mod.getDependencies(); @@ -119,10 +116,14 @@ public final class ModLoader extends PlutoLocalComponent this.registerMod(dependency); } + + this.modNameLookup.put(modID, mod); + this.modLookup.put(modClass, mod); + this.loadList.add(mod); } /** - * Returns all loaded mods in no particular order. + * Returns all loaded mods in their load order order. * * @return A collection of all loaded mods * @@ -205,7 +206,7 @@ public final class ModLoader extends PlutoLocalComponent } } - this.loadedModStack.push(mod); + this.loadedModStack.addLast(mod); } } catch (Exception e) @@ -244,7 +245,7 @@ public final class ModLoader extends PlutoLocalComponent { i++; - var mod = this.loadedModStack.pop(); + var mod = this.loadedModStack.removeLast(); Logger.logf(SmartSeverity.MODULE, "[%d / %d] Deinitializing '%s'...%n", i, modCount, mod.getID()); diff --git a/engine-demo/basic-application/mods/tefek.plutoshader/info.json b/engine-demo/basic-application/mods/tefek.plutoshader/info.json new file mode 100755 index 0000000..81c253e --- /dev/null +++ b/engine-demo/basic-application/mods/tefek.plutoshader/info.json @@ -0,0 +1,7 @@ +{ + "displayName": "Pluto Shader", + "description": "PlutoEngine's shader manager.", + "author": "Tefek", + "resourceRoots": { + } +} diff --git a/engine-demo/basic-application/src/main/java/org/plutoengine/demo/Main.java b/engine-demo/basic-application/src/main/java/org/plutoengine/demo/Main.java index 9db1941..872df01 100755 --- a/engine-demo/basic-application/src/main/java/org/plutoengine/demo/Main.java +++ b/engine-demo/basic-application/src/main/java/org/plutoengine/demo/Main.java @@ -4,11 +4,13 @@ import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL33; import org.plutoengine.PlutoApplication; +import org.plutoengine.PlutoLocal; import org.plutoengine.display.Display; import org.plutoengine.display.Framerate; import org.plutoengine.gui.font.FontHelper; import org.plutoengine.gui.font.FontRenderer; import org.plutoengine.math.ProjectionMatrix; +import org.plutoengine.mod.ModLoader; import org.plutoengine.shader.uniform.auto.AutomaticUniforms; public class Main extends PlutoApplication @@ -41,6 +43,20 @@ public class Main extends PlutoApplication var fpsStr = String.format("%d FPS", Framerate.getInterpolatedFPS()); FontRenderer.drawString(3, 3, fpsStr, 0, 0, 0, 1, 0.75f, true); FontRenderer.drawString(2, 2, fpsStr, 0.13f, 0.75f, 0.62f, 1, 0.75f, false); + + var mods = PlutoLocal.components().getComponent(ModLoader.class).getAllMods(); + int modNr = 0; + + for (var mod : mods) + { + var modManifest = mod.getManifest(); + var modStr = String.format("%s &c[0xff999999]&i1%s", modManifest.displayName(), mod.getVersion()); + + FontRenderer.drawString(8, 50 + modNr * 18, modStr, 0, 0, 0, 0, 0.7f, "default", true); + FontRenderer.drawString(7, 49 + modNr * 18, modStr, 1, 1, 1, 1, 0.7f, "default", false); + + modNr++; + } } public static Display getDisplay()