ProjectAres/PGM/src/main/java/tc/oc/pgm/blitz/Lives.java

74 lines
1.5 KiB
Java

package tc.oc.pgm.blitz;
import net.md_5.bungee.api.chat.BaseComponent;
import tc.oc.api.docs.PlayerId;
import tc.oc.pgm.match.Competitor;
import javax.annotation.Nullable;
public interface Lives {
/**
* Original amount of lives.
*/
int original();
/**
* Current amount of lives (may be larger than {@link #original()},
* due to players getting addition lives via kits).
*/
int current();
/**
* Add more to the current lives and include the player that
* caused this change if applicable.
*/
void add(@Nullable PlayerId cause, int delta);
/**
* Get the delta number of life changes this player has caused.
*/
int changesBy(PlayerId player);
/**
* Are the amount of lives reduced when this player dies?
*/
boolean applicableTo(PlayerId player);
/**
* Is this player the sole owner of these lives?
*/
boolean owner(PlayerId playerId);
/**
* Are there no lives left?
*/
boolean empty();
/**
* Get the competitor relation of these lives.
*/
Competitor competitor();
/**
* Message sent to players notifying them how many lives they have left.
*/
BaseComponent remaining();
/**
* Sidebar status of how many respawns a competitor has left.
*/
BaseComponent status();
/**
* Message sent when a player gains or loses lives.
*/
BaseComponent change(int delta);
/**
* Implementations of lives as an enum.
*/
Type type(); enum Type { TEAM, INDIVIDUAL }
}