package tv.mineinthebox.essentials.managers;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import tv.mineinthebox.essentials.xEssentials;
import tv.mineinthebox.essentials.instances.Backpack;
public class BackPackManager {
private final Set<Backpack> backpacks = new HashSet<Backpack>();
private final xEssentials pl;
public BackPackManager(xEssentials pl) {
this.pl = pl;
}
public boolean isBackpack(Backpack pack) {
return backpacks.contains(pack);
}
public boolean isBackpack(ItemStack stack) {
if(stack.hasItemMeta()) {
if(stack.getItemMeta().hasLore()) {
if(stack.getItemMeta().getLore().size() >= 5) {
if(getBackpackById(stack.getItemMeta().getLore().get(5).replaceAll(ChatColor.COLOR_CHAR+"", "")) != null) {
return true;
}
}
}
}
return false;
}
public void addBackpack(Backpack pack) {
backpacks.add(pack);
}
public void removeBackpack(Backpack pack) {
backpacks.remove(pack);
}
public Backpack getBackpackById(String id) {
for(Backpack pack : backpacks) {
if(id.equals(pack.getUniqueId())) {
return pack;
}
}
return null;
}
public Backpack getBackpackByItem(ItemStack item) {
if(item.hasItemMeta()) {
if(item.getItemMeta().getLore().size() >= 5) {
if(getBackpackById(item.getItemMeta().getLore().get(5).replaceAll(ChatColor.COLOR_CHAR+"", "")) != null) {
return getBackpackById(item.getItemMeta().getLore().get(5).replaceAll(ChatColor.COLOR_CHAR+"", ""));
}
}
}
return null;
}
public Backpack[] getBackpacks() {
Backpack[] packs = new Backpack[backpacks.size()];
int i = 0;
for(Backpack pack : backpacks) {
packs[i] = pack;
i++;
}
return packs;
}
public void loadBackpacks() {
try {
File dir = new File(pl.getDataFolder() + File.separator + "backpacks");
if(dir.isDirectory()) {
File[] files = dir.listFiles();
for(File f : files) {
FileConfiguration con = YamlConfiguration.loadConfiguration(f);
Backpack pack = new Backpack(f, con, pl);
backpacks.add(pack);
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
public Backpack createBackpack(Material mat, short sub) {
ItemStack stack = new ItemStack(mat, 1, sub);
ItemMeta meta = stack.getItemMeta();
UUID id = UUID.randomUUID();
meta.setDisplayName(ChatColor.GOLD + "Backpack");
meta.setLore(Arrays.asList(new String[] {
ChatColor.GREEN + "this is your own backpack!",
ChatColor.GREEN + "enjoy, it has atleast 36 slots",
"",
ChatColor.GREEN + "note if you die you can loose your backpack!",
"",
convertToInvisibleString(id.toString()),
"amount: 0"}));
stack.setItemMeta(meta);
File f = new File(pl.getDataFolder() + File.separator + "backpacks" + File.separator + id.toString().replaceAll("-", "")+".yml");
FileConfiguration con = YamlConfiguration.loadConfiguration(f);
con.set("id", id.toString().replaceAll("-", ""));
con.set("backpack-item", stack);
con.set("contents", new ItemStack[0]);
try {
con.save(f);
} catch (IOException e) {
e.printStackTrace();
}
Backpack pack = new Backpack(f, con, pl);
addBackpack(pack);
return pack;
}
private String convertToInvisibleString(String s) {
String stripped = s.replaceAll("-", "");
String invis = "";
for(char c : stripped.toCharArray()) {
invis += ChatColor.COLOR_CHAR +""+ c;
}
return invis;
}
}