Added an untested way of saving and loading boosters

This commit is contained in:
Stijn
2022-08-01 20:47:32 +02:00
parent 0408b34c1d
commit 6b95f89fd6
7 changed files with 283 additions and 7 deletions
+5
View File
@@ -7,6 +7,11 @@ dependencies {
compileOnly("net.kyori:adventure-text-minimessage:4.2.0-SNAPSHOT") // Minimessage
compileOnly("org.spongepowered:configurate-yaml:4.1.2") // Configurate
compileOnly("net.luckperms:api:5.3") // Luckperms
//Jackson (json)
compileOnly("com.fasterxml.jackson.core:jackson-core:2.8.8")
compileOnly("com.fasterxml.jackson.core:jackson-annotations:2.8.8")
compileOnly("com.fasterxml.jackson.core:jackson-databind:2.8.8")
}
publishing {
@@ -0,0 +1,77 @@
package com.alttd.boosterapi.config;
import com.alttd.boosterapi.Booster;
import com.fasterxml.jackson.core.JsonEncoding;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import java.io.File;
import java.io.IOException;
import java.util.*;
public abstract class BoosterStorage {
private File CONFIG_FILE;
private final Map<UUID, Booster> boosters;
protected BoosterStorage() {
init();
boosters = loadBoosters();
}
private void init() {
File CONFIG_PATH = new File(System.getProperty("user.home") + File.separator + "share" + File.separator + "configs" + File.separator + "Boosters");
CONFIG_FILE = new File(CONFIG_PATH, "storage.json");
ObjectMapper mapper = new ObjectMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);
}
public Map<UUID, Booster> getBoosters() {
return boosters;
}
public Map<UUID, Booster> loadBoosters() {
Map<UUID, Booster> boosters = new HashMap<>();
try {
JsonParser parser = new JsonFactory().createParser(CONFIG_FILE);
Booster booster = loadBooster(parser);
boosters.put(booster.getUUID(), booster);
} catch (IOException e) {
throw new RuntimeException(e);
}
return boosters;
}
public abstract Booster loadBooster(JsonParser parser) throws IOException;
public void saveBoosters(Collection<Booster> boosters) {
try {
JsonGenerator generator = new JsonFactory().createGenerator(CONFIG_FILE, JsonEncoding.UTF8);
for (Booster booster : boosters) {
saveBooster(booster, generator);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
private void saveBooster(Booster booster, JsonGenerator generator) throws IOException {
generator.writeStartObject();
generator.writeStringField("uuid", booster.getUUID().toString());
generator.writeStringField("activator", booster.getActivator());
generator.writeStringField("type", booster.getType().getBoosterName());
generator.writeNumberField("startingTime", booster.getStartingTime());
generator.writeNumberField("duration", booster.getDuration());
generator.writeNumberField("multiplier", booster.getMultiplier());
generator.writeBooleanField("active", booster.isActive());
generator.writeBooleanField("finished", booster.finished());
generator.writeEndObject();
}
}