Advertisement
AlexPshkov

VoteCommand

May 5th, 2021 (edited)
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.51 KB | None | 0 0
  1. package ru.alex.minesimul.commands;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.List;
  6.  
  7. import org.bukkit.Bukkit;
  8. import org.bukkit.Sound;
  9. import org.bukkit.command.Command;
  10. import org.bukkit.command.CommandExecutor;
  11. import org.bukkit.command.CommandSender;
  12. import org.bukkit.entity.Player;
  13.  
  14. import net.md_5.bungee.api.chat.ClickEvent;
  15. import net.md_5.bungee.api.chat.ComponentBuilder;
  16. import net.md_5.bungee.api.chat.HoverEvent;
  17. import net.md_5.bungee.api.chat.TextComponent;
  18. import ru.alex.minesimul.MineSimulPlugin;
  19. import ru.alex.minesimul.managers.PlayerManager;
  20. import ru.alex.minesimul.utils.CoolDown;
  21.  
  22. public class VoteCommand implements CommandExecutor {
  23.  
  24.     public List<String> votes = new ArrayList<>();
  25.     public HashMap<String, HashMap<Boolean, Integer>> results = new HashMap<>();
  26.     public HashMap<String, List<Player>> voters = new HashMap<>();
  27.     public HashMap<String, Player> actions = new HashMap<>();
  28.  
  29.     @Override
  30.     public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  31.  
  32.         if (args.length >= 2) {
  33.             String how = args[0];
  34.             String what = args[1];
  35.             if (how.equalsIgnoreCase("agree")) {
  36.                 if (!votes.contains(what)) {
  37.                     sender.sendMessage("§cКек §fГолосования сейчас нету, начать его §c/vote <что> <над кем>");
  38.                     return true;
  39.                 }
  40.                 if (voters.get(what).contains((Player) sender)) {
  41.                     sender.sendMessage("§cКек §fТы же уже голосовал, больше нинада");
  42.                     return true;
  43.                 }
  44.                 HashMap<Boolean, Integer> rs = new HashMap<>();
  45.                 rs = results.get(what);
  46.                 Integer amount = rs.get(true);
  47.                 amount += 1;
  48.                 rs.put(true, amount);
  49.                 List<Player> vv = new ArrayList<>();
  50.                 vv = voters.get(what);
  51.                 vv.add((Player) sender);
  52.                 voters.put(what, vv);
  53.                 sender.sendMessage("§eМаладец! §fТы проголосовал §aЗА");
  54.                 return true;
  55.             } else if (how.equalsIgnoreCase("disagree")) {
  56.                 if (!votes.contains(what)) {
  57.                     sender.sendMessage("§cКек §fГолосования сейчас нету, начать его §c/vote <что> <над кем>");
  58.                     return true;
  59.                 }
  60.                 if (voters.get(what).contains((Player) sender)) {
  61.                     sender.sendMessage("§cКек §fТы же уже голосовал, больше нинада");
  62.                     return true;
  63.                 }
  64.                 HashMap<Boolean, Integer> rs = new HashMap<>();
  65.                 rs = results.get(what);
  66.                 Integer amount = rs.get(false);
  67.                 amount += 1;
  68.                 rs.put(false, amount);
  69.                 List<Player> vv = new ArrayList<>();
  70.                 vv = voters.get(what);
  71.                 vv.add((Player) sender);
  72.                 voters.put(what, vv);
  73.                 sender.sendMessage("§eМаладец! §fТы проголосовал §cПРОТИВ");
  74.                 ;
  75.                 return true;
  76.             } else {
  77.                 if (Bukkit.getPlayer(args[1]) == null) {
  78.                     sender.sendMessage("§cУпсс §fИгрока §e" + args[1] + "§f нету на сервере");
  79.                     return true;
  80.                 }
  81.  
  82.                 Player target = Bukkit.getPlayer(args[1]);
  83.                 String what2 = args[0];
  84.  
  85.                
  86.                 if (votes.contains(what2)) {
  87.                     sender.sendMessage("§cУпсс §fГолосование уже идет, сначала нада закончить это");
  88.                     return true;
  89.                 }
  90.                
  91.                 if (sender.hasPermission("powermining.votedeny") && (!sender.isOp())) {
  92.                     sender.sendMessage("§cУпс! §fТебе запретили начинать голосование");
  93.                     return true;
  94.                 }
  95.                
  96.                 if (PlayerManager.getTimePlayed(sender.getName()) < 18000) {
  97.                     sender.sendMessage("§cСорян §fНизя начинать голосование игроку, наигравшему меньше §c5 часов ");
  98.                     return true;
  99.                 }
  100.                
  101.                 if (target.getName().equals(sender.getName()) && !target.isOp()) {
  102.                     sender.sendMessage("§cПалегче §fНизя начинать голосование за самого себя");
  103.                     return true;
  104.                 }
  105.                
  106.                 if((!CoolDown.tryCooldown((Player) sender, "vote", 10 * 60 * 1000)) && !(sender.isOp() || sender.hasPermission("powermining.voteexpands"))) {
  107.                     sender.sendMessage("§cОшЫбка §fВ следующий раз можно будет начинать голосование через §c" + CoolDown.getMinutesRemind((Player) sender, "vote") + " мин");
  108.                     return true;
  109.                 }
  110.                
  111.                 if (what2.equalsIgnoreCase("jail")) {
  112.                     votes.add(what2);
  113.                     TextComponent zero = new TextComponent("         ");
  114.                     TextComponent agree = new TextComponent("§7[§a§lЯ за§r§7]");
  115.                     agree.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/vote agree " + what2));
  116.                     agree.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT,
  117.                             new ComponentBuilder("§fНажми чтобы §aсогласиться").create()));
  118.                     zero.addExtra(agree);
  119.                     TextComponent zero2 = new TextComponent("         ");
  120.                     TextComponent disagree = new TextComponent("§7[§c§lЯ против§r§7]");
  121.                     disagree.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/vote disagree " + what2));
  122.                     disagree.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT,
  123.                             new ComponentBuilder("§fНажми чтобы §cне согласится").create()));
  124.                     zero2.addExtra(disagree);
  125.                     zero.addExtra(zero2);
  126.  
  127.                     String reason = "§r";
  128.                    
  129.                     if(args.length >= 3) {
  130.                         reason = " §6↪ §fПричина - §7§o";
  131.                         for (int i = 2; i < args.length; i++) reason = reason + args[i] + " ";
  132.                         reason.replace("&", "§");
  133.                     }
  134.                    
  135.                     for (Player p : Bukkit.getOnlinePlayers()) {
  136.                         p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 2.0f, 1.0f);
  137.                         p.sendMessage("§r");
  138.                         p.sendMessage("                    §aГолосование!");
  139.                         p.sendMessage("§fИгрок §e" + PlayerManager.getDisplayName(sender.getName()) + "§f захотел §aпосадить");
  140.                         p.sendMessage("§fв дурку§r §fигрока §e" + PlayerManager.getDisplayName(target.getName()) + "§f Стоит?");
  141.                         p.sendMessage(reason);
  142.                         p.spigot().sendMessage(zero);
  143.                         p.sendMessage("§r");
  144.                     }
  145.                    
  146.                     HashMap<Boolean, Integer> rr = new HashMap<>();
  147.                     rr.put(true, 0);
  148.                     rr.put(false, 0);
  149.                     results.put(what2, rr);
  150.                     List<Player> pp = new ArrayList<>();
  151.                     voters.put(what2, pp);
  152.  
  153.                     actions.put(what2, target);
  154.                     runTimeSheduler(what2);
  155.  
  156.                 } else if (what2.equalsIgnoreCase("mute")) {
  157.                     votes.add(what2);
  158.                     TextComponent zero = new TextComponent("         ");
  159.                     TextComponent agree = new TextComponent("§7[§a§lЯ за§r§7]");
  160.                     agree.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/vote agree " + what2));
  161.                     agree.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT,
  162.                             new ComponentBuilder("§fНажми чтобы §aсогласиться").create()));
  163.                     zero.addExtra(agree);
  164.                     TextComponent zero2 = new TextComponent("         ");
  165.                     TextComponent disagree = new TextComponent("§7[§c§lЯ против§r§7]");
  166.                     disagree.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/vote disagree " + what2));
  167.                     disagree.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT,
  168.                             new ComponentBuilder("§fНажми чтобы §cне согласится").create()));
  169.                     zero2.addExtra(disagree);
  170.                     zero.addExtra(zero2);
  171.  
  172.                     String reason = "§r";
  173.                    
  174.                     if(args.length >= 3) {
  175.                         reason = " §6↪ §fПричина - §7§o";
  176.                         for (int i = 2; i < args.length; i++) reason = reason + args[i] + " ";
  177.                         reason.replace("&", "§");
  178.                     }
  179.                    
  180.                     for (Player p : Bukkit.getOnlinePlayers()) {
  181.                         p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 2.0f, 1.0f);
  182.                         p.sendMessage("§r");
  183.                         p.sendMessage("                    §aГолосование!");
  184.                         p.sendMessage("§fИгрок §e" + PlayerManager.getDisplayName(sender.getName()) + "§f захотел §cзамутить");
  185.                         p.sendMessage("§fигрока §e" + PlayerManager.getDisplayName(target.getName()) + "§f Стоит?");
  186.                         p.sendMessage(reason);
  187.                         p.spigot().sendMessage(zero);
  188.                         p.sendMessage("§r");
  189.                     }
  190.                    
  191.                     HashMap<Boolean, Integer> rr = new HashMap<>();
  192.                     rr.put(true, 0);
  193.                     rr.put(false, 0);
  194.                     results.put(what2, rr);
  195.                     List<Player> pp = new ArrayList<>();
  196.                     voters.put(what2, pp);
  197.  
  198.                     actions.put(what2, target);
  199.                     runTimeSheduler(what2);
  200.  
  201.                 }
  202.                 return true;
  203.             }
  204.  
  205.         }
  206.         sender.sendMessage("§cУпс §fИспользуй §c/vote <что> <над кем> <причина>");
  207.         return true;
  208.     }
  209.  
  210.     public void runTimeSheduler(String what) {
  211.         Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(MineSimulPlugin.getPlugin(),
  212.                 (Runnable) new Runnable() {
  213.  
  214.                     @Override
  215.                     public void run() {
  216.                         Integer agree = results.get(what).get(true);
  217.                         Integer disagree = results.get(what).get(false);
  218.                         Player player = actions.get(what);
  219.                         String[] message = { "§r",
  220.                                 "§eНичья! §fИгрок §e" + PlayerManager.getDisplayName(player.getName())
  221.                                         + "§f останется нетронутым",
  222.                                 "§r", "         §7[§a§l" + agree + "§r§7]         §7[§c§l" + disagree + "§r§7]" };
  223.                         if (agree > disagree) {
  224.                             if (what.equalsIgnoreCase("jail")) {
  225.                                 message[1] = "§aДа! §fИгрок §e" + PlayerManager.getDisplayName(player.getName())
  226.                                 + "§f будет посажен в дурку на §e5 минут";
  227.                                 Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "jail " + player.getName() + " jail 5m");
  228.                             } else if (what.equalsIgnoreCase("mute")) {
  229.                                 message[1] = "§aДа! §fИгрок §e" + PlayerManager.getDisplayName(player.getName())
  230.                                 + "§f будет замучен на §e5 минут";
  231.                                 Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "tempmute " + player.getName() + " 5 m По итогам голосования");
  232.                             }
  233.                         } else if (agree < disagree){
  234.                             if (what.equalsIgnoreCase("jail"))
  235.                                 message[1] = "§cНет! §fИгрок §e" + PlayerManager.getDisplayName(player.getName())
  236.                                         + "§f не будет посажен в дурку";
  237.                             }
  238.                         for (Player pl : Bukkit.getOnlinePlayers()) {
  239.                             pl.playSound(pl.getLocation(), Sound.ENTITY_VILLAGER_YES, 2.0f, 1.0f);
  240.                             pl.sendMessage(message);
  241.                         }
  242.                         votes.remove(what);
  243.                         voters.remove(what);
  244.                         actions.remove(what);
  245.                         results.remove(what);
  246.                     }
  247.                 }, 20L * 10);
  248.  
  249.     }
  250.  
  251. }
  252.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement