Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package it.evermine.swordbuffs;
- import org.bukkit.Bukkit;
- import org.bukkit.Material;
- import org.bukkit.Sound;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.player.PlayerItemHeldEvent;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.meta.ItemMeta;
- import org.bukkit.plugin.java.JavaPlugin;
- import org.bukkit.potion.PotionEffect;
- import org.bukkit.potion.PotionEffectType;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- public class SwordBuffs extends JavaPlugin implements Listener {
- @Override
- public void onEnable() {
- getCommand("addbuff").setExecutor(new AddBuff());
- getServer().getPluginManager().registerEvents(this, this);
- }
- @EventHandler
- public void onHeld(PlayerItemHeldEvent e) {
- ItemStack newer = e.getPlayer().getInventory().getItem(e.getNewSlot());
- ItemStack old = e.getPlayer().getInventory().getItem(e.getPreviousSlot());
- int hasSword = isSword(newer) ? 1 : (isSword(old) ? 0 : -1);
- if(hasSword != -1) {
- final Player p = e.getPlayer();
- if(hasSword == 1)
- sendEffectsToPlayer(p, getFastEffects(newer.getItemMeta().getLore()));
- else
- removeEffectsToPlayer(p, getFastTypes(old.getItemMeta().getLore()));
- p.playSound(e.getPlayer().getLocation(), Sound.NOTE_BASS, 5, hasSword == 1 ? -5 : 5);
- }
- }
- private void removeEffectsToPlayer(Player p, ArrayList<PotionEffectType> fastEffects) {
- for(PotionEffectType pe : fastEffects) {
- p.removePotionEffect(pe);
- }
- }
- public static boolean isSword(ItemStack is) {
- return is != null && is.getType() == Material.DIAMOND_SWORD && is.getItemMeta() != null && is.getItemMeta().getDisplayName() != null && is.getItemMeta().getDisplayName().contains("§8[§cPowered§8]");
- }
- // public ArrayList<PotionEffect> getPotions(ArrayList<String> lore) {
- // ArrayList<PotionEffect> effects = new ArrayList<PotionEffect>();
- //
- // effects.addAll(p.getActivePotionEffects());
- // return effects;
- // }
- private ItemStack createSword(String name, PotionEffect starter) {
- ItemStack is = new ItemStack(Material.DIAMOND_SWORD, 1);
- ItemMeta im = is.getItemMeta();
- im.setDisplayName("§8[§cPowered§8] §7"+name+"'s Sword");
- List<String> lore = new ArrayList<>();
- lore.add("§r");
- lore.add("§7Enchants:");
- lore.add("§8- §f"+starter.getType().getName()+" "+toRoman(starter.getAmplifier()));
- lore.add("§r");
- lore.add("§7Per cambiare slot alla");
- lore.add("§7spada, digita §a/slotchange");
- im.setLore(lore);
- is.setItemMeta(im);
- return is;
- }
- public static void sendEffectsToPlayer(Player p, ArrayList<PotionEffect> types) {
- for(PotionEffect po : types) {
- p.addPotionEffect(po, true);
- }
- }
- public static ArrayList<PotionEffectType> getFastTypes(List<String> lore) {
- ArrayList<PotionEffectType> effects = new ArrayList<>();
- for(int i = 2; i < lore.size() - 3; i++)
- effects.add(PotionEffectType.getByName(lore.get(i).split("\\s+")[1].replace("§f", "")));
- return effects;
- }
- public static ArrayList<PotionEffect> getFastEffects(List<String> lore) {
- ArrayList<PotionEffect> effects = new ArrayList<>();
- for(int i = 2; i < lore.size() - 3; i++) {
- String[] parts = lore.get(i).split("\\s+");
- effects.add(new PotionEffect(PotionEffectType.getByName(parts[1].replace("§f", "")), Integer.MAX_VALUE, toNumber(parts[2])));
- }
- return effects;
- }
- public static HashMap<PotionEffectType, Integer> getEffects(ItemStack is) {
- HashMap<PotionEffectType, Integer> effects = new HashMap<>();
- List<String> lore = new ArrayList<>();
- ItemMeta im = is.getItemMeta();
- lore.addAll(im.getLore());
- for(int i = 2; i < lore.size() - 3; i++) {
- String[] parts = lore.get(i).split("\\s+");
- effects.put(PotionEffectType.getByName(parts[1].replace("§f", "")), toNumber(parts[2]));
- }
- return effects;
- }
- public static void addEffect(ItemStack is, PotionEffect starter) {
- List<String> lore = new ArrayList<>();
- ItemMeta im = is.getItemMeta();
- lore.addAll(im.getLore());
- lore.add(2, "§8- §f"+starter.getType().getName()+" "+toRoman(starter.getAmplifier()));
- im.setLore(lore);
- is.setItemMeta(im);
- }
- static void createSword(String name, ItemStack is, PotionEffect starter) {
- ItemMeta im = is.getItemMeta();
- im.setDisplayName("§8[§cPowered§8] §7"+name+"'s Sword");
- List<String> lore = new ArrayList<>();
- lore.add("§r");
- lore.add("§7Enchants:");
- lore.add("§8- §f"+starter.getType().getName()+" "+toRoman(starter.getAmplifier()));
- lore.add("§r");
- lore.add("§7Per cambiare slot alla");
- lore.add("§7spada, digita §a/slotchange");
- im.setLore(lore);
- is.setItemMeta(im);
- }
- private static Integer toNumber(String roman) {
- return roman.replace("CM", "DCD")
- .replace("M", "DD")
- .replace("CD", "CCCC")
- .replace("D", "CCCCC")
- .replace("XC", "LXL")
- .replace("C", "LL")
- .replace("XL", "XXXX")
- .replace("L", "XXXXX")
- .replace("IX", "VIV")
- .replace("X", "VV")
- .replace("IV", "IIII")
- .replace("V", "IIIII").length();
- }
- private static String toRoman(int number) {
- return String.valueOf(new char[number]).replace('\0', 'I')
- .replace("IIIII", "V")
- .replace("IIII", "IV")
- .replace("VV", "X")
- .replace("VIV", "IX")
- .replace("XXXXX", "L")
- .replace("XXXX", "XL")
- .replace("LL", "C")
- .replace("LXL", "XC")
- .replace("CCCCC", "D")
- .replace("CCCC", "CD")
- .replace("DD", "M")
- .replace("DCD", "CM");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement