Search in sources :

Example 6 with PlayerPrizeEvent

use of com.badbones69.crazycrates.api.events.PlayerPrizeEvent in project Crazy-Crates by Crazy-Crew.

the class War method onInventoryClick.

@EventHandler
public void onInventoryClick(InventoryClickEvent e) {
    final Player player = (Player) e.getWhoClicked();
    final Inventory inv = e.getInventory();
    if (inv != null && canPick.containsKey(player) && cc.isInOpeningList(player)) {
        Crate crate = cc.getOpeningCrate(player);
        if (crate.getCrateType() == CrateType.WAR && canPick.get(player)) {
            ItemStack item = e.getCurrentItem();
            if (item != null && item.getType().toString().contains(Material.GLASS_PANE.toString())) {
                final int slot = e.getRawSlot();
                Prize prize = crate.pickPrize(player);
                inv.setItem(slot, prize.getDisplayItem());
                if (cc.hasCrateTask(player)) {
                    cc.endCrate(player);
                }
                canPick.remove(player);
                canClose.put(player, true);
                cc.givePrize(player, prize);
                if (prize.useFireworks()) {
                    Methods.fireWork(player.getLocation().add(0, 1, 0));
                }
                CrazyManager.getJavaPlugin().getServer().getPluginManager().callEvent(new PlayerPrizeEvent(player, crate, crate.getName(), prize));
                cc.removePlayerFromOpeningList(player);
                player.playSound(player.getLocation(), Sound.BLOCK_ANVIL_LAND, 1, 1);
                // Sets all other non-picked prizes to show what they could have been.
                cc.addCrateTask(player, new BukkitRunnable() {

                    @Override
                    public void run() {
                        for (int i = 0; i < 9; i++) {
                            if (i != slot) {
                                inv.setItem(i, crate.pickPrize(player).getDisplayItem());
                            }
                        }
                        if (cc.hasCrateTask(player)) {
                            cc.endCrate(player);
                        }
                        // Removing other items then the prize.
                        cc.addCrateTask(player, new BukkitRunnable() {

                            @Override
                            public void run() {
                                for (int i = 0; i < 9; i++) {
                                    if (i != slot) {
                                        inv.setItem(i, new ItemStack(Material.AIR));
                                    }
                                }
                                if (cc.hasCrateTask(player)) {
                                    cc.endCrate(player);
                                }
                                // Closing the inventory when finished.
                                cc.addCrateTask(player, new BukkitRunnable() {

                                    @Override
                                    public void run() {
                                        if (cc.hasCrateTask(player)) {
                                            cc.endCrate(player);
                                        }
                                        player.closeInventory();
                                    }
                                }.runTaskLater(CrazyManager.getJavaPlugin(), 30));
                            }
                        }.runTaskLater(CrazyManager.getJavaPlugin(), 30));
                    }
                }.runTaskLater(CrazyManager.getJavaPlugin(), 30));
            }
        }
    }
}
Also used : PlayerPrizeEvent(com.badbones69.crazycrates.api.events.PlayerPrizeEvent) Player(org.bukkit.entity.Player) Crate(com.badbones69.crazycrates.api.objects.Crate) BukkitRunnable(org.bukkit.scheduler.BukkitRunnable) ItemStack(org.bukkit.inventory.ItemStack) Inventory(org.bukkit.inventory.Inventory) Prize(com.badbones69.crazycrates.api.objects.Prize) EventHandler(org.bukkit.event.EventHandler)

Example 7 with PlayerPrizeEvent

use of com.badbones69.crazycrates.api.events.PlayerPrizeEvent in project Crazy-Crates by Crazy-Crew.

the class Wheel method startWheel.

public static void startWheel(final Player player, Crate crate, KeyType keyType, boolean checkHand) {
    if (!cc.takeKeys(1, player, crate, keyType, checkHand)) {
        Methods.failedToTakeKey(player, crate);
        cc.removePlayerFromOpeningList(player);
        return;
    }
    final Inventory inv = CrazyManager.getJavaPlugin().getServer().createInventory(null, 54, Methods.sanitizeColor(crate.getFile().getString("Crate.CrateName")));
    for (int i = 0; i < 54; i++) {
        inv.setItem(i, new ItemBuilder().setMaterial(Material.BLACK_STAINED_GLASS_PANE).setName(" ").build());
    }
    HashMap<Integer, ItemStack> items = new HashMap<>();
    for (int i : getBorder()) {
        Prize prize = crate.pickPrize(player);
        inv.setItem(i, prize.getDisplayItem());
        items.put(i, prize.getDisplayItem());
    }
    rewards.put(player, items);
    player.openInventory(inv);
    cc.addCrateTask(player, new BukkitRunnable() {

        ArrayList<Integer> slots = getBorder();

        int i = 0;

        int f = 17;

        int full = 0;

        int timer = Methods.randomNumber(42, 68);

        int slower = 0;

        int open = 0;

        int slow = 0;

        @Override
        public void run() {
            if (i >= 18) {
                i = 0;
            }
            if (f >= 18) {
                f = 0;
            }
            if (full < timer) {
                if (rewards.get(player).get(slots.get(i)).getItemMeta().hasLore()) {
                    inv.setItem(slots.get(i), new ItemBuilder().setMaterial(Material.LIME_STAINED_GLASS_PANE).setName(rewards.get(player).get(slots.get(i)).getItemMeta().getDisplayName()).setLore(rewards.get(player).get(slots.get(i)).getItemMeta().getLore()).build());
                } else {
                    inv.setItem(slots.get(i), new ItemBuilder().setMaterial(Material.LIME_STAINED_GLASS_PANE).setName(rewards.get(player).get(slots.get(i)).getItemMeta().getDisplayName()).build());
                }
                inv.setItem(slots.get(f), rewards.get(player).get(slots.get(f)));
                player.playSound(player.getLocation(), Sound.UI_BUTTON_CLICK, 1, 1);
                i++;
                f++;
            }
            if (full >= timer) {
                if (slowSpin().contains(slower)) {
                    if (rewards.get(player).get(slots.get(i)).getItemMeta().hasLore()) {
                        inv.setItem(slots.get(i), new ItemBuilder().setMaterial(Material.LIME_STAINED_GLASS_PANE).setName(rewards.get(player).get(slots.get(i)).getItemMeta().getDisplayName()).setLore(rewards.get(player).get(slots.get(i)).getItemMeta().getLore()).build());
                    } else {
                        inv.setItem(slots.get(i), new ItemBuilder().setMaterial(Material.LIME_STAINED_GLASS_PANE).setName(rewards.get(player).get(slots.get(i)).getItemMeta().getDisplayName()).build());
                    }
                    inv.setItem(slots.get(f), rewards.get(player).get(slots.get(f)));
                    player.playSound(player.getLocation(), Sound.UI_BUTTON_CLICK, 1, 1);
                    i++;
                    f++;
                }
                if (full == timer + 47) {
                    player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 1);
                }
                if (full >= timer + 47) {
                    slow++;
                    if (slow >= 2) {
                        ItemStack item = Methods.getRandomPaneColor().setName(" ").build();
                        for (int slot = 0; slot < 54; slot++) {
                            if (!getBorder().contains(slot)) {
                                inv.setItem(slot, item);
                            }
                        }
                        slow = 0;
                    }
                }
                if (full >= (timer + 55 + 47)) {
                    Prize prize = null;
                    if (cc.isInOpeningList(player)) {
                        prize = crate.getPrize(rewards.get(player).get(slots.get(f)));
                    }
                    if (prize != null) {
                        cc.givePrize(player, prize);
                        if (prize.useFireworks()) {
                            Methods.fireWork(player.getLocation().add(0, 1, 0));
                        }
                        CrazyManager.getJavaPlugin().getServer().getPluginManager().callEvent(new PlayerPrizeEvent(player, crate, crate.getName(), prize));
                    } else {
                        player.sendMessage(Methods.getPrefix("&cNo prize was found, please report this issue if you think this is an error."));
                    }
                    player.closeInventory();
                    cc.removePlayerFromOpeningList(player);
                    cc.endCrate(player);
                }
                slower++;
            }
            full++;
            open++;
            if (open > 5) {
                player.openInventory(inv);
                open = 0;
            }
        }
    }.runTaskTimer(CrazyManager.getJavaPlugin(), 1, 1));
}
Also used : PlayerPrizeEvent(com.badbones69.crazycrates.api.events.PlayerPrizeEvent) ItemBuilder(com.badbones69.crazycrates.api.objects.ItemBuilder) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) BukkitRunnable(org.bukkit.scheduler.BukkitRunnable) ItemStack(org.bukkit.inventory.ItemStack) Inventory(org.bukkit.inventory.Inventory) Prize(com.badbones69.crazycrates.api.objects.Prize)

Aggregations

PlayerPrizeEvent (com.badbones69.crazycrates.api.events.PlayerPrizeEvent)7 Prize (com.badbones69.crazycrates.api.objects.Prize)7 BukkitRunnable (org.bukkit.scheduler.BukkitRunnable)6 ItemStack (org.bukkit.inventory.ItemStack)5 Inventory (org.bukkit.inventory.Inventory)4 Crate (com.badbones69.crazycrates.api.objects.Crate)3 ArrayList (java.util.ArrayList)3 Player (org.bukkit.entity.Player)3 EventHandler (org.bukkit.event.EventHandler)3 ItemBuilder (com.badbones69.crazycrates.api.objects.ItemBuilder)2 KeyType (com.badbones69.crazycrates.api.enums.KeyType)1 PlayerReceiveKeyEvent (com.badbones69.crazycrates.api.events.PlayerReceiveKeyEvent)1 CosmicCrateManager (com.badbones69.crazycrates.api.managers.CosmicCrateManager)1 Tier (com.badbones69.crazycrates.api.objects.Tier)1 NBTItem (de.tr7zw.changeme.nbtapi.NBTItem)1 HashMap (java.util.HashMap)1 FileConfiguration (org.bukkit.configuration.file.FileConfiguration)1