diff --git a/allclasses-frame.html b/allclasses-frame.html new file mode 100644 index 0000000..b705931 --- /dev/null +++ b/allclasses-frame.html @@ -0,0 +1,25 @@ + + + +
+ +public abstract class Ability +extends java.lang.Object +implements java.lang.Comparable<Ability>+
Modifier and Type | +Method and Description | +
---|---|
int |
+compareTo(Ability o) |
+
java.lang.String |
+getDescription() |
+
java.lang.String |
+getId() |
+
java.lang.String |
+getName() |
+
java.lang.String |
+toString() |
+
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
public int compareTo(Ability o)+
compareTo
in interface java.lang.Comparable<Ability>
public java.lang.String getDescription()+
public java.lang.String getName()+
public java.lang.String getId()+
public java.lang.String toString()+
toString
in class java.lang.Object
public class AbilityDatabase
+extends java.lang.Object
+Constructor and Description | +
---|
AbilityDatabase() |
+
Modifier and Type | +Method and Description | +
---|---|
static Ability |
+getAbilityById(java.lang.String name)
+Used in finding attacks for example when loading playerdata.
+ |
+
static java.lang.String[] |
+getAllAttackIds()
+Used in commands such as 'unlock.'
+ |
+
static java.lang.String[] |
+getAllPassiveIds()
+Used in commands such as 'unlock.'
+ |
+
static java.lang.String[] |
+getAllUltimateIds()
+Used in commands such as 'unlock.'
+ |
+
static Ability |
+getDefaultPassive() |
+
static Ability |
+getDefaultSuper() |
+
static Ability |
+getDefaultUltimate() |
+
static AbilityDatabase |
+getInstance() |
+
static java.lang.String[] |
+getRegisteredIds() |
+
static boolean |
+isDefault(Ability ability) |
+
static boolean |
+isRegistered(Ability ability)
+Checks if an ability is loaded
+ |
+
static boolean |
+isRegistered(java.lang.String abilityId) |
+
static void |
+loadDefaults() |
+
static void |
+registerAbility(Ability ability)
+Register a new ability to the database, or overwrite existing ones
+ |
+
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public static AbilityDatabase getInstance()+
public static void loadDefaults()+
public static void registerAbility(Ability ability)+
ability
- ability to registerpublic static boolean isDefault(Ability ability)+
ability
- ability to checkpublic static boolean isRegistered(java.lang.String abilityId)+
abilityId
- ability ID stringpublic static boolean isRegistered(Ability ability)+
ability
- ability to checkpublic static java.lang.String[] getRegisteredIds()+
public static java.lang.String[] getAllUltimateIds()+
public static java.lang.String[] getAllAttackIds()+
public static java.lang.String[] getAllPassiveIds()+
public static Ability getAbilityById(java.lang.String name)+
name
- name of the abilitypublic static Ability getDefaultSuper()+
public static Ability getDefaultUltimate()+
public static Ability getDefaultPassive()+
Modifier and Type | +Method and Description | +
---|---|
void |
+fire(SCPlayer ex)
+Fires a ki attack making the player its source.
+ |
+
double |
+getCasttime() |
+
byte |
+getColor() |
+
double |
+getCooldown() |
+
double |
+getCostModifier() |
+
double |
+getDmgModifier() |
+
double |
+getFatigue() |
+
java.lang.String |
+getFireMessage() |
+
int |
+getSpeed() |
+
byte |
+getType() |
+
boolean |
+isEffect() |
+
boolean |
+isUltimate() |
+
compareTo, getDescription, getId, getName, toString
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
public byte getType()+
public byte getColor()+
public int getSpeed()+
public boolean isEffect()+
public double getDmgModifier()+
public double getCostModifier()+
public double getCooldown()+
public double getCasttime()+
public java.lang.String getFireMessage()+
public boolean isUltimate()+
public double getFatigue()+
public void fire(SCPlayer ex)+
ex
- player to make shootPackage | +Description | +
---|---|
com.mighty.spiritcontrol.player | ++ |
Modifier and Type | +Method and Description | +
---|---|
Attack |
+SCPlayer.getCurrentSelectedAttack() |
+
Modifier and Type | +Method and Description | +
---|---|
java.util.Set<Attack> |
+SCPlayer.getUnlockedSuperAttacks() |
+
java.util.Set<Attack> |
+SCPlayer.getUnlockedUltimates() |
+
Modifier and Type | +Method and Description | +
---|---|
void |
+SCPlayer.addAttack(Attack attack)
+Adds an attack to the player's skill set
+ |
+
Class | +Description | +
---|---|
Attack | ++ |
Package | +Description | +
---|---|
com.mighty.spiritcontrol.player | ++ |
Class and Description | +
---|
Attack | +
Package | +Description | +
---|---|
com.mighty.spiritcontrol.ability | ++ |
com.mighty.spiritcontrol.ability.attack | ++ |
com.mighty.spiritcontrol.ability.passive | ++ |
com.mighty.spiritcontrol.player | ++ |
Modifier and Type | +Method and Description | +
---|---|
static Ability |
+AbilityDatabase.getAbilityById(java.lang.String name)
+Used in finding attacks for example when loading playerdata.
+ |
+
static Ability |
+AbilityDatabase.getDefaultPassive() |
+
static Ability |
+AbilityDatabase.getDefaultSuper() |
+
static Ability |
+AbilityDatabase.getDefaultUltimate() |
+
Modifier and Type | +Method and Description | +
---|---|
int |
+Ability.compareTo(Ability o) |
+
static boolean |
+AbilityDatabase.isDefault(Ability ability) |
+
static boolean |
+AbilityDatabase.isRegistered(Ability ability)
+Checks if an ability is loaded
+ |
+
static void |
+AbilityDatabase.registerAbility(Ability ability)
+Register a new ability to the database, or overwrite existing ones
+ |
+
Modifier and Type | +Class and Description | +
---|---|
class |
+Attack |
+
Modifier and Type | +Class and Description | +
---|---|
class |
+PassiveAbility |
+
Modifier and Type | +Method and Description | +
---|---|
Ability |
+SCPlayer.getAbilityFromSlot(java.lang.String slotName) |
+
Modifier and Type | +Method and Description | +
---|---|
void |
+SCPlayer.addAbility(Ability ability)
+Adds an ability to the player's skill set
+ |
+
boolean |
+SCPlayer.hasAbility(Ability ability) |
+
void |
+SCPlayer.removeAbility(Ability ability)
+Removes an ability from the player
+ |
+
void |
+SCPlayer.setAbilityAtSlot(Ability ability,
+ java.lang.String slotName)
+Equips the ability at a slot (even if they don't have it unlocked);
+
++ (`super1`, `super2`, `ultimate`, `passive`) |
+
Package | +Description | +
---|---|
com.mighty.spiritcontrol.ability | ++ |
com.mighty.spiritcontrol.api | ++ |
Modifier and Type | +Method and Description | +
---|---|
static AbilityDatabase |
+AbilityDatabase.getInstance() |
+
Modifier and Type | +Method and Description | +
---|---|
AbilityDatabase |
+SPCApi.getAbilityDatabse() |
+
Class | +Description | +
---|---|
Ability | ++ |
AbilityDatabase | +
+ Stores all Spirit Control Abilities
+ |
+
Package | +Description | +
---|---|
com.mighty.spiritcontrol.ability | ++ |
com.mighty.spiritcontrol.ability.attack | ++ |
com.mighty.spiritcontrol.ability.passive | ++ |
com.mighty.spiritcontrol.api | ++ |
com.mighty.spiritcontrol.player | ++ |
Class and Description | +
---|
Ability | +
AbilityDatabase
+ Stores all Spirit Control Abilities
+ |
+
Class and Description | +
---|
Ability | +
Class and Description | +
---|
Ability | +
Class and Description | +
---|
AbilityDatabase
+ Stores all Spirit Control Abilities
+ |
+
Class and Description | +
---|
Ability | +
Modifier and Type | +Method and Description | +
---|---|
boolean |
+canPlayerUsePassive(SCPlayer player)
+Checks if the player can use current passive with their form and race.
+ |
+
double |
+getCostModifier() |
+
double |
+getSpiritBonus() |
+
double |
+getSpiritFillModifier(com.mighty.spiritcontrol.ability.passive.EnumFillMethod method)
+Get the fill modifier for a given method
+ |
+
compareTo, getDescription, getId, getName, toString
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
public boolean canPlayerUsePassive(SCPlayer player)+
player
- SCPlayer referencepublic double getSpiritFillModifier(com.mighty.spiritcontrol.ability.passive.EnumFillMethod method)+
method
- public double getSpiritBonus()+
public double getCostModifier()+
Package | +Description | +
---|---|
com.mighty.spiritcontrol.player | ++ |
Modifier and Type | +Method and Description | +
---|---|
java.util.Set<PassiveAbility> |
+SCPlayer.getUnlockedPassives() |
+
Class | +Description | +
---|---|
PassiveAbility | ++ |
Package | +Description | +
---|---|
com.mighty.spiritcontrol.ability.passive | ++ |
com.mighty.spiritcontrol.player | ++ |
Class and Description | +
---|
EnumFillMethod | +
Class and Description | +
---|
EnumFillMethod | +
PassiveAbility | +
public class SPCApi
+extends java.lang.Object
+Modifier and Type | +Method and Description | +
---|---|
AbilityDatabase |
+getAbilityDatabse() |
+
SCPlayer |
+getPlayer(noppes.npcs.api.entity.IPlayer player) |
+
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Class | +Description | +
---|---|
SPCApi | ++ |
public class DBCPlayerWrapper
+extends java.lang.Object
+Constructor and Description | +
---|
DBCPlayerWrapper(net.minecraft.entity.player.EntityPlayer player) |
+
Modifier and Type | +Method and Description | +
---|---|
int[] |
+getAttributes() |
+
byte |
+getForm() |
+
net.minecraft.nbt.NBTTagCompound |
+getNbt() |
+
byte |
+getRace() |
+
int |
+getStat(int statId) |
+
java.lang.String |
+getStatusEffects() |
+
boolean |
+isCharging() |
+
boolean |
+isController() |
+
boolean |
+isFatigued() |
+
boolean |
+isFused() |
+
void |
+setFatigue(double timeInMinutes) |
+
void |
+updateStatusEffString() |
+
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public DBCPlayerWrapper(net.minecraft.entity.player.EntityPlayer player)+
public boolean isCharging()+
public boolean isFatigued()+
public void setFatigue(double timeInMinutes)+
public byte getForm()+
public byte getRace()+
public java.lang.String getStatusEffects()+
public void updateStatusEffString()+
public boolean isFused()+
public boolean isController()+
public int getStat(int statId)+
public int[] getAttributes()+
public net.minecraft.nbt.NBTTagCompound getNbt()+
public class SCPlayer
+extends java.lang.Object
+implements net.minecraftforge.common.IExtendedEntityProperties
+Modifier and Type | +Field and Description | +
---|---|
byte |
+currentAttackSlot |
+
DBCPlayerWrapper |
+dbcPlayer |
+
boolean |
+isChargingAttack |
+
byte |
+lastPrintedCharge |
+
long |
+lastTimeGainedSpirit |
+
long |
+lastTimeSneaked |
+
net.minecraft.entity.player.EntityPlayer |
+player
+Player reference
+ |
+
byte |
+sneakCount |
+
long |
+startedCharging |
+
Constructor and Description | +
---|
SCPlayer(net.minecraft.entity.player.EntityPlayer mcPlayer)
+Creates a new instance of an SCPlayer
+ |
+
Modifier and Type | +Method and Description | +
---|---|
void |
+addAbility(Ability ability)
+Adds an ability to the player's skill set
+ |
+
void |
+addAbility(java.lang.String abilityID) |
+
void |
+addAttack(Attack attack)
+Adds an attack to the player's skill set
+ |
+
void |
+addChatMessage(net.minecraft.util.IChatComponent chatComponent)
+Send a chat message to the player if the player can receive messages.
+ |
+
void |
+addMaxBaseSpirit(double spirit)
+Raises the max spirit (without passive buffs)
+ |
+
void |
+addSpirit(double spirit)
+Adds spirit while ignoring passive modifiers
+ |
+
void |
+addSpiritByPassive(double spirit,
+ com.mighty.spiritcontrol.ability.passive.EnumFillMethod method)
+Adds spirit while taking into account the passive fill modifier
+
+ Does not add anything if player is fatigued
+ |
+
boolean |
+canPlayerUsePassive(com.mighty.spiritcontrol.ability.passive.EnumFillMethod method) |
+
boolean |
+canUseAttack() |
+
void |
+copy(SCPlayer otherPlayer)
+Copy the Spirit Control values of that player.
+ |
+
net.minecraft.util.IChatComponent |
+drawPrettyGauge()
+Creates a color formatted gauge
+
++ Does NOT round the percentile to the nearest 5 |
+
java.lang.String |
+drawSpiritGauge()
+Creates the spirit gauge as an uncolored String
+ |
+
Ability |
+getAbilityFromSlot(java.lang.String slotName) |
+
double |
+getCooldown() |
+
Attack |
+getCurrentSelectedAttack() |
+
byte |
+getForm() |
+
int |
+getMainDamageStat() |
+
double |
+getMaxBaseSpirit()
+Does NOT include passives
+ |
+
double |
+getMaxSpirit()
+Includes passives
+ |
+
static SCPlayer |
+getPlayer(net.minecraft.entity.player.EntityPlayer player)
+Get the extended player instance from player.
+ |
+
byte |
+getRace() |
+
double |
+getSpirit() |
+
java.util.Set<PassiveAbility> |
+getUnlockedPassives() |
+
java.util.Set<Attack> |
+getUnlockedSuperAttacks() |
+
java.util.Set<Attack> |
+getUnlockedUltimates() |
+
boolean |
+hasAbility(Ability ability) |
+
boolean |
+hasAbility(java.lang.String abilityId) |
+
boolean |
+hasEnoughSpiritToFire()
+A ki attack drains the player according to this formula : MaxBaseSpirit * CostModifier
+ |
+
boolean |
+hasUnlockedSpiritControl() |
+
void |
+init(net.minecraft.entity.Entity entity,
+ net.minecraft.world.World world) |
+
boolean |
+isArmed() |
+
boolean |
+isChargingDBC() |
+
boolean |
+isFatigued() |
+
boolean |
+isOnCooldown() |
+
void |
+loadNBTData(net.minecraft.nbt.NBTTagCompound compound) |
+
static void |
+register(net.minecraft.entity.player.EntityPlayer player)
+Register a player entity for Spirit Control
+ |
+
void |
+removeAbility(Ability ability)
+Removes an ability from the player
+ |
+
void |
+removeMaxBaseSpirit(double spirit)
+Lowers the max spirit (without passive buffs)
+ |
+
void |
+removeSpirit(double spirit)
+Removes spirit while ignoring passive modifiers
+ |
+
void |
+removeSpiritByPassive(double spirit)
+Removes spirit while taking into the passive cost modifier
+ |
+
void |
+saveNBTData(net.minecraft.nbt.NBTTagCompound compound) |
+
void |
+setAbilityAtSlot(Ability ability,
+ java.lang.String slotName)
+Equips the ability at a slot (even if they don't have it unlocked);
+
++ (`super1`, `super2`, `ultimate`, `passive`) |
+
void |
+setCooldown(double seconds)
+Sets the attack cooldown for the player
+ |
+
void |
+setCurrentAttackSlot(int slot)
+Select an attack to charge
+ |
+
void |
+setFatigue(double fatigue)
+Sets the player's fatigue
+ |
+
void |
+setMaxBaseSpirit(double max)
+Sets the max base spirit (without passive modifiers) to specified value
+ |
+
void |
+setSpirit(double spirit)
+Sets the players spirit directly to the specified value
+ |
+
void |
+setUnlockedSpiritControl(boolean shouldUnlock)
+Enables or disable Spirit Control capabilities for the player
+ |
+
void |
+tellPlayerAboutGaugeUpdate()
+Draws the gauge at least every 5% change
+
+ Checking if spirit gauge is cleanly divisible by a
+ number does not work due to the nature of decimal numbers
+ |
+
void |
+toggleIsArmed()
+Toggles the armed state for the player
+ |
+
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public final net.minecraft.entity.player.EntityPlayer player+
public DBCPlayerWrapper dbcPlayer+
public byte lastPrintedCharge+
public boolean isChargingAttack+
public byte currentAttackSlot+
public long lastTimeGainedSpirit+
public long lastTimeSneaked+
public long startedCharging+
public byte sneakCount+
public SCPlayer(net.minecraft.entity.player.EntityPlayer mcPlayer)+
mcPlayer
- Player referencepublic void toggleIsArmed()+
public void setCooldown(double seconds)+
seconds
- time in secondspublic boolean isOnCooldown()+
public double getCooldown()+
public boolean canUseAttack()+
public Attack getCurrentSelectedAttack()+
public boolean isArmed()+
public int getMainDamageStat()+
public boolean hasEnoughSpiritToFire()+
public void setCurrentAttackSlot(int slot)+
slot
- slot from 0 to 2 (super1, super2, ultimate)public static SCPlayer getPlayer(net.minecraft.entity.player.EntityPlayer player)+
player
- player which to extendpublic static void register(net.minecraft.entity.player.EntityPlayer player)+
player
- player which to registerpublic void copy(SCPlayer otherPlayer)+
otherPlayer
- public void saveNBTData(net.minecraft.nbt.NBTTagCompound compound)+
saveNBTData
in interface net.minecraftforge.common.IExtendedEntityProperties
public void loadNBTData(net.minecraft.nbt.NBTTagCompound compound)+
loadNBTData
in interface net.minecraftforge.common.IExtendedEntityProperties
public void addChatMessage(net.minecraft.util.IChatComponent chatComponent)+
chatComponent
- public void init(net.minecraft.entity.Entity entity, + net.minecraft.world.World world)+
init
in interface net.minecraftforge.common.IExtendedEntityProperties
public void setUnlockedSpiritControl(boolean shouldUnlock)+
shouldUnlock
- public boolean hasUnlockedSpiritControl()+
public java.util.Set<Attack> getUnlockedSuperAttacks()+
public java.util.Set<Attack> getUnlockedUltimates()+
public java.util.Set<PassiveAbility> getUnlockedPassives()+
public double getMaxBaseSpirit()+
public void setMaxBaseSpirit(double max)+
max
- new maxpublic void addMaxBaseSpirit(double spirit)+
spirit
- amount of spirit to add to the cappublic void removeMaxBaseSpirit(double spirit)+
spirit
- amount of spirit to take away from the cappublic double getMaxSpirit()+
public double getSpirit()+
public void setSpirit(double spirit)+
spirit
- public void addSpiritByPassive(double spirit, + com.mighty.spiritcontrol.ability.passive.EnumFillMethod method)+
spirit
- Amount of spirit to addpublic void removeSpiritByPassive(double spirit)+
spirit
- public void addSpirit(double spirit)+
spirit
- public void removeSpirit(double spirit)+
spirit
- public void tellPlayerAboutGaugeUpdate()+
public java.lang.String drawSpiritGauge()+
public net.minecraft.util.IChatComponent drawPrettyGauge()+
public boolean hasAbility(Ability ability)+
ability
- ability to checkpublic boolean hasAbility(java.lang.String abilityId)+
abilityId
- ID of the ability to checkpublic Ability getAbilityFromSlot(java.lang.String slotName)+
slotName
- Name of the slot that stores an attack (super1, super2, ultimate, passive)public void setAbilityAtSlot(Ability ability, + java.lang.String slotName)+
ability
- slotName
- public void addAbility(java.lang.String abilityID)+
public void addAbility(Ability ability)+
ability
- Passive or Attackpublic void removeAbility(Ability ability)+
ability
- Passive or Attackpublic void addAttack(Attack attack)+
attack
- The attack to addpublic boolean isFatigued()+
public byte getForm()+
public byte getRace()+
public boolean isChargingDBC()+
public boolean canPlayerUsePassive(com.mighty.spiritcontrol.ability.passive.EnumFillMethod method)+
method
- type of methodpublic void setFatigue(double fatigue)+
fatigue
- in minutesPackage | +Description | +
---|---|
com.mighty.spiritcontrol.player | ++ |
Modifier and Type | +Field and Description | +
---|---|
DBCPlayerWrapper |
+SCPlayer.dbcPlayer |
+
Package | +Description | +
---|---|
com.mighty.spiritcontrol.ability.attack | ++ |
com.mighty.spiritcontrol.ability.passive | ++ |
com.mighty.spiritcontrol.api | ++ |
com.mighty.spiritcontrol.player | ++ |
Modifier and Type | +Method and Description | +
---|---|
void |
+Attack.fire(SCPlayer ex)
+Fires a ki attack making the player its source.
+ |
+
Modifier and Type | +Method and Description | +
---|---|
boolean |
+PassiveAbility.canPlayerUsePassive(SCPlayer player)
+Checks if the player can use current passive with their form and race.
+ |
+
Modifier and Type | +Method and Description | +
---|---|
SCPlayer |
+SPCApi.getPlayer(noppes.npcs.api.entity.IPlayer player) |
+
Modifier and Type | +Method and Description | +
---|---|
static SCPlayer |
+SCPlayer.getPlayer(net.minecraft.entity.player.EntityPlayer player)
+Get the extended player instance from player.
+ |
+
Modifier and Type | +Method and Description | +
---|---|
void |
+SCPlayer.copy(SCPlayer otherPlayer)
+Copy the Spirit Control values of that player.
+ |
+
Class | +Description | +
---|---|
DBCPlayerWrapper | ++ |
SCPlayer | ++ |
Package | +Description | +
---|---|
com.mighty.spiritcontrol.ability.attack | ++ |
com.mighty.spiritcontrol.ability.passive | ++ |
com.mighty.spiritcontrol.api | ++ |
com.mighty.spiritcontrol.player | ++ |
Class and Description | +
---|
SCPlayer | +
Class and Description | +
---|
SCPlayer | +
Class and Description | +
---|
SCPlayer | +
Class and Description | +
---|
DBCPlayerWrapper | +
SCPlayer | +
The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.
+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:
+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+Each annotation type has its own separate page with the following sections:
+Each enum has its own separate page with the following sections:
+Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object
. The interfaces do not inherit from java.lang.Object
.
The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+These links take you to the next or previous class, interface, package, or related page.
+These links show and hide the HTML frames. All pages are available with or without frames.
+The All Classes link shows all classes and interfaces except non-static nested types.
+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.
+The Constant Field Values page lists the static final fields and their values.
++ + diff --git a/overview-summary.html b/overview-summary.html new file mode 100644 index 0000000..cf138de --- /dev/null +++ b/overview-summary.html @@ -0,0 +1,151 @@ + + + + + +
Package | +Description | +
---|---|
com.mighty.spiritcontrol.ability | ++ |
com.mighty.spiritcontrol.ability.attack | ++ |
com.mighty.spiritcontrol.ability.passive | ++ |
com.mighty.spiritcontrol.api | ++ |
com.mighty.spiritcontrol.player | ++ |