From bb59140616a3c1e70dd15913c83b79bcf13c6cc6 Mon Sep 17 00:00:00 2001 From: jojo Date: Sun, 27 Sep 2020 16:45:59 +0200 Subject: [PATCH] Add Support / Missile Item split --- src/de/steamwar/misslewars/Config.java | 8 +++- src/de/steamwar/misslewars/items/Missile.java | 5 +++ .../misslewars/items/SpecialItem.java | 40 ++++++++++++++----- 3 files changed, 40 insertions(+), 13 deletions(-) diff --git a/src/de/steamwar/misslewars/Config.java b/src/de/steamwar/misslewars/Config.java index 7807c6e..4e4ed04 100644 --- a/src/de/steamwar/misslewars/Config.java +++ b/src/de/steamwar/misslewars/Config.java @@ -48,9 +48,11 @@ public class Config { public static final int ShieldFlyTime; public static final int EndTime; - static{ + public static final double MissileChance; + + static { File configfile = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "config.yml"); - if(!configfile.exists()){ + if (!configfile.exists()) { Bukkit.getLogger().log(Level.SEVERE, "Config fehlt!"); Bukkit.shutdown(); } @@ -62,6 +64,8 @@ public class Config { ShieldFlyTime = config.getInt("ShieldFlyTime"); EndTime = config.getInt("EndTime"); + MissileChance = config.getDouble("MissileChance"); + ConfigurationSection arena = config.getConfigurationSection("Arena"); assert arena != null; ArenaMinX = arena.getInt("MinX"); diff --git a/src/de/steamwar/misslewars/items/Missile.java b/src/de/steamwar/misslewars/items/Missile.java index 2392aea..09ecb5a 100644 --- a/src/de/steamwar/misslewars/items/Missile.java +++ b/src/de/steamwar/misslewars/items/Missile.java @@ -148,6 +148,11 @@ public class Missile extends SpecialItem { return true; } + @Override + public boolean isMissile() { + return true; + } + public static void init() { File missileFolder = new File(MissileWars.getPlugin().getDataFolder(), "missiles"); if (!missileFolder.exists() || !missileFolder.canRead() || !missileFolder.isDirectory()) { diff --git a/src/de/steamwar/misslewars/items/SpecialItem.java b/src/de/steamwar/misslewars/items/SpecialItem.java index b66c04c..c4e2eaf 100644 --- a/src/de/steamwar/misslewars/items/SpecialItem.java +++ b/src/de/steamwar/misslewars/items/SpecialItem.java @@ -19,6 +19,7 @@ package de.steamwar.misslewars.items; +import de.steamwar.misslewars.Config; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; @@ -26,20 +27,30 @@ import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; public abstract class SpecialItem { private static final Random random = new Random(); - private static List items = new ArrayList<>(); + private static List supportItems = new ArrayList<>(); + private static List missileItems = new ArrayList<>(); - SpecialItem(){ - items.add(this); + SpecialItem() { + if (this.isMissile()) { + missileItems.add(this); + } else { + supportItems.add(this); + } } public abstract ItemStack getItem(); public abstract boolean handleUse(Player p); + public boolean isMissile() { + return false; + } public ItemStack createItem(Material material, String name, int amount) { return createItem(material, name, amount, new ArrayList<>()); @@ -56,16 +67,23 @@ public abstract class SpecialItem { return item; } - public static boolean handleUse(ItemStack item, Player player){ - for(SpecialItem specialItem : items){ - if(item.isSimilar(specialItem.getItem())){ - return specialItem.handleUse(player); - } + public static boolean handleUse(ItemStack item, Player player) { + return handleUse(item, player, missileItems) || handleUse(item, player, supportItems); + } + + private static boolean handleUse(ItemStack item, Player player, List items) { + for (SpecialItem specialItem : items) { + if (item.isSimilar(specialItem.getItem())) return specialItem.handleUse(player); } return false; } - public static ItemStack getRandomItem(){ - return items.get(random.nextInt(items.size())).getItem(); + public static ItemStack getRandomItem() { + if (random.nextDouble() > Config.MissileChance) { + return supportItems.get(random.nextInt(supportItems.size())).getItem(); + } else { + return missileItems.get(random.nextInt(missileItems.size())).getItem(); + } } + }