Skip to content

Commit 29770a6

Browse files
committed
changelog & remove YACLConfigManager.java as it was actually pretty useless, document GsonConfigInstance as well
1 parent 6f3dc40 commit 29770a6

File tree

5 files changed

+32
-66
lines changed

5 files changed

+32
-66
lines changed

changelogs/1.7.0.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
## End-user changes
2+
3+
- Smooth category scrolling
4+
- Individual reset buttons for every option
5+
- Fix bug where option lists that *just* went over into scrolling scrolled extremely slow.
6+
7+
## Developer API changes
8+
9+
- Actual Config API to save and load fields in a class automatically [(documentation)](https://github.com/isXander/YetAnotherConfigLib/wiki/config-api)
10+
- Separate `Dimension` into `Dimension` and `MutableDimension`
11+
- Make `dim` private in `AbstractWidget` so mods can't change the dimension without `setDimension`
12+
- New Option API method `isPendingValueDefault` to check if pending value is equal to default value of binding
13+
- Fix `Option#requestSetDefault` and `Option#forgetPendingValue` implementations weren't notifying listeners

src/main/java/dev/isxander/yacl/config/ConfigInstance.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,7 @@ public Class<T> getConfigClass() {
4747
}
4848

4949
public YetAnotherConfigLib buildConfig(BiFunction<ConfigInstance<T>, YetAnotherConfigLib.Builder, YetAnotherConfigLib.Builder> builder) {
50-
return builder.apply(this, YetAnotherConfigLib.createBuilder())
51-
.save(this::save)
52-
.build();
50+
return builder.apply(this, YetAnotherConfigLib.createBuilder().save(this::save)).build();
5351
}
5452

5553
public abstract void save();

src/main/java/dev/isxander/yacl/config/GsonConfigInstance.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,23 @@
1414
import java.nio.file.StandardOpenOption;
1515
import java.util.function.UnaryOperator;
1616

17+
/**
18+
* Uses GSON to serialize and deserialize config data from JSON to a file.
19+
*
20+
* You can exclude fields from serialization by marking them as transient.
21+
* {@link Text}, {@link Style} and {@link Color} have default type adapters, so there is no need to provide them in your GSON instance.
22+
* GSON is automatically configured to format fields as {@code lower_camel_case}.
23+
*
24+
* @param <T> config data type
25+
*/
1726
public class GsonConfigInstance<T> extends ConfigInstance<T> {
1827
private final Gson gson;
1928
private final Path path;
2029

30+
public GsonConfigInstance(Class<T> configClass, Path path) {
31+
this(configClass, path, new GsonBuilder());
32+
}
33+
2134
public GsonConfigInstance(Class<T> configClass, Path path, Gson gson) {
2235
this(configClass, path, gson.newBuilder());
2336
}

src/main/java/dev/isxander/yacl/config/YACLConfigManager.java

Lines changed: 0 additions & 60 deletions
This file was deleted.

src/testmod/java/dev/isxander/yacl/test/config/Entrypoint.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,19 @@
33
import com.google.gson.Gson;
44
import dev.isxander.yacl.config.ConfigInstance;
55
import dev.isxander.yacl.config.GsonConfigInstance;
6-
import dev.isxander.yacl.config.YACLConfigManager;
76
import net.fabricmc.api.ClientModInitializer;
87
import net.fabricmc.loader.api.FabricLoader;
98

109
public class Entrypoint implements ClientModInitializer {
10+
private static GsonConfigInstance<ConfigData> config;
11+
1112
@Override
1213
public void onInitializeClient() {
13-
YACLConfigManager.register(new GsonConfigInstance<>(ConfigData.class, FabricLoader.getInstance().getConfigDir().resolve("yacl-test.json"), new Gson()));
14+
config = new GsonConfigInstance<>(ConfigData.class, FabricLoader.getInstance().getConfigDir().resolve("yacl-test.json"));
15+
config.load();
1416
}
1517

1618
public static ConfigInstance<ConfigData> getConfig() {
17-
return YACLConfigManager.getConfigInstance(ConfigData.class);
19+
return config;
1820
}
1921
}

0 commit comments

Comments
 (0)