save item when modified

This commit is contained in:
unurled 2024-05-25 15:49:56 +02:00
parent d52fc0d9eb
commit 0edce64ab3
Signed by: unurled
GPG key ID: FDBC9CBE1F82423F
3 changed files with 91 additions and 50 deletions

View file

@ -4,12 +4,14 @@ import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.util.HashMap;
import java.util.List;
import me.unurled.sacredrealms.sr.SR;
import me.unurled.sacredrealms.sr.data.DataHandler;
import me.unurled.sacredrealms.sr.data.DataManager;
import me.unurled.sacredrealms.sr.managers.Manager;
import org.bukkit.NamespacedKey;
import org.bukkit.inventory.ItemStack;
import org.bukkit.persistence.PersistentDataType;
import org.jetbrains.annotations.NotNull;
public class ItemManager extends Manager {
public static final NamespacedKey ID = new NamespacedKey("sr", "id");
@ -27,8 +29,7 @@ public class ItemManager extends Manager {
DataManager dm = Manager.getInstance(DataManager.class);
DataHandler dh = dm.getDataHandler();
Gson gson =
new GsonBuilder().registerTypeAdapter(Item.class, new ItemStackSerializer()).create();
Gson gson = new GsonBuilder().registerTypeAdapter(Item.class, new ItemSerializer()).create();
items.forEach((id, item) -> dh.set("sr.items." + id, gson.toJson(item)));
}
@ -39,6 +40,11 @@ public class ItemManager extends Manager {
DataManager dm = Manager.getInstance(DataManager.class);
DataHandler dh = dm.getDataHandler();
if (dh == null) {
SR.getInstance().getLogger().severe("DataHandler is null in ItemManager.loadData()!");
return;
}
Gson gson = new GsonBuilder().registerTypeAdapter(Item.class, new ItemDeserializer()).create();
dh.getKeysAll("sr.items")
@ -49,6 +55,15 @@ public class ItemManager extends Manager {
});
}
public void saveItem(@NotNull Item item) {
DataManager dm = Manager.getInstance(DataManager.class);
DataHandler dh = dm.getDataHandler();
Gson gson = new GsonBuilder().registerTypeAdapter(Item.class, new ItemSerializer()).create();
dh.set("sr.items." + item.getId(), gson.toJson(item));
}
public void addItem(Item item) {
items.put(item.getId(), item);
}