mirror of
https://github.com/TotalFreedomMC/TF-ProjectKorra.git
synced 2025-02-11 11:40:40 +00:00
Rename Ability to BaseAbility, Create interface Ability
This commit is contained in:
parent
a3e7ece301
commit
425bc5a106
2 changed files with 61 additions and 54 deletions
|
@ -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<StockAbilities, ConcurrentHashMap<UUID, Ability>> instances = new ConcurrentHashMap<>();
|
||||
//protected static AbilityMap<Ability> instances = new AbilityMap<>();
|
||||
|
||||
protected void putInstance(StockAbilities sb, UUID uuid, Ability ability) {
|
||||
if (instances.containsKey(sb)) {
|
||||
instances.get(sb).put(uuid, ability);
|
||||
} else {
|
||||
ConcurrentHashMap<UUID, Ability> 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<UUID, Ability> getInstance(StockAbilities abilty) {
|
||||
if (instances.containsKey(abilty)) {
|
||||
return instances.get(abilty);
|
||||
}
|
||||
return new ConcurrentHashMap<UUID, Ability>();
|
||||
}
|
||||
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();
|
||||
|
||||
}
|
||||
|
|
58
src/com/projectkorra/ProjectKorra/Ability/BaseAbility.java
Normal file
58
src/com/projectkorra/ProjectKorra/Ability/BaseAbility.java
Normal file
|
@ -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<StockAbilities, ConcurrentHashMap<UUID, BaseAbility>> instances = new ConcurrentHashMap<>();
|
||||
//protected static AbilityMap<Ability> instances = new AbilityMap<>();
|
||||
|
||||
protected void putInstance(StockAbilities sb, UUID uuid, BaseAbility ability) {
|
||||
if (instances.containsKey(sb)) {
|
||||
instances.get(sb).put(uuid, ability);
|
||||
} else {
|
||||
ConcurrentHashMap<UUID, BaseAbility> 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<UUID, BaseAbility> getInstance(StockAbilities abilty) {
|
||||
if (instances.containsKey(abilty)) {
|
||||
return instances.get(abilty);
|
||||
}
|
||||
return new ConcurrentHashMap<UUID, BaseAbility>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue