Skip to content

Commit 3750db0

Browse files
committed
Alpha 7
1 parent 45ff24e commit 3750db0

File tree

4 files changed

+32
-17
lines changed

4 files changed

+32
-17
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ org.gradle.configuration-cache=false
88
# Mod properties
99
mod.name=LightConfig
1010
mod.id=lightconfig
11-
mod.version=1.0-alpha.6
11+
mod.version=1.0-alpha.7
1212
mod.group=org.visuals.legacy
1313
mod.description=A config library.
1414
mod.source=https://github.com/Legacy-Visuals-Project/LightConfig

src/main/java/org/visuals/legacy/lightconfig/lib/v1/Config.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
package org.visuals.legacy.lightconfig.lib.v1;
2626

2727
import com.google.gson.JsonObject;
28+
import net.fabricmc.loader.api.FabricLoader;
2829
import net.minecraft.client.gui.screens.Screen;
2930
import org.jetbrains.annotations.Nullable;
3031
import org.slf4j.Logger;
@@ -35,22 +36,22 @@
3536
import org.visuals.legacy.lightconfig.lib.v1.serialization.Json;
3637
import org.visuals.legacy.lightconfig.lib.v1.type.Type;
3738

39+
import java.io.File;
3840
import java.nio.file.Files;
39-
import java.nio.file.Path;
4041
import java.util.ArrayList;
4142
import java.util.List;
4243

4344
public abstract class Config {
4445
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
4546
protected final List<AbstractConfigField<?>> configFields = new ArrayList<>();
4647
protected final String id;
47-
protected final Path path;
48+
protected final File configFile;
4849
protected final Json.Serializer serializer;
4950
protected final Json.Deserializer deserializer;
5051

51-
public Config(final String id, final Path path, final ConfigSerializer<?> serializer, final ConfigDeserializer<?> deserializer) {
52+
public Config(final String id, final ConfigSerializer<?> serializer, final ConfigDeserializer<?> deserializer) {
5253
this.id = id;
53-
this.path = path;
54+
this.configFile = FabricLoader.getInstance().getConfigDir().resolve(id + ".json").toFile();
5455
if (!(serializer instanceof Json.Serializer && deserializer instanceof Json.Deserializer)) {
5556
throw new RuntimeException("Only json serialization is currently supported! Please use Json.SERIALIZER/Json.DESERIALIZER!");
5657
}
@@ -59,8 +60,8 @@ public Config(final String id, final Path path, final ConfigSerializer<?> serial
5960
this.deserializer = (Json.Deserializer) deserializer;
6061
}
6162

62-
public Config(final String id, final Path path) {
63-
this(id, path, new Json.Serializer(), new Json.Deserializer());
63+
public Config(final String id) {
64+
this(id, new Json.Serializer(), new Json.Deserializer());
6465
}
6566

6667
public BooleanConfigField booleanFieldOf(final String name, final boolean defaultValue) {
@@ -88,15 +89,15 @@ public <T extends Enum<T>> EnumConfigField<T> enumFieldOf(final String name, fin
8889
}
8990

9091
public void load() {
91-
if (!this.path.toFile().exists()) {
92+
if (!this.configFile.exists()) {
9293
this.logger.info("Config file doesn't exist! Creating one...");
9394
this.save();
9495
return;
9596
}
9697

9798
boolean success = true;
9899
try {
99-
final String json = Files.readString(this.path);
100+
final String json = Files.readString(this.configFile.toPath());
100101
final JsonObject object = this.deserializer.deserialize(json).getAsJsonObject();
101102
if (object == null) {
102103
this.logger.warn("Failed to load config! Defaulting to original settings.");
@@ -137,7 +138,7 @@ public void save() {
137138
});
138139

139140
try {
140-
Files.write(this.path, this.serializer.serialize(object));
141+
Files.write(this.configFile.toPath(), this.serializer.serialize(object));
141142
} catch (Exception ignored) {
142143
this.logger.warn("Failed to save config!");
143144
return;
@@ -147,7 +148,6 @@ public void save() {
147148
}
148149

149150
public void reset() {
150-
// TODO: When implementing the screen system/idk, implement a event listener for like reload resource packs or whatever
151151
this.configFields.forEach(AbstractConfigField::restore);
152152
this.save();
153153
}
@@ -161,11 +161,11 @@ public List<AbstractConfigField<?>> getConfigFields() {
161161
}
162162

163163
public String getId() {
164-
return id;
164+
return this.id;
165165
}
166166

167-
public Path getPath() {
168-
return path;
167+
public File getConfigFile() {
168+
return this.configFile;
169169
}
170170

171171
public abstract Screen getConfigScreen(@Nullable Screen parent);
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.visuals.legacy.lightconfig.lib.v1.events;
2+
3+
import org.visuals.legacy.lightconfig.lib.v1.field.AbstractConfigField;
4+
5+
public class ConfigFieldReset extends Event {
6+
private final AbstractConfigField<?> field;
7+
8+
public ConfigFieldReset(final AbstractConfigField<?> field) {
9+
this.field = field;
10+
}
11+
12+
public <T> AbstractConfigField<T> getField() {
13+
return (AbstractConfigField<T>) this.field;
14+
}
15+
}

src/main/java/org/visuals/legacy/lightconfig/lib/v1/field/AbstractConfigField.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import net.minecraft.client.gui.components.AbstractWidget;
2828
import org.visuals.legacy.lightconfig.lib.v1.Config;
29+
import org.visuals.legacy.lightconfig.lib.v1.events.ConfigFieldReset;
2930
import org.visuals.legacy.lightconfig.lib.v1.events.ConfigValueChanged;
3031
import org.visuals.legacy.lightconfig.lib.v1.events.EventManager;
3132
import org.visuals.legacy.lightconfig.lib.v1.serialization.ConfigDeserializer;
@@ -75,12 +76,11 @@ public T getDefaultValue() {
7576
}
7677

7778
public void restore() {
79+
this.eventManager.dispatch(new ConfigFieldReset(this));
7880
this.setValue(this.getDefaultValue());
7981
}
8082

8183
public void onValueChanged(BiConsumer<T, T> biConsumer) {
82-
this.eventManager.listen(ConfigValueChanged.class, event -> {
83-
biConsumer.accept((T) event.getOldValue(), (T) event.getNewValue());
84-
});
84+
this.eventManager.listen(ConfigValueChanged.class, event -> biConsumer.accept((T) event.getOldValue(), (T) event.getNewValue()));
8585
}
8686
}

0 commit comments

Comments
 (0)