package me.maker56.survivalgames.arena.chest; import java.util.ArrayList; import java.util.List; import java.util.Random; import me.maker56.survivalgames.SurvivalGames; import me.maker56.survivalgames.Util; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; public class ChestManager { private static List<List<ItemStack>> items = new ArrayList<>(); private static FileConfiguration c; private static String title; private Random r = new Random(); public static void reinitializeConfig() { c = SurvivalGames.chestloot; title = ChatColor.translateAlternateColorCodes('&', c.getString("Chest-Title", "Survival Chest")); if(title.length() > 32) title = title.substring(0, 32); for(String key : c.getConfigurationSection("Chestloot.").getKeys(false)) { List<ItemStack> l = new ArrayList<>(); for(String itemKey : c.getStringList("Chestloot." + key)) { l.add(Util.parseItemStack(itemKey)); } items.add(l); } } public ChestManager() { reinitializeConfig(); } public Chest getRandomChest(Player p, Location loc, boolean rare) { Inventory i = Bukkit.createInventory(p, 27, title); equipInventory(i, rare); return new Chest(i, loc); } private void equipInventory(Inventory inv, boolean rare) { int stacks = r.nextInt(rare ? 4 : 8) + 1; List<List<ItemStack>> groups = new ArrayList<>(); for(int i = 0; i < stacks; i++) { groups.add(getRandomList(rare)); } List<ItemStack> items = new ArrayList<>(); for(List<ItemStack> g : groups) { items.add(g.get(r.nextInt(g.size()))); } for(ItemStack is : items) { inv.setItem(r.nextInt(27), is); } } private List<ItemStack> getRandomList(boolean rare) { int ri = r.nextInt(100) + 1; if(!rare) { if(ri <= 40) { return items.get(0); } else if(ri <= 70) { return items.get(1); } else if(ri <= 85) { return items.get(2); } else if(ri <= 95) { return items.get(3); } else { return items.get(4); } } else { if(ri <= 60) { return items.get(3); } else if(ri <= 80) { return items.get(2); } else { return items.get(4); } } } }