From 7939fd4861bd613405ad9ce77bc9b9b440159634 Mon Sep 17 00:00:00 2001 From: JFronny <33260128+jfronny@users.noreply.github.com> Date: Mon, 5 Apr 2021 21:33:16 +0200 Subject: [PATCH] Fix config screen crashing because no category is defined if no pack is installed --- build.gradle | 12 +++++++----- gradle.properties | 6 +++--- .../respackopts/integration/ModMenuCompat.java | 9 +++++++++ .../resources/assets/respackopts/lang/en_us.json | 5 +++-- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/build.gradle b/build.gradle index 925589b..22085e7 100644 --- a/build.gradle +++ b/build.gradle @@ -17,6 +17,7 @@ repositories { maven { url = "https://maven.dblsaiko.net/"; name = "dblsaiko" } maven { url = "https://minecraft.curseforge.com/api/maven"; name = "CurseForge" } maven { url = 'https://maven.terraformersmc.com/'; name = "ModMenu" } + maven { url = "https://maven.shedaniel.me/"; name = "Cloth" } } dependencies { @@ -26,18 +27,19 @@ dependencies { modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" // Fabric API. This is technically optional, but you probably want it anyway. - modImplementation "net.fabricmc.fabric-api:fabric-api:0.30.3+1.16" + modImplementation "net.fabricmc.fabric-api:fabric-api:0.32.5+1.16" // PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs. // You may need to force-disable transitiveness on them. - modCompile("com.terraformersmc:modmenu:1.16.7") + modCompile("com.terraformersmc:modmenu:1.16.8") - include modApi("me.shedaniel.cloth:config-2:4.8.3") + include modApi("me.shedaniel.cloth:cloth-config-fabric:4.+") modApi "io.github.cottonmc:LibCD:3.0.3+1.16.3" - modCompile "grondag:frex-mc116:4.0+" - modCompile("grondag:canvas-mc116:1.0.+") { + modCompile "grondag:frex-mc116:+" + modCompile("grondag:canvas-mc116:+") { exclude(group: "io.github.prospector") + exclude(group: "me.shedaniel.cloth") } } diff --git a/gradle.properties b/gradle.properties index 1c8136f..e398edf 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,9 +3,9 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://modmuss50.me/fabric.html minecraft_version=1.16.5 -yarn_mappings=1.16.5+build.4 -loader_version=0.11.1 +yarn_mappings=1.16.5+build.6 +loader_version=0.11.3 # Mod Properties -mod_version=1.4.0 +mod_version=1.4.1 maven_group=io.gitlab.jfronny archives_base_name=respackopts \ No newline at end of file diff --git a/src/main/java/io/gitlab/jfronny/respackopts/integration/ModMenuCompat.java b/src/main/java/io/gitlab/jfronny/respackopts/integration/ModMenuCompat.java index 615f8e9..d792021 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/integration/ModMenuCompat.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/integration/ModMenuCompat.java @@ -9,8 +9,11 @@ import me.shedaniel.clothconfig2.api.ConfigCategory; import me.shedaniel.clothconfig2.api.ConfigEntryBuilder; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.FatalErrorScreen; +import net.minecraft.text.LiteralText; import net.minecraft.text.TranslatableText; +import java.util.concurrent.atomic.AtomicBoolean; + public class ModMenuCompat implements ModMenuApi { @Override public ConfigScreenFactory getModConfigScreenFactory() { @@ -25,10 +28,16 @@ public class ModMenuCompat implements ModMenuApi { Respackopts.save(); MinecraftClient.getInstance().reloadResources(); }); + AtomicBoolean categoryAdded = new AtomicBoolean(false); Respackopts.resPackMetas.forEach((s, v) -> { + categoryAdded.set(true); ConfigCategory config = builder.getOrCreateCategory(new TranslatableText("respackopts.title." + v.id)); Respackopts.factory.buildCategory(v.conf, v.id, new JfConfigCategoryPrimary(config), entryBuilder, ""); }); + if (!categoryAdded.get()) { + builder.getOrCreateCategory(new TranslatableText("respackopts.mainconfig")) + .addEntry(entryBuilder.startTextDescription(new TranslatableText("respackopts.noPack")).build()); + } return builder.build(); } catch (Throwable t) { diff --git a/src/main/resources/assets/respackopts/lang/en_us.json b/src/main/resources/assets/respackopts/lang/en_us.json index 809d769..c2a5e42 100644 --- a/src/main/resources/assets/respackopts/lang/en_us.json +++ b/src/main/resources/assets/respackopts/lang/en_us.json @@ -2,6 +2,7 @@ "respackopts.loadFailed": "Failed to load resourcepacks", "respackopts.loadError": "There is an issue with the resourcepack configs. Please take a look at the game log", "respackopts.configure": "Configure", - "respackopts.mainconfig": "ResPack Opts", - "respackopts.invalid": "Invalid value" + "respackopts.mainconfig": "ResPackOpts", + "respackopts.invalid": "Invalid value", + "respackopts.noPack": "No resource pack that supports RPO could be found. Install one and it will appear here" } \ No newline at end of file