public static ItemStack displayItem(Player player, Location chest) { HashMap<ItemStack, String> items = getItems(player); int stop = 0; for (; items.size() == 0; stop++) { if (stop == 100) { break; } items = getItems(player); } Random r = new Random(); ArrayList<ItemStack> I = new ArrayList<ItemStack>(); ArrayList<String> P = new ArrayList<String>(); I.addAll(items.keySet()); for (ItemStack it : I) { P.add(items.get(it)); } int pick = r.nextInt(I.size()); String pa = P.get(pick); path.put(player, pa); FileConfiguration file = Main.settings.getFile(GUI.Crate.get(player)); if (file.contains(path.get(player) + ".Items")) { for (ItemStack i : getFinalItems(path.get(player), player)) { player.getInventory().addItem(i); } } if (file.contains(path.get(player) + ".Commands")) { for (String command : file.getStringList(path.get(player) + ".Commands")) { command = color(command); command = command.replace("%Player%", player.getName()); command = command.replace("%player%", player.getName()); Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command); } } if (file.contains(path.get(player) + ".Messages")) { for (String msg : file.getStringList(path + ".Messages")) { msg = Api.color(msg); msg = msg.replace("%Player%", player.getName()); msg = msg.replace("%player%", player.getName()); player.sendMessage(msg); } } if (file.getBoolean(path.get(player) + ".Firework")) { fireWork(chest); } return I.get(pick); }
public static ArrayList<ItemStack> getFinalItems(String reward, Player player) { ArrayList<ItemStack> items = new ArrayList<ItemStack>(); for (String l : Main.settings.getFile(GUI.Crate.get(player)).getStringList(reward + ".Items")) { ArrayList<String> lore = new ArrayList<String>(); HashMap<Enchantment, Integer> enchs = new HashMap<Enchantment, Integer>(); String name = ""; int amount = 1; String m = "Stone"; for (String i : l.split(", ")) { if (i.contains("Item:")) { i = i.replaceAll("Item:", ""); m = i; } if (i.contains("Name:")) { i = i.replaceAll("Name:", ""); i = i.replaceAll("_", " "); name = color(i); } if (i.contains("Amount:")) { i = i.replaceAll("Amount:", ""); amount = Integer.parseInt(i); } if (i.contains("Lore:")) { i = i.replaceAll("Lore:", ""); for (String L : i.split(",")) { L = color(L); lore.add(L); } } for (String enc : getEnchants()) { if (i.contains(enc + ":")) { String[] breakdown = i.split(":"); int lvl = Integer.parseInt(breakdown[1]); enchs.put(Enchantment.getByName(enc), lvl); } } } items.add(makeItem(m, amount, name, lore, enchs)); } return items; }
public static HashMap<ItemStack, String> getItems(Player player) { HashMap<ItemStack, String> items = new HashMap<ItemStack, String>(); for (String reward : Main.settings .getFile(GUI.Crate.get(player)) .getConfigurationSection("Crate.Prizes") .getKeys(false)) { String id = Main.settings .getFile(GUI.Crate.get(player)) .getString("Crate.Prizes." + reward + ".DisplayItem"); String name = Main.settings .getFile(GUI.Crate.get(player)) .getString("Crate.Prizes." + reward + ".DisplayName"); int chance = Main.settings.getFile(GUI.Crate.get(player)).getInt("Crate.Prizes." + reward + ".Chance"); int max = 99; if (Main.settings .getFile(GUI.Crate.get(player)) .contains("Crate.Prizes." + reward + ".MaxRange")) { max = Main.settings .getFile(GUI.Crate.get(player)) .getInt("Crate.Prizes." + reward + ".MaxRange") - 1; } try { ItemStack item = makeItem(id, 1, name); Random number = new Random(); int num; for (int counter = 1; counter <= 1; counter++) { num = 1 + number.nextInt(max); if (num >= 1 && num <= chance) items.put(item, "Crate.Prizes." + reward); } } catch (Exception e) { continue; } } return items; }