This release introduces two new features and some bug fixes!
- Added the
onChange
config attribute (#10). You can now register a function that is called whenever a specific config is updated. For example:@Config(onChange = "onChange") public static List<String> exampleOnChange = new ArrayList<>(List.of("xpple, earthcomputer")); private static void onChange(List<String> oldValue, List<String> newValue) { LOGGER.info("exampleOnChange was updated | old: {}, new: {}", oldValue, newValue); }
- Added global change hook (#11). This allows you to register a global function that is called whenever any config is updated. For example:
new ModConfigBuilder<>("<mod id>", Configs.class) .registerGlobalChangeHook(event -> BetterConfigCommon.LOGGER.info("{} was updated | old: {}, new: {}", event.config(), event.oldValue(), event.newValue())) .build();
- Added Tatar translations (#8 by Amirhan-Taipovjan-Greatest-I)
- Added support for Paper servers
Depending on your setup, you might have to adjust how the config is initialised:
- Fabric clients:
new ModConfigBuilder<FabricClientCommandSource, CommandBuildContext>(<mod id>, Configs.class) // ... .build();
- Fabric servers:
new ModConfigBuilder<CommandSourceStack, CommandBuildContext>(<mod id>, Configs.class) // ... .build();
- Paper servers:
new ModConfigBuilder<>(<plugin name>, Configs.class) // ... .build();
- Fabric clients:
- Added support for server-sided custom argument types
- Fabric:
dev.xpple.betterconfig.util.WrappedArgumentType
- Paper:
io.papermc.paper.command.brigadier.argument.CustomArgumentType
- Fabric:
- Fixed bug where the
reset
subcommand would be available for readonly configs
-
Made non-api packages no longer visible
-
Rewrote argument registration
Consider the below example to see how things have changed.
- .registerTypeWithArgument(Block.class, new BlockAdapter(), new Pair<>(BlockArgumentType::block, BlockArgumentType::getBlock)) + .registerType(Block.class, new BlockAdapter(), BlockArgumentType::block)