support for gradient coloring

fixes #72
This commit is contained in:
hyperdefined
2024-09-10 16:01:24 -04:00
parent a43155b0c5
commit f5ddada892
2 changed files with 9 additions and 8 deletions

View File

@@ -24,13 +24,10 @@ import org.bukkit.persistence.PersistentDataType;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.regex.Pattern;
public class ItemLore { public class ItemLore {
private final ToolStats toolStats; private final ToolStats toolStats;
public static final Pattern COLOR_CODES = Pattern.compile("[&§]([0-9a-fk-or])");
public static final Pattern HEX_PATTERN = Pattern.compile("[&§]#([A-Fa-f0-9]{6})");
public ItemLore(ToolStats toolStats) { public ItemLore(ToolStats toolStats) {
this.toolStats = toolStats; this.toolStats = toolStats;

View File

@@ -18,15 +18,18 @@
package lol.hyper.toolstats.tools.config; package lol.hyper.toolstats.tools.config;
import lol.hyper.toolstats.ToolStats; import lol.hyper.toolstats.ToolStats;
import lol.hyper.toolstats.tools.ItemLore;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ConfigTools { public class ConfigTools {
private final ToolStats toolStats; private final ToolStats toolStats;
public static final Pattern COLOR_CODES = Pattern.compile("[&§]([0-9a-fk-or])");
public static final Pattern CONFIG_HEX_PATTERN = Pattern.compile("[&§]#([A-Fa-f0-9]{6})");
public static final Pattern MINECRAFT_HEX_PATTERN = Pattern.compile("§x(?:§[a-fA-F0-9]){6}|§[a-fA-F0-9]");
public ConfigTools(ToolStats toolStats) { public ConfigTools(ToolStats toolStats) {
this.toolStats = toolStats; this.toolStats = toolStats;
@@ -123,13 +126,13 @@ public class ConfigTools {
// set the placeholder to the value // set the placeholder to the value
lore = lore.replace(placeHolder, String.valueOf(value)); lore = lore.replace(placeHolder, String.valueOf(value));
Matcher hexMatcher = ItemLore.HEX_PATTERN.matcher(lore); Matcher hexMatcher = CONFIG_HEX_PATTERN.matcher(lore);
while (hexMatcher.find()) { while (hexMatcher.find()) {
String hexCode = hexMatcher.group(1); String hexCode = hexMatcher.group(1);
lore = lore.replaceAll(hexMatcher.group(), net.md_5.bungee.api.ChatColor.of("#" + hexCode).toString()); lore = lore.replaceAll(hexMatcher.group(), net.md_5.bungee.api.ChatColor.of("#" + hexCode).toString());
} }
Matcher colorMatcher = ItemLore.COLOR_CODES.matcher(lore); Matcher colorMatcher = COLOR_CODES.matcher(lore);
while (colorMatcher.find()) { while (colorMatcher.find()) {
String colorCode = colorMatcher.group(1); String colorCode = colorMatcher.group(1);
lore = lore.replaceAll("&" + colorCode, ChatColor.getByChar(colorCode).toString()); lore = lore.replaceAll("&" + colorCode, ChatColor.getByChar(colorCode).toString());
@@ -145,8 +148,9 @@ public class ConfigTools {
* @return The message without color codes. * @return The message without color codes.
*/ */
public String removeColor(String message) { public String removeColor(String message) {
message = ItemLore.COLOR_CODES.matcher(message).replaceAll(""); message = MINECRAFT_HEX_PATTERN.matcher(message).replaceAll("");
message = ItemLore.HEX_PATTERN.matcher(message).replaceAll(""); message = COLOR_CODES.matcher(message).replaceAll("");
message = CONFIG_HEX_PATTERN.matcher(message).replaceAll("");
return message; return message;
} }
} }