Armagidon

DCase

Aug 27th, 2017
418
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.02 KB | None | 0 0
  1. package com.ac.dc;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Random;
  7.  
  8. import org.bukkit.Bukkit;
  9. import org.bukkit.ChatColor;
  10. import org.bukkit.Material;
  11. import org.bukkit.entity.Player;
  12. import org.bukkit.event.EventHandler;
  13. import org.bukkit.event.Listener;
  14. import org.bukkit.event.inventory.InventoryClickEvent;
  15. import org.bukkit.event.inventory.InventoryCloseEvent;
  16. import org.bukkit.inventory.Inventory;
  17. import org.bukkit.inventory.ItemStack;
  18. import org.bukkit.inventory.meta.ItemMeta;
  19.  
  20. public class DCase implements Listener
  21. {
  22.     private static Case plugin;
  23.     public static int keys = 0;
  24.     private HashMap<Player, Integer> tasks = new HashMap<>();
  25.     private int task;
  26.     public static List<String> itemlist = new ArrayList<>();
  27.    
  28.     public DCase(Case plugin) {
  29.         DCase.plugin = plugin;
  30.     }
  31.  
  32.     public static void open(Player p)
  33.     {
  34.         Inventory casE = Bukkit.createInventory(null, 9, ChatColor.RED + "Opening case");
  35.         ItemStack keyi = new ItemStack(131);
  36.         ItemMeta meta = keyi.getItemMeta();
  37.         List<String> list = new ArrayList<String>();
  38.         String arg = "Ключей: " + keys;
  39.         list.add(arg);
  40.         meta.setLore(list);
  41.         meta.setDisplayName(ChatColor.GOLD + "ключ");
  42.         keyi.setItemMeta(meta);
  43.         casE.setItem(4, keyi);
  44.         p.openInventory(casE);
  45.     }
  46.    
  47.     @EventHandler
  48.     public void addGroup(InventoryClickEvent e)
  49.     {
  50.         Inventory inv = e.getInventory();
  51.         if(inv.getName().equalsIgnoreCase("Getting prize"))
  52.         {
  53.             if(e.getCurrentItem().getType() == Material.AIR) return;
  54.             Bukkit.getScheduler().runTaskLater(plugin, () ->{
  55.                 e.getWhoClicked().closeInventory();
  56.             }, 10L);
  57.         }  
  58.     }
  59.    
  60.     @EventHandler
  61.     public void onClick(InventoryClickEvent e)
  62.     {
  63.         Player p = (Player) e.getWhoClicked();
  64.         Inventory inv = e.getInventory();
  65.         if(inv.getName().equalsIgnoreCase(ChatColor.RED + "Opening case"))
  66.         {
  67.             if(e.getCurrentItem().getType() == Material.AIR) return;
  68.             e.setCancelled(true);
  69.             if(!e.getCurrentItem().getItemMeta().hasDisplayName()) return;
  70.             if(e.getCurrentItem().getTypeId() != 131) return;
  71.             if(!e.getCurrentItem().getItemMeta().getDisplayName().equals(ChatColor.GOLD + "ключ")) return;
  72.             if(keys == 0) return;
  73.             removeKey();
  74.             this.spinmenu(p);
  75.            
  76.         }
  77.         if(inv.getName().equalsIgnoreCase("Opening..."))
  78.         {
  79.             if(e.getCurrentItem().getType() == Material.AIR) return;
  80.             e.setCancelled(true);
  81.         }
  82.     }
  83.    
  84.     public void spinmenu(final Player p)
  85.     {
  86.         List<ItemStack> items = new ArrayList<>();
  87.         final Inventory spin = Bukkit.createInventory(null, 9, "Opening...");
  88.         Random r = new Random();
  89.             for(String item : itemlist)
  90.             {
  91.                 items.add(new ItemStack(Material.getMaterial(item.toUpperCase())));
  92.             }
  93.         task = Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, () -> {
  94.             int index = r.nextInt(itemlist.size());
  95.             spin.setItem(4, items.get(index));
  96.         }, 0, 2);
  97.  
  98.         tasks.put(p, Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> {
  99.             Bukkit.getScheduler().cancelTask(task);
  100.             tasks.remove(p);
  101.             int index = r.nextInt(itemlist.size());
  102.             ItemStack item = items.get(index);
  103.             getPrize(p, item);
  104.         }, 60));
  105.             p.openInventory(spin);
  106.         }
  107.        
  108.     public void getPrize(Player p,ItemStack item)
  109.     {
  110.             Inventory inv = Bukkit.createInventory(null, 9, "Getting prize");
  111.             inv.setItem(4, item);
  112.            
  113.         p.openInventory(inv);
  114.     }  
  115.    
  116.     @EventHandler
  117.     public void onClose(InventoryCloseEvent e) {
  118.         Player player = (Player) e.getPlayer();
  119.         if (e.getInventory().getName().equalsIgnoreCase("Getting prize")) {
  120.             if (tasks.containsKey(player)) {
  121.                 Bukkit.getScheduler().cancelTask(tasks.get(player));
  122.                 Bukkit.getScheduler().cancelTask(task);
  123.                 tasks.remove(player);
  124.             }
  125.         }
  126.     }
  127.    
  128.     public static void addKey(int amount)
  129.     {
  130.         keys = keys + amount;
  131.     }
  132.    
  133.     public void removeKey()
  134.     {
  135.         keys = keys - 1;
  136.     }
  137. }
Advertisement
Add Comment
Please, Sign In to add comment