diff --git a/src/com/projectkorra/ProjectKorra/Ability/Ability.java b/src/com/projectkorra/ProjectKorra/Ability/Ability.java index 1669d607..07e86662 100644 --- a/src/com/projectkorra/ProjectKorra/Ability/Ability.java +++ b/src/com/projectkorra/ProjectKorra/Ability/Ability.java @@ -1,68 +1,17 @@ package com.projectkorra.ProjectKorra.Ability; -import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; - import com.projectkorra.ProjectKorra.configuration.ConfigLoadable; -/** - * Represents an {@link ConfigLoadable} Ability. - */ -public abstract class Ability implements ConfigLoadable { - - private static ConcurrentHashMap> instances = new ConcurrentHashMap<>(); - //protected static AbilityMap instances = new AbilityMap<>(); - - protected void putInstance(StockAbilities sb, UUID uuid, Ability ability) { - if (instances.containsKey(sb)) { - instances.get(sb).put(uuid, ability); - } else { - ConcurrentHashMap map = new ConcurrentHashMap<>(); - map.put(uuid, ability); - instances.put(sb, map); - } - } - - protected void removeInstance(StockAbilities sb, UUID uuid) { - if (instances.containsKey(sb)) { - if (instances.get(sb) != null) { - instances.get(sb).remove(uuid); - } - } - } - - public static ConcurrentHashMap getInstance(StockAbilities abilty) { - if (instances.containsKey(abilty)) { - return instances.get(abilty); - } - return new ConcurrentHashMap(); - } +public interface Ability extends ConfigLoadable { /** * A method to tell an Ability to start. */ - public abstract void progress(); + public void progress(); /** * A method to remove an instance of an Ability. */ - public abstract void remove(); - - /** - * Convenience method that calls {@link #progress()} for all instances. - */ - public static void progressAll(StockAbilities ability) { - for (UUID uuid : getInstance(ability).keySet()) - instances.get(ability).get(uuid).progress(); - } - - /** - * Convenience method that calls {@link #remove()} for all instances. - */ - public static void removeAll(StockAbilities ability) { - for (UUID uuid : getInstance(ability).keySet()) { - instances.get(ability).get(uuid).remove(); - } - } + public void remove(); } diff --git a/src/com/projectkorra/ProjectKorra/Ability/BaseAbility.java b/src/com/projectkorra/ProjectKorra/Ability/BaseAbility.java new file mode 100644 index 00000000..6b88cb30 --- /dev/null +++ b/src/com/projectkorra/ProjectKorra/Ability/BaseAbility.java @@ -0,0 +1,58 @@ +package com.projectkorra.ProjectKorra.Ability; + +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; + +import com.projectkorra.ProjectKorra.configuration.ConfigLoadable; + +/** + * Represents an {@link ConfigLoadable} Ability. + */ +public abstract class BaseAbility implements Ability { + + private static ConcurrentHashMap> instances = new ConcurrentHashMap<>(); + //protected static AbilityMap instances = new AbilityMap<>(); + + protected void putInstance(StockAbilities sb, UUID uuid, BaseAbility ability) { + if (instances.containsKey(sb)) { + instances.get(sb).put(uuid, ability); + } else { + ConcurrentHashMap map = new ConcurrentHashMap<>(); + map.put(uuid, ability); + instances.put(sb, map); + } + } + + protected void removeInstance(StockAbilities sb, UUID uuid) { + if (instances.containsKey(sb)) { + if (instances.get(sb) != null) { + instances.get(sb).remove(uuid); + } + } + } + + public static ConcurrentHashMap getInstance(StockAbilities abilty) { + if (instances.containsKey(abilty)) { + return instances.get(abilty); + } + return new ConcurrentHashMap(); + } + + /** + * Convenience method that calls {@link #progress()} for all instances. + */ + public static void progressAll(StockAbilities ability) { + for (UUID uuid : getInstance(ability).keySet()) + instances.get(ability).get(uuid).progress(); + } + + /** + * Convenience method that calls {@link #remove()} for all instances. + */ + public static void removeAll(StockAbilities ability) { + for (UUID uuid : getInstance(ability).keySet()) { + instances.get(ability).get(uuid).remove(); + } + } + +}