ArcanumOcculta/src/main/java/app/simplexdev/arcanumocculta/api/caster/AbstractSpellBook.java

98 lines
2.2 KiB
Java

package app.simplexdev.arcanumocculta.api.caster;
import app.simplexdev.arcanumocculta.api.spell.Spell;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.SplittableRandom;
import java.util.UUID;
public abstract class AbstractSpellBook implements SpellBook
{
private final List<Spell> spells = new ArrayList<>();
@Override
public boolean hasSpell(final Spell spell)
{
return getSpells().contains(spell);
}
@Override
public List<Spell> getSpells()
{
return this.spells;
}
@Override
public void addSpell(Spell spell)
{
this.spells.add(spell);
}
@Override
public void removeSpell(Spell spell)
{
this.spells.remove(spell);
}
@Override
public Spell getSpell(String id)
{
return getSpells().stream()
.filter(spell -> spell.getId().equalsIgnoreCase(id))
.findFirst()
.orElse(getSpells().get(0));
}
public Spell getSpell(UUID uuid)
{
return getSpells().stream()
.filter(spell -> spell.getUniqueId().equals(uuid))
.findFirst()
.orElse(getSpells().get(0));
}
@Override
public Spell getSpell(int index)
{
if (index < 0 || index > getSpells().size() - 1)
return getSpells().get(0);
return getSpells().get(index);
}
@Override
public int getSpellCount()
{
return getSpells().size();
}
@Override
public void setSpell(int index, Spell spell)
{
this.spells.set(index, spell);
}
@Override
public void setSpell(String name, Spell spell)
{
this.spells.set(getSpells().indexOf(getSpell(name)), spell);
}
@Override
public void clearSpells()
{
this.spells.clear();
}
public void addAll(Collection<? extends Spell> spells) {
this.spells.addAll(spells);
}
@Override
public Spell randomSpell()
{
final SplittableRandom random = new SplittableRandom();
return getSpells().get(random.nextInt(getSpells().size()));
}
}