Added more formatting options

This commit is contained in:
Auxilor
2021-08-29 15:30:25 +01:00
parent ad861b10bb
commit ac265d0260
7 changed files with 301 additions and 126 deletions

View File

@@ -1,5 +1,6 @@
package com.willfp.eco.core.config.interfaces;
import com.willfp.eco.util.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -165,7 +166,9 @@ public interface Config extends Cloneable {
* @return The found value, or an empty string if not found.
*/
@NotNull
String getString(@NotNull String path);
default String getString(@NotNull String path) {
return getString(path, true);
}
/**
* Get a string from config.
@@ -175,8 +178,36 @@ public interface Config extends Cloneable {
* @return The found value, or an empty string if not found.
*/
@NotNull
default String getString(@NotNull String path,
boolean format) {
return this.getString(path, format, StringUtils.FormatOption.WITH_PLACEHOLDERS);
}
/**
* Get a string from config.
*
* @param path The key to fetch the value from.
* @param option The format option.
* @return The found value, or an empty string if not found.
*/
@NotNull
default String getString(@NotNull String path,
@NotNull final StringUtils.FormatOption option) {
return this.getString(path, true, option);
}
/**
* Get a string from config.
*
* @param path The key to fetch the value from.
* @param format If the string should be formatted.
* @param option The format option.
* @return The found value, or an empty string if not found.
*/
@NotNull
String getString(@NotNull String path,
boolean format);
boolean format,
@NotNull StringUtils.FormatOption option);
/**
* Get a string from config.
@@ -185,7 +216,9 @@ public interface Config extends Cloneable {
* @return The found value, or null if not found.
*/
@Nullable
String getStringOrNull(@NotNull String path);
default String getStringOrNull(@NotNull String path) {
return getStringOrNull(path, true);
}
/**
* Get a string from config.
@@ -195,8 +228,36 @@ public interface Config extends Cloneable {
* @return The found value, or null if not found.
*/
@Nullable
default String getStringOrNull(@NotNull String path,
boolean format) {
return this.getStringOrNull(path, format, StringUtils.FormatOption.WITH_PLACEHOLDERS);
}
/**
* Get a string from config.
*
* @param path The key to fetch the value from.
* @param option The format option.
* @return The found value, or null if not found.
*/
@Nullable
default String getStringOrNull(@NotNull String path,
@NotNull StringUtils.FormatOption option) {
return this.getStringOrNull(path, true, option);
}
/**
* Get a string from config.
*
* @param path The key to fetch the value from.
* @param format If the string should be formatted.
* @param option The format option.
* @return The found value, or null if not found.
*/
@Nullable
String getStringOrNull(@NotNull String path,
boolean format);
boolean format,
@NotNull StringUtils.FormatOption option);
/**
* Get a list of strings from config.
@@ -207,7 +268,9 @@ public interface Config extends Cloneable {
* @return The found value, or a blank {@link java.util.ArrayList} if not found.
*/
@NotNull
List<String> getStrings(@NotNull String path);
default List<String> getStrings(@NotNull String path) {
return getStrings(path, true);
}
/**
* Get a list of strings from config.
@@ -217,8 +280,36 @@ public interface Config extends Cloneable {
* @return The found value, or a blank {@link java.util.ArrayList} if not found.
*/
@NotNull
default List<String> getStrings(@NotNull String path,
boolean format) {
return this.getStrings(path, format, StringUtils.FormatOption.WITH_PLACEHOLDERS);
}
/**
* Get a list of strings from config.
*
* @param path The key to fetch the value from.
* @param option The format option.
* @return The found value, or a blank {@link java.util.ArrayList} if not found.
*/
@Nullable
default List<String> getStrings(@NotNull String path,
@NotNull StringUtils.FormatOption option) {
return getStrings(path, true, option);
}
/**
* Get a list of strings from config.
*
* @param path The key to fetch the value from.
* @param format If the strings should be formatted.
* @param option The option.
* @return The found value, or a blank {@link java.util.ArrayList} if not found.
*/
@NotNull
List<String> getStrings(@NotNull String path,
boolean format);
boolean format,
@NotNull StringUtils.FormatOption option);
/**
* Get a list of strings from config.
@@ -227,7 +318,9 @@ public interface Config extends Cloneable {
* @return The found value, or null if not found.
*/
@Nullable
List<String> getStringsOrNull(@NotNull String path);
default List<String> getStringsOrNull(@NotNull String path) {
return getStringsOrNull(path, true);
}
/**
* Get a list of strings from config.
@@ -237,8 +330,36 @@ public interface Config extends Cloneable {
* @return The found value, or null if not found.
*/
@Nullable
default List<String> getStringsOrNull(@NotNull String path,
boolean format) {
return getStringsOrNull(path, format, StringUtils.FormatOption.WITH_PLACEHOLDERS);
}
/**
* Get a list of strings from config.
*
* @param path The key to fetch the value from.
* @param option The format option.
* @return The found value, or null if not found.
*/
@Nullable
default List<String> getStringsOrNull(@NotNull String path,
@NotNull StringUtils.FormatOption option) {
return getStringsOrNull(path, true, option);
}
/**
* Get a list of strings from config.
*
* @param path The key to fetch the value from.
* @param format If the strings should be formatted.
* @param option The format option.
* @return The found value, or null if not found.
*/
@Nullable
List<String> getStringsOrNull(@NotNull String path,
boolean format);
boolean format,
@NotNull StringUtils.FormatOption option);
/**
* Get a decimal from config.

View File

@@ -12,7 +12,7 @@ import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.awt.*;
import java.awt.Color;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -57,7 +57,21 @@ public class StringUtils {
.build();
/**
* Format a list of strings - converts Placeholders and Color codes.
* Format a list of strings.
* <p>
* Converts color codes and placeholders.
*
* @param list The messages to format.
* @return The message, formatted.
*/
public List<String> formatList(@NotNull final List<String> list) {
return formatList(list, (Player) null);
}
/**
* Format a list of strings.
* <p>
* Coverts color codes and placeholders for a player.
*
* @param list The messages to format.
* @param player The player to translate placeholders with respect to.
@@ -65,26 +79,61 @@ public class StringUtils {
*/
public List<String> formatList(@NotNull final List<String> list,
@Nullable final Player player) {
return formatList(list, player, FormatOption.WITH_PLACEHOLDERS);
}
/**
* Format a list of strings.
* <p>
* Converts color codes and placeholders if specified.
*
* @param list The messages to format.
* @param option The format option.
* @return The message, formatted.
*/
public List<String> formatList(@NotNull final List<String> list,
@NotNull final FormatOption option) {
return formatList(list, null, option);
}
/**
* Format a list of strings.
* <p>
* Coverts color codes and placeholders for a player if specified.
*
* @param list The messages to format.
* @param player The player to translate placeholders with respect to.
* @param option The options.
* @return The message, format.
*/
public List<String> formatList(@NotNull final List<String> list,
@Nullable final Player player,
@NotNull final FormatOption option) {
List<String> translated = new ArrayList<>();
for (String string : list) {
translated.add(format(string, player));
translated.add(format(string, player, option));
}
return translated;
}
/**
* Format a list of strings - converts Placeholders and Color codes.
* Format a string.
* <p>
* Converts color codes and placeholders.
*
* @param list The messages to format.
* @param message The message to translate.
* @return The message, formatted.
* @see StringUtils#format(String, Player)
*/
public List<String> formatList(@NotNull final List<String> list) {
return formatList(list, null);
public String format(@NotNull final String message) {
return format(message, (Player) null);
}
/**
* Format a string - converts Placeholders and Color codes.
* Format a string.
* <p>
* Converts color codes and placeholders for a player.
*
* @param message The message to format.
* @param player The player to translate placeholders with respect to.
@@ -92,23 +141,45 @@ public class StringUtils {
*/
public String format(@NotNull final String message,
@Nullable final Player player) {
String processedMessage = message;
processedMessage = translateGradients(processedMessage);
processedMessage = PlaceholderManager.translatePlaceholders(processedMessage, player);
processedMessage = translateHexColorCodes(processedMessage);
processedMessage = ChatColor.translateAlternateColorCodes('&', processedMessage);
return processedMessage;
return format(message, player, FormatOption.WITH_PLACEHOLDERS);
}
/**
* Format a string without respect to a player.
* Format a string.
* <p>
* Converts color codes and placeholders if specified.
*
* @param message The message to translate.
* @param option The format option.
* @return The message, formatted.
* @see StringUtils#format(String, Player)
*/
public String format(@NotNull final String message) {
return format(message, null);
public String format(@NotNull final String message,
@NotNull final FormatOption option) {
return format(message, null, option);
}
/**
* Format a string.
* <p>
* Coverts color codes and placeholders for a player if specified.
*
* @param message The message to format.
* @param player The player to translate placeholders with respect to.
* @param option The format options.
* @return The message, formatted.
*/
public String format(@NotNull final String message,
@Nullable final Player player,
@NotNull final FormatOption option) {
String processedMessage = message;
processedMessage = translateGradients(processedMessage);
if (option == FormatOption.WITH_PLACEHOLDERS) {
processedMessage = PlaceholderManager.translatePlaceholders(processedMessage, player);
}
processedMessage = translateHexColorCodes(processedMessage);
processedMessage = ChatColor.translateAlternateColorCodes('&', processedMessage);
return processedMessage;
}
private static String translateHexColorCodes(@NotNull final String message) {
@@ -271,4 +342,19 @@ public class StringUtils {
GsonComponentSerializer.gson().deserialize(json)
);
}
/**
* Options for formatting.
*/
public enum FormatOption {
/**
* Completely formatted.
*/
WITH_PLACEHOLDERS,
/**
* Completely formatted without placeholders.
*/
WITHOUT_PLACEHOLDERS
}
}