stonecutter: fix crash on fabric server startup

This commit is contained in:
Martin Prokoph
2025-11-22 19:10:22 +01:00
parent 4076ee2b6f
commit 4831da5076
3 changed files with 34 additions and 36 deletions

View File

@@ -1,7 +1,6 @@
package eu.midnightdust.core; package eu.midnightdust.core;
import eu.midnightdust.core.config.MidnightLibConfig; import eu.midnightdust.core.config.MidnightLibConfig;
import eu.midnightdust.lib.config.AutoCommand;
import eu.midnightdust.lib.config.MidnightConfig; import eu.midnightdust.lib.config.MidnightConfig;
import org.slf4j.Logger; import org.slf4j.Logger;
@@ -9,14 +8,12 @@ import org.slf4j.LoggerFactory;
import javax.swing.UIManager; import javax.swing.UIManager;
import net.minecraft.Util; import net.minecraft.Util;
import java.lang.reflect.Field;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
//? if fabric { //? if fabric {
import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.api.DedicatedServerModInitializer;
import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ConfigScreenFactory;
import com.terraformersmc.modmenu.api.ModMenuApi; import com.terraformersmc.modmenu.api.ModMenuApi;
@@ -24,9 +21,10 @@ import com.terraformersmc.modmenu.api.ModMenuApi;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
public class MidnightLib implements DedicatedServerModInitializer, ClientModInitializer, ModMenuApi { public class MidnightLib implements ClientModInitializer, ModMenuApi {
//?} else if neoforge { //?} else if neoforge {
/*import com.mojang.brigadier.builder.LiteralArgumentBuilder; /*import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import eu.midnightdust.lib.config.AutoCommand;
import eu.midnightdust.lib.util.PlatformFunctions; import eu.midnightdust.lib.util.PlatformFunctions;
import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.CommandSourceStack;
@@ -45,6 +43,7 @@ import java.util.ConcurrentModificationException;
public class MidnightLib { public class MidnightLib {
*///?} else if forge { *///?} else if forge {
/*import java.util.ConcurrentModificationException; /*import java.util.ConcurrentModificationException;
import eu.midnightdust.lib.config.AutoCommand;
import eu.midnightdust.lib.util.PlatformFunctions; import eu.midnightdust.lib.util.PlatformFunctions;
import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.CommandSourceStack;
@@ -54,7 +53,6 @@ import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.ModList;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.fml.IExtensionPoint; import net.minecraftforge.fml.IExtensionPoint;
import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
@@ -77,25 +75,10 @@ public class MidnightLib {
MidnightLibConfig.init(MOD_ID, MidnightLibConfig.class); 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 { //? if fabric {
public void onInitializeServer() {
registerAutoCommand();
}
@Override @Override
public ConfigScreenFactory<?> getModConfigScreenFactory() { public ConfigScreenFactory<?> getModConfigScreenFactory() {
return parent -> MidnightLibConfig.getScreen(parent,"midnightlib"); return parent -> MidnightLibConfig.getScreen(parent,MOD_ID);
} }
@Override @Override
@@ -109,8 +92,6 @@ public class MidnightLib {
} }
//?} //?}
/*? if neoforge {*/ /*? if neoforge {*/
/*public static List<LiteralArgumentBuilder<CommandSourceStack>> commands = new ArrayList<>(); /*public static List<LiteralArgumentBuilder<CommandSourceStack>> commands = new ArrayList<>();
@@ -119,9 +100,9 @@ public class MidnightLib {
} }
//? if >= 1.21.6 { //? if >= 1.21.6 {
@EventBusSubscriber(modid = "midnightlib", value = Dist.CLIENT) @EventBusSubscriber(modid = MOD_ID, value = Dist.CLIENT)
//?} else { //?} 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 { public static class MidnightLibBusEvents {
@SubscribeEvent @SubscribeEvent
@@ -131,11 +112,11 @@ public class MidnightLib {
modContainer.registerExtensionPoint(IConfigScreenFactory.class, (minecraftClient, screen) -> MidnightConfig.getScreen(screen, modid)); 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 { public static class MidnightLibEvents {
@SubscribeEvent @SubscribeEvent
public static void registerCommands(RegisterCommandsEvent event) { public static void registerCommands(RegisterCommandsEvent event) {
@@ -155,7 +136,7 @@ public class MidnightLib {
public static List<LiteralArgumentBuilder<CommandSourceStack>> commands = new ArrayList<>(); public static List<LiteralArgumentBuilder<CommandSourceStack>> 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 { public static class MidnightLibBusEvents {
@SubscribeEvent @SubscribeEvent
public static void onPostInit(FMLClientSetupEvent event) { 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))); 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 { public static class MidnightLibEvents {
@SubscribeEvent @SubscribeEvent
public static void registerCommands(RegisterCommandsEvent event) { public static void registerCommands(RegisterCommandsEvent event) {

View File

@@ -7,16 +7,22 @@ import eu.midnightdust.lib.util.PlatformFunctions;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands; import net.minecraft.commands.Commands;
import net.minecraft.network.chat.Component; 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 static String VALUE = "value";
final Field field; Field field;
final Class<?> type; Class<?> type;
final String modid; String modid;
final boolean isList; boolean isList;
public AutoCommand() {}
public AutoCommand(Field field, String modid) { public AutoCommand(Field field, String modid) {
this.field = field; this.modid = modid; this.field = field; this.modid = modid;
@@ -81,4 +87,15 @@ public class AutoCommand {
}, true); }, true);
return 0; 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);
}
});
}
} }

View File

@@ -23,7 +23,7 @@
"environment": "*", "environment": "*",
"entrypoints": { "entrypoints": {
"server": [ "server": [
"eu.midnightdust.core.MidnightLib" "eu.midnightdust.lib.config.AutoCommand"
], ],
"client": [ "client": [
"eu.midnightdust.core.MidnightLib" "eu.midnightdust.core.MidnightLib"