From 4831da5076e96c3f237f97f1d0f21b9e5ffd4a7c Mon Sep 17 00:00:00 2001 From: Martin Prokoph Date: Sat, 22 Nov 2025 19:10:22 +0100 Subject: [PATCH] stonecutter: fix crash on fabric server startup --- .../eu/midnightdust/core/MidnightLib.java | 41 +++++-------------- .../midnightdust/lib/config/AutoCommand.java | 27 +++++++++--- src/main/resources/fabric.mod.json | 2 +- 3 files changed, 34 insertions(+), 36 deletions(-) diff --git a/src/main/java/eu/midnightdust/core/MidnightLib.java b/src/main/java/eu/midnightdust/core/MidnightLib.java index 4a4cc5e..c2c813b 100644 --- a/src/main/java/eu/midnightdust/core/MidnightLib.java +++ b/src/main/java/eu/midnightdust/core/MidnightLib.java @@ -1,7 +1,6 @@ package eu.midnightdust.core; import eu.midnightdust.core.config.MidnightLibConfig; -import eu.midnightdust.lib.config.AutoCommand; import eu.midnightdust.lib.config.MidnightConfig; import org.slf4j.Logger; @@ -9,14 +8,12 @@ import org.slf4j.LoggerFactory; import javax.swing.UIManager; import net.minecraft.Util; -import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; //? if fabric { import net.fabricmc.api.ClientModInitializer; -import net.fabricmc.api.DedicatedServerModInitializer; import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; @@ -24,9 +21,10 @@ import com.terraformersmc.modmenu.api.ModMenuApi; import java.util.HashMap; import java.util.Map; -public class MidnightLib implements DedicatedServerModInitializer, ClientModInitializer, ModMenuApi { +public class MidnightLib implements ClientModInitializer, ModMenuApi { //?} else if neoforge { /*import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import eu.midnightdust.lib.config.AutoCommand; import eu.midnightdust.lib.util.PlatformFunctions; import net.minecraft.commands.CommandSourceStack; @@ -45,6 +43,7 @@ import java.util.ConcurrentModificationException; public class MidnightLib { *///?} else if forge { /*import java.util.ConcurrentModificationException; +import eu.midnightdust.lib.config.AutoCommand; import eu.midnightdust.lib.util.PlatformFunctions; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import net.minecraft.commands.CommandSourceStack; @@ -54,7 +53,6 @@ import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.IExtensionPoint; import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.common.Mod; @@ -77,25 +75,10 @@ public class MidnightLib { MidnightLibConfig.init(MOD_ID, MidnightLibConfig.class); } - public static void registerAutoCommand() { - MidnightConfig.configInstances.forEach((modid, config) -> { - for (Field field : config.configClass.getFields()) { - if (field.isAnnotationPresent(MidnightConfig.Entry.class) - && !field.isAnnotationPresent(MidnightConfig.Client.class) - && !field.isAnnotationPresent(MidnightConfig.Hidden.class)) - new AutoCommand(field, modid); - } - }); - } - //? if fabric { - public void onInitializeServer() { - registerAutoCommand(); - } - @Override public ConfigScreenFactory getModConfigScreenFactory() { - return parent -> MidnightLibConfig.getScreen(parent,"midnightlib"); + return parent -> MidnightLibConfig.getScreen(parent,MOD_ID); } @Override @@ -109,8 +92,6 @@ public class MidnightLib { } //?} - - /*? if neoforge {*/ /*public static List> commands = new ArrayList<>(); @@ -119,9 +100,9 @@ public class MidnightLib { } //? if >= 1.21.6 { - @EventBusSubscriber(modid = "midnightlib", value = Dist.CLIENT) + @EventBusSubscriber(modid = MOD_ID, value = Dist.CLIENT) //?} else { - /^@EventBusSubscriber(modid = "midnightlib", bus = EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) + /^@EventBusSubscriber(modid = MOD_ID, bus = EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) ^///?} public static class MidnightLibBusEvents { @SubscribeEvent @@ -131,11 +112,11 @@ public class MidnightLib { modContainer.registerExtensionPoint(IConfigScreenFactory.class, (minecraftClient, screen) -> MidnightConfig.getScreen(screen, modid)); } }); - MidnightLib.registerAutoCommand(); + new AutoCommand().onInitializeServer(); } } - @EventBusSubscriber(modid = "midnightlib") + @EventBusSubscriber(modid = MOD_ID) public static class MidnightLibEvents { @SubscribeEvent public static void registerCommands(RegisterCommandsEvent event) { @@ -155,7 +136,7 @@ public class MidnightLib { public static List> commands = new ArrayList<>(); - @Mod.EventBusSubscriber(modid = "midnightlib", bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) + @Mod.EventBusSubscriber(modid = MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) public static class MidnightLibBusEvents { @SubscribeEvent public static void onPostInit(FMLClientSetupEvent event) { @@ -164,11 +145,11 @@ public class MidnightLib { modContainer.registerExtensionPoint(ConfigScreenHandler.ConfigScreenFactory.class, () -> new ConfigScreenHandler.ConfigScreenFactory((minecraftClient, screen) -> MidnightConfig.getScreen(screen, modid))); } }); - MidnightLib.registerAutoCommand(); + new AutoCommand().onInitializeServer(); } } - @Mod.EventBusSubscriber(modid = "midnightlib") + @Mod.EventBusSubscriber(modid = MOD_ID) public static class MidnightLibEvents { @SubscribeEvent public static void registerCommands(RegisterCommandsEvent event) { diff --git a/src/main/java/eu/midnightdust/lib/config/AutoCommand.java b/src/main/java/eu/midnightdust/lib/config/AutoCommand.java index 5ebe96e..3fdd702 100644 --- a/src/main/java/eu/midnightdust/lib/config/AutoCommand.java +++ b/src/main/java/eu/midnightdust/lib/config/AutoCommand.java @@ -7,16 +7,22 @@ import eu.midnightdust.lib.util.PlatformFunctions; import java.lang.reflect.Field; import java.util.List; import java.util.Objects; + import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.network.chat.Component; -public class AutoCommand { +//? fabric +import net.fabricmc.api.DedicatedServerModInitializer; + +public class AutoCommand /*? fabric {*/ implements DedicatedServerModInitializer /*?}*/ { final static String VALUE = "value"; - final Field field; - final Class type; - final String modid; - final boolean isList; + Field field; + Class type; + String modid; + boolean isList; + + public AutoCommand() {} public AutoCommand(Field field, String modid) { this.field = field; this.modid = modid; @@ -81,4 +87,15 @@ public class AutoCommand { }, true); return 0; } + + public void onInitializeServer() { + MidnightConfig.configInstances.forEach((modid, config) -> { + for (Field field : config.configClass.getFields()) { + if (field.isAnnotationPresent(MidnightConfig.Entry.class) + && !field.isAnnotationPresent(MidnightConfig.Client.class) + && !field.isAnnotationPresent(MidnightConfig.Hidden.class)) + new AutoCommand(field, modid); + } + }); + } } \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index c2c855e..e39bbe2 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -23,7 +23,7 @@ "environment": "*", "entrypoints": { "server": [ - "eu.midnightdust.core.MidnightLib" + "eu.midnightdust.lib.config.AutoCommand" ], "client": [ "eu.midnightdust.core.MidnightLib"