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://hub.spigotmc.org/nexus/content/repositories/snapshots/")
|
||||||
maven("https://oss.sonatype.org/content/groups/public/")
|
maven("https://oss.sonatype.org/content/groups/public/")
|
||||||
maven("https://maven.enginehub.org/repo/")
|
maven("https://maven.enginehub.org/repo/")
|
||||||
|
maven("https://repo.extendedclip.com/content/repositories/placeholderapi/")
|
||||||
maven("https://jitpack.io")
|
maven("https://jitpack.io")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -20,6 +21,9 @@ dependencies {
|
|||||||
// Paper API (1.20.4)
|
// Paper API (1.20.4)
|
||||||
compileOnly("io.papermc.paper:paper-api:1.20.4-R0.1-SNAPSHOT")
|
compileOnly("io.papermc.paper:paper-api:1.20.4-R0.1-SNAPSHOT")
|
||||||
|
|
||||||
|
// PlaceholderAPI
|
||||||
|
compileOnly("me.clip:placeholderapi:2.11.5")
|
||||||
|
|
||||||
// WorldGuard & WorldEdit APIs
|
// WorldGuard & WorldEdit APIs
|
||||||
compileOnly("com.sk89q.worldguard:worldguard-bukkit:7.0.9")
|
compileOnly("com.sk89q.worldguard:worldguard-bukkit:7.0.9")
|
||||||
compileOnly("com.sk89q.worldedit:worldedit-bukkit:7.3.0")
|
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.GuildChatListener(this), this);
|
||||||
pm.registerEvents(new fr.luc.gamingcore.listener.NametagListener(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 !");
|
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
|
- WorldEdit
|
||||||
- Essentials
|
- Essentials
|
||||||
- EssentialsX
|
- EssentialsX
|
||||||
|
- PlaceholderAPI
|
||||||
|
- TAB
|
||||||
|
|||||||
Reference in New Issue
Block a user