Skip to content

Commit 12d3f24

Browse files
committed
feat: config reload command, version command
1 parent 6b0f714 commit 12d3f24

File tree

5 files changed

+65
-3
lines changed

5 files changed

+65
-3
lines changed

src/main/java/io/github/jamalam360/jamlib/JamLib.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,41 @@
2424

2525
package io.github.jamalam360.jamlib;
2626

27+
import io.github.jamalam360.jamlib.config.JamLibConfig;
28+
import io.github.jamalam360.jamlib.log.JamLibLogger;
2729
import io.github.jamalam360.jamlib.tick.TickScheduling;
2830
import net.fabricmc.api.ModInitializer;
31+
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
2932
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
30-
import io.github.jamalam360.jamlib.log.JamLibLogger;
33+
import net.fabricmc.loader.api.FabricLoader;
34+
import net.minecraft.text.Text;
35+
36+
import static net.minecraft.server.command.CommandManager.literal;
3137

3238
public class JamLib implements ModInitializer {
3339
public static final JamLibLogger LOGGER = JamLibLogger.getLogger("jamlib");
3440

3541
@Override
3642
public void onInitialize() {
3743
ServerTickEvents.END_WORLD_TICK.register(TickScheduling::onEndTickServer);
44+
45+
//noinspection CodeBlock2Expr
46+
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, env) -> {
47+
dispatcher.register(
48+
literal("jamlib").then(
49+
literal("version").executes(context -> {
50+
//noinspection OptionalGetWithoutIsPresent
51+
context.getSource().sendFeedback(Text.literal("JamLib " + FabricLoader.getInstance().getModContainer("jamlib").get().getMetadata().getVersion()), false);
52+
return 1;
53+
})
54+
).then(literal("config").then(literal("reload").executes(context -> {
55+
JamLibConfig.reloadAll();
56+
context.getSource().sendFeedback(Text.literal("JamLib configs reloaded"), false);
57+
return 1;
58+
})))
59+
);
60+
});
61+
3862
LOGGER.logInitialize();
3963
}
4064
}

src/main/java/io/github/jamalam360/jamlib/config/JamLibConfig.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import net.minecraft.util.Formatting;
5151

5252
import java.awt.*;
53+
import java.io.IOException;
5354
import java.lang.annotation.ElementType;
5455
import java.lang.annotation.Retention;
5556
import java.lang.annotation.RetentionPolicy;
@@ -227,13 +228,23 @@ else if (inLimits) {
227228
public static void write(String modid) {
228229
path = FabricLoader.getInstance().getConfigDir().resolve(modid + ".json");
229230
try {
230-
if (!Files.exists(path)) Files.createFile(path);
231+
if (!Files.exists(path)) {Files.createFile(path);}
231232
Files.write(path, gson.toJson(configClass.get(modid).getDeclaredConstructor().newInstance()).getBytes());
232233
} catch (Exception e) {
233234
e.printStackTrace();
234235
}
235236
}
236237

238+
public static void reloadAll() {
239+
configClass.keySet().forEach((modId) -> {
240+
try {
241+
gson.fromJson(Files.newBufferedReader(FabricLoader.getInstance().getConfigDir().resolve(modId + ".json")), configClass.get(modId));
242+
} catch (IOException e) {
243+
throw new RuntimeException(e);
244+
}
245+
});
246+
}
247+
237248
@Environment(EnvType.CLIENT)
238249
public static Screen getScreen(Screen parent, String modid) {
239250
return new MidnightConfigScreen(parent, modid);

src/testmod/java/io/github/jamalam360/jamlib/test/JamLibTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,18 @@
2424

2525
package io.github.jamalam360.jamlib.test;
2626

27+
import io.github.jamalam360.jamlib.config.JamLibConfig;
2728
import io.github.jamalam360.jamlib.log.JamLibLogger;
2829
import io.github.jamalam360.jamlib.network.JamLibServerNetworking;
2930
import io.github.jamalam360.jamlib.registry.JamLibRegistry;
3031
import io.github.jamalam360.jamlib.test.registry.TestBlocks;
3132
import io.github.jamalam360.jamlib.test.registry.TestItems;
3233
import net.fabricmc.api.ModInitializer;
34+
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
3335
import net.minecraft.text.Text;
3436

37+
import static net.minecraft.server.command.CommandManager.literal;
38+
3539
public class JamLibTest implements ModInitializer {
3640
public static final String MOD_ID = "jamlib-test";
3741
public static final JamLibLogger LOGGER = JamLibLogger.getLogger(MOD_ID);
@@ -48,6 +52,18 @@ public void onInitialize() {
4852

4953
JamLibServerNetworking.registerHandlers("jamlib-test");
5054

55+
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> dispatcher.register(literal("jamlib-test").then(literal("config").executes(context -> {
56+
context.getSource().sendFeedback(Text.literal(String.valueOf(Config.testInt)), false);
57+
return 1;
58+
}))));
59+
60+
JamLibConfig.init("jamlib-test", Config.class);
61+
5162
LOGGER.logInitialize();
5263
}
64+
65+
public static class Config extends JamLibConfig {
66+
@JamLibConfig.Entry
67+
public static int testInt = 0;
68+
}
5369
}

src/testmod/java/io/github/jamalam360/jamlib/test/JamLibTestClient.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@
2525
package io.github.jamalam360.jamlib.test;
2626

2727
import com.mojang.blaze3d.platform.InputUtil;
28+
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
29+
import com.terraformersmc.modmenu.api.ModMenuApi;
30+
import io.github.jamalam360.jamlib.config.JamLibConfig;
2831
import io.github.jamalam360.jamlib.keybind.JamLibKeybinds;
2932
import io.github.jamalam360.jamlib.network.JamLibClientNetworking;
3033
import net.fabricmc.api.ClientModInitializer;
@@ -35,7 +38,7 @@
3538
/**
3639
* @author Jamalam360
3740
*/
38-
public class JamLibTestClient implements ClientModInitializer {
41+
public class JamLibTestClient implements ClientModInitializer, ModMenuApi {
3942
public static final Random RANDOM = new Random();
4043

4144
@Override
@@ -59,4 +62,9 @@ public void onInitializeClient() {
5962

6063
JamLibClientNetworking.registerHandlers("jamlib-test");
6164
}
65+
66+
@Override
67+
public ConfigScreenFactory<?> getModConfigScreenFactory() {
68+
return (parent) -> JamLibConfig.getScreen(parent, "jamlib-test");
69+
}
6270
}

src/testmod/resources/fabric.mod.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@
2020
],
2121
"client": [
2222
"io.github.jamalam360.jamlib.test.JamLibTestClient"
23+
],
24+
"modmenu": [
25+
"io.github.jamalam360.jamlib.test.JamLibTestClient"
2326
]
2427
},
2528
"mixins": [

0 commit comments

Comments
 (0)