Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.au2001.ImmortalCustom;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Random;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.GameMode;
- import org.bukkit.Location;
- import org.bukkit.Material;
- import org.bukkit.Sound;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.enchantments.Enchantment;
- import org.bukkit.entity.ExperienceOrb;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.EventPriority;
- import org.bukkit.event.Listener;
- import org.bukkit.event.block.Action;
- import org.bukkit.event.block.BlockBreakEvent;
- import org.bukkit.event.player.PlayerInteractEvent;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.plugin.Plugin;
- import org.bukkit.plugin.java.JavaPlugin;
- import com.sk89q.worldedit.bukkit.WorldEditPlugin;
- import com.sk89q.worldedit.bukkit.selections.Selection;
- public class ImmortalCustom extends JavaPlugin implements Listener {
- HashMap<Material, Material> materials = new HashMap<Material, Material>();
- Plugin WE = null;
- public void onEnable () {
- getConfig().options().copyDefaults(true);
- saveDefaultConfig();
- materials.put(Material.DIAMOND, Material.DIAMOND_BLOCK);
- materials.put(Material.EMERALD, Material.EMERALD_BLOCK);
- materials.put(Material.GOLD_INGOT, Material.GOLD_BLOCK);
- materials.put(Material.IRON_INGOT, Material.IRON_BLOCK);
- materials.put(Material.QUARTZ, Material.DIAMOND_BLOCK);
- materials.put(Material.REDSTONE, Material.DIAMOND_BLOCK);
- materials.put(Material.COAL, Material.DIAMOND_BLOCK);
- materials.put(Material.LAPIS_ORE, Material.DIAMOND_BLOCK);
- WE = Bukkit.getPluginManager().getPlugin("WorldEdit");
- Bukkit.getPluginManager().registerEvents(this, this);
- }
- public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
- if (args.length == 0) {
- sender.sendMessage(ChatColor.RED + "Invalid command parameters! Use /help ImmortalCustom");
- } else if (args.length >= 2 && args[0].equalsIgnoreCase("enchant")) {
- if (sender instanceof Player) {
- if (sender.hasPermission("ImmortalCustom.enchant")) {
- Player player = (Player)sender;
- ItemStack item = player.getItemInHand();
- try {
- int level = Integer.parseInt(args[1]);
- item.addUnsafeEnchantment(Enchantment.LOOT_BONUS_BLOCKS, level);
- } catch (NumberFormatException e) {
- sender.sendMessage(ChatColor.RED + "Second argument must be a number!");
- return false;
- } catch (Exception e) {
- sender.sendMessage(ChatColor.RED + "Error while enchanting this item!");
- return false;
- }
- sender.sendMessage(ChatColor.AQUA + "Successfully enchanted!");
- } else {
- sender.sendMessage(ChatColor.RED + "You do not have the permissions to execute this command!");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "You have to be a player to execute this command!");
- }
- } else if (args.length >= 2 && args[0].equalsIgnoreCase("fortunelist")) {
- if (sender instanceof Player) {
- if (args[1].equalsIgnoreCase("add")) {
- if (!((Player) sender).getItemInHand().getType().equals(Material.AIR)) {
- if (!getConfig().getStringList("fortuneBlocks").contains(((Player) sender).getItemInHand().getType().toString())) {
- List<String> list = getConfig().getStringList("fortuneBlocks");
- list.add(((Player) sender).getItemInHand().getType().toString());
- getConfig().set("fortuneBlocks", list);
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully added " + ((Player) sender).getItemInHand().getType().toString() + " to the fortunelist.");
- } else {
- sender.sendMessage(ChatColor.RED + "This block is already in the fortunelist.");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "You must hold an item in your hand.");
- }
- } else if (args[1].equalsIgnoreCase("remove")) {
- if (!((Player) sender).getItemInHand().getType().equals(Material.AIR)) {
- if (getConfig().getStringList("fortuneBlocks").contains(((Player) sender).getItemInHand().getType().toString())) {
- List<String> list = getConfig().getStringList("fortuneBlocks");
- list.remove(((Player) sender).getItemInHand().getType().toString());
- getConfig().set("fortuneBlocks", list);
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully removed " + ((Player) sender).getItemInHand().getType().toString() + " from the fortunelist.");
- } else {
- sender.sendMessage(ChatColor.RED + "This block is not in the fortunelist.");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "You must hold an item in your hand.");
- }
- } else if (args[1].equalsIgnoreCase("on")) {
- if (!getConfig().getBoolean("fortunelist")) {
- getConfig().set("fortunelist", true);
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully turned on the fortunelist.");
- } else {
- sender.sendMessage(ChatColor.RED + "The fortunelist is already turned on.");
- }
- } else if (args[1].equalsIgnoreCase("off")) {
- if (getConfig().getBoolean("fortunelist")) {
- getConfig().set("fortunelist", false);
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully turned off the fortunelist.");
- } else {
- sender.sendMessage(ChatColor.RED + "The fortunelist is already turned off.");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "Invalid command parameters! Use add, remove, on or off.");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "You have to be a player to execute this command!");
- }
- } else if (args.length >= 2 && args[0].equalsIgnoreCase("pickuplist")) {
- if (sender instanceof Player) {
- if (args[1].equalsIgnoreCase("add")) {
- if (!((Player) sender).getItemInHand().getType().equals(Material.AIR)) {
- if (!getConfig().getStringList("pickupBlocks").contains(((Player) sender).getItemInHand().getType().toString())) {
- List<String> list = getConfig().getStringList("pickupBlocks");
- list.add(((Player) sender).getItemInHand().getType().toString());
- getConfig().set("pickupBlocks", list);
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully added " + ((Player) sender).getItemInHand().getType().toString() + " to the pickuplist.");
- } else {
- sender.sendMessage(ChatColor.RED + "This block is already in the pickuplist.");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "You must hold an item in your hand.");
- }
- } else if (args[1].equalsIgnoreCase("remove")) {
- if (!((Player) sender).getItemInHand().getType().equals(Material.AIR)) {
- if (getConfig().getStringList("pickupBlocks").contains(((Player) sender).getItemInHand().getType().toString())) {
- List<String> list = getConfig().getStringList("pickupBlocks");
- list.remove(((Player) sender).getItemInHand().getType().toString());
- getConfig().set("pickupBlocks", list);
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully removed " + ((Player) sender).getItemInHand().getType().toString() + " from the pickuplist.");
- } else {
- sender.sendMessage(ChatColor.RED + "This block is not in the pickuplist.");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "You must hold an item in your hand.");
- }
- } else if (args[1].equalsIgnoreCase("on")) {
- if (!getConfig().getBoolean("pickuplist")) {
- getConfig().set("pickuplist", true);
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully turned on the pickuplist.");
- } else {
- sender.sendMessage(ChatColor.RED + "The pickuplist is already turned on.");
- }
- } else if (args[1].equalsIgnoreCase("off")) {
- if (getConfig().getBoolean("pickuplist")) {
- getConfig().set("pickuplist", false);
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully turned off the pickuplist.");
- } else {
- sender.sendMessage(ChatColor.RED + "The pickuplist is already turned off.");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "Invalid command parameters! Use add, remove, on or off.");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "You have to be a player to execute this command!");
- }
- } else if (args.length >= 2 && args[0].equalsIgnoreCase("worlds")) {
- if (sender instanceof Player) {
- if (args[1].equalsIgnoreCase("add")) {
- if (!getConfig().getStringList("disabledWorlds").contains(((Player) sender).getWorld().getName())) {
- List<String> list = getConfig().getStringList("activeBlocks");
- list.add(((Player) sender).getWorld().getName());
- getConfig().set("disabledWorlds", list);
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully added " + ((Player) sender).getWorld().getName() + " to the disabled worlds.");
- } else {
- sender.sendMessage(ChatColor.RED + "This world is already in the disabled worlds.");
- }
- } else if (args[1].equalsIgnoreCase("remove")) {
- if (getConfig().getStringList("disabledWorlds").contains(((Player) sender).getWorld().getName())) {
- List<String> list = getConfig().getStringList("disabledWorlds");
- list.remove(((Player) sender).getWorld().getName());
- getConfig().set("disabledWorlds", list);
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully removed " + ((Player) sender).getWorld().getName() + " from the disabled worlds.");
- } else {
- sender.sendMessage(ChatColor.RED + "This world is not in the disabled worlds.");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "Invalid command parameters! Use add or remove.");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "You have to be a player to execute this command!");
- }
- } else if (args.length >= 2 && args[0].equalsIgnoreCase("multiplier")) {
- try {
- getConfig().set("multiplier", Double.parseDouble(args[1]));
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully set the multiplier to " + Double.parseDouble(args[1]));
- } catch (NumberFormatException e) {
- sender.sendMessage(ChatColor.RED + "Second argument must be a number!");
- }
- } else if (args.length >= 2 && args[0].equalsIgnoreCase("difference")) {
- try {
- getConfig().set("difference", Integer.parseInt(args[1]));
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully set the difference to " + Integer.parseInt(args[1]));
- } catch (NumberFormatException e) {
- sender.sendMessage(ChatColor.RED + "Second argument must be an integer!");
- }
- } else if (args.length >= 2 && args[0].equalsIgnoreCase("autopickup")) {
- if (args[1].equalsIgnoreCase("on")) {
- if (!getConfig().getBoolean("autopickup")) {
- getConfig().set("autopickup", true);
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully turned on the autopickup.");
- } else {
- sender.sendMessage(ChatColor.RED + "The autopickup is already turned on.");
- }
- } else if (args[1].equalsIgnoreCase("off")) {
- if (getConfig().getBoolean("autopickup")) {
- getConfig().set("autopickup", false);
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully turned off the autopickup.");
- } else {
- sender.sendMessage(ChatColor.RED + "The autopickup is already turned off.");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "Invalid command parameters! Use on or off.");
- }
- } else if (args.length >= 2 && args[0].equalsIgnoreCase("dropdown")) {
- if (args[1].equalsIgnoreCase("on")) {
- if (!getConfig().getBoolean("dropdown")) {
- getConfig().set("dropdown", true);
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully turned on the drop downs.");
- } else {
- sender.sendMessage(ChatColor.RED + "The drop downs are already turned on.");
- }
- } else if (args[1].equalsIgnoreCase("off")) {
- if (getConfig().getBoolean("dropdown")) {
- getConfig().set("dropdown", false);
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully turned off the drop downs.");
- } else {
- sender.sendMessage(ChatColor.RED + "The drop downs are already turned off.");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "Invalid command parameters! Use on or off.");
- }
- } else if (args.length >= 2 && args[0].equalsIgnoreCase("minfortune")) {
- try {
- getConfig().set("minfortune", Integer.parseInt(args[1]));
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully set the minimum fortune for autosmelt to " + Integer.parseInt(args[1]));
- } catch (NumberFormatException e) {
- sender.sendMessage(ChatColor.RED + "Second argument must be an integer!");
- }
- } else if (args[0].equalsIgnoreCase("fullmessage")) {
- if (args.length > 1) {
- String message = "";
- for (String word : args) message += " " + word;
- getConfig().set("fullmessage", message.substring(1));
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully set the fullmessage.");
- } else {
- getConfig().set("fullmessage", "");
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully removed the fullmessage.");
- }
- } else if (args.length >= 2 && args[0].equalsIgnoreCase("orestoblocks")) {
- if (args[1].equalsIgnoreCase("on")) {
- if (!getConfig().getBoolean("orestoblocks")) {
- getConfig().set("orestoblocks", true);
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully turned on the orestoblocks.");
- } else {
- sender.sendMessage(ChatColor.RED + "The orestoblocks is already turned on.");
- }
- } else if (args[1].equalsIgnoreCase("off")) {
- if (getConfig().getBoolean("orestoblocks")) {
- getConfig().set("orestoblocks", false);
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Successfully turned off the orestoblocks.");
- } else {
- sender.sendMessage(ChatColor.RED + "The orestoblocks is already turned off.");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "Invalid command parameters! Use on or off.");
- }
- } else if (args[0].equalsIgnoreCase("override")) {
- if (sender instanceof Player) {
- if (WE != null) {
- Selection s = ((WorldEditPlugin) WE).getSelection((Player) sender);
- if (s != null) {
- if (getConfig().getStringList("disabledWorlds").contains(s.getWorld().getName())) {
- String select = s.getMinimumPoint().getBlockX() + " " + s.getMinimumPoint().getBlockY() + " " + s.getMinimumPoint().getBlockZ();
- select += " & " + s.getMaximumPoint().getBlockX() + " " + s.getMaximumPoint().getBlockY() + " " + s.getMaximumPoint().getBlockZ();
- List<String> list = getConfig().getStringList("areas");
- if (!list.contains(select)) {
- list.add(select);
- getConfig().set("areas." + s.getWorld().getName(), list);
- saveConfig();
- sender.sendMessage(ChatColor.GREEN + "ImmortalCustom is now active in this area!");
- } else {
- sender.sendMessage(ChatColor.RED + "ImmortalCustom is already active in this area!");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "ImmortalCustom is already active in this area!");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "Please select a region first.");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "You must have WorldEdit installed!");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "You have to be a player to execute this command!");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "Invalid command parameters! Use /help ImmortalCustom");
- }
- return false;
- }
- @EventHandler(priority=EventPriority.MONITOR)
- public void onBlockBreak (BlockBreakEvent event) {
- if (isActive(event.getBlock().getLocation())) {
- if (!event.isCancelled() && !event.getPlayer().getGameMode().equals(GameMode.CREATIVE)) {
- ArrayList<ItemStack> drops = (ArrayList<ItemStack>) event.getBlock().getDrops();
- int exp = event.getExpToDrop();
- int fortune = 0;
- if (event.getPlayer().getItemInHand().containsEnchantment(Enchantment.LOOT_BONUS_BLOCKS)) {
- fortune = event.getPlayer().getItemInHand().getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS);
- }
- if (fortune >= getConfig().getInt("minFortune") && event.getPlayer().hasPermission("ImmortalCustom.autosmelt")) {
- for (ItemStack drop : drops) {
- if (drop.getType().equals(Material.GOLD_ORE)) {
- ItemStack newdrop = drop; newdrop.setType(Material.GOLD_INGOT);
- drops.set(drops.indexOf(drop), newdrop);
- exp += 10;
- } else if (drop.getType().equals(Material.IRON_ORE)) {
- ItemStack newdrop = drop; newdrop.setType(Material.IRON_INGOT);
- drops.set(drops.indexOf(drop), newdrop);
- exp += 7;
- }
- }
- }
- if (fortune > 0) {
- int loots = (int) (Math.floor((fortune * getConfig().getDouble("multiplier"))) + 1);
- for (ItemStack drop : drops) {
- if (getConfig().getStringList("fortuneBlocks").contains(drop.getType().toString()) || !getConfig().getBoolean("fortunelist")) {
- if (new Random().nextBoolean() || drop.getAmount() <= getConfig().getInt("difference")) {
- ItemStack newdrop = drop;
- drop.setAmount((drop.getAmount() * loots)+new Random().nextInt(getConfig().getInt("difference")));
- drops.set(drops.indexOf(drop), newdrop);
- } else {
- ItemStack newdrop = drop;
- drop.setAmount((drop.getAmount() * loots)-new Random().nextInt(getConfig().getInt("difference")));
- drops.set(drops.indexOf(drop), newdrop);
- }
- }
- }
- }
- for (ItemStack drop : drops) {
- if (event.getPlayer().hasPermission("ImmortalCustom.autopickup") && getConfig().getBoolean("autopickup")) {
- if (getConfig().getStringList("pickupBlocks").contains(drop.getType().toString()) || !getConfig().getBoolean("pickuplist")) {
- if (canGive(event.getPlayer(), drop)) {
- event.getPlayer().getInventory().addItem(drop);
- } else {
- event.getPlayer().playSound(event.getPlayer().getEyeLocation(), Sound.NOTE_PLING, 10, 10);
- if (!getConfig().getString("fullmessage").isEmpty()) {
- event.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("fullmessage")));
- }
- if (event.getPlayer().hasPermission("ImmortalCustom.dropdown") && getConfig().getBoolean("dropdown")) {
- event.getBlock().getWorld().dropItemNaturally(event.getBlock().getLocation(), drop);
- }
- }
- } else {
- event.getBlock().getWorld().dropItemNaturally(event.getBlock().getLocation(), drop);
- }
- } else {
- event.getBlock().getWorld().dropItemNaturally(event.getBlock().getLocation(), drop);
- }
- }
- if (exp > 0) {
- if (event.getPlayer().hasPermission("ImmortalCustom.autopickup") && getConfig().getBoolean("autopickup")) {
- event.getPlayer().giveExp(exp);
- } else {
- event.getBlock().getWorld().spawn(event.getBlock().getLocation(), ExperienceOrb.class).setExperience(exp);
- }
- }
- event.getBlock().setType(Material.AIR);
- event.setCancelled(true);
- }
- }
- }
- @SuppressWarnings("deprecation")
- @EventHandler
- public void onPlayerInteract (PlayerInteractEvent event) {
- if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK) || event.getAction().equals(Action.RIGHT_CLICK_AIR)) {
- if (event.getPlayer().hasPermission("ImmortalCustom.orestoblocks") && getConfig().getBoolean("orestoblocks")) {
- if (event.getPlayer().isSneaking()) {
- for (Material material : materials.keySet()) {
- if (event.getPlayer().getInventory().all(material).keySet().size() > 0) {
- int ores = 0;
- for (Integer slot : event.getPlayer().getInventory().all(material).keySet()) {
- ores += event.getPlayer().getInventory().getItem(slot).getAmount();
- }
- int blocks = ores/9;
- event.getPlayer().getInventory().remove(material);
- if (ores%9 > 0) {
- event.getPlayer().getInventory().addItem(new ItemStack(material, ores%9));
- }
- event.getPlayer().getInventory().addItem(new ItemStack(materials.get(material), blocks));
- }
- }
- event.getPlayer().updateInventory();
- }
- }
- }
- }
- public boolean isActive (Location loc) {
- if (!getConfig().getStringList("disabledWorlds").contains(loc.getWorld().getName())) {
- return true;
- } else if (getConfig().isSet("areas." + loc.getWorld().getName())) {
- for (String select : getConfig().getStringList("areas." + loc.getWorld().getName())) {
- if (select.matches("\\-?[0-9]+ \\-?[0-9]+ \\-?[0-9]+ & \\-?[0-9]+ \\-?[0-9]+ \\-?[0-9]+")) {
- String[] pos1 = select.split(" & ")[0].split(" ");
- String[] pos2 = select.split(" & ")[1].split(" ");
- if (loc.getX() >= Integer.parseInt(pos1[0]) && loc.getY() >= Integer.parseInt(pos1[1]) && loc.getZ() >= Integer.parseInt(pos1[2])) {
- if (loc.getX() <= Integer.parseInt(pos2[0]) && loc.getY() <= Integer.parseInt(pos2[1]) && loc.getZ() <= Integer.parseInt(pos2[2])) {
- return true;
- }
- }
- }
- }
- }
- return false;
- }
- public boolean canGive (Player player, ItemStack item) {
- if (player.getInventory().firstEmpty() > -1) {
- return true;
- }
- if (item.getType().getMaxStackSize() > 1) {
- HashMap<Integer, ? extends ItemStack> items = player.getInventory().all(item.getType());
- int space = 0;
- for (ItemStack slot : items.values()) {
- space += item.getType().getMaxStackSize()-slot.getAmount();
- if (space >= item.getAmount()) {
- return true;
- }
- }
- }
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement