Advertisement
TheMagzuz

SlimeSlap

Dec 15th, 2015
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 17.78 KB | None | 0 0
  1. package me.themagzuz;
  2.  
  3. import java.io.File;
  4. import java.io.InputStreamReader;
  5. import java.io.Reader;
  6. import java.io.UnsupportedEncodingException;
  7. import java.math.BigDecimal;
  8. import java.text.DecimalFormat;
  9. import java.text.ParseException;
  10. import java.util.ArrayList;
  11. import java.util.Arrays;
  12. import java.util.List;
  13. import java.util.Set;
  14. import java.util.UUID;
  15. import java.util.logging.Logger;
  16.  
  17. import org.bukkit.Bukkit;
  18. import org.bukkit.ChatColor;
  19. import org.bukkit.Location;
  20. import org.bukkit.Material;
  21. import org.bukkit.World;
  22. import org.bukkit.block.Block;
  23. import org.bukkit.command.Command;
  24. import org.bukkit.command.CommandSender;
  25. import org.bukkit.configuration.Configuration;
  26. import org.bukkit.configuration.file.FileConfiguration;
  27. import org.bukkit.configuration.file.YamlConfiguration;
  28. import org.bukkit.enchantments.Enchantment;
  29. import org.bukkit.entity.Player;
  30. import org.bukkit.event.entity.EntityDamageByEntityEvent;
  31. import org.bukkit.event.entity.EntityDamageEvent;
  32. import org.bukkit.inventory.Inventory;
  33. import org.bukkit.inventory.ItemStack;
  34. import org.bukkit.inventory.PlayerInventory;
  35. import org.bukkit.inventory.meta.ItemMeta;
  36. import org.bukkit.plugin.PluginManager;
  37. import org.bukkit.plugin.RegisteredServiceProvider;
  38. import org.bukkit.plugin.java.JavaPlugin;
  39.  
  40.  
  41. import net.milkbowl.vault.Vault;
  42. import net.milkbowl.vault.chat.Chat;
  43. import net.milkbowl.vault.economy.Economy;
  44. import net.milkbowl.vault.economy.EconomyResponse;
  45. import net.milkbowl.vault.permission.Permission;
  46.  
  47.  
  48.  
  49. @SuppressWarnings({"deprecation" })
  50. public class SlimeSlap extends JavaPlugin{
  51.    
  52.     public static List<SlimeSlapPlayer> players = new ArrayList<SlimeSlapPlayer>();
  53.    
  54.     public static SlimeSlap pl;
  55.    
  56.     public static ItemStack killTicket = new ItemStack(Material.GOLD_INGOT, 1);
  57.    
  58.     public static ItemStack SlimeSlapper = new ItemStack(Material.SLIME_BALL, 1);
  59.    
  60.     public static Economy econ;
  61.    
  62.     public static Permission perms;
  63.    
  64.     public static Integer bonus;
  65.    
  66.     public static Logger log;
  67.    
  68.     public static final ItemStack EMPTYITEM = null;
  69.    
  70.     public static final DecimalFormat DOUBLE_DECIMAL = new DecimalFormat("#.##");
  71.    
  72.     public static EconomyResponse r;
  73.    
  74.     public Configuration config = getConfig();
  75.    
  76.     //////////*PERMISSIONS*//////////
  77.     public static org.bukkit.permissions.Permission TicketSign = new org.bukkit.permissions.Permission("SlimeSlap.Sign.Create.Sell");
  78.     public static org.bukkit.permissions.Permission ArenaSign = new org.bukkit.permissions.Permission("SlimeSlap.Sign.Create.Arena");
  79.     public static org.bukkit.permissions.Permission ArenaPerm = new org.bukkit.permissions.Permission("SlimeSlap.Command.Arena");
  80.     public static org.bukkit.permissions.Permission AdminPerm = new org.bukkit.permissions.Permission("SlimeSlap.Command.Admin");
  81.     //////////*END PERMISSIONS*//////////
  82.    
  83.     /////////*LANG*/////////
  84.     public static String NoPerm = "§cYou do not have permission to do that!";
  85.     /////////*END LANG*/////////
  86.     public void LoadConfig(){
  87.        
  88.         if (!config.contains("Bonus")){
  89.             config.set("Bonus", 10);
  90.         }
  91.        
  92.         bonus = config.getInt("Bonus");
  93.        
  94.         saveConfig();
  95.        
  96.     }
  97.    
  98.     public static World GetWorldByName(String name){
  99.         ArrayList<World> worlds = (ArrayList<World>) Bukkit.getServer().getWorlds();
  100.         for (int i = 0; i < worlds.size(); i++){
  101.             if (worlds.get(i).getName().equals(name)){
  102.                 return worlds.get(i);
  103.             }
  104.         }
  105.         return null;
  106.     }
  107.    
  108.     public static void HandlePlayerDeath(UUID died, SlimeSlapPlayer ssKilled, UUID theKiller, SlimeSlapPlayer ssKiller){
  109.         List<ItemStack> drops = new ArrayList<ItemStack>();
  110.         drops.clear();
  111.        
  112.         Player killer = Bukkit.getPlayer(theKiller);
  113.         Player killed = Bukkit.getPlayer(died);
  114.        
  115.         drops.add(killTicket);
  116.        
  117.         pl.getLogger().info(String.format("%s died with killer %s", killed.getName(), killer.getName()));
  118.        
  119.         for (int i = 0; i < getTickets(killed); i++){
  120.             drops.add(killTicket);
  121.             killer.sendMessage(String.valueOf(i));
  122.         }
  123.         for (int i = 0; i < drops.size(); i++){
  124.             killer.getInventory().addItem(drops.get(i));
  125.         }
  126.        
  127.         Double x, y, z;
  128.         try{
  129.             x =(Double)DOUBLE_DECIMAL.parse(SlimeSlap.pl.getConfig().getString("Spawn.x")).doubleValue();
  130.             y =(Double) DOUBLE_DECIMAL.parse(SlimeSlap.pl.getConfig().getString("Spawn.y")).doubleValue();
  131.             z = (Double) DOUBLE_DECIMAL.parse(SlimeSlap.pl.getConfig().getString("Spawn.z")).doubleValue();
  132.         } catch(ParseException er){
  133.             killed.sendMessage("§cSome of the coordinates to the spawn are not numbers! Contact the server admin immidiatly!");
  134.             return;
  135.         }
  136.         Location loc = new Location(GetWorldByName(pl.getConfig().getString("World")), x, y, z);
  137.         killed.teleport(loc);
  138.         killed.setHealth(20.0);
  139.         killed.sendMessage("§cYou died! You lost all of your tickets!");
  140.         killed.getInventory().clear();
  141.     }
  142.  
  143.    
  144.     private void LoadSlimeSlapPlayers(){
  145.         log.info("BUMP");
  146.         for (SlimeSlapPlayer p : players){
  147.             log.info(String.format("Loading Slime Slap player for %s", p.getUUID()));
  148.             SlimeSlapPlayer.LoadSlimeSlapPlayer(p.getUUID());
  149.         }
  150.         for (Player p : Bukkit.getOnlinePlayers()){
  151.             if (HasSlimeSlapPlayer(p)) continue;
  152.             else if (SlimeSlapPlayer.hasSavedPlayer(p.getUniqueId())){
  153.                 SlimeSlapPlayer.LoadSlimeSlapPlayer(p.getUniqueId());
  154.                 log.info(String.format("%s has a saved Slime Slap Player that will be loaded", p.getName()));
  155.             } else{
  156.                 new SlimeSlapPlayer(p.getUniqueId());
  157.                 log.info(String.format("%s does not have a Slime Slap Player instance, a new one has been created", p.getName()));
  158.             }
  159.         }
  160.     }
  161.    
  162.     private void InitializeSlimeSlapper(){
  163.         ItemMeta meta = SlimeSlapper.getItemMeta();
  164.         meta.setDisplayName(ChatColor.AQUA + "Slime Slapper");
  165.         meta.addEnchant(Enchantment.KNOCKBACK, 1337, true);
  166.        
  167.         SlimeSlapper.setItemMeta(meta);
  168.     }
  169.    
  170.     public static boolean HasSlimeSlapPlayer(Player player){
  171.        
  172.  
  173.        
  174.         for (int i = 0; i < players.size(); i++){
  175.            
  176.             if(players.get(i).getPlayer().equals(player)){
  177.                 return true;
  178.             }
  179.         }
  180.         if (pl.getConfig().contains(player.getUniqueId().toString())){
  181.            
  182.             return true;
  183.         }
  184.         return false;
  185.     }
  186.    
  187.     public static boolean HasSlimeSlapPlayer(UUID p){
  188.         for (SlimeSlapPlayer player : players){
  189.             if (player.getUUID().equals(p)){
  190.                 return true;
  191.             }
  192.         }
  193.         return false;
  194.     }
  195.    
  196.     public static void AddMoney(Player player, double amount){
  197.         r = econ.depositPlayer(player.getName(), amount);
  198.         if (r.transactionSuccess()) {
  199.             return;
  200.         }
  201.         else {
  202.             player.sendMessage(ChatColor.RED + "An error occured when paying out your money. Please contact a server admin.");
  203.             return;
  204.         }
  205.     }
  206.    
  207.     public void InitializeRewardItem(){
  208.         ItemMeta meta = killTicket.getItemMeta();
  209.         List<String> lore = new ArrayList<String>();
  210.        
  211.         String toAdd = (ChatColor.DARK_PURPLE + "Turn this in to get money");
  212.        
  213.         lore.add(toAdd);
  214.        
  215.         meta.setLore(lore);
  216.         meta.setDisplayName(ChatColor.AQUA + "Kill Ticket");
  217.        
  218.         killTicket.setItemMeta(meta);
  219.        
  220.     }
  221.     private boolean setupPermissions() {
  222.         RegisteredServiceProvider<Permission> rsp = getServer().getServicesManager().getRegistration(Permission.class);
  223.         perms = rsp.getProvider();
  224.         return perms != null;
  225.     }
  226.     /////////////*OnEnable*/////////////
  227.     @Override
  228.     @SuppressWarnings({"unused"})
  229.     public void onEnable(){
  230.         if (!setupEconomy() ) {
  231.             getLogger().severe(String.format("[%s] - Disabled due to no Vault dependency found!", getDescription().getName()));
  232.             getServer().getPluginManager().disablePlugin(this);
  233.             return;
  234.         }
  235.         InitializeSlimeSlapper();
  236.         LoadConfig();
  237.         new PlayerListener(this);
  238.         new BlockListener(this);
  239.         InitializeRewardItem();
  240.         pl = this;
  241.         log = pl.getLogger();
  242.         PluginManager pm = getServer().getPluginManager();
  243.         setupPermissions();
  244.         DOUBLE_DECIMAL.setMinimumFractionDigits(2);
  245.         LoadSlimeSlapPlayers();
  246.         getLogger().info("Loaded SlimeSlap successfully!");
  247.         }
  248.     /////////////*END OnEnable*/////////////
  249.     @Override
  250.     public void onDisable(){
  251.        
  252.     }
  253.    
  254.     public static int getTickets(Player player){
  255.         int count = 0;
  256.         PlayerInventory inv = player.getInventory();
  257.         ItemStack[] items = inv.getContents();
  258.         for (ItemStack item : items)
  259.         {
  260.             if ((item != null) && (item.getItemMeta().equals(killTicket.getItemMeta())) && (item.getAmount() > 0))
  261.             {
  262.                 count += item.getAmount();
  263.             }
  264.         }
  265.         return count;
  266.     }
  267.    
  268.     public static void removeTickets(Player player){
  269.    
  270.     PlayerInventory inv = player.getInventory();
  271.     ItemStack[] items = inv.getContents();
  272.    
  273.     int i = 0;
  274.    
  275.    
  276.    
  277.     for (ItemStack item : items)
  278.     {
  279.         if ((item != null) && (item.getItemMeta().equals(killTicket.getItemMeta())) && (item.getAmount() > 0))
  280.         {
  281.        
  282.             player.getInventory().setItem(i, EMPTYITEM);
  283.            
  284.         }
  285.         i++;
  286.     }
  287.    
  288.        
  289.     }
  290.    
  291.     private boolean setupEconomy() {
  292.         if (getServer().getPluginManager().getPlugin("Vault") == null) {
  293.             return false;
  294.         }
  295.         RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
  296.         if (rsp == null) {
  297.             return false;
  298.         }
  299.         econ = rsp.getProvider();
  300.         return econ != null;
  301.        
  302.     }
  303.    
  304.    
  305.    
  306.     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
  307.        
  308.         // Commands that require to be executed by a player
  309.         if (sender instanceof Player){
  310.            
  311.             Player player = (Player) sender;
  312.            
  313.             //TODO: Rewrite the command system, so that it's more effective
  314.             if (cmd.getName().equalsIgnoreCase("SlimeSlap") || cmd.getName().equalsIgnoreCase("ss")){
  315.                 if (args.length == 0){
  316.                     player.sendMessage(ChatColor.GREEN + "----------SlimeSlap by TheMagzuz----------");
  317.                     player.sendMessage(ChatColor.GREEN + "Do " + ChatColor.RED + "/slimeslap help" + ChatColor.GREEN + " to see availible commands");
  318.                     player.sendMessage(ChatColor.GREEN + "Version " + this.getDescription().getVersion());
  319.                     if (getDescription().getVersion().contains("DEV")){
  320.                         player.sendMessage(ChatColor.GREEN + "This is a development version! This is for testing, not for servers!");
  321.                     }
  322.                 } else if (args.length == 1){
  323.                     if (args[0].equalsIgnoreCase("help")){
  324.                         player.performCommand("help slimeslap");
  325.                         //TODO: Add an actual help subcommand
  326.                     } else if(args[0].equalsIgnoreCase("get")){
  327.                         player.sendMessage(ChatColor.GREEN + "Your Slime Slap state is: " + SlimeSlapPlayer.getSlimeSlapPlayer(player.getUniqueId()).getInSlimeSlap());
  328.                     } else if (args[0].equalsIgnoreCase("set")){
  329.                         if (perms.has(sender, AdminPerm.getName()))
  330.                             player.sendMessage(ChatColor.RED + "Usage: /slimeslap set <player> [true:false]");
  331.                         else player.sendMessage(NoPerm);
  332.                     } else if (args[0].equalsIgnoreCase("ticket")){
  333.                         player.getInventory().addItem(killTicket);
  334.                     } else if (args[0].equalsIgnoreCase("setarena")){
  335.                         if (perms.has(player, ArenaPerm.getName())){
  336.                            
  337.                         String x = DOUBLE_DECIMAL.format(player.getLocation().getX()), y = DOUBLE_DECIMAL.format(player.getLocation().getY()), z = DOUBLE_DECIMAL.format(player.getLocation().getZ());
  338.                         getConfig().set("Arena.x", x);
  339.                         getConfig().set("Arena.y", y);
  340.                         getConfig().set("Arena.z", z);
  341.                        
  342.                         player.sendMessage(String.format(ChatColor.GREEN + "Set arena to be at X:%s, Y:%s, Z:%s", x, y, z));
  343.                        
  344.                         saveConfig();
  345.                         reloadConfig();
  346.                         } else player.sendMessage(NoPerm);
  347.                     } else if (args[0].equalsIgnoreCase("getarena")){
  348.                         if (perms.has(player, AdminPerm.getName())){
  349.                         player.sendMessage(String.format("%s, %s, %s", config.getString("Arena.x"), config.getString("Arena.y"), config.getString("Arena.z")));
  350.                             }
  351.                         } else if (args[0].equalsIgnoreCase("setspawn")){
  352.                                 if (perms.has(player, AdminPerm.getName())){
  353.                                 String x = DOUBLE_DECIMAL.format(player.getLocation().getX()), y = DOUBLE_DECIMAL.format(player.getLocation().getY()), z = DOUBLE_DECIMAL.format(player.getLocation().getZ());
  354.                                 getConfig().set("Spawn.x", x);
  355.                                 getConfig().set("Spawn.y", y+1);
  356.                                 getConfig().set("Spawn.z", z);
  357.                                
  358.                    
  359.                                
  360.                                
  361.                                
  362.                                 player.sendMessage(String.format(ChatColor.GREEN + "Set Slime Slap spawn to be at X:%s, Y:%s, Z:%s", x, y, z));
  363.                            
  364.                                 saveConfig();
  365.                                 reloadConfig();
  366.                                 } else player.sendMessage(NoPerm);
  367.                         } else if (args[0].equalsIgnoreCase("setworld")){
  368.                             String name = player.getWorld().getName();
  369.                             getConfig().set("World", name);
  370.                             saveConfig();
  371.                             reloadConfig();
  372.                         } else if (args[0].equalsIgnoreCase("setbonus")){
  373.                             if (perms.has(player, AdminPerm.getName())){
  374.                             player.sendMessage("§4Invalid usage");
  375.                             player.sendMessage("§4Proper usage is: §c/ss setbonus <bonus>");
  376.                             } else player.sendMessage(NoPerm);
  377.                         } else if (args[0].equalsIgnoreCase("tostring")){
  378.                             player.sendMessage(SlimeSlapPlayer.getSlimeSlapPlayer(player.getUniqueId()).toString());
  379.                         } else if (args[0].equalsIgnoreCase("getplayers")){
  380.                             for (SlimeSlapPlayer p : players){
  381.                                 player.sendMessage(p.toString());
  382.                             }
  383.                         }
  384.                            
  385.                     else{
  386.                         player.sendMessage(ChatColor.DARK_RED + "Unknown subcommand do " + ChatColor.RED + "/slimeslap help" + ChatColor.DARK_RED + " to see availible commands");
  387.                     }
  388.                 } else if (args.length == 2){
  389.                     if (args[0].equalsIgnoreCase("set")){
  390.                         if (perms.has(sender, AdminPerm.getName())){
  391.                         if(Bukkit.getPlayer(args[1]) != null){
  392.                             Player target = Bukkit.getPlayer(args[1]);
  393.                             SlimeSlapPlayer targetSlimeSlap;
  394.                             targetSlimeSlap = SlimeSlapPlayer.getSlimeSlapPlayer(target.getUniqueId());
  395.                             targetSlimeSlap.setInSlimeSlap(!targetSlimeSlap.getInSlimeSlap());
  396.                             player.sendMessage("Toggled the Slime Slap state of " + target.getDisplayName() + " to " + targetSlimeSlap.getInSlimeSlap());
  397.                         } else player.sendMessage(String.format("§c\'%s\' is not a valid player", args[1]));
  398.                         } else player.sendMessage(NoPerm);
  399.                     } else if(args[0].equalsIgnoreCase("add")){
  400.                         if (perms.has(sender, AdminPerm.getName())){
  401.                         if (Bukkit.getPlayer(args[1]) != null){
  402.                             Player target = Bukkit.getPlayer(args[1]);
  403.                             SlimeSlapPlayer.SetSlimeSlapPlayer(target);
  404.                             player.sendMessage(ChatColor.GREEN + "Added a Slime Slap Player to " + target.getDisplayName());
  405.                         }
  406.                         } else player.sendMessage(NoPerm);
  407.                     } else if (args[0].equalsIgnoreCase("get")){
  408.                         if (Bukkit.getPlayer(args[1]) != null){
  409.                             player.sendMessage(ChatColor.GREEN + "The Slime Slap state of " + Bukkit.getPlayer(args[1]).getName() + " is " + SlimeSlapPlayer.getSlimeSlapPlayer(Bukkit.getPlayer(args[1])).getInSlimeSlap());
  410.                         } else{
  411.                             player.sendMessage(ChatColor.RED + "Player not found");
  412.                         }
  413.                     } else if (args[0].equalsIgnoreCase("ticket")){
  414.                         if (perms.has(sender, AdminPerm.getName())){
  415.                         if (Bukkit.getPlayer(args[1]) != null){
  416.                             Bukkit.getPlayer(args[1]).getInventory().addItem(killTicket);
  417.                             player.sendMessage(String.format(ChatColor.GREEN + "Gave %s a ticket", args[1]));
  418.                         } else {
  419.                             player.sendMessage(String.format("§cPlayer \'%s\' not found!", args[1]));
  420.                         }
  421.                         } else player.sendMessage(NoPerm);
  422.                     } else if (args[0].equalsIgnoreCase("setbonus")){
  423.                         if (perms.has(player, AdminPerm.getName())){
  424.                             double set;
  425.                             try{
  426.                                 set = Double.parseDouble(args[1]);
  427.                             } catch (Exception e){
  428.                                 player.sendMessage(String.format("§c\'%s\' is not a valid number", args[1]));
  429.                                 return true;
  430.                             }
  431.                             getConfig().set("Bonus", set);
  432.                             saveConfig();
  433.                             reloadConfig();
  434.                             player.sendMessage(String.format("§aThe bonus is now §b%s", set));
  435.                         }
  436.                     }
  437.                 } else if (args.length == 3){
  438.                     if (args[0].equalsIgnoreCase("set") && Bukkit.getPlayer(args[1]) != null){
  439.                         if (perms.has(sender, AdminPerm.getName())){
  440.                         if (args[2].equalsIgnoreCase("true") || args[2].equalsIgnoreCase("false")){
  441.                         boolean set = Boolean.parseBoolean(args[2]);
  442.                        
  443.                         if (Bukkit.getPlayer(args[1]) != null){
  444.                         Player target = Bukkit.getPlayer(args[1]);
  445.                         SlimeSlapPlayer targetSlimeSlap = SlimeSlapPlayer.getSlimeSlapPlayer(target.getUniqueId());
  446.                         if(targetSlimeSlap != null){
  447.                         targetSlimeSlap.setInSlimeSlap(set);
  448.                         player.sendMessage("Set the Slime Slap state of " + target.getDisplayName() + " to " + args[2]);
  449.                         }
  450.                         } else player.sendMessage(String.format("§c\'%s\' is not a valid player", args[1]));
  451.                         } else {
  452.                             player.sendMessage(ChatColor.RED + "\'" + args[2] + "\' is not a valid value!");
  453.                         }
  454.                         } else player.sendMessage(NoPerm);
  455.                        
  456.                     } else if (args[0].equalsIgnoreCase("ticket")){
  457.                         if (perms.has(sender, AdminPerm.getName())){
  458.                         int toGive;
  459.                         try{
  460.                             toGive = Integer.parseInt(args[2]);
  461.                             } catch(NumberFormatException e){
  462.                                 player.sendMessage(String.format("§c%s is not a valid number", args[2]));
  463.                                 player.sendMessage("§cValid Usage: /slimeslap ticket [Player] [Count]");
  464.                                 return true;
  465.                             }
  466.                         Player target = Bukkit.getPlayer(args[1]);
  467.                         if (target == null){
  468.                             player.sendMessage(String.format("§c%s is not a valid player", args[1]));
  469.                             player.sendMessage("§cValid Usage: /slimeslap ticket [Player] [Count]");
  470.                             return true;
  471.                         } else {
  472.                             for (int i = 0; i < toGive; i++){
  473.                                 target.getInventory().addItem(killTicket);
  474.                             }
  475.                             player.sendMessage(String.format(ChatColor.GREEN + "Gave %s %s tickets", target.getName(), toGive));
  476.                         }
  477.                         } else player.sendMessage(NoPerm);
  478.                     }
  479.                
  480.                     }
  481.                
  482.             }
  483.  
  484.                
  485.         } else if (cmd.getName().equalsIgnoreCase("reloadconfig")){
  486.             reloadConfig();
  487.         }
  488.        
  489.        
  490.         return true;
  491.     }
  492.    
  493. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement