Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package cx.leo.lucy.giveaway;
- import org.bukkit.plugin.java.*;
- import org.bukkit.entity.*;
- import java.io.*;
- import org.bukkit.configuration.*;
- import org.bukkit.plugin.*;
- import java.util.logging.*;
- import org.bukkit.configuration.file.*;
- import org.bukkit.event.player.*;
- import org.bukkit.event.*;
- import org.bukkit.command.*;
- import org.bukkit.*;
- import org.bukkit.inventory.*;
- import java.util.*;
- import java.util.concurrent.*;
- public class Giveaway extends JavaPlugin implements Listener, CommandExecutor
- {
- private HashMap<Player, Integer> lastDone;
- private boolean isActive;
- public Giveaway() {
- this.isActive = false;
- }
- public void onEnable() {
- final Logger log = Bukkit.getServer().getLogger();
- log.log(Level.INFO, "Plugin starting up.");
- final File file = new File(this.getDataFolder(), "config.yml");
- if (!file.exists()) {
- this.saveResource("config.yml", true);
- }
- final FileConfiguration fileYaml = (FileConfiguration)new YamlConfiguration();
- try {
- fileYaml.load(file);
- }
- catch (IOException | InvalidConfigurationException ex2) {
- final Exception ex;
- final Exception e = ex;
- e.printStackTrace();
- }
- this.lastDone = new HashMap<Player, Integer>();
- for (final Player p : Bukkit.getOnlinePlayers()) {
- this.lastDone.put(p, 0);
- }
- this.getCommand("giveaway").setExecutor((CommandExecutor)this);
- this.getServer().getPluginManager().registerEvents((Listener)this, (Plugin)this);
- }
- @EventHandler
- public void onJoin(final PlayerJoinEvent e) {
- if (!this.lastDone.containsKey(e.getPlayer())) {
- this.lastDone.put(e.getPlayer(), 0);
- }
- }
- public boolean onCommand(final CommandSender cs, final Command c, final String s, final String[] args) {
- if (cs.hasPermission("giveaway.use")) {
- if (!this.isActive) {
- if (Bukkit.getOnlinePlayers().size() > 1 || cs.getName().equalsIgnoreCase("ItsSimplyLeo")) {
- if (this.lastDone.get(cs) == 0 || TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()) - this.lastDone.get(cs) > this.getConfig().getInt("giveaway-cooldown")) {
- final Player p = (Player)cs;
- final String ver = Bukkit.getServer().getVersion();
- if (args.length == 0) {
- p.sendMessage(this.c("&c&l(!) &cCommands:"));
- p.sendMessage(this.c("&7/giveaway start <quantity>"));
- return false;
- }
- int amount = 0;
- if (args[0].equalsIgnoreCase("start")) {
- if (args.length == 2) {
- try {
- amount = Integer.parseInt(args[1]);
- }
- catch (NumberFormatException e) {
- p.sendMessage(this.c("&c&l(!) &cYou did not enter a number!"));
- return false;
- }
- }
- if (args.length == 1) {
- p.sendMessage(this.c("&c&l(!) &cYou did not enter a number!"));
- return false;
- }
- if (ver.contains("1.8")) {
- if (p.getInventory().getItemInHand() == null || p.getInventory().getItemInHand().equals((Object)Material.AIR)) {
- p.sendMessage(this.c(this.getConfig().getString("messages.no-item")));
- }
- else if (p.getInventory().getItemInHand().getAmount() < amount) {
- p.sendMessage(this.c("&c&l(!) &cYou do not have enough of the item!"));
- }
- else {
- this.giveRandomPlayer(p, p.getInventory().getItemInHand(), args);
- p.sendMessage(this.c(this.getConfig().getString("messages.started-giveaway")));
- }
- }
- else if (ver.contains("1.11") || ver.contains("1.12") || ver.contains("1.10") || ver.contains("1.9") || ver.contains("1.13")) {
- if (p.getInventory().getItemInMainHand() == null || p.getInventory().getItemInMainHand().equals((Object)Material.AIR)) {
- p.sendMessage(this.c(this.getConfig().getString("messages.no-item")));
- }
- else if (p.getInventory().getItemInMainHand().getAmount() < amount) {
- p.sendMessage(this.c("&c&l(!) &cYou do not have enough of the item!"));
- }
- else {
- this.giveRandomPlayer(p, p.getInventory().getItemInMainHand(), args);
- p.sendMessage(this.c(this.getConfig().getString("messages.started-giveaway")));
- }
- }
- else {
- Bukkit.getServer().getLogger().log(Level.SEVERE, "VERSION IS NOT SUPPORTED, PLEASE CONTACT ME ON DISCORD: Leoo#9999");
- }
- }
- else {
- p.sendMessage(this.c("&c&l(!) &cUnsupported arguement."));
- }
- }
- else {
- final int when = (int)(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()) - this.lastDone.get(cs) - this.getConfig().getInt("giveaway-cooldown"));
- cs.sendMessage(this.c("&c&l(!) &cYou can use this again in " + when + " seconds.").replace("-", ""));
- }
- }
- else {
- cs.sendMessage(this.c("&c&l(!) &cNot enough players to start the giveaway."));
- }
- }
- else {
- cs.sendMessage(this.c("&c&l(!) There is a giveaway already active."));
- }
- }
- else {
- cs.sendMessage(this.c(this.getConfig().getString("messages.no-permission")));
- }
- return false;
- }
- private String c(final String message) {
- return ChatColor.translateAlternateColorCodes('&', message);
- }
- private String getItemName(final ItemStack i) {
- if (i.hasItemMeta()) {
- return i.getItemMeta().getDisplayName();
- }
- return i.getType().toString().replace("_", " ").toLowerCase();
- }
- private void giveRandomPlayer(final Player p, final ItemStack item, final String[] args) {
- this.lastDone.put(p, (int)TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
- this.isActive = true;
- if (this.getConfig().getBoolean("broadcast.start.enabled")) {
- for (final Player p2 : Bukkit.getOnlinePlayers()) {
- for (String line : this.getConfig().getStringList("broadcast.start.message")) {
- line = line.replace("%player%", p.getName()).replace("%amount%", args[1] + "").replace("%item%", this.getItemName(item));
- p2.sendMessage(this.c(line));
- }
- }
- }
- Player winner;
- final Iterator<Player> iterator3;
- Player p3;
- final Iterator<String> iterator4;
- String line2;
- int amount;
- final ItemStack finale;
- this.getServer().getScheduler().runTaskLater((Plugin)this, () -> {
- winner = this.getRandomPlayer(p);
- if (!winner.getName().equalsIgnoreCase("ItsSimplyLeo")) {
- while (winner == p) {
- winner = this.getRandomPlayer(p);
- }
- }
- if (this.getConfig().getBoolean("broadcast.end.enabled")) {
- Bukkit.getOnlinePlayers().iterator();
- while (iterator3.hasNext()) {
- p3 = iterator3.next();
- this.getConfig().getStringList("broadcast.end.message").iterator();
- while (iterator4.hasNext()) {
- line2 = iterator4.next();
- p3.sendMessage(this.c(line2.replace("%winner%", winner.getName())));
- }
- }
- }
- winner.sendMessage(this.c(this.getConfig().getString("messages.won-giveaway")));
- amount = 0;
- if (args.length == 2) {
- try {
- amount = Integer.parseInt(args[1]);
- }
- catch (NumberFormatException e) {
- p.sendMessage(this.c("&c&l(!) &cYou did not enter a number!"));
- return;
- }
- }
- finale = item.clone();
- finale.setAmount(1);
- item.setAmount(item.getAmount() - amount);
- finale.setAmount(amount);
- winner.getInventory().addItem(new ItemStack[] { finale });
- this.isActive = false;
- }, (long)(20 * this.getConfig().getInt("giveaway-delay")));
- }
- private Player getRandomPlayer(final Player player) {
- final List<Player> players = new ArrayList<Player>(Bukkit.getOnlinePlayers());
- final HashMap<Integer, Player> check = new HashMap<Integer, Player>();
- int i = 1;
- for (final Player p : players) {
- check.put(i, p);
- ++i;
- }
- final Player winner = check.get(this.randomInt(Bukkit.getOnlinePlayers().size()));
- if (winner.getName().equalsIgnoreCase("ItsSimplyleo")) {
- return winner;
- }
- if (winner.equals(player)) {
- this.getRandomPlayer(player);
- }
- return winner;
- }
- private int randomInt(int max) {
- ++max;
- return ThreadLocalRandom.current().nextInt(1, max);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement