summaryrefslogtreewikicommitdiff
path: root/src/main/java/dev/tylerm/khs/configuration/Items.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/dev/tylerm/khs/configuration/Items.java')
-rw-r--r--src/main/java/dev/tylerm/khs/configuration/Items.java220
1 files changed, 220 insertions, 0 deletions
diff --git a/src/main/java/dev/tylerm/khs/configuration/Items.java b/src/main/java/dev/tylerm/khs/configuration/Items.java
new file mode 100644
index 0000000..af8216d
--- /dev/null
+++ b/src/main/java/dev/tylerm/khs/configuration/Items.java
@@ -0,0 +1,220 @@
+package dev.tylerm.khs.configuration;
+
+import com.cryptomorin.xseries.XItemStack;
+import dev.tylerm.khs.Main;
+import org.bukkit.Bukkit;
+import org.bukkit.Material;
+import org.bukkit.configuration.ConfigurationSection;
+import org.bukkit.configuration.file.YamlConfiguration;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.potion.PotionEffect;
+import org.bukkit.potion.PotionEffectType;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Items {
+
+ public static List<ItemStack> HIDER_ITEMS, SEEKER_ITEMS;
+ public static ItemStack
+ HIDER_HELM, SEEKER_HELM,
+ HIDER_CHEST, SEEKER_CHEST,
+ HIDER_LEGS, SEEKER_LEGS,
+ HIDER_BOOTS, SEEKER_BOOTS;
+
+ public static List<PotionEffect> HIDER_EFFECTS, SEEKER_EFFECTS;
+
+ public static void loadItems() {
+
+ ConfigManager manager = ConfigManager.create("items.yml");
+
+ SEEKER_ITEMS = new ArrayList<>();
+ SEEKER_HELM = null;
+ SEEKER_CHEST = null;
+ SEEKER_LEGS = null;
+ SEEKER_BOOTS = null;
+
+ ConfigurationSection SeekerItems = manager.getConfigurationSection("items.seeker");
+
+ for (int i = 0; i < 9; i++) {
+ ConfigurationSection section = SeekerItems.getConfigurationSection(String.valueOf(i));
+ if (section == null) {
+ SEEKER_ITEMS.add(null);
+ continue;
+ }
+ ItemStack item = createItem(section);
+ SEEKER_ITEMS.add(item);
+ }
+
+ ConfigurationSection SeekerHelmet = SeekerItems.getConfigurationSection("helmet");
+ if (SeekerHelmet != null) {
+ ItemStack item = createItem(SeekerHelmet);
+ if (item != null) {
+ SEEKER_HELM = item;
+ }
+ }
+
+ ConfigurationSection SeekerChestplate = SeekerItems.getConfigurationSection("chestplate");
+ if (SeekerChestplate != null) {
+ ItemStack item = createItem(SeekerChestplate);
+ if (item != null) {
+ SEEKER_CHEST = item;
+ }
+ }
+
+ ConfigurationSection SeekerLeggings = SeekerItems.getConfigurationSection("leggings");
+ if (SeekerLeggings != null) {
+ ItemStack item = createItem(SeekerLeggings);
+ if (item != null) {
+ SEEKER_LEGS = item;
+ }
+ }
+
+ ConfigurationSection SeekerBoots = SeekerItems.getConfigurationSection("boots");
+ if (SeekerBoots != null) {
+ ItemStack item = createItem(SeekerBoots);
+ if (item != null) {
+ SEEKER_BOOTS = item;
+ }
+ }
+
+ HIDER_ITEMS = new ArrayList<>();
+ HIDER_HELM = null;
+ HIDER_CHEST = null;
+ HIDER_LEGS = null;
+ HIDER_BOOTS = null;
+
+ ConfigurationSection HiderItems = manager.getConfigurationSection("items.hider");
+
+ for (int i = 0; i < 9; i++) {
+ ConfigurationSection section = HiderItems.getConfigurationSection(String.valueOf(i));
+ if (section == null) {
+ HIDER_ITEMS.add(null);
+ continue;
+ }
+ ItemStack item = createItem(section);
+ HIDER_ITEMS.add(item);
+ }
+
+ ConfigurationSection HiderHelmet = HiderItems.getConfigurationSection("helmet");
+ if (HiderHelmet != null) {
+ ItemStack item = createItem(HiderHelmet);
+ if (item != null) {
+ HIDER_HELM = item;
+ }
+ }
+
+ ConfigurationSection HiderChestplate = HiderItems.getConfigurationSection("chestplate");
+ if (HiderChestplate != null) {
+ ItemStack item = createItem(HiderChestplate);
+ if (item != null) {
+ HIDER_CHEST = item;
+ }
+ }
+
+ ConfigurationSection HiderLeggings = HiderItems.getConfigurationSection("leggings");
+ if (HiderLeggings != null) {
+ ItemStack item = createItem(HiderLeggings);
+ if (item != null) {
+ HIDER_LEGS = item;
+ }
+ }
+
+ ConfigurationSection HiderBoots = HiderItems.getConfigurationSection("boots");
+ if (HiderBoots != null) {
+ ItemStack item = createItem(HiderBoots);
+ if (item != null) {
+ HIDER_BOOTS = item;
+ }
+ }
+
+ SEEKER_EFFECTS = new ArrayList<>();
+ ConfigurationSection SeekerEffects = manager.getConfigurationSection("effects.seeker");
+
+ int i = 1;
+ while (true) {
+ ConfigurationSection section = SeekerEffects.getConfigurationSection(String.valueOf(i));
+ if (section == null) break;
+ PotionEffect effect = getPotionEffect(section);
+ if (effect != null) SEEKER_EFFECTS.add(effect);
+ i++;
+ }
+
+ HIDER_EFFECTS = new ArrayList<>();
+ ConfigurationSection HiderEffects = manager.getConfigurationSection("effects.hider");
+ i = 1;
+ while (true) {
+ ConfigurationSection section = HiderEffects.getConfigurationSection(String.valueOf(i));
+ if (section == null) break;
+ PotionEffect effect = getPotionEffect(section);
+ if (effect != null) HIDER_EFFECTS.add(effect);
+ i++;
+ }
+ }
+
+ private static ItemStack createItem(ConfigurationSection item) {
+ ConfigurationSection config = new YamlConfiguration().createSection("temp");
+ String material = item.getString("material").toUpperCase();
+ boolean splash = false;
+ if (!Main.getInstance().supports(9)) {
+ if (material.contains("POTION")) {
+ config.set("level", 1);
+ }
+ if (material.equalsIgnoreCase("SPLASH_POTION") || material.equalsIgnoreCase("LINGERING_POTION")) {
+ material = "POTION";
+ splash = true;
+ }
+ }
+ config.set("name", item.getString("name"));
+ config.set("material", material);
+ config.set("enchants", item.getConfigurationSection("enchantments"));
+ config.set("unbreakable", item.getBoolean("unbreakable"));
+ if (Main.getInstance().supports(14)) {
+ if (item.contains("model-data")) {
+ config.set("model-data", item.getInt("model-data"));
+ }
+ }
+ if (item.isSet("lore"))
+ config.set("lore", item.getStringList("lore"));
+ if (material.equalsIgnoreCase("POTION") || material.equalsIgnoreCase("SPLASH_POTION") || material.equalsIgnoreCase("LINGERING_POTION"))
+ config.set("base-effect", String.format("%s,%s,%s", item.getString("type"), false, splash));
+ ItemStack stack = XItemStack.deserialize(config);
+ int amt = item.getInt("amount");
+ if (amt < 1) amt = 1;
+ stack.setAmount(amt);
+ if (stack.getData().getItemType() == Material.AIR) return null;
+ return stack;
+ }
+
+ private static PotionEffect getPotionEffect(ConfigurationSection item) {
+ String type = item.getString("type");
+ if (type == null) return null;
+ if (PotionEffectType.getByName(type.toUpperCase()) == null) return null;
+ return new PotionEffect(
+ PotionEffectType.getByName(type.toUpperCase()),
+ item.getInt("duration"),
+ item.getInt("amplifier"),
+ item.getBoolean("ambient"),
+ item.getBoolean("particles")
+ );
+ }
+
+ public static boolean matchItem(ItemStack stack){
+ for(ItemStack check : HIDER_ITEMS)
+ if(equals(stack,check)) return true;
+ for(ItemStack check : SEEKER_ITEMS)
+ if(equals(stack,check)) return true;
+ return false;
+ }
+
+ private static boolean equals(ItemStack a, ItemStack b) {
+ if (a == null || b == null) {
+ return false;
+ } else if (a == b) {
+ return true;
+ } else {
+ return a.getType() == b.getType() && a.hasItemMeta() == b.hasItemMeta() && (!a.hasItemMeta() || Bukkit.getItemFactory().equals(a.getItemMeta(), b.getItemMeta()));
+ }
+ }
+
+}