package be.isach.ultracosmetics.manager; import be.isach.ultracosmetics.UltraCosmetics; import be.isach.ultracosmetics.UltraCosmeticsData; import be.isach.ultracosmetics.config.MessageManager; import be.isach.ultracosmetics.config.SettingsManager; import be.isach.ultracosmetics.config.TreasureManager; import be.isach.ultracosmetics.treasurechests.TreasureChest; import be.isach.ultracosmetics.treasurechests.TreasureChestDesign; import be.isach.ultracosmetics.menu.menus.MenuMain; import be.isach.ultracosmetics.util.Cuboid; import be.isach.ultracosmetics.util.SoundUtil; import be.isach.ultracosmetics.util.Sounds; import org.bukkit.Material; import org.bukkit.block.BlockFace; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.Set; /** * Created by Sacha on 11/11/15. */ public class TreasureChestManager implements Listener { private static Random random = new Random(); private UltraCosmetics ultraCosmetics; public TreasureChestManager(UltraCosmetics ultraCosmetics) { this.ultraCosmetics = ultraCosmetics; } private static void openTreasureChest(Player player) { String designPath = getRandomDesign(); player.closeInventory(); new TreasureChest(player.getUniqueId(), new TreasureChestDesign(designPath)); } private static String getRandomDesign() { Set<String> set = UltraCosmeticsData.get().getPlugin().getConfig().getConfigurationSection("TreasureChests.Designs").getKeys(false); List<String> list = new ArrayList<>(); list.addAll(set); return list.get(random.nextInt(set.size())); } public static void tryOpenChest(Player player) { if (UltraCosmeticsData.get().getPlugin().getPlayerManager().getUltraPlayer(player).getKeys() > 0) { Cuboid c = new Cuboid(player.getLocation().add(-2, 0, -2), player.getLocation().add(2, 1, 2)); if (!c.isEmpty()) { player.sendMessage(MessageManager.getMessage("Chest-Not-Enough-Space")); return; } for (Entity ent : player.getNearbyEntities(5, 5, 5)) { if (ent instanceof Player && UltraCosmeticsData.get().getPlugin().getPlayerManager().getUltraPlayer((Player) ent).getCurrentTreasureChest() != null) { player.closeInventory(); player.sendMessage(MessageManager.getMessage("Too-Close-To-Other-Chest")); return; } } if (player.getLocation().getBlock().getRelative(BlockFace.UP).getType() != Material.AIR || !player.getLocation().getBlock().getType().isBlock() || player.getLocation().getBlock().getRelative(BlockFace.DOWN).getType() == Material.AIR) { player.sendMessage(MessageManager.getMessage("Gadgets.Rocket.Not-On-Ground")); return; } UltraCosmeticsData.get().getPlugin().getPlayerManager().getUltraPlayer(player).removeKey(); openTreasureChest(player); } else { player.closeInventory(); UltraCosmeticsData.get().getPlugin().getPlayerManager().getUltraPlayer(player).openKeyPurchaseMenu(); } } @EventHandler public void buyKeyConfirm(InventoryClickEvent event) { if (!event.getInventory().getTitle().equalsIgnoreCase(MessageManager.getMessage("Buy-Treasure-Key"))) return; event.setCancelled(true); if (event.getCurrentItem() != null && event.getCurrentItem().hasItemMeta() && event.getCurrentItem().getItemMeta().hasDisplayName()) { if (event.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase(MessageManager.getMessage("Purchase"))) { if (UltraCosmeticsData.get().getPlugin().getPlayerManager().getUltraPlayer((Player) event.getWhoClicked()).getBalance() >= (int) SettingsManager.getConfig().get("TreasureChests.Key-Price")) { UltraCosmeticsData.get().getPlugin().getEconomy().withdrawPlayer((Player) event.getWhoClicked(), (int) SettingsManager.getConfig().get("TreasureChests.Key-Price")); UltraCosmeticsData.get().getPlugin().getPlayerManager().getUltraPlayer((Player) event.getWhoClicked()).addKey(); event.getWhoClicked().sendMessage(MessageManager.getMessage("Successful-Purchase")); event.getWhoClicked().closeInventory(); UltraCosmeticsData.get().getPlugin().getMenus().getMainMenu().open(UltraCosmeticsData.get().getPlugin().getPlayerManager().getUltraPlayer((Player) event.getWhoClicked())); } else { event.getWhoClicked().sendMessage(MessageManager.getMessage("Not-Enough-Money")); event.getWhoClicked().closeInventory(); return; } } else if (event.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase(MessageManager.getMessage("Cancel"))) { event.getWhoClicked().closeInventory(); UltraCosmeticsData.get().getPlugin().getMenus().getMainMenu().open(UltraCosmeticsData.get().getPlugin().getPlayerManager().getUltraPlayer((Player) event.getWhoClicked())); } } } }