Raxen/src/main/java/gq/unurled/raxen/config/PlayerConfig.java

119 lines
5.1 KiB
Java
Raw Normal View History

2021-11-27 10:49:11 +00:00
package gq.unurled.raxen.config;
2021-11-20 10:33:03 +00:00
import com.mongodb.client.MongoCollection;
import com.mongodb.client.model.Filters;
2021-11-27 10:49:11 +00:00
import gq.unurled.raxen.Raxen;
import gq.unurled.raxen.components.player.Inventories;
import gq.unurled.raxen.components.player.Profile;
import gq.unurled.raxen.components.player.Skills;
import gq.unurled.raxen.components.player.Storage;
import gq.unurled.raxen.components.player.Storages.EnderChest;
import gq.unurled.raxen.manager.ProfileManager;
import gq.unurled.raxen.utils.MongoDB;
import gq.unurled.raxen.utils.Utils;
2021-11-20 10:33:03 +00:00
import net.kyori.adventure.text.Component;
import org.bson.Document;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import java.util.ArrayList;
import java.util.List;
2021-11-27 10:49:11 +00:00
import static gq.unurled.raxen.utils.Utils.log;
2021-11-20 10:33:03 +00:00
public class PlayerConfig {
2021-11-27 10:49:11 +00:00
private Raxen main;
2021-11-20 10:33:03 +00:00
private MongoDB mongoDB;
private MongoCollection<Document> mongoCollection;
private ProfileManager profileManager;
2021-11-27 10:49:11 +00:00
public PlayerConfig(Raxen main) {
2021-11-20 10:33:03 +00:00
this.main = main;
this.mongoDB = main.getMongoDB();
this.mongoCollection = mongoDB.getMongoCollection();
this.profileManager = main.getProfileManager();
}
public void savePlayerConfig(Player player) {
Skills skills = profileManager.getPlayerProfile(player.getUniqueId()).getSkils();
Inventory inv = player.getInventory();
List<String> listInv = new ArrayList<String>();
Integer reverse = 0;
for(ItemStack it : inv) {
reverse = reverse + 1;
if(it != null && it.getType() != Material.AIR) {
String s = Utils.itemStackSerilize(it, reverse);
listInv.add(s);
}
}
String invstr = Utils.listItemStackSerelize(listInv);
Document doc = new Document("uuid", player.getUniqueId().toString())
.append("name", player.getName())
.append("health", skills.getHealth())
.append("defense", skills.getDefense())
.append("speed", skills.getSpeed())
.append("strength", skills.getStrength())
.append("inv", invstr);
if (profileManager.getPlayerStorage(player.getUniqueId()) != null) {
if(profileManager.getPlayerStorage(player.getUniqueId()).getEc() != null) {
EnderChest ec = profileManager.getPlayerStorage(player.getUniqueId()).getEc();
List<String> list = new ArrayList<String>();
reverse = 0;
for(ItemStack it : ec.getEc()) {
reverse += 1;
if(it != null) {
String s = Utils.itemStackSerilize(it, reverse);
list.add(s);
}
}
String ecstr = Utils.listItemStackSerelize(list);
doc.append("ec", ecstr);
}
}
Document playerDoc = mongoCollection.find(Filters.eq("uuid", player.getUniqueId().toString())).first();
if(playerDoc == null) {
mongoCollection.insertOne(doc);
}
else {
mongoCollection.replaceOne(Filters.eq("uuid", player.getUniqueId().toString()), doc);
}
log("Player: " + player.getName() + " data successfully saved!");
}
public void loadPlayerConfig(Player player) {
Document playerDoc = mongoCollection.find(Filters.eq("uuid", player.getUniqueId().toString())).first();
if(playerDoc == null) {
profileManager.createNewProfile(player);
profileManager.createNewStorage(player);
profileManager.createNewInventory(player);
return;
}
Skills skills = new Skills(playerDoc.getInteger("health"), playerDoc.getInteger("defense"), playerDoc.getInteger("speed"), playerDoc.getInteger("strength"));
Profile profile = new Profile(skills);
profileManager.setPlayerProfile(player.getUniqueId(), profile);
Inventory ec = Bukkit.createInventory(null, 54, Component.text("Ender Chest"));
if(playerDoc.getString("ec") != null) {
ItemStack[] itList = Utils.listItemStackDeserilize(playerDoc.getString("ec"));
ec.addItem(itList);
}
EnderChest ecc = new EnderChest(ec);
Storage storage = new Storage(ecc);
profileManager.setPlayerStorage(player.getUniqueId(), storage);
Inventory inv = Bukkit.createInventory(player, InventoryType.PLAYER);
ItemStack[] itListInv = Utils.listItemStackDeserilize(playerDoc.getString("inv"));
inv.addItem(itListInv);
player.updateInventory();
2021-11-27 10:49:11 +00:00
gq.unurled.raxen.components.player.Storages.Inventory invv = new gq.unurled.raxen.components.player.Storages.Inventory(inv);
2021-11-20 10:33:03 +00:00
Inventories invvv = new Inventories(invv);
profileManager.setPlayerInventory(player.getUniqueId(), invvv);
log("Player: " + player.getName() + " data successfully loaded!");
}
}