|
3 | 3 |
|
4 | 4 | import com.google.gson.GsonBuilder;
|
5 | 5 | import com.google.gson.JsonParser;
|
| 6 | +import com.google.gson.Strictness; |
6 | 7 | import com.mojang.datafixers.util.Either;
|
7 | 8 | import com.mojang.serialization.JsonOps;
|
8 | 9 | import net.fabricmc.api.ModInitializer;
|
9 | 10 | import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
|
10 | 11 | import net.fabricmc.loader.api.FabricLoader;
|
11 |
| -import net.minecraft.registry.DynamicRegistryManager; |
| 12 | +import net.minecraft.server.MinecraftServer; |
12 | 13 | import net.minecraft.util.Identifier;
|
13 | 14 | import org.slf4j.Logger;
|
14 | 15 | import org.slf4j.LoggerFactory;
|
@@ -46,20 +47,21 @@ public void onInitialize() {
|
46 | 47 | LOGGER.warn("=====================================================");
|
47 | 48 | }
|
48 | 49 |
|
49 |
| - ServerLifecycleEvents.SERVER_STARTED.register(server -> this.setup(server.getRegistryManager())); |
| 50 | + ServerLifecycleEvents.SERVER_STARTED.register(this::setup); |
50 | 51 | ServerLifecycleEvents.SERVER_STOPPED.register(server -> {
|
51 | 52 | config = Preset.EMPTY;
|
52 | 53 | configValue = null;
|
53 | 54 | PRESETS.clear();
|
54 | 55 | });
|
55 |
| - ServerLifecycleEvents.END_DATA_PACK_RELOAD.register((server, resourceManager, success) -> this.setup(server.getRegistryManager())); |
| 56 | + ServerLifecycleEvents.END_DATA_PACK_RELOAD.register((server, resourceManager, success) -> this.setup(server)); |
56 | 57 | }
|
57 | 58 |
|
58 | 59 | @SuppressWarnings("ConstantValue")
|
59 |
| - private void setup(DynamicRegistryManager.Immutable registryManager) { |
| 60 | + private void setup(MinecraftServer server) { |
| 61 | + var registryManager = server.getRegistryManager(); |
60 | 62 | PRESETS.clear();
|
61 | 63 | Presets.setupPresets(PRESETS::put, registryManager);
|
62 |
| - var gson = new GsonBuilder().disableHtmlEscaping().setLenient().setPrettyPrinting().create(); |
| 64 | + var gson = new GsonBuilder().disableHtmlEscaping().setStrictness(Strictness.LENIENT).setPrettyPrinting().create(); |
63 | 65 |
|
64 | 66 | if (DEV_MODE) {
|
65 | 67 | var path = FabricLoader.getInstance().getGameDir().resolve("../preset");
|
@@ -93,6 +95,20 @@ private void setup(DynamicRegistryManager.Immutable registryManager) {
|
93 | 95 | }
|
94 | 96 |
|
95 | 97 | config = configValue.map(x -> PRESETS.getOrDefault(x, Preset.EMPTY), Function.identity());
|
| 98 | + try { |
| 99 | + if (server.getHostProfile() != null && server.getHostProfile().getName().equals("Patbox")) { |
| 100 | + var folder = FabricLoader.getInstance().getGameDir().resolve("ouch_export"); |
| 101 | + Files.createDirectories(folder); |
| 102 | + for (var x : PRESETS.entrySet()) { |
| 103 | + Files.writeString(folder.resolve(x.getKey() + ".json"), gson.toJson(Preset.SELF_CODEC.encodeStart( |
| 104 | + registryManager.getOps(JsonOps.INSTANCE), x.getValue() |
| 105 | + ).getOrThrow()), StandardCharsets.UTF_8, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.CREATE); |
| 106 | + } |
| 107 | + } |
| 108 | + } catch (IOException e) { |
| 109 | + LOGGER.error("e", e); |
| 110 | + } |
| 111 | + |
96 | 112 |
|
97 | 113 | try {
|
98 | 114 | Files.writeString(configPath, gson.toJson(Preset.CODEC.encodeStart(
|
|
0 commit comments