Advertisement
Guest User

Untitled

a guest
Jul 17th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.39 KB | None | 0 0
  1. package it.evermine.swordbuffs;
  2.  
  3. import org.bukkit.Bukkit;
  4. import org.bukkit.Material;
  5. import org.bukkit.Sound;
  6. import org.bukkit.entity.Player;
  7. import org.bukkit.event.EventHandler;
  8. import org.bukkit.event.Listener;
  9. import org.bukkit.event.player.PlayerItemHeldEvent;
  10. import org.bukkit.inventory.ItemStack;
  11. import org.bukkit.inventory.meta.ItemMeta;
  12. import org.bukkit.plugin.java.JavaPlugin;
  13. import org.bukkit.potion.PotionEffect;
  14. import org.bukkit.potion.PotionEffectType;
  15.  
  16. import java.util.ArrayList;
  17. import java.util.HashMap;
  18. import java.util.List;
  19.  
  20. public class SwordBuffs extends JavaPlugin implements Listener {
  21.  
  22.     @Override
  23.     public void onEnable() {
  24.         getCommand("addbuff").setExecutor(new AddBuff());
  25.         getServer().getPluginManager().registerEvents(this, this);
  26.     }
  27.  
  28.     @EventHandler
  29.     public void onHeld(PlayerItemHeldEvent e) {
  30.         ItemStack newer = e.getPlayer().getInventory().getItem(e.getNewSlot());
  31.         ItemStack old = e.getPlayer().getInventory().getItem(e.getPreviousSlot());
  32.  
  33.         int hasSword = isSword(newer) ? 1 : (isSword(old) ? 0 : -1);
  34.  
  35.         if(hasSword != -1) {
  36.             final Player p = e.getPlayer();
  37.  
  38.             if(hasSword == 1)
  39.                 sendEffectsToPlayer(p, getFastEffects(newer.getItemMeta().getLore()));
  40.             else
  41.                 removeEffectsToPlayer(p, getFastTypes(old.getItemMeta().getLore()));
  42.  
  43.             p.playSound(e.getPlayer().getLocation(), Sound.NOTE_BASS, 5, hasSword == 1 ? -5 : 5);
  44.  
  45.         }
  46.     }
  47.  
  48.     private void removeEffectsToPlayer(Player p, ArrayList<PotionEffectType> fastEffects) {
  49.         for(PotionEffectType pe : fastEffects) {
  50.             p.removePotionEffect(pe);
  51.         }
  52.     }
  53.  
  54.     public static boolean isSword(ItemStack is) {
  55.         return is != null && is.getType() == Material.DIAMOND_SWORD && is.getItemMeta() != null && is.getItemMeta().getDisplayName() != null && is.getItemMeta().getDisplayName().contains("§8[§cPowered§8]");
  56.     }
  57.  
  58. //    public ArrayList<PotionEffect> getPotions(ArrayList<String> lore) {
  59. //        ArrayList<PotionEffect> effects = new ArrayList<PotionEffect>();
  60. //
  61. //        effects.addAll(p.getActivePotionEffects());
  62. //        return effects;
  63. //    }
  64.  
  65.     private ItemStack createSword(String name, PotionEffect starter) {
  66.         ItemStack is = new ItemStack(Material.DIAMOND_SWORD, 1);
  67.         ItemMeta im = is.getItemMeta();
  68.         im.setDisplayName("§8[§cPowered§8] §7"+name+"'s Sword");
  69.  
  70.         List<String> lore = new ArrayList<>();
  71.         lore.add("§r");
  72.         lore.add("§7Enchants:");
  73.         lore.add("§8- §f"+starter.getType().getName()+" "+toRoman(starter.getAmplifier()));
  74.         lore.add("§r");
  75.         lore.add("§7Per cambiare slot alla");
  76.         lore.add("§7spada, digita §a/slotchange");
  77.  
  78.         im.setLore(lore);
  79.         is.setItemMeta(im);
  80.  
  81.         return is;
  82.     }
  83.  
  84.     public static void sendEffectsToPlayer(Player p, ArrayList<PotionEffect> types) {
  85.         for(PotionEffect po : types) {
  86.             p.addPotionEffect(po, true);
  87.         }
  88.     }
  89.  
  90.     public static ArrayList<PotionEffectType> getFastTypes(List<String> lore) {
  91.         ArrayList<PotionEffectType> effects = new ArrayList<>();
  92.  
  93.         for(int i = 2; i < lore.size() - 3; i++)
  94.             effects.add(PotionEffectType.getByName(lore.get(i).split("\\s+")[1].replace("§f", "")));
  95.         return effects;
  96.     }
  97.  
  98.     public static ArrayList<PotionEffect> getFastEffects(List<String> lore) {
  99.         ArrayList<PotionEffect> effects = new ArrayList<>();
  100.  
  101.         for(int i = 2; i < lore.size() - 3; i++) {
  102.             String[] parts = lore.get(i).split("\\s+");
  103.             effects.add(new PotionEffect(PotionEffectType.getByName(parts[1].replace("§f", "")), Integer.MAX_VALUE, toNumber(parts[2])));
  104.         }
  105.         return effects;
  106.  
  107.     }
  108.  
  109.     public static HashMap<PotionEffectType, Integer> getEffects(ItemStack is) {
  110.         HashMap<PotionEffectType, Integer> effects = new HashMap<>();
  111.         List<String> lore = new ArrayList<>();
  112.         ItemMeta im = is.getItemMeta();
  113.         lore.addAll(im.getLore());
  114.  
  115.         for(int i = 2; i < lore.size() - 3; i++) {
  116.             String[] parts = lore.get(i).split("\\s+");
  117.             effects.put(PotionEffectType.getByName(parts[1].replace("§f", "")), toNumber(parts[2]));
  118.         }
  119.  
  120.         return effects;
  121.     }
  122.  
  123.     public static void addEffect(ItemStack is, PotionEffect starter) {
  124.         List<String> lore = new ArrayList<>();
  125.         ItemMeta im = is.getItemMeta();
  126.         lore.addAll(im.getLore());
  127.         lore.add(2, "§8- §f"+starter.getType().getName()+" "+toRoman(starter.getAmplifier()));
  128.         im.setLore(lore);
  129.         is.setItemMeta(im);
  130.     }
  131.  
  132.     static void createSword(String name, ItemStack is, PotionEffect starter) {
  133.         ItemMeta im = is.getItemMeta();
  134.         im.setDisplayName("§8[§cPowered§8] §7"+name+"'s Sword");
  135.  
  136.         List<String> lore = new ArrayList<>();
  137.         lore.add("§r");
  138.         lore.add("§7Enchants:");
  139.         lore.add("§8- §f"+starter.getType().getName()+" "+toRoman(starter.getAmplifier()));
  140.         lore.add("§r");
  141.         lore.add("§7Per cambiare slot alla");
  142.         lore.add("§7spada, digita §a/slotchange");
  143.  
  144.         im.setLore(lore);
  145.         is.setItemMeta(im);
  146.     }
  147.  
  148.     private static Integer toNumber(String roman) {
  149.         return roman.replace("CM", "DCD")
  150.                 .replace("M", "DD")
  151.                 .replace("CD", "CCCC")
  152.                 .replace("D", "CCCCC")
  153.                 .replace("XC", "LXL")
  154.                 .replace("C", "LL")
  155.                 .replace("XL", "XXXX")
  156.                 .replace("L", "XXXXX")
  157.                 .replace("IX", "VIV")
  158.                 .replace("X", "VV")
  159.                 .replace("IV", "IIII")
  160.                 .replace("V", "IIIII").length();
  161.     }
  162.  
  163.     private static String toRoman(int number) {
  164.         return String.valueOf(new char[number]).replace('\0', 'I')
  165.                 .replace("IIIII", "V")
  166.                 .replace("IIII", "IV")
  167.                 .replace("VV", "X")
  168.                 .replace("VIV", "IX")
  169.                 .replace("XXXXX", "L")
  170.                 .replace("XXXX", "XL")
  171.                 .replace("LL", "C")
  172.                 .replace("LXL", "XC")
  173.                 .replace("CCCCC", "D")
  174.                 .replace("CCCC", "CD")
  175.                 .replace("DD", "M")
  176.                 .replace("DCD", "CM");
  177.     }
  178. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement