Skip to content

Commit 8cccb58

Browse files
committed
Add automatic fallback config migration
1 parent 213c1b9 commit 8cccb58

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

src/main/java/net/bettercombat/BetterCombat.java

+11-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@
1717
public class BetterCombat implements ModInitializer {
1818
public static final String MODID = "bettercombat";
1919
public static ServerConfig config;
20+
private static FallbackConfig fallbackDefault = FallbackConfig.createDefault();
2021
public static ConfigManager<FallbackConfig> fallbackConfig = new ConfigManager<FallbackConfig>
21-
("fallback_compatibility", FallbackConfig.createDefault())
22+
("fallback_compatibility", fallbackDefault)
2223
.builder()
2324
.setDirectory(MODID)
2425
.sanitize(true)
@@ -29,8 +30,8 @@ public void onInitialize() {
2930
AutoConfig.register(ServerConfigWrapper.class, PartitioningSerializer.wrap(JanksonConfigSerializer::new));
3031
// Intuitive way to load a config :)
3132
config = AutoConfig.getConfigHolder(ServerConfigWrapper.class).getConfig().server;
33+
loadFallbackConfig();
3234

33-
fallbackConfig.refresh();
3435
ServerNetwork.initializeHandlers();
3536
ServerLifecycleEvents.SERVER_STARTED.register((minecraftServer) -> {
3637
WeaponRegistry.loadAttributes(minecraftServer.getResourceManager());
@@ -41,4 +42,12 @@ public void onInitialize() {
4142
});
4243
SoundHelper.registerSounds();
4344
}
45+
46+
private void loadFallbackConfig() {
47+
fallbackConfig.load();
48+
if (fallbackConfig.currentConfig.schema_version < fallbackDefault.schema_version) {
49+
fallbackConfig.currentConfig = FallbackConfig.migrate(fallbackConfig.currentConfig, FallbackConfig.createDefault());
50+
}
51+
fallbackConfig.save();
52+
}
4453
}

src/main/java/net/bettercombat/config/FallbackConfig.java

+7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package net.bettercombat.config;
22

33
public class FallbackConfig {
4+
public int schema_version;
45
public String blacklist_item_id_regex;
56
public CompatibilitySpecifier[] fallback_compatibility;
67

@@ -18,6 +19,7 @@ public CompatibilitySpecifier(String item_id_regex, String weapon_attributes) {
1819

1920
public static FallbackConfig createDefault() {
2021
var object = new FallbackConfig();
22+
object.schema_version = 1;
2123
object.blacklist_item_id_regex = "pickaxe";
2224
object.fallback_compatibility = new CompatibilitySpecifier[] {
2325
new CompatibilitySpecifier(
@@ -80,4 +82,9 @@ public static FallbackConfig createDefault() {
8082
};
8183
return object;
8284
}
85+
86+
public static FallbackConfig migrate(FallbackConfig oldConfig, FallbackConfig newConfig) {
87+
newConfig.fallback_compatibility = oldConfig.fallback_compatibility;
88+
return newConfig;
89+
}
8390
}

0 commit comments

Comments
 (0)