Advertisement
Guest User

ImmortalCustom Source Code

a guest
Sep 20th, 2014
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 21.59 KB | None | 0 0
  1. package me.au2001.ImmortalCustom;
  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.GameMode;
  11. import org.bukkit.Location;
  12. import org.bukkit.Material;
  13. import org.bukkit.Sound;
  14. import org.bukkit.command.Command;
  15. import org.bukkit.command.CommandSender;
  16. import org.bukkit.enchantments.Enchantment;
  17. import org.bukkit.entity.ExperienceOrb;
  18. import org.bukkit.entity.Player;
  19. import org.bukkit.event.EventHandler;
  20. import org.bukkit.event.EventPriority;
  21. import org.bukkit.event.Listener;
  22. import org.bukkit.event.block.Action;
  23. import org.bukkit.event.block.BlockBreakEvent;
  24. import org.bukkit.event.player.PlayerInteractEvent;
  25. import org.bukkit.inventory.ItemStack;
  26. import org.bukkit.plugin.Plugin;
  27. import org.bukkit.plugin.java.JavaPlugin;
  28.  
  29. import com.sk89q.worldedit.bukkit.WorldEditPlugin;
  30. import com.sk89q.worldedit.bukkit.selections.Selection;
  31.  
  32. public class ImmortalCustom extends JavaPlugin implements Listener {
  33.     HashMap<Material, Material> materials = new HashMap<Material, Material>();
  34.     Plugin WE = null;
  35.    
  36.     public void onEnable () {
  37.         getConfig().options().copyDefaults(true);
  38.         saveDefaultConfig();
  39.  
  40.         materials.put(Material.DIAMOND, Material.DIAMOND_BLOCK);
  41.         materials.put(Material.EMERALD, Material.EMERALD_BLOCK);
  42.         materials.put(Material.GOLD_INGOT, Material.GOLD_BLOCK);
  43.         materials.put(Material.IRON_INGOT, Material.IRON_BLOCK);
  44.         materials.put(Material.QUARTZ, Material.DIAMOND_BLOCK);
  45.         materials.put(Material.REDSTONE, Material.DIAMOND_BLOCK);
  46.         materials.put(Material.COAL, Material.DIAMOND_BLOCK);
  47.         materials.put(Material.LAPIS_ORE, Material.DIAMOND_BLOCK);
  48.         WE = Bukkit.getPluginManager().getPlugin("WorldEdit");
  49.        
  50.         Bukkit.getPluginManager().registerEvents(this, this);
  51.     }
  52.  
  53.     public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
  54.         if (args.length == 0) {
  55.             sender.sendMessage(ChatColor.RED + "Invalid command parameters! Use /help ImmortalCustom");
  56.         } else if (args.length >= 2 && args[0].equalsIgnoreCase("enchant")) {
  57.             if (sender instanceof Player) {
  58.                 if (sender.hasPermission("ImmortalCustom.enchant")) {
  59.                     Player player = (Player)sender;
  60.                     ItemStack item = player.getItemInHand();
  61.                     try {
  62.                         int level = Integer.parseInt(args[1]);
  63.                         item.addUnsafeEnchantment(Enchantment.LOOT_BONUS_BLOCKS, level);
  64.                     } catch (NumberFormatException e) {
  65.                         sender.sendMessage(ChatColor.RED + "Second argument must be a number!");
  66.                         return false;
  67.                     } catch (Exception e) {
  68.                         sender.sendMessage(ChatColor.RED + "Error while enchanting this item!");
  69.                         return false;
  70.                     }
  71.                     sender.sendMessage(ChatColor.AQUA + "Successfully enchanted!");
  72.                 } else {
  73.                     sender.sendMessage(ChatColor.RED + "You do not have the permissions to execute this command!");
  74.                 }
  75.             } else {
  76.                 sender.sendMessage(ChatColor.RED + "You have to be a player to execute this command!");
  77.             }
  78.         } else if (args.length >= 2 && args[0].equalsIgnoreCase("fortunelist")) {
  79.             if (sender instanceof Player) {
  80.                 if (args[1].equalsIgnoreCase("add")) {
  81.                     if (!((Player) sender).getItemInHand().getType().equals(Material.AIR)) {
  82.                         if (!getConfig().getStringList("fortuneBlocks").contains(((Player) sender).getItemInHand().getType().toString())) {
  83.                             List<String> list = getConfig().getStringList("fortuneBlocks");
  84.                             list.add(((Player) sender).getItemInHand().getType().toString());
  85.                             getConfig().set("fortuneBlocks", list);
  86.                             saveConfig();
  87.                             sender.sendMessage(ChatColor.GREEN + "Successfully added " + ((Player) sender).getItemInHand().getType().toString() + " to the fortunelist.");
  88.                         } else {
  89.                             sender.sendMessage(ChatColor.RED + "This block is already in the fortunelist.");
  90.                         }
  91.                     } else {
  92.                         sender.sendMessage(ChatColor.RED + "You must hold an item in your hand.");
  93.                     }
  94.                 } else if (args[1].equalsIgnoreCase("remove")) {
  95.                     if (!((Player) sender).getItemInHand().getType().equals(Material.AIR)) {
  96.                         if (getConfig().getStringList("fortuneBlocks").contains(((Player) sender).getItemInHand().getType().toString())) {
  97.                             List<String> list = getConfig().getStringList("fortuneBlocks");
  98.                             list.remove(((Player) sender).getItemInHand().getType().toString());
  99.                             getConfig().set("fortuneBlocks", list);
  100.                             saveConfig();
  101.                             sender.sendMessage(ChatColor.GREEN + "Successfully removed " + ((Player) sender).getItemInHand().getType().toString() + " from the fortunelist.");
  102.                         } else {
  103.                             sender.sendMessage(ChatColor.RED + "This block is not in the fortunelist.");
  104.                         }
  105.                     } else {
  106.                         sender.sendMessage(ChatColor.RED + "You must hold an item in your hand.");
  107.                     }
  108.                 } else if (args[1].equalsIgnoreCase("on")) {
  109.                     if (!getConfig().getBoolean("fortunelist")) {
  110.                         getConfig().set("fortunelist", true);
  111.                         saveConfig();
  112.                         sender.sendMessage(ChatColor.GREEN + "Successfully turned on the fortunelist.");
  113.                     } else {
  114.                         sender.sendMessage(ChatColor.RED + "The fortunelist is already turned on.");
  115.                     }
  116.                 } else if (args[1].equalsIgnoreCase("off")) {
  117.                     if (getConfig().getBoolean("fortunelist")) {
  118.                         getConfig().set("fortunelist", false);
  119.                         saveConfig();
  120.                         sender.sendMessage(ChatColor.GREEN + "Successfully turned off the fortunelist.");
  121.                     } else {
  122.                         sender.sendMessage(ChatColor.RED + "The fortunelist is already turned off.");
  123.                     }
  124.                 } else {
  125.                     sender.sendMessage(ChatColor.RED + "Invalid command parameters! Use add, remove, on or off.");
  126.                 }
  127.             } else {
  128.                 sender.sendMessage(ChatColor.RED + "You have to be a player to execute this command!");
  129.             }
  130.         } else if (args.length >= 2 && args[0].equalsIgnoreCase("pickuplist")) {
  131.             if (sender instanceof Player) {
  132.                 if (args[1].equalsIgnoreCase("add")) {
  133.                     if (!((Player) sender).getItemInHand().getType().equals(Material.AIR)) {
  134.                         if (!getConfig().getStringList("pickupBlocks").contains(((Player) sender).getItemInHand().getType().toString())) {
  135.                             List<String> list = getConfig().getStringList("pickupBlocks");
  136.                             list.add(((Player) sender).getItemInHand().getType().toString());
  137.                             getConfig().set("pickupBlocks", list);
  138.                             saveConfig();
  139.                             sender.sendMessage(ChatColor.GREEN + "Successfully added " + ((Player) sender).getItemInHand().getType().toString() + " to the pickuplist.");
  140.                         } else {
  141.                             sender.sendMessage(ChatColor.RED + "This block is already in the pickuplist.");
  142.                         }
  143.                     } else {
  144.                         sender.sendMessage(ChatColor.RED + "You must hold an item in your hand.");
  145.                     }
  146.                 } else if (args[1].equalsIgnoreCase("remove")) {
  147.                     if (!((Player) sender).getItemInHand().getType().equals(Material.AIR)) {
  148.                         if (getConfig().getStringList("pickupBlocks").contains(((Player) sender).getItemInHand().getType().toString())) {
  149.                             List<String> list = getConfig().getStringList("pickupBlocks");
  150.                             list.remove(((Player) sender).getItemInHand().getType().toString());
  151.                             getConfig().set("pickupBlocks", list);
  152.                             saveConfig();
  153.                             sender.sendMessage(ChatColor.GREEN + "Successfully removed " + ((Player) sender).getItemInHand().getType().toString() + " from the pickuplist.");
  154.                         } else {
  155.                             sender.sendMessage(ChatColor.RED + "This block is not in the pickuplist.");
  156.                         }
  157.                     } else {
  158.                         sender.sendMessage(ChatColor.RED + "You must hold an item in your hand.");
  159.                     }
  160.                 } else if (args[1].equalsIgnoreCase("on")) {
  161.                     if (!getConfig().getBoolean("pickuplist")) {
  162.                         getConfig().set("pickuplist", true);
  163.                         saveConfig();
  164.                         sender.sendMessage(ChatColor.GREEN + "Successfully turned on the pickuplist.");
  165.                     } else {
  166.                         sender.sendMessage(ChatColor.RED + "The pickuplist is already turned on.");
  167.                     }
  168.                 } else if (args[1].equalsIgnoreCase("off")) {
  169.                     if (getConfig().getBoolean("pickuplist")) {
  170.                         getConfig().set("pickuplist", false);
  171.                         saveConfig();
  172.                         sender.sendMessage(ChatColor.GREEN + "Successfully turned off the pickuplist.");
  173.                     } else {
  174.                         sender.sendMessage(ChatColor.RED + "The pickuplist is already turned off.");
  175.                     }
  176.                 } else {
  177.                     sender.sendMessage(ChatColor.RED + "Invalid command parameters! Use add, remove, on or off.");
  178.                 }
  179.             } else {
  180.                 sender.sendMessage(ChatColor.RED + "You have to be a player to execute this command!");
  181.             }
  182.         } else if (args.length >= 2 && args[0].equalsIgnoreCase("worlds")) {
  183.             if (sender instanceof Player) {
  184.                 if (args[1].equalsIgnoreCase("add")) {
  185.                     if (!getConfig().getStringList("disabledWorlds").contains(((Player) sender).getWorld().getName())) {
  186.                         List<String> list = getConfig().getStringList("activeBlocks");
  187.                         list.add(((Player) sender).getWorld().getName());
  188.                         getConfig().set("disabledWorlds", list);
  189.                         saveConfig();
  190.                         sender.sendMessage(ChatColor.GREEN + "Successfully added " + ((Player) sender).getWorld().getName() + " to the disabled worlds.");
  191.                     } else {
  192.                         sender.sendMessage(ChatColor.RED + "This world is already in the disabled worlds.");
  193.                     }
  194.                 } else if (args[1].equalsIgnoreCase("remove")) {
  195.                     if (getConfig().getStringList("disabledWorlds").contains(((Player) sender).getWorld().getName())) {
  196.                         List<String> list = getConfig().getStringList("disabledWorlds");
  197.                         list.remove(((Player) sender).getWorld().getName());
  198.                         getConfig().set("disabledWorlds", list);
  199.                         saveConfig();
  200.                         sender.sendMessage(ChatColor.GREEN + "Successfully removed " + ((Player) sender).getWorld().getName() + " from the disabled worlds.");
  201.                     } else {
  202.                         sender.sendMessage(ChatColor.RED + "This world is not in the disabled worlds.");
  203.                     }
  204.                 } else {
  205.                     sender.sendMessage(ChatColor.RED + "Invalid command parameters! Use add or remove.");
  206.                 }
  207.             } else {
  208.                 sender.sendMessage(ChatColor.RED + "You have to be a player to execute this command!");
  209.             }
  210.         } else if (args.length >= 2 && args[0].equalsIgnoreCase("multiplier")) {
  211.             try {
  212.                 getConfig().set("multiplier", Double.parseDouble(args[1]));
  213.                 saveConfig();
  214.                 sender.sendMessage(ChatColor.GREEN + "Successfully set the multiplier to " + Double.parseDouble(args[1]));
  215.             } catch (NumberFormatException e) {
  216.                 sender.sendMessage(ChatColor.RED + "Second argument must be a number!");
  217.             }
  218.         } else if (args.length >= 2 && args[0].equalsIgnoreCase("difference")) {
  219.             try {
  220.                 getConfig().set("difference", Integer.parseInt(args[1]));
  221.                 saveConfig();
  222.                 sender.sendMessage(ChatColor.GREEN + "Successfully set the difference to " + Integer.parseInt(args[1]));
  223.             } catch (NumberFormatException e) {
  224.                 sender.sendMessage(ChatColor.RED + "Second argument must be an integer!");
  225.             }
  226.         } else if (args.length >= 2 && args[0].equalsIgnoreCase("autopickup")) {
  227.             if (args[1].equalsIgnoreCase("on")) {
  228.                 if (!getConfig().getBoolean("autopickup")) {
  229.                     getConfig().set("autopickup", true);
  230.                     saveConfig();
  231.                     sender.sendMessage(ChatColor.GREEN + "Successfully turned on the autopickup.");
  232.                 } else {
  233.                     sender.sendMessage(ChatColor.RED + "The autopickup is already turned on.");
  234.                 }
  235.             } else if (args[1].equalsIgnoreCase("off")) {
  236.                 if (getConfig().getBoolean("autopickup")) {
  237.                     getConfig().set("autopickup", false);
  238.                     saveConfig();
  239.                     sender.sendMessage(ChatColor.GREEN + "Successfully turned off the autopickup.");
  240.                 } else {
  241.                     sender.sendMessage(ChatColor.RED + "The autopickup is already turned off.");
  242.                 }
  243.             } else {
  244.                 sender.sendMessage(ChatColor.RED + "Invalid command parameters! Use on or off.");
  245.             }
  246.         } else if (args.length >= 2 && args[0].equalsIgnoreCase("dropdown")) {
  247.             if (args[1].equalsIgnoreCase("on")) {
  248.                 if (!getConfig().getBoolean("dropdown")) {
  249.                     getConfig().set("dropdown", true);
  250.                     saveConfig();
  251.                     sender.sendMessage(ChatColor.GREEN + "Successfully turned on the drop downs.");
  252.                 } else {
  253.                     sender.sendMessage(ChatColor.RED + "The drop downs are already turned on.");
  254.                 }
  255.             } else if (args[1].equalsIgnoreCase("off")) {
  256.                 if (getConfig().getBoolean("dropdown")) {
  257.                     getConfig().set("dropdown", false);
  258.                     saveConfig();
  259.                     sender.sendMessage(ChatColor.GREEN + "Successfully turned off the drop downs.");
  260.                 } else {
  261.                     sender.sendMessage(ChatColor.RED + "The drop downs are already turned off.");
  262.                 }
  263.             } else {
  264.                 sender.sendMessage(ChatColor.RED + "Invalid command parameters! Use on or off.");
  265.             }
  266.         } else if (args.length >= 2 && args[0].equalsIgnoreCase("minfortune")) {
  267.             try {
  268.                 getConfig().set("minfortune", Integer.parseInt(args[1]));
  269.                 saveConfig();
  270.                 sender.sendMessage(ChatColor.GREEN + "Successfully set the minimum fortune for autosmelt to " + Integer.parseInt(args[1]));
  271.             } catch (NumberFormatException e) {
  272.                 sender.sendMessage(ChatColor.RED + "Second argument must be an integer!");
  273.             }
  274.         } else if (args[0].equalsIgnoreCase("fullmessage")) {
  275.             if (args.length > 1) {
  276.                 String message = "";
  277.                 for (String word : args) message += " " + word;
  278.                 getConfig().set("fullmessage", message.substring(1));
  279.                 saveConfig();
  280.                 sender.sendMessage(ChatColor.GREEN + "Successfully set the fullmessage.");
  281.             } else {
  282.                 getConfig().set("fullmessage", "");
  283.                 saveConfig();
  284.                 sender.sendMessage(ChatColor.GREEN + "Successfully removed the fullmessage.");
  285.             }
  286.         } else if (args.length >= 2 && args[0].equalsIgnoreCase("orestoblocks")) {
  287.             if (args[1].equalsIgnoreCase("on")) {
  288.                 if (!getConfig().getBoolean("orestoblocks")) {
  289.                     getConfig().set("orestoblocks", true);
  290.                     saveConfig();
  291.                     sender.sendMessage(ChatColor.GREEN + "Successfully turned on the orestoblocks.");
  292.                 } else {
  293.                     sender.sendMessage(ChatColor.RED + "The orestoblocks is already turned on.");
  294.                 }
  295.             } else if (args[1].equalsIgnoreCase("off")) {
  296.                 if (getConfig().getBoolean("orestoblocks")) {
  297.                     getConfig().set("orestoblocks", false);
  298.                     saveConfig();
  299.                     sender.sendMessage(ChatColor.GREEN + "Successfully turned off the orestoblocks.");
  300.                 } else {
  301.                     sender.sendMessage(ChatColor.RED + "The orestoblocks is already turned off.");
  302.                 }
  303.             } else {
  304.                 sender.sendMessage(ChatColor.RED + "Invalid command parameters! Use on or off.");
  305.             }
  306.         } else if (args[0].equalsIgnoreCase("override")) {
  307.             if (sender instanceof Player) {
  308.                 if (WE != null) {
  309.                     Selection s = ((WorldEditPlugin) WE).getSelection((Player) sender);
  310.                     if (s != null) {
  311.                         if (getConfig().getStringList("disabledWorlds").contains(s.getWorld().getName())) {
  312.                             String select = s.getMinimumPoint().getBlockX() + " " + s.getMinimumPoint().getBlockY() + " " + s.getMinimumPoint().getBlockZ();
  313.                             select += " & " + s.getMaximumPoint().getBlockX() + " " + s.getMaximumPoint().getBlockY() + " " + s.getMaximumPoint().getBlockZ();
  314.                             List<String> list = getConfig().getStringList("areas");
  315.                             if (!list.contains(select)) {
  316.                                 list.add(select);
  317.                                 getConfig().set("areas." + s.getWorld().getName(), list);
  318.                                 saveConfig();
  319.                                 sender.sendMessage(ChatColor.GREEN + "ImmortalCustom is now active in this area!");
  320.                             } else {
  321.                                 sender.sendMessage(ChatColor.RED + "ImmortalCustom is already active in this area!");
  322.                             }
  323.                         } else {
  324.                             sender.sendMessage(ChatColor.RED + "ImmortalCustom is already active in this area!");
  325.                         }
  326.                     } else {
  327.                         sender.sendMessage(ChatColor.RED + "Please select a region first.");
  328.                     }
  329.                 } else {
  330.                     sender.sendMessage(ChatColor.RED + "You must have WorldEdit installed!");
  331.                 }
  332.             } else {
  333.                 sender.sendMessage(ChatColor.RED + "You have to be a player to execute this command!");
  334.             }
  335.         } else {
  336.             sender.sendMessage(ChatColor.RED + "Invalid command parameters! Use /help ImmortalCustom");
  337.         }
  338.         return false;
  339.     }
  340.  
  341.     @EventHandler(priority=EventPriority.MONITOR)
  342.     public void onBlockBreak (BlockBreakEvent event) {
  343.         if (isActive(event.getBlock().getLocation())) {
  344.             if (!event.isCancelled() && !event.getPlayer().getGameMode().equals(GameMode.CREATIVE)) {
  345.                 ArrayList<ItemStack> drops = (ArrayList<ItemStack>) event.getBlock().getDrops();
  346.                 int exp = event.getExpToDrop();
  347.                 int fortune = 0;
  348.                 if (event.getPlayer().getItemInHand().containsEnchantment(Enchantment.LOOT_BONUS_BLOCKS)) {
  349.                     fortune = event.getPlayer().getItemInHand().getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS);
  350.                 }
  351.                 if (fortune >= getConfig().getInt("minFortune") && event.getPlayer().hasPermission("ImmortalCustom.autosmelt")) {
  352.                     for (ItemStack drop : drops) {
  353.                         if (drop.getType().equals(Material.GOLD_ORE)) {
  354.                             ItemStack newdrop = drop; newdrop.setType(Material.GOLD_INGOT);
  355.                             drops.set(drops.indexOf(drop), newdrop);
  356.                             exp += 10;
  357.                         } else if (drop.getType().equals(Material.IRON_ORE)) {
  358.                             ItemStack newdrop = drop; newdrop.setType(Material.IRON_INGOT);
  359.                             drops.set(drops.indexOf(drop), newdrop);
  360.                             exp += 7;
  361.                         }
  362.                     }
  363.                 }
  364.                 if (fortune > 0) {
  365.                     int loots = (int) (Math.floor((fortune * getConfig().getDouble("multiplier"))) + 1);
  366.                     for (ItemStack drop : drops) {
  367.                         if (getConfig().getStringList("fortuneBlocks").contains(drop.getType().toString()) || !getConfig().getBoolean("fortunelist")) {
  368.                             if (new Random().nextBoolean() || drop.getAmount() <= getConfig().getInt("difference")) {
  369.                                 ItemStack newdrop = drop;
  370.                                 drop.setAmount((drop.getAmount() * loots)+new Random().nextInt(getConfig().getInt("difference")));
  371.                                 drops.set(drops.indexOf(drop), newdrop);
  372.                             } else {
  373.                                 ItemStack newdrop = drop;
  374.                                 drop.setAmount((drop.getAmount() * loots)-new Random().nextInt(getConfig().getInt("difference")));
  375.                                 drops.set(drops.indexOf(drop), newdrop);
  376.                             }
  377.                         }
  378.                     }
  379.                 }
  380.                 for (ItemStack drop : drops) {
  381.                     if (event.getPlayer().hasPermission("ImmortalCustom.autopickup") && getConfig().getBoolean("autopickup")) {
  382.                         if (getConfig().getStringList("pickupBlocks").contains(drop.getType().toString()) || !getConfig().getBoolean("pickuplist")) {
  383.                             if (canGive(event.getPlayer(), drop)) {
  384.                                 event.getPlayer().getInventory().addItem(drop);
  385.                             } else {
  386.                                 event.getPlayer().playSound(event.getPlayer().getEyeLocation(), Sound.NOTE_PLING, 10, 10);
  387.                                 if (!getConfig().getString("fullmessage").isEmpty()) {
  388.                                     event.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("fullmessage")));
  389.                                 }
  390.                                 if (event.getPlayer().hasPermission("ImmortalCustom.dropdown") && getConfig().getBoolean("dropdown")) {
  391.                                     event.getBlock().getWorld().dropItemNaturally(event.getBlock().getLocation(), drop);
  392.                                 }
  393.                             }
  394.                         } else {
  395.                             event.getBlock().getWorld().dropItemNaturally(event.getBlock().getLocation(), drop);
  396.                         }
  397.                     } else {
  398.                         event.getBlock().getWorld().dropItemNaturally(event.getBlock().getLocation(), drop);
  399.                     }
  400.                 }
  401.                 if (exp > 0) {
  402.                     if (event.getPlayer().hasPermission("ImmortalCustom.autopickup") && getConfig().getBoolean("autopickup")) {
  403.                         event.getPlayer().giveExp(exp);
  404.                     } else {
  405.                         event.getBlock().getWorld().spawn(event.getBlock().getLocation(), ExperienceOrb.class).setExperience(exp);
  406.                     }
  407.                 }
  408.                 event.getBlock().setType(Material.AIR);
  409.                 event.setCancelled(true);
  410.             }
  411.         }
  412.     }
  413.    
  414.     @SuppressWarnings("deprecation")
  415.     @EventHandler
  416.     public void onPlayerInteract (PlayerInteractEvent event) {
  417.         if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK) || event.getAction().equals(Action.RIGHT_CLICK_AIR)) {
  418.             if (event.getPlayer().hasPermission("ImmortalCustom.orestoblocks") && getConfig().getBoolean("orestoblocks")) {
  419.                 if (event.getPlayer().isSneaking()) {
  420.                     for (Material material : materials.keySet()) {
  421.                         if (event.getPlayer().getInventory().all(material).keySet().size() > 0) {
  422.                             int ores = 0;
  423.                             for (Integer slot : event.getPlayer().getInventory().all(material).keySet()) {
  424.                                 ores += event.getPlayer().getInventory().getItem(slot).getAmount();
  425.                             }
  426.                             int blocks = ores/9;
  427.                             event.getPlayer().getInventory().remove(material);
  428.                             if (ores%9 > 0) {
  429.                                 event.getPlayer().getInventory().addItem(new ItemStack(material, ores%9));
  430.                             }
  431.                             event.getPlayer().getInventory().addItem(new ItemStack(materials.get(material), blocks));
  432.                         }
  433.                     }
  434.                     event.getPlayer().updateInventory();
  435.                 }
  436.             }
  437.         }
  438.     }
  439.    
  440.     public boolean isActive (Location loc) {
  441.         if (!getConfig().getStringList("disabledWorlds").contains(loc.getWorld().getName())) {
  442.             return true;
  443.         } else if (getConfig().isSet("areas." + loc.getWorld().getName())) {
  444.             for (String select : getConfig().getStringList("areas." + loc.getWorld().getName())) {
  445.                 if (select.matches("\\-?[0-9]+ \\-?[0-9]+ \\-?[0-9]+ & \\-?[0-9]+ \\-?[0-9]+ \\-?[0-9]+")) {
  446.                     String[] pos1 = select.split(" & ")[0].split(" ");
  447.                     String[] pos2 = select.split(" & ")[1].split(" ");
  448.                     if (loc.getX() >= Integer.parseInt(pos1[0]) && loc.getY() >= Integer.parseInt(pos1[1]) && loc.getZ() >= Integer.parseInt(pos1[2])) {
  449.                         if (loc.getX() <= Integer.parseInt(pos2[0]) && loc.getY() <= Integer.parseInt(pos2[1]) && loc.getZ() <= Integer.parseInt(pos2[2])) {
  450.                             return true;
  451.                         }
  452.                     }
  453.                 }
  454.             }
  455.         }
  456.         return false;
  457.     }
  458.  
  459.     public boolean canGive (Player player, ItemStack item) {
  460.         if (player.getInventory().firstEmpty() > -1) {
  461.             return true;
  462.         }
  463.         if (item.getType().getMaxStackSize() > 1) {
  464.             HashMap<Integer, ? extends ItemStack> items = player.getInventory().all(item.getType());
  465.             int space = 0;
  466.             for (ItemStack slot : items.values()) {
  467.                 space += item.getType().getMaxStackSize()-slot.getAmount();
  468.                 if (space >= item.getAmount()) {
  469.                     return true;
  470.                 }
  471.             }
  472.         }
  473.         return false;
  474.     }
  475. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement