Initial commit: LoChat v1.0.0 with Gradient module

This commit is contained in:
loki5512344 2025-12-29 14:57:49 +01:00
commit 252b0a60db
86 changed files with 8922 additions and 0 deletions

View file

@ -0,0 +1,139 @@
package ru.lovar.gradientnick.hooks;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import org.bukkit.OfflinePlayer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import ru.lovar.gradientnick.GradientNick;
import ru.lovar.gradientnick.data.PlayerData;
import ru.lovar.gradientnick.util.GradientUtil;
public class PlaceholderAPIHook extends PlaceholderExpansion {
private final GradientNick plugin;
public PlaceholderAPIHook(GradientNick plugin) {
this.plugin = plugin;
}
@Override
public @NotNull String getIdentifier() {
return "lopreff";
}
@Override
public @NotNull String getAuthor() {
return "loki";
}
@Override
public @NotNull String getVersion() {
return "1.0";
}
@Override
public boolean persist() {
return true;
}
@Override
public @Nullable String onRequest(OfflinePlayer player, @NotNull String params) {
if (player == null) return null;
PlayerData data = plugin.getDataManager().getPlayerData(player.getUniqueId());
org.bukkit.entity.Player onlinePlayer = player.getPlayer();
return switch (params.toLowerCase()) {
case "name" -> {
if (!data.isColorEnabled() || !data.hasColors()) {
yield player.getName();
}
yield GradientUtil.applyGradient(
player.getName(),
data.getColors(),
plugin.getConfigManager().isUseLegacyRgbFormat()
);
}
case "prefix" -> {
if (!data.isPrefixEnabled() || !data.hasPrefix()) {
yield "";
}
String format = plugin.getConfigManager().getPrefixFormat();
String prefix = format.replace("{prefix}", data.getPrefix());
if (data.isColorEnabled() && data.hasColors() && plugin.getConfigManager().isGradientOnPrefix()) {
yield GradientUtil.applyGradient(prefix, data.getColors(), plugin.getConfigManager().isUseLegacyRgbFormat());
}
yield prefix;
}
case "full", "displayname" -> {
yield GradientUtil.buildDisplayName(
data.isPrefixEnabled() ? data.getPrefix() : null,
player.getName(),
data.isColorEnabled() ? data.getColors() : null,
plugin.getConfigManager().isGradientOnPrefix(),
plugin.getConfigManager().isContinuousGradient(),
plugin.getConfigManager().getPrefixFormat(),
plugin.getConfigManager().isUseLegacyRgbFormat()
);
}
case "tabname" -> {
if (!data.isColorEnabled() || !data.hasColors()) {
yield player.getName();
}
yield GradientUtil.applyGradient(
player.getName(),
data.getColors(),
plugin.getConfigManager().isUseLegacyRgbFormat()
);
}
case "tab" -> {
String prefix = null;
boolean hasCustomPrefix = data.isPrefixEnabled() && data.hasPrefix();
if (hasCustomPrefix) {
prefix = plugin.getConfigManager().getPrefixFormat()
.replace("{prefix}", data.getPrefix());
} else if (onlinePlayer != null) {
String lpPrefix = plugin.getLuckPermsHook().getActivePrefix(onlinePlayer);
if (lpPrefix != null && !lpPrefix.isEmpty()) {
prefix = stripColors(lpPrefix);
}
}
String nick = player.getName();
if (data.isColorEnabled() && data.hasColors()) {
if (prefix != null && !prefix.isEmpty()) {
String fullText = prefix + nick;
yield GradientUtil.applyGradient(fullText, data.getColors(),
plugin.getConfigManager().isUseLegacyRgbFormat());
} else {
yield GradientUtil.applyGradient(nick, data.getColors(),
plugin.getConfigManager().isUseLegacyRgbFormat());
}
} else {
if (prefix != null && !prefix.isEmpty()) {
if (!hasCustomPrefix && onlinePlayer != null) {
String lpPrefix = plugin.getLuckPermsHook().getActivePrefix(onlinePlayer);
if (lpPrefix != null) {
yield lpPrefix + nick;
}
}
yield prefix + nick;
}
yield nick;
}
}
case "hasprefix" -> (data.isPrefixEnabled() && data.hasPrefix()) ? "true" : "false";
case "colors" -> data.hasColors() ? String.join(", ", data.getColors()) : "нет";
case "color_enabled" -> data.isColorEnabled() ? "да" : "нет";
case "prefix_enabled" -> data.isPrefixEnabled() ? "да" : "нет";
default -> null;
};
}
private String stripColors(String text) {
if (text == null) return null;
return text.replaceAll("(?i)(§x(§[0-9a-f]){6}|§[0-9a-fk-or]|&[0-9a-fk-or]|&#[0-9a-f]{6})", "");
}
}