use of com.badbones69.crazycrates.api.objects.Prize in project Crazy-Crates by Crazy-Crew.
the class CrateOnTheGo method onCrateOpen.
@EventHandler
public void onCrateOpen(PlayerInteractEvent e) {
Player player = e.getPlayer();
if (e.getAction() == Action.RIGHT_CLICK_BLOCK) {
ItemStack item = cc.getNMSSupport().getItemInMainHand(player);
if (item == null || item.getType() == Material.AIR)
return;
for (Crate crate : cc.getCrates()) {
if (crate.getCrateType() == CrateType.CRATE_ON_THE_GO && Methods.isSimilar(item, crate)) {
e.setCancelled(true);
cc.addPlayerToOpeningList(player, crate);
Methods.removeItem(item, player);
Prize prize = crate.pickPrize(player);
cc.givePrize(player, prize);
CrazyManager.getJavaPlugin().getServer().getPluginManager().callEvent(new PlayerPrizeEvent(player, crate, cc.getOpeningCrate(player).getName(), prize));
if (prize.useFireworks()) {
Methods.fireWork(player.getLocation().add(0, 1, 0));
}
cc.removePlayerFromOpeningList(player);
}
}
}
}
use of com.badbones69.crazycrates.api.objects.Prize 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.objects.Prize 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));
}
use of com.badbones69.crazycrates.api.objects.Prize in project Crazy-Crates by Crazy-Crew.
the class CrazyManager method loadCrates.
/**
* Loads all the information the plugin needs to run.
*/
public void loadCrates() {
giveNewPlayersKeys = false;
crates.clear();
brokecrates.clear();
crateLocations.clear();
crateSchematics.clear();
nmsSupport = new NMS_Support();
quadCrateTimer = Files.CONFIG.getFile().getInt("Settings.QuadCrate.Timer") * 20;
giveVirtualKeysWhenInventoryFull = Files.CONFIG.getFile().getBoolean("Settings.Give-Virtual-Keys-When-Inventory-Full");
if (Support.HOLOGRAPHIC_DISPLAYS.isPluginLoaded()) {
hologramController = new HolographicSupport();
} else if (Support.DECENT_HOLOGRAMS.isPluginLoaded()) {
hologramController = new DecentHolograms();
}
// Removes all holograms so that they can be replaced.
if (hologramController != null) {
hologramController.removeAllHolograms();
}
if (fileManager.isLogging())
getJavaPlugin().getLogger().info("Loading all crate information...");
for (String crateName : fileManager.getAllCratesNames()) {
// if(fileManager.isLogging()) plugin.getLogger().info(fileManager.getPrefix() + "Loading " + crateName + ".yml information....");
try {
FileConfiguration file = fileManager.getFile(crateName).getFile();
CrateType crateType = CrateType.getFromName(file.getString("Crate.CrateType"));
ArrayList<Prize> prizes = new ArrayList<>();
String previewName = file.contains("Crate.Preview-Name") ? file.getString("Crate.Preview-Name") : file.getString("Crate.Name");
ArrayList<Tier> tiers = new ArrayList<>();
if (file.contains("Crate.Tiers") && file.getConfigurationSection("Crate.Tiers") != null) {
for (String tier : file.getConfigurationSection("Crate.Tiers").getKeys(false)) {
String path = "Crate.Tiers." + tier;
tiers.add(new Tier(tier, file.getString(path + ".Name"), file.getString(path + ".Color"), file.getInt(path + ".Chance"), file.getInt(path + ".MaxRange")));
}
}
if (crateType == CrateType.COSMIC && tiers.isEmpty()) {
brokecrates.add(crateName);
getJavaPlugin().getLogger().warning("No tiers were found for this cosmic crate " + crateName + ".yml file.");
continue;
}
for (String prize : file.getConfigurationSection("Crate.Prizes").getKeys(false)) {
Prize altPrize = null;
String path = "Crate.Prizes." + prize;
ArrayList<Tier> prizeTiers = new ArrayList<>();
for (String tier : file.getStringList(path + ".Tiers")) {
for (Tier loadedTier : tiers) {
if (loadedTier.getName().equalsIgnoreCase(tier)) {
prizeTiers.add(loadedTier);
}
}
}
if (file.contains(path + ".Alternative-Prize")) {
if (file.getBoolean(path + ".Alternative-Prize.Toggle")) {
altPrize = new Prize("Alternative-Prize", file.getStringList(path + ".Alternative-Prize.Messages"), file.getStringList(path + ".Alternative-Prize.Commands"), // No editor items
null, getItems(file, prize + ".Alternative-Prize"));
}
}
ArrayList<ItemStack> editorItems = new ArrayList<>();
if (file.contains(path + ".Editor-Items")) {
for (Object list : file.getList(path + ".Editor-Items")) {
editorItems.add((ItemStack) list);
}
}
prizes.add(new Prize(prize, getDisplayItem(file, prize), file.getStringList(path + ".Messages"), file.getStringList(path + ".Commands"), editorItems, getItems(file, prize), crateName, file.getInt(path + ".Chance", 100), file.getInt(path + ".MaxRange", 100), file.getBoolean(path + ".Firework"), file.getStringList(path + ".BlackListed-Permissions"), prizeTiers, altPrize));
}
int newPlayersKeys = file.getInt("Crate.StartingKeys");
if (!giveNewPlayersKeys) {
if (newPlayersKeys > 0) {
giveNewPlayersKeys = true;
}
}
crates.add(new Crate(crateName, previewName, crateType, getKey(file), prizes, file, newPlayersKeys, tiers, new CrateHologram(file.getBoolean("Crate.Hologram.Toggle"), file.getDouble("Crate.Hologram.Height", 0.0), file.getStringList("Crate.Hologram.Message"))));
} catch (Exception e) {
brokecrates.add(crateName);
getJavaPlugin().getLogger().warning("There was an error while loading the " + crateName + ".yml file.");
e.printStackTrace();
}
}
crates.add(new Crate("Menu", "Menu", CrateType.MENU, new ItemStack(Material.AIR), new ArrayList<>(), null, 0, null, null));
if (fileManager.isLogging())
getJavaPlugin().getLogger().info("All crate information has been loaded.");
if (fileManager.isLogging())
getJavaPlugin().getLogger().info("Loading all the physical crate locations.");
FileConfiguration locations = Files.LOCATIONS.getFile();
int loadedAmount = 0;
int brokeAmount = 0;
if (locations.getConfigurationSection("Locations") != null) {
for (String locationName : locations.getConfigurationSection("Locations").getKeys(false)) {
try {
String worldName = locations.getString("Locations." + locationName + ".World");
World world = getJavaPlugin().getServer().getWorld(worldName);
int x = locations.getInt("Locations." + locationName + ".X");
int y = locations.getInt("Locations." + locationName + ".Y");
int z = locations.getInt("Locations." + locationName + ".Z");
Location location = new Location(world, x, y, z);
Crate crate = getCrateFromName(locations.getString("Locations." + locationName + ".Crate"));
if (world != null && crate != null) {
crateLocations.add(new CrateLocation(locationName, crate, location));
if (hologramController != null) {
hologramController.createHologram(location.getBlock(), crate);
}
loadedAmount++;
} else {
brokeLocations.add(new BrokeLocation(locationName, crate, x, y, z, worldName));
brokeAmount++;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
// Checking if all physical locations loaded
if (fileManager.isLogging()) {
if (loadedAmount > 0 || brokeAmount > 0) {
if (brokeAmount <= 0) {
getJavaPlugin().getLogger().info("All physical crate locations have been loaded.");
} else {
getJavaPlugin().getLogger().info("Loaded " + loadedAmount + " physical crate locations.");
getJavaPlugin().getLogger().info("Failed to load " + brokeAmount + " physical crate locations.");
}
}
}
// Loading schematic files
if (fileManager.isLogging())
getJavaPlugin().getLogger().info("Searching for schematics to load.");
String[] schems = new File(getJavaPlugin().getDataFolder() + "/schematics/").list();
for (String schematicName : schems) {
if (schematicName.endsWith(".nbt")) {
crateSchematics.add(new CrateSchematic(schematicName.replace(".nbt", ""), new File(getJavaPlugin().getDataFolder() + "/schematics/" + schematicName)));
if (fileManager.isLogging())
getJavaPlugin().getLogger().info(schematicName + " was successfully found and loaded.");
}
}
if (fileManager.isLogging())
getJavaPlugin().getLogger().info("All schematics were found and loaded.");
cleanDataFile();
Preview.loadButtons();
}
use of com.badbones69.crazycrates.api.objects.Prize in project Crazy-Crates by Crazy-Crew.
the class Cosmic method onInvClose.
@EventHandler
public void onInvClose(InventoryCloseEvent e) {
Inventory inv = e.getInventory();
Player player = (Player) e.getPlayer();
Crate crate = cc.getOpeningCrate(player);
if (cc.isInOpeningList(player)) {
if (crate.getFile() == null) {
return;
} else {
if (!crate.getFile().getString("Crate.CrateType").equalsIgnoreCase("Cosmic")) {
return;
}
}
} else {
return;
}
if (e.getView().getTitle().equals(Methods.sanitizeColor(crate.getFile().getString("Crate.CrateName") + " - Prizes"))) {
boolean playSound = false;
for (int i : picks.get(player)) {
if (inv.getItem(i) != null) {
Tier tier = getTier(crate, inv.getItem(i));
if (tier != null) {
Prize prize = crate.pickPrize(player, tier);
for (int stop = 0; prize == null && stop <= 2000; stop++) {
prize = crate.pickPrize(player, tier);
}
cc.givePrize(player, prize);
playSound = true;
}
}
}
if (playSound) {
player.playSound(player.getLocation(), Sound.UI_BUTTON_CLICK, 1, 1);
}
cc.removePlayerFromOpeningList(player);
cc.removePlayerKeyType(player);
if (glass.containsKey(player)) {
picks.put(player, glass.get(player));
glass.remove(player);
}
checkHands.remove(player);
}
if (cc.isInOpeningList(player) && e.getView().getTitle().equals(Methods.sanitizeColor(crate.getFile().getString("Crate.CrateName") + " - Choose"))) {
if (!glass.containsKey(player) || glass.get(player).size() < 4) {
cc.removePlayerFromOpeningList(player);
cc.removePlayerKeyType(player);
}
if (glass.containsKey(player)) {
picks.put(player, glass.get(player));
glass.remove(player);
}
checkHands.remove(player);
}
}
Aggregations