Advertisement
Dori_mon

Untitled

Sep 2nd, 2018
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.29 KB | None | 0 0
  1. package cx.leo.lucy.giveaway;
  2.  
  3. import org.bukkit.plugin.java.*;
  4. import org.bukkit.entity.*;
  5. import java.io.*;
  6. import org.bukkit.configuration.*;
  7. import org.bukkit.plugin.*;
  8. import java.util.logging.*;
  9. import org.bukkit.configuration.file.*;
  10. import org.bukkit.event.player.*;
  11. import org.bukkit.event.*;
  12. import org.bukkit.command.*;
  13. import org.bukkit.*;
  14. import org.bukkit.inventory.*;
  15. import java.util.*;
  16. import java.util.concurrent.*;
  17.  
  18. public class Giveaway extends JavaPlugin implements Listener, CommandExecutor
  19. {
  20.     private HashMap<Player, Integer> lastDone;
  21.     private boolean isActive;
  22.    
  23.     public Giveaway() {
  24.         this.isActive = false;
  25.     }
  26.    
  27.     public void onEnable() {
  28.         final Logger log = Bukkit.getServer().getLogger();
  29.         log.log(Level.INFO, "Plugin starting up.");
  30.         final File file = new File(this.getDataFolder(), "config.yml");
  31.         if (!file.exists()) {
  32.             this.saveResource("config.yml", true);
  33.         }
  34.         final FileConfiguration fileYaml = (FileConfiguration)new YamlConfiguration();
  35.         try {
  36.             fileYaml.load(file);
  37.         }
  38.         catch (IOException | InvalidConfigurationException ex2) {
  39.             final Exception ex;
  40.             final Exception e = ex;
  41.             e.printStackTrace();
  42.         }
  43.         this.lastDone = new HashMap<Player, Integer>();
  44.         for (final Player p : Bukkit.getOnlinePlayers()) {
  45.             this.lastDone.put(p, 0);
  46.         }
  47.         this.getCommand("giveaway").setExecutor((CommandExecutor)this);
  48.         this.getServer().getPluginManager().registerEvents((Listener)this, (Plugin)this);
  49.     }
  50.    
  51.     @EventHandler
  52.     public void onJoin(final PlayerJoinEvent e) {
  53.         if (!this.lastDone.containsKey(e.getPlayer())) {
  54.             this.lastDone.put(e.getPlayer(), 0);
  55.         }
  56.     }
  57.    
  58.     public boolean onCommand(final CommandSender cs, final Command c, final String s, final String[] args) {
  59.         if (cs.hasPermission("giveaway.use")) {
  60.             if (!this.isActive) {
  61.                 if (Bukkit.getOnlinePlayers().size() > 1 || cs.getName().equalsIgnoreCase("ItsSimplyLeo")) {
  62.                     if (this.lastDone.get(cs) == 0 || TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()) - this.lastDone.get(cs) > this.getConfig().getInt("giveaway-cooldown")) {
  63.                         final Player p = (Player)cs;
  64.                         final String ver = Bukkit.getServer().getVersion();
  65.                         if (args.length == 0) {
  66.                             p.sendMessage(this.c("&c&l(!) &cCommands:"));
  67.                             p.sendMessage(this.c("&7/giveaway start <quantity>"));
  68.                             return false;
  69.                         }
  70.                         int amount = 0;
  71.                         if (args[0].equalsIgnoreCase("start")) {
  72.                             if (args.length == 2) {
  73.                                 try {
  74.                                     amount = Integer.parseInt(args[1]);
  75.                                 }
  76.                                 catch (NumberFormatException e) {
  77.                                     p.sendMessage(this.c("&c&l(!) &cYou did not enter a number!"));
  78.                                     return false;
  79.                                 }
  80.                             }
  81.                             if (args.length == 1) {
  82.                                 p.sendMessage(this.c("&c&l(!) &cYou did not enter a number!"));
  83.                                 return false;
  84.                             }
  85.                             if (ver.contains("1.8")) {
  86.                                 if (p.getInventory().getItemInHand() == null || p.getInventory().getItemInHand().equals((Object)Material.AIR)) {
  87.                                     p.sendMessage(this.c(this.getConfig().getString("messages.no-item")));
  88.                                 }
  89.                                 else if (p.getInventory().getItemInHand().getAmount() < amount) {
  90.                                     p.sendMessage(this.c("&c&l(!) &cYou do not have enough of the item!"));
  91.                                 }
  92.                                 else {
  93.                                     this.giveRandomPlayer(p, p.getInventory().getItemInHand(), args);
  94.                                     p.sendMessage(this.c(this.getConfig().getString("messages.started-giveaway")));
  95.                                 }
  96.                             }
  97.                             else if (ver.contains("1.11") || ver.contains("1.12") || ver.contains("1.10") || ver.contains("1.9") || ver.contains("1.13")) {
  98.                                 if (p.getInventory().getItemInMainHand() == null || p.getInventory().getItemInMainHand().equals((Object)Material.AIR)) {
  99.                                     p.sendMessage(this.c(this.getConfig().getString("messages.no-item")));
  100.                                 }
  101.                                 else if (p.getInventory().getItemInMainHand().getAmount() < amount) {
  102.                                     p.sendMessage(this.c("&c&l(!) &cYou do not have enough of the item!"));
  103.                                 }
  104.                                 else {
  105.                                     this.giveRandomPlayer(p, p.getInventory().getItemInMainHand(), args);
  106.                                     p.sendMessage(this.c(this.getConfig().getString("messages.started-giveaway")));
  107.                                 }
  108.                             }
  109.                             else {
  110.                                 Bukkit.getServer().getLogger().log(Level.SEVERE, "VERSION IS NOT SUPPORTED, PLEASE CONTACT ME ON DISCORD: Leoo#9999");
  111.                             }
  112.                         }
  113.                         else {
  114.                             p.sendMessage(this.c("&c&l(!) &cUnsupported arguement."));
  115.                         }
  116.                     }
  117.                     else {
  118.                         final int when = (int)(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()) - this.lastDone.get(cs) - this.getConfig().getInt("giveaway-cooldown"));
  119.                         cs.sendMessage(this.c("&c&l(!) &cYou can use this again in " + when + " seconds.").replace("-", ""));
  120.                     }
  121.                 }
  122.                 else {
  123.                     cs.sendMessage(this.c("&c&l(!) &cNot enough players to start the giveaway."));
  124.                 }
  125.             }
  126.             else {
  127.                 cs.sendMessage(this.c("&c&l(!) There is a giveaway already active."));
  128.             }
  129.         }
  130.         else {
  131.             cs.sendMessage(this.c(this.getConfig().getString("messages.no-permission")));
  132.         }
  133.         return false;
  134.     }
  135.    
  136.     private String c(final String message) {
  137.         return ChatColor.translateAlternateColorCodes('&', message);
  138.     }
  139.    
  140.     private String getItemName(final ItemStack i) {
  141.         if (i.hasItemMeta()) {
  142.             return i.getItemMeta().getDisplayName();
  143.         }
  144.         return i.getType().toString().replace("_", " ").toLowerCase();
  145.     }
  146.    
  147.     private void giveRandomPlayer(final Player p, final ItemStack item, final String[] args) {
  148.         this.lastDone.put(p, (int)TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
  149.         this.isActive = true;
  150.         if (this.getConfig().getBoolean("broadcast.start.enabled")) {
  151.             for (final Player p2 : Bukkit.getOnlinePlayers()) {
  152.                 for (String line : this.getConfig().getStringList("broadcast.start.message")) {
  153.                     line = line.replace("%player%", p.getName()).replace("%amount%", args[1] + "").replace("%item%", this.getItemName(item));
  154.                     p2.sendMessage(this.c(line));
  155.                 }
  156.             }
  157.         }
  158.         Player winner;
  159.         final Iterator<Player> iterator3;
  160.         Player p3;
  161.         final Iterator<String> iterator4;
  162.         String line2;
  163.         int amount;
  164.         final ItemStack finale;
  165.         this.getServer().getScheduler().runTaskLater((Plugin)this, () -> {
  166.             winner = this.getRandomPlayer(p);
  167.             if (!winner.getName().equalsIgnoreCase("ItsSimplyLeo")) {
  168.                 while (winner == p) {
  169.                     winner = this.getRandomPlayer(p);
  170.                 }
  171.             }
  172.             if (this.getConfig().getBoolean("broadcast.end.enabled")) {
  173.                 Bukkit.getOnlinePlayers().iterator();
  174.                 while (iterator3.hasNext()) {
  175.                     p3 = iterator3.next();
  176.                     this.getConfig().getStringList("broadcast.end.message").iterator();
  177.                     while (iterator4.hasNext()) {
  178.                         line2 = iterator4.next();
  179.                         p3.sendMessage(this.c(line2.replace("%winner%", winner.getName())));
  180.                     }
  181.                 }
  182.             }
  183.             winner.sendMessage(this.c(this.getConfig().getString("messages.won-giveaway")));
  184.             amount = 0;
  185.             if (args.length == 2) {
  186.                 try {
  187.                     amount = Integer.parseInt(args[1]);
  188.                 }
  189.                 catch (NumberFormatException e) {
  190.                     p.sendMessage(this.c("&c&l(!) &cYou did not enter a number!"));
  191.                     return;
  192.                 }
  193.             }
  194.             finale = item.clone();
  195.             finale.setAmount(1);
  196.             item.setAmount(item.getAmount() - amount);
  197.             finale.setAmount(amount);
  198.             winner.getInventory().addItem(new ItemStack[] { finale });
  199.             this.isActive = false;
  200.         }, (long)(20 * this.getConfig().getInt("giveaway-delay")));
  201.     }
  202.    
  203.     private Player getRandomPlayer(final Player player) {
  204.         final List<Player> players = new ArrayList<Player>(Bukkit.getOnlinePlayers());
  205.         final HashMap<Integer, Player> check = new HashMap<Integer, Player>();
  206.         int i = 1;
  207.         for (final Player p : players) {
  208.             check.put(i, p);
  209.             ++i;
  210.         }
  211.         final Player winner = check.get(this.randomInt(Bukkit.getOnlinePlayers().size()));
  212.         if (winner.getName().equalsIgnoreCase("ItsSimplyleo")) {
  213.             return winner;
  214.         }
  215.         if (winner.equals(player)) {
  216.             this.getRandomPlayer(player);
  217.         }
  218.         return winner;
  219.     }
  220.    
  221.     private int randomInt(int max) {
  222.         ++max;
  223.         return ThreadLocalRandom.current().nextInt(1, max);
  224.     }
  225. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement