mirror of
https://github.com/itHotL/PlayerStats.git
synced 2024-11-22 11:55:17 +01:00
Fixed minor formatting bug, added 3 new formatting methods for server-stat and top-stat to the ApiFormatter
This commit is contained in:
parent
21dc6ef275
commit
86e9a7827e
@ -32,25 +32,50 @@ public interface ApiFormatter {
|
||||
return new NumberFormatter();
|
||||
}
|
||||
|
||||
/** @return [PlayerStats]*/
|
||||
/** Gets the default prefix PlayerStats uses.
|
||||
@return [PlayerStats]*/
|
||||
TextComponent getPluginPrefix();
|
||||
|
||||
/** Gets the special rainbow version of PlayerStats' prefix.
|
||||
@return [PlayerStats] in rainbow colors*/
|
||||
TextComponent getRainbowPluginPrefix();
|
||||
|
||||
/** @return ________ [PlayerStats] ________*/
|
||||
/** Gets the version of the prefix that is surrounded by underscores. This is
|
||||
meant to be used as a title above a message or statistic display.
|
||||
@return ________ [PlayerStats] ________ */
|
||||
TextComponent getPluginPrefixAsTitle();
|
||||
|
||||
/** Gets the special rainbow version of the title-prefix.
|
||||
@return ________ [PlayerStats] ________ in rainbow colors*/
|
||||
TextComponent getRainbowPluginPrefixAsTitle();
|
||||
|
||||
/** Gets the default top-stat-title for a Statistic of Type.Untyped.
|
||||
@return Top [topStatSize] [stat-name]*/
|
||||
TextComponent getTopStatTitle(int topStatSize, Statistic statistic);
|
||||
|
||||
TextComponent getTopStatTitle(int topStatSize, Statistic statistic, String subStatisticName);
|
||||
/** Gets the top-stat-title for a statistic that has a sub-statistic (block, item or entity).
|
||||
@return Top [topStatSize] [stat-name] [sub-stat-name] */
|
||||
TextComponent getTopStatTitle(int topStatSize, Statistic statistic, String subStatName);
|
||||
|
||||
/** Gets the top-stat-title with the specified {@link Unit} in the title.
|
||||
@return Top [topStatSize] [stat-name] [unit-name] */
|
||||
TextComponent getTopStatTitle(int topStatSize, Statistic statistic, Unit unit);
|
||||
|
||||
/** @return a single line from a top-x statistic:
|
||||
* <br> x. Player-name ......... number */
|
||||
TextComponent getFormattedTopStatLine(int positionInTopList, String playerName, long statNumber, Unit unit);
|
||||
/** Formats the input into a single top-statistic line.
|
||||
@return a single line from a top-x statistic:
|
||||
* <br> [positionInTopList]. [player-name] ......... [stat-number] */
|
||||
TextComponent getFormattedTopStatLine(int positionInTopList, String playerName, long statNumber, Statistic statistic);
|
||||
|
||||
TextComponent getFormattedServerStat(long statNumber, Unit unit);
|
||||
/** Formats the input into a server statistic message.
|
||||
@return [Total on this server]: [stat-number] [stat-name] */
|
||||
TextComponent getFormattedServerStat(long statNumber, Statistic statistic);
|
||||
|
||||
/** Formats the input into a server statistic message for a statistic that has a
|
||||
sub-statistic (block, item or entity).
|
||||
@return [Total on this server]: [stat-number] [stat-name] [sub-stat-name]*/
|
||||
TextComponent getFormattedServerStat(long statNumber, Statistic statistic, String subStatName);
|
||||
|
||||
/** Formats the input into a server statistic message with the specified {@link Unit}.
|
||||
@return [Total on this server]: [stat-number] [stat-name] [unit-name]*/
|
||||
TextComponent getFormattedServerStat(long statNumber, Statistic statistic, Unit unit);
|
||||
}
|
@ -17,13 +17,15 @@ import static net.kyori.adventure.text.Component.space;
|
||||
|
||||
public class ApiOutputManager implements ApiFormatter {
|
||||
|
||||
private static ConfigHandler config;
|
||||
private final ComponentFactory componentFactory;
|
||||
private final PrideComponentFactory prideComponentFactory;
|
||||
private final NumberFormatter numberFormatter;
|
||||
|
||||
public ApiOutputManager(ConfigHandler config) {
|
||||
componentFactory = new ComponentFactory(config);
|
||||
prideComponentFactory = new PrideComponentFactory(config);
|
||||
public ApiOutputManager(ConfigHandler configHandler) {
|
||||
config = configHandler;
|
||||
componentFactory = new ComponentFactory(configHandler);
|
||||
prideComponentFactory = new PrideComponentFactory(configHandler);
|
||||
numberFormatter = new NumberFormatter();
|
||||
}
|
||||
|
||||
@ -53,7 +55,7 @@ public class ApiOutputManager implements ApiFormatter {
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextComponent getTopStatTitle(int topListSize, Statistic statistic, @Nullable String subStatName) {
|
||||
public TextComponent getTopStatTitle(int topListSize, Statistic statistic, String subStatName) {
|
||||
return getTopStatTitle(topListSize, statistic, subStatName, null);
|
||||
}
|
||||
|
||||
@ -62,7 +64,67 @@ public class ApiOutputManager implements ApiFormatter {
|
||||
return getTopStatTitle(topListSize, statistic, null, unit);
|
||||
}
|
||||
|
||||
private TextComponent getTopStatTitle(int topListSize, Statistic statistic, String subStatName, Unit unit) {
|
||||
@Override
|
||||
public TextComponent getFormattedTopStatLine(int positionInTopList, String playerName, long statNumber, Statistic statistic) {
|
||||
TextComponent.Builder topStatLineBuilder = Component.text()
|
||||
.append(space())
|
||||
.append(componentFactory.rankNumber(positionInTopList))
|
||||
.append(space())
|
||||
.append(componentFactory.playerName(playerName, Target.TOP))
|
||||
.append(space());
|
||||
|
||||
int dots = FontUtils.getNumberOfDotsToAlign(positionInTopList + ". " + playerName);
|
||||
if (dots >= 1) {
|
||||
topStatLineBuilder.append(componentFactory.dots(".".repeat(dots)));
|
||||
}
|
||||
|
||||
Unit.Type statUnitType = Unit.getTypeFromStatistic(statistic);
|
||||
TextComponent numberComponent = getStatNumberComponent(statNumber, statUnitType, Target.TOP);
|
||||
|
||||
return topStatLineBuilder
|
||||
.append(space())
|
||||
.append(numberComponent)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextComponent getFormattedServerStat(long statNumber, Statistic statistic) {
|
||||
return getFormattedServerStat(statNumber, statistic, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextComponent getFormattedServerStat(long statNumber, Statistic statistic, String subStatName) {
|
||||
return getFormattedServerStat(statNumber, statistic, subStatName, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextComponent getFormattedServerStat(long statNumber, Statistic statistic, Unit unit) {
|
||||
return getFormattedServerStat(statNumber, statistic, null, unit);
|
||||
}
|
||||
|
||||
private TextComponent getFormattedServerStat(long statNumber, Statistic statistic, @Nullable String subStatName, @Nullable Unit unit) {
|
||||
String serverTitle = config.getServerTitle();
|
||||
String serverName = config.getServerName();
|
||||
String prettyStatName = StringUtils.prettify(statistic.toString());
|
||||
Unit.Type unitType = Unit.getTypeFromStatistic(statistic);
|
||||
|
||||
TextComponent.Builder serverStatBuilder = Component.text()
|
||||
.append(componentFactory.title(serverTitle, Target.SERVER))
|
||||
.append(space())
|
||||
.append(componentFactory.serverName(serverName))
|
||||
.append(space())
|
||||
.append(getStatNumberComponent(statNumber, unitType, Target.SERVER))
|
||||
.append(space())
|
||||
.append(componentFactory.statAndSubStatName(prettyStatName, subStatName, Target.SERVER));
|
||||
|
||||
if (unit != null) {
|
||||
serverStatBuilder.append(space())
|
||||
.append(componentFactory.statUnit(unit.getLabel(), Target.SERVER));
|
||||
}
|
||||
return serverStatBuilder.build();
|
||||
}
|
||||
|
||||
private TextComponent getTopStatTitle(int topListSize, Statistic statistic, @Nullable String subStatName, @Nullable Unit unit) {
|
||||
String prettyStatName = StringUtils.prettify(statistic.toString());
|
||||
TextComponent.Builder titleBuilder = Component.text()
|
||||
.append(componentFactory.title("Top", Target.TOP))
|
||||
@ -78,36 +140,22 @@ public class ApiOutputManager implements ApiFormatter {
|
||||
return titleBuilder.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextComponent getFormattedTopStatLine(int positionInTopList, String playerName, long statNumber, Unit unit) {
|
||||
TextComponent.Builder topStatLineBuilder = Component.text()
|
||||
.append(space())
|
||||
.append(componentFactory.rankNumber(positionInTopList))
|
||||
.append(space());
|
||||
|
||||
int dots = FontUtils.getNumberOfDotsToAlign(positionInTopList + ". " + playerName);
|
||||
if (dots >= 1) {
|
||||
topStatLineBuilder.append(componentFactory.dots(".".repeat(dots)));
|
||||
}
|
||||
|
||||
TextComponent numberComponent = getTopStatNumberComponent(unit, statNumber);
|
||||
return topStatLineBuilder
|
||||
.append(space())
|
||||
.append(numberComponent)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextComponent getFormattedServerStat(long statNumber, Unit unit) {
|
||||
|
||||
}
|
||||
|
||||
private TextComponent getTopStatNumberComponent(Unit unit, long statNumber) {
|
||||
return switch (unit.getType()) {
|
||||
case DISTANCE -> componentFactory.distanceNumber(numberFormatter.formatDistanceNumber(statNumber, unit), Target.TOP);
|
||||
case DAMAGE -> componentFactory.damageNumber(numberFormatter.formatDamageNumber(statNumber, unit), Target.TOP);
|
||||
case TIME -> componentFactory.timeNumber(numberFormatter.formatTimeNumber(statNumber, unit, unit), Target.TOP);
|
||||
default -> componentFactory.statNumber(numberFormatter.formatNumber(statNumber), Target.TOP);
|
||||
private TextComponent getStatNumberComponent(long statNumber, Unit.Type unitType, Target target) {
|
||||
return switch (unitType) {
|
||||
case DISTANCE -> {
|
||||
Unit unit = Unit.getMostSuitableUnit(Unit.Type.DISTANCE, statNumber);
|
||||
yield componentFactory.distanceNumber(numberFormatter.formatDistanceNumber(statNumber, unit), target);
|
||||
}
|
||||
case DAMAGE -> {
|
||||
Unit unit = Unit.getMostSuitableUnit(Unit.Type.DAMAGE, statNumber);
|
||||
yield componentFactory.damageNumber(numberFormatter.formatDamageNumber(statNumber, unit), target);
|
||||
}
|
||||
case TIME -> {
|
||||
Unit bigUnit = Unit.getMostSuitableUnit(Unit.Type.TIME, statNumber);
|
||||
Unit smallUnit = bigUnit.getSmallerUnit(1);
|
||||
yield componentFactory.timeNumber(numberFormatter.formatTimeNumber(statNumber, bigUnit, smallUnit), target);
|
||||
}
|
||||
default -> componentFactory.statNumber(numberFormatter.formatNumber(statNumber), target);
|
||||
};
|
||||
}
|
||||
}
|
@ -101,9 +101,9 @@ public final class MyLogger {
|
||||
}
|
||||
}
|
||||
|
||||
/** If DebugLevel is MEDIUM or HIGH, logs when the while loop in MessageBuilder, getLanguageKey is being run. */
|
||||
/** If DebugLevel is HIGH, logs when the while loop in MessageBuilder, getLanguageKey is being run. */
|
||||
public static void replacingUnderscores() {
|
||||
if (debugLevel != DebugLevel.LOW) {
|
||||
if (debugLevel == DebugLevel.HIGH) {
|
||||
logger.info("Replacing underscores and capitalizing names...");
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user