Advertisement
Cool_boy21

plugin

Sep 18th, 2017
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.44 KB | None | 0 0
  1. public static void parse(ConfigurationSection config) {
  2.         for (String key : config.getKeys(false)) {
  3.             ConfigurationSection section = config.getConfigurationSection(key);
  4.             Map<ItemStack, Double> stacks = new HashMap<>();
  5.             for (Map.Entry<String, Object> entr : section.getValues(false).entrySet()) {
  6.                 ConfigurationSection dir = section.getConfigurationSection(entr.getKey());
  7.  
  8.                 double chance = dir.getDouble("chance", 0);
  9.  
  10.                 String material = dir.getString("material", "stone").toUpperCase();
  11.                 int amount = dir.getInt("amount", 1);
  12.                
  13.                 int damage = dir.getInt("damage", 0);
  14.                
  15.                 Material mater;
  16.                 try {
  17.                     mater = Material.valueOf(material);
  18.                 } catch (IllegalArgumentException ex) {
  19.                     LobbyPvP.log.warning("Can't find material " + material);
  20.                     mater = Material.STONE;
  21.                 }
  22.                 ItemStack stack = new ItemStack(mater, amount, (short) damage);
  23.                 if (dir.isString("name")) {
  24.                     String stackName = dir.getString("name");
  25.                     stack = ItemUtil.setName(stack, stackName);
  26.                 }
  27.                 if (dir.isList("lore")) {
  28.                     List<String> stackLore = dir.getStringList("lore");
  29.                     stack = ItemUtil.setLore(stack, stackLore);
  30.                 }
  31.  
  32.                 if (dir.isConfigurationSection("enchantments")) {
  33.                     Map<String, Object> enchant = dir.getConfigurationSection("enchantments").getValues(false);
  34.                     for (Map.Entry<String, Object> entry : enchant.entrySet()) {
  35.                         Enchantment ench = Enchantment.getByName(entry.getKey().toUpperCase());
  36.                         if (ench != null) {
  37.                             int enchLvl = (int) entry.getValue();
  38.                             stack.addUnsafeEnchantment(ench, enchLvl);
  39.                         }
  40.                     }
  41.                 }
  42.                 if (material.equals("ENCHANTED_BOOK") && dir.isConfigurationSection("bookEnchant")) {
  43.                     Map<String, Object> bookEnchant = dir.getConfigurationSection("bookEnchant").getValues(false);
  44.                     EnchantmentStorageMeta meta = (EnchantmentStorageMeta) stack.getItemMeta();
  45.                     for (Map.Entry<String, Object> entry : bookEnchant.entrySet()) {
  46.                         Enchantment ench = Enchantment.getByName(entry.getKey().toUpperCase());
  47.                         int enchLvl = (int) entry.getValue();
  48.                         meta.addStoredEnchant(ench, enchLvl, true);
  49.                     }
  50.                     stack.setItemMeta(meta);
  51.                 }
  52.                 if (((mater.toString().contains("POTION")) || mater.toString().contains("TIPPED")) && dir.isConfigurationSection("potion")) {
  53.                     ConfigurationSection potions = dir.getConfigurationSection("potion");
  54.                     PotionMeta meta = (PotionMeta) stack.getItemMeta();
  55.                     if (potions.getBoolean("many_effects", false)) {
  56.                         for (String pkey : potions.getKeys(false)) {
  57.                             ConfigurationSection p = potions.getConfigurationSection(pkey);
  58.                             PotionEffect effect = getEffectFromConfig(p);
  59.                             meta.addCustomEffect(effect, true);
  60.                         }
  61.                     } else {
  62.                         PotionEffect effect = getEffectFromConfig(potions);
  63.                         meta.addCustomEffect(effect, true);
  64.                     }
  65.                     List<Integer> bcolor = potions.getIntegerList("bottle_color");
  66.                     if (!bcolor.isEmpty()) {
  67.                         meta.setColor(readColor(bcolor));
  68.                     } else {
  69.                         meta.setColor(meta.getCustomEffects().get(0).getType().getColor());
  70.                     }
  71.                     stack.setItemMeta(meta);
  72.                 }
  73.  
  74.                 stacks.put(stack, chance);
  75.             }
  76.             ItemSet.create(key, stacks);
  77.         }
  78.     }
  79.  
  80.     private static Color readColor(List<Integer> rgb) {
  81.         Color color;
  82.         if (rgb != null && rgb.size() == 3) {
  83.             color = Color.fromRGB(rgb.get(0), rgb.get(1), rgb.get(2));
  84.         } else {
  85.             color = Color.WHITE;
  86.         }
  87.         return color;
  88.     }
  89.  
  90.     private static PotionEffect getEffectFromConfig(ConfigurationSection section) {
  91.         String eff = section.getString("effect", "SPEED");
  92.         PotionEffectType effect;
  93.         try {
  94.             effect = PotionEffectType.getByName(eff.toUpperCase());
  95.         } catch (IllegalArgumentException ex) {
  96.             LobbyPvP.log.warning("Can't find potion " + eff);
  97.             effect = PotionEffectType.SPEED;
  98.         }
  99.         int duration = section.getInt("duration", effect.isInstant() ? 1 : 20 * 30);
  100.         int amplifier = section.getInt("amplifier", 1) - 1;
  101.         boolean particles = section.getBoolean("particles", true);
  102.         List<Integer> scolor = section.getIntegerList("color");
  103.         if (scolor == null) {
  104.             return new PotionEffect(effect, duration, amplifier, false, particles);
  105.         } else {
  106.             Color color = readColor(scolor);
  107.             return new PotionEffect(effect, duration, amplifier, particles, particles, color);
  108.         }
  109.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement