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));
}
}
}
}
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));
}
Aggregations