feat: Add PlaceholderAPI expansion with guild placeholders for TAB and EssentialsChat
This commit is contained in:
@@ -13,6 +13,7 @@ repositories {
|
||||
maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/")
|
||||
maven("https://oss.sonatype.org/content/groups/public/")
|
||||
maven("https://maven.enginehub.org/repo/")
|
||||
maven("https://repo.extendedclip.com/content/repositories/placeholderapi/")
|
||||
maven("https://jitpack.io")
|
||||
}
|
||||
|
||||
@@ -20,6 +21,9 @@ dependencies {
|
||||
// Paper API (1.20.4)
|
||||
compileOnly("io.papermc.paper:paper-api:1.20.4-R0.1-SNAPSHOT")
|
||||
|
||||
// PlaceholderAPI
|
||||
compileOnly("me.clip:placeholderapi:2.11.5")
|
||||
|
||||
// WorldGuard & WorldEdit APIs
|
||||
compileOnly("com.sk89q.worldguard:worldguard-bukkit:7.0.9")
|
||||
compileOnly("com.sk89q.worldedit:worldedit-bukkit:7.3.0")
|
||||
|
||||
@@ -80,6 +80,12 @@ public final class Main extends JavaPlugin {
|
||||
pm.registerEvents(new fr.luc.gamingcore.listener.GuildChatListener(this), this);
|
||||
pm.registerEvents(new fr.luc.gamingcore.listener.NametagListener(this), this);
|
||||
|
||||
// 9. Initialiser l'expansion PlaceholderAPI si présente
|
||||
if (getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
|
||||
new fr.luc.gamingcore.hook.GamingCorePlaceholderExpansion(this).register();
|
||||
getLogger().info("Expansion PlaceholderAPI (GamingCore) enregistree avec succes !");
|
||||
}
|
||||
|
||||
getLogger().info("GamingCore (Système de Guilde - Cœur Métier & Commandes) a ete active avec succes !");
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,133 @@
|
||||
package fr.luc.gamingcore.hook;
|
||||
|
||||
import fr.luc.gamingcore.Main;
|
||||
import fr.luc.gamingcore.manager.GuildManager;
|
||||
import fr.luc.gamingcore.model.Guild;
|
||||
import fr.luc.gamingcore.model.GuildMember;
|
||||
import fr.luc.gamingcore.model.GuildRank;
|
||||
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* Expansion PlaceholderAPI pour GamingCore.
|
||||
* Expose les données des guildes (tag, couleur, nom, rang, banque, claims)
|
||||
* aux plugins tiers comme TAB, EssentialsChat, DecentHolograms, etc.
|
||||
*/
|
||||
public class GamingCorePlaceholderExpansion extends PlaceholderExpansion {
|
||||
|
||||
private final Main plugin;
|
||||
private final GuildManager guildManager;
|
||||
|
||||
/**
|
||||
* Constructeur de l'expansion PlaceholderAPI.
|
||||
*
|
||||
* @param plugin Instance principale du plugin.
|
||||
*/
|
||||
public GamingCorePlaceholderExpansion(Main plugin) {
|
||||
this.plugin = plugin;
|
||||
this.guildManager = plugin.getGuildManager();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getIdentifier() {
|
||||
return "gamingcore";
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getAuthor() {
|
||||
return "Luc";
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getVersion() {
|
||||
return plugin.getDescription().getVersion();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean persist() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable String onRequest(OfflinePlayer player, @NotNull String params) {
|
||||
if (player == null) {
|
||||
return "";
|
||||
}
|
||||
|
||||
Guild guild = guildManager.getGuildByPlayer(player.getUniqueId());
|
||||
|
||||
// Placeholders de vérification
|
||||
if (params.equalsIgnoreCase("has_guild")) {
|
||||
return guild != null ? "true" : "false";
|
||||
}
|
||||
|
||||
if (guild == null) {
|
||||
if (params.equalsIgnoreCase("guild_tag") || params.equalsIgnoreCase("tag") ||
|
||||
params.equalsIgnoreCase("guild_name") || params.equalsIgnoreCase("guild") ||
|
||||
params.equalsIgnoreCase("guild_formatted_tag") || params.equalsIgnoreCase("guild_chat_tag") ||
|
||||
params.equalsIgnoreCase("guild_rank") || params.equalsIgnoreCase("rank")) {
|
||||
return "";
|
||||
}
|
||||
if (params.equalsIgnoreCase("guild_color") || params.equalsIgnoreCase("color")) {
|
||||
return "#FFFFFF";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
GuildMember member = guild.getMember(player.getUniqueId());
|
||||
GuildRank rank = member != null ? guild.getRank(member.getRankId()) : null;
|
||||
String rankName = rank != null ? rank.getName() : "Membre";
|
||||
int rankPriority = rank != null ? rank.getPriority() : 1;
|
||||
|
||||
switch (params.toLowerCase()) {
|
||||
case "guild":
|
||||
case "guild_name":
|
||||
case "name":
|
||||
return guild.getName();
|
||||
|
||||
case "guild_tag":
|
||||
case "tag":
|
||||
return guild.getTag();
|
||||
|
||||
case "guild_tag_brackets":
|
||||
return "[" + guild.getTag() + "]";
|
||||
|
||||
case "guild_color":
|
||||
case "color":
|
||||
return guild.getColor();
|
||||
|
||||
case "guild_formatted_tag":
|
||||
case "formatted_tag":
|
||||
// Format HEX compatible TAB et EssentialsChat (ex: �C9FF[VAL]&r )
|
||||
return "&" + guild.getColor() + "[" + guild.getTag() + "]&r ";
|
||||
|
||||
case "guild_chat_tag":
|
||||
case "chat_tag":
|
||||
return "&" + guild.getColor() + "[" + guild.getTag() + "]&r ";
|
||||
|
||||
case "guild_rank":
|
||||
case "rank":
|
||||
return rankName;
|
||||
|
||||
case "guild_rank_priority":
|
||||
return String.valueOf(rankPriority);
|
||||
|
||||
case "guild_balance":
|
||||
case "balance":
|
||||
return guildManager.getEconomyManager().format(guild.getBalance());
|
||||
|
||||
case "guild_claims":
|
||||
case "claims":
|
||||
return String.valueOf(guild.getClaimCount());
|
||||
|
||||
case "guild_members":
|
||||
case "members":
|
||||
return String.valueOf(guild.getMemberCount());
|
||||
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,3 +11,5 @@ softdepend:
|
||||
- WorldEdit
|
||||
- Essentials
|
||||
- EssentialsX
|
||||
- PlaceholderAPI
|
||||
- TAB
|
||||
|
||||
Reference in New Issue
Block a user