- Added the sources JAR to the publication
- Fixed a bug with
ModConfig#resetTemporaryConfigs
that could cause a bug when a config is bothtemporary
andreadOnly
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
- Added support for Paper servers (details will follow in the stable release)
- Updated to Minecraft 1.21
- Fixed resetting some configs by using deep copied value
- Added boolean argument type back to default arguments
-
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)
- Fixed enum parsing when enum overrides
toString
- Prioritised custom arguments/suggestors over enum check
- Fixed crashing on startup when the config is corrupted
- Added comments
- Prevented getting a config being broadcasted on servers
- Fixed keys being improperly printed when putting to a map
- Changed string type to greedy phrase for suggestor based argument types
- Fixed config directory not being created on initialisation
- Disallowed final fields reasons
- Allowed custom updaters to be private
- Provided (English) fallback translations for servers
- Fixed config not saving after resetting
- Made sure config is always saved after first read
- Added conditions