From e458382fedd96bc5eafe159c5a95c07f59ba5168 Mon Sep 17 00:00:00 2001 From: Jonathan Coates Date: Mon, 21 Sep 2026 15:41:42 +0100 Subject: [PATCH] Support NeoForge's config GUI See #1727. This is not sufficient to fix the issue, as it's NeoForge only, and doesn't support our address rules. --- REUSE.toml | 1 + .../shared/config/ConfigFile.java | 5 +--- projects/common/src/main/resources/banner.png | Bin 0 -> 1367 bytes .../client/ComputerCraftClient.java | 22 ++++++++++++++++++ .../dan200/computercraft/ComputerCraft.java | 5 ++-- .../shared/platform/ForgeConfigFile.java | 3 +-- .../resources/META-INF/neoforge.mods.toml | 3 ++- 7 files changed, 29 insertions(+), 10 deletions(-) create mode 100644 projects/common/src/main/resources/banner.png create mode 100644 projects/forge/src/client/java/dan200/computercraft/client/ComputerCraftClient.java diff --git a/REUSE.toml b/REUSE.toml index c1ccd6d79..a620b0a81 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -60,6 +60,7 @@ path = [ "doc/logo-darkmode.png", "projects/common/src/main/resources/assets/computercraft/models/**", "projects/common/src/main/resources/assets/computercraft/textures/**", + "projects/common/src/main/resources/banner.png", "projects/common/src/main/resources/pack.mcmeta", "projects/common/src/main/resources/pack.png", "projects/core/src/main/resources/assets/computercraft/textures/gui/term_font.png", diff --git a/projects/common/src/main/java/dan200/computercraft/shared/config/ConfigFile.java b/projects/common/src/main/java/dan200/computercraft/shared/config/ConfigFile.java index cd0c7a396..536377590 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/config/ConfigFile.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/config/ConfigFile.java @@ -146,10 +146,7 @@ public abstract class ConfigFile { } protected String getTranslation(String name) { - var key = new StringBuilder(TRANSLATION_PREFIX); - for (var group : groupStack) key.append(group).append('.'); - key.append(name); - return key.toString(); + return TRANSLATION_PREFIX + getPath(name); } /** diff --git a/projects/common/src/main/resources/banner.png b/projects/common/src/main/resources/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..c904e37d2f1519dc9860474413058ef09fa3deaa GIT binary patch literal 1367 zcmeAS@N?(olHy`uVBq!ia0y~yV4Taqz~I2a#=yXEkYm+z1_lPk;vjb?hIQv;UNSH+ zu%tWsIx;Y9?C1WI$jZRLz**oCSz;PzZP&h-u{X|N z>G=Pe{qv>sUVPpcwpw-K<}F)PCO+*O9<@Vkoe(&#JRV}*rZm#DOli9xKN?xo~UgTN*Ph+}g z{k}IP3=C-+RtyZrBC-q(Gqcu)t+v^_=~eQ(Pj~O#d$uk!eC@TO>xU0JzpLtWJpak^ z)5eW#wr2&5&P06L*spe&!J!1rfLDM1)I5E;G%_aUOl)xdG2kZzq#?dlUZ z|9v`N$kN>0Jj=fH(!A7*Gwk2}x%FdV(0czBH(p17`{>;IY&qxI_|yK<_xI1A%g1nl z#}yW+lh>|U^W<0I*|gwA7f+QPEB7cXp8|K`uukEZ|rV7O}T+qb!$a}FPN?mYE!ez&|z(Z1gwn_bQwJ?eU; zE>|$=dyZ-9{QYl!E*G0s|LV8t#^cvp&dFQX=hpPv+gr;rG)Q*AT&H&X&Yd$~Uze4a zs}{Zby36J1g1`Ugef?V6Ip_1|&ny1kQabYPW|q_Q`QLsAU;cD`N!`91ujO~y&ARe> zIcMzsE3coQKaUz8l2(^*-ah^R|IE2_WjjxKT0ic*`(DTCX4STRnfvWcb?bd!J@4N8 zZ{h33o_p(NUHIy|w+_R1;qfJY{{F?+k4t>fnXfGG?8#eoPSaB=`Q-YW5k@{HliW;< z&PIHik$lqNqKDK;52^KRs9tjWdpmpM*|TRoO`>++owh>a`0?XHmf_*y`ma`cTLit? zmwofO{_nplm!7jP`FG`ec2d85^s7JWbJ1fgHz()GufpHIe+yauo7q**b~$USN>N&R zx~kOL>#se(7~RbaS4vMyb5nZ$;DN)Ui++B7Dn)&LeJVv#y=}MN>qMWwGHY6V&cgHl z{}Q+S+4?8RzW&X} new ConfigurationScreen( + modContainer, screen, (ctx, key, element) -> key.equals("rules") ? null : element + )); + } +} diff --git a/projects/forge/src/main/java/dan200/computercraft/ComputerCraft.java b/projects/forge/src/main/java/dan200/computercraft/ComputerCraft.java index c60494589..db196f56a 100644 --- a/projects/forge/src/main/java/dan200/computercraft/ComputerCraft.java +++ b/projects/forge/src/main/java/dan200/computercraft/ComputerCraft.java @@ -42,8 +42,8 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.neoforged.bus.api.IEventBus; import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.ModContainer; import net.neoforged.fml.ModList; -import net.neoforged.fml.ModLoadingContext; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.fml.common.Mod; import net.neoforged.fml.config.ModConfig; @@ -72,10 +72,9 @@ import java.util.function.BiFunction; public final class ComputerCraft { private static @Nullable IEventBus eventBus; - public ComputerCraft(IEventBus eventBus) { + public ComputerCraft(IEventBus eventBus, ModContainer container) { withEventBus(eventBus, ModRegistry::register); - var container = ModLoadingContext.get().getActiveContainer(); container.registerConfig(ModConfig.Type.SERVER, ((ForgeConfigFile) ConfigSpec.serverSpec).spec()); container.registerConfig(ModConfig.Type.CLIENT, ((ForgeConfigFile) ConfigSpec.clientSpec).spec()); diff --git a/projects/forge/src/main/java/dan200/computercraft/shared/platform/ForgeConfigFile.java b/projects/forge/src/main/java/dan200/computercraft/shared/platform/ForgeConfigFile.java index f2f7e497e..62acf92eb 100644 --- a/projects/forge/src/main/java/dan200/computercraft/shared/platform/ForgeConfigFile.java +++ b/projects/forge/src/main/java/dan200/computercraft/shared/platform/ForgeConfigFile.java @@ -46,9 +46,8 @@ public final class ForgeConfigFile extends ConfigFile { @Override public void push(String name) { - super.push(name); - translation(name); + super.push(name); builder.push(name); } diff --git a/projects/forge/src/main/resources/META-INF/neoforge.mods.toml b/projects/forge/src/main/resources/META-INF/neoforge.mods.toml index 23444c070..4dbc67533 100644 --- a/projects/forge/src/main/resources/META-INF/neoforge.mods.toml +++ b/projects/forge/src/main/resources/META-INF/neoforge.mods.toml @@ -6,7 +6,8 @@ modLoader="javafml" loaderVersion="[1,)" issueTrackerURL="https://github.com/cc-tweaked/CC-Tweaked/issues" -logoFile="pack.png" +logoBlur=false +logoFile="banner.png" license="ComputerCraft Public License (https://raw.githubusercontent.com/dan200/ComputerCraft/master/LICENSE)"