package tc.oc.pgm.tracker.damage;
import javax.annotation.Nullable;
import net.md_5.bungee.api.chat.BaseComponent;
import tc.oc.commons.bukkit.chat.NameStyle;
import tc.oc.commons.core.inspect.Inspectable;
import tc.oc.pgm.match.MatchPlayer;
import tc.oc.pgm.match.ParticipantState;
import static com.google.common.base.Preconditions.checkNotNull;
public class PlayerInfo extends Inspectable.Impl implements OwnerInfo, MeleeInfo, PhysicalInfo {
@Inspect private final ParticipantState player;
@Inspect private final ItemInfo weapon;
public PlayerInfo(ParticipantState player, @Nullable ItemInfo weapon) {
this.player = checkNotNull(player);
this.weapon = weapon;
}
public PlayerInfo(ParticipantState player) {
this(player, null);
}
public PlayerInfo(MatchPlayer player) {
this(player.getParticipantState(), new ItemInfo(player.getInventory().getItemInHand()));
}
@Override
public @Nullable ItemInfo getWeapon() {
return weapon;
}
@Override
public ParticipantState getOwner() {
return player;
}
@Override
public ParticipantState getAttacker() {
return player;
}
@Override
public String getIdentifier() {
return player.getPlayerId().player_id();
}
@Override
public BaseComponent getLocalizedName() {
return player.getStyledName(NameStyle.COLOR);
}
}