MCPcopy Create free account
hub / github.com/ViaVersion/ViaProxy / SaveManager

Class SaveManager

src/main/java/net/raphimc/viaproxy/saves/SaveManager.java:35–111  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

33import java.util.Map;
34
35public class SaveManager {
36
37 private static final File SAVE_FILE = new File(ViaProxy.getCwd(), "saves.json");
38 private static final Gson GSON = new Gson();
39
40 public final AccountsSave accountsSave = new AccountsSave();
41 public final UISave uiSave = new UISave();
42
43 private final Map<String, JsonElement> unknownSaves = new HashMap<>();
44
45 public SaveManager() {
46 try {
47 if (!SAVE_FILE.exists()) {
48 SAVE_FILE.createNewFile();
49 this.save();
50 }
51
52 final FileReader reader = new FileReader(SAVE_FILE);
53 final JsonObject saveObject = GSON.fromJson(reader, JsonObject.class);
54 reader.close();
55
56 SaveMigrator.migrate(saveObject);
57
58 RStream
59 .of(this)
60 .fields()
61 .filter(field -> AbstractSave.class.isAssignableFrom(field.type()))
62 .forEach(field -> {
63 final AbstractSave save = field.get();
64 try {
65 if (saveObject.has(save.getName())) {
66 save.load(saveObject.remove(save.getName()));
67 }
68 } catch (Throwable e) {
69 Logger.LOGGER.error("Failed to load save " + save.getName(), e);
70 }
71 });
72
73 for (Map.Entry<String, JsonElement> entry : saveObject.entrySet()) {
74 this.unknownSaves.put(entry.getKey(), entry.getValue());
75 }
76
77 this.save();
78 } catch (Throwable e) {
79 throw new RuntimeException("Failed to initialize SaveManager", e);
80 }
81 }
82
83 public synchronized void save() {
84 try {
85 final JsonObject saveObject = new JsonObject();
86 this.unknownSaves.forEach(saveObject::add);
87 RStream
88 .of(this)
89 .fields()
90 .filter(field -> AbstractSave.class.isAssignableFrom(field.type()))
91 .forEach(field -> {
92 final AbstractSave save = field.get();

Callers

nothing calls this directly

Calls 1

getCwdMethod · 0.95

Tested by

no test coverage detected