From bfb42251462e37bab464a6896e12c3f6d4b49455 Mon Sep 17 00:00:00 2001 From: BaileyCodes Date: Sun, 20 Sep 2026 17:18:50 -0500 Subject: [PATCH] Initial commit: ET Placeholders plugin --- index.html | 56 ++++++ pom.xml | 58 ++++++ .../bailey/etplaceholders/DataManager.java | 180 ++++++++++++++++++ .../bailey/etplaceholders/ETExpansion.java | 75 ++++++++ .../etplaceholders/ETPlaceholdersPlugin.java | 33 ++++ src/main/resources/config.yml | 15 ++ src/main/resources/plugin.yml | 7 + target/ETPlaceholders-1.0.0.jar | Bin 0 -> 10060 bytes target/classes/config.yml | 15 ++ .../bailey/etplaceholders/DataManager.class | Bin 0 -> 9790 bytes .../bailey/etplaceholders/ETExpansion.class | Bin 0 -> 2640 bytes .../etplaceholders/ETPlaceholdersPlugin.class | Bin 0 -> 1705 bytes target/classes/plugin.yml | 7 + target/maven-archiver/pom.properties | 3 + .../compile/default-compile/createdFiles.lst | 3 + .../compile/default-compile/inputFiles.lst | 3 + 16 files changed, 455 insertions(+) create mode 100644 index.html create mode 100644 pom.xml create mode 100644 src/main/java/dev/bailey/etplaceholders/DataManager.java create mode 100644 src/main/java/dev/bailey/etplaceholders/ETExpansion.java create mode 100644 src/main/java/dev/bailey/etplaceholders/ETPlaceholdersPlugin.java create mode 100644 src/main/resources/config.yml create mode 100644 src/main/resources/plugin.yml create mode 100644 target/ETPlaceholders-1.0.0.jar create mode 100644 target/classes/config.yml create mode 100644 target/classes/dev/bailey/etplaceholders/DataManager.class create mode 100644 target/classes/dev/bailey/etplaceholders/ETExpansion.class create mode 100644 target/classes/dev/bailey/etplaceholders/ETPlaceholdersPlugin.class create mode 100644 target/classes/plugin.yml create mode 100644 target/maven-archiver/pom.properties create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst diff --git a/index.html b/index.html new file mode 100644 index 0000000..e742cd8 --- /dev/null +++ b/index.html @@ -0,0 +1,56 @@ + + + + + + ET Placeholders Wiki + + + + +

ET Placeholders Wiki

+

A PlaceholderAPI expansion for fetching player tiers and leaderboards from the EaglerTiers API.

+ +

Installation

+
    +
  1. Ensure you have PlaceholderAPI installed on your server.
  2. +
  3. Drop the ETPlaceholders-1.0.0.jar into your plugins folder.
  4. +
  5. Restart your server.
  6. +
  7. Configure your api-key in plugins/ETPlaceholders/config.yml (Optional but highly recommended to avoid rate limits).
  8. +
  9. Run /papi reload or restart the server.
  10. +
+ +

Configuration (config.yml)

+
# ET Placeholders Configuration
+api-url: "https://api.eaglertiers.com/api"
+api-key: "YOUR_KEY_HERE"
+cache-refresh-minutes: 15
+not-found-text: "Unranked"
+ +

Available Placeholders

+ +

Player Data

+ + +

Leaderboard Data

+ + +

Supported Gamemodes

+

overall, vanilla, mace, axe, sword, smp, diamondsmp, uhc, pot, nethop, cart

+ + + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..8d56f76 --- /dev/null +++ b/pom.xml @@ -0,0 +1,58 @@ + + 4.0.0 + + dev.bailey + ETPlaceholders + 1.0.0 + jar + + ETPlaceholders + PlaceholderAPI expansion for EaglerTiers + + + UTF-8 + 1.8 + 1.8 + + + + + spigot-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + + placeholderapi + https://repo.extendedclip.com/content/repositories/placeholderapi/ + + + + + + org.spigotmc + spigot-api + 1.12.2-R0.1-SNAPSHOT + provided + + + me.clip + placeholderapi + 2.11.6 + provided + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + 1.8 + 1.8 + + + + + diff --git a/src/main/java/dev/bailey/etplaceholders/DataManager.java b/src/main/java/dev/bailey/etplaceholders/DataManager.java new file mode 100644 index 0000000..0dcfda0 --- /dev/null +++ b/src/main/java/dev/bailey/etplaceholders/DataManager.java @@ -0,0 +1,180 @@ +package dev.bailey.etplaceholders; + +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import org.bukkit.Bukkit; + +public class DataManager { + + private final ETPlaceholdersPlugin plugin; + private final Gson gson = new Gson(); + + private final Map> leaderboardCache = new ConcurrentHashMap<>(); + + private final Map> leaderboardTierCache = new ConcurrentHashMap<>(); + + private final Map> playerTierCache = new ConcurrentHashMap<>(); + + private final Map playerRankCache = new ConcurrentHashMap<>(); + + private final String[] trackedModes = {"overall", "vanilla", "mace", "axe", "sword", "smp", "diamondsmp", "uhc", "pot", "nethop", "cart"}; + + public DataManager(ETPlaceholdersPlugin plugin) { + this.plugin = plugin; + } + + public void startTasks() { + int minutes = plugin.getConfig().getInt("cache-refresh-minutes", 15); + long ticks = minutes * 60 * 20L; + + Bukkit.getScheduler().runTaskTimerAsynchronously(plugin, this::refreshLeaderboards, 0L, ticks); + } + + private String getApiUrl() { + String url = plugin.getConfig().getString("api-url", "https://api.eaglertiers.com/api"); + if (url.endsWith("/")) { + url = url.substring(0, url.length() - 1); + } + return url; + } + + private HttpURLConnection createConnection(String endpoint) throws Exception { + String urlStr = getApiUrl() + endpoint; + String key = plugin.getConfig().getString("api-key", ""); + if (key != null && !key.trim().isEmpty()) { + if (urlStr.contains("?")) { + urlStr += "&key=" + key; + } else { + urlStr += "?key=" + key; + } + } + + URL url = new URL(urlStr); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("GET"); + conn.setRequestProperty("Accept", "application/json"); + conn.setConnectTimeout(5000); + conn.setReadTimeout(5000); + + if (key != null && !key.trim().isEmpty()) { + conn.setRequestProperty("X-API-Key", key); + } + + return conn; + } + + public void refreshLeaderboards() { + for (String mode : trackedModes) { + try { + String endpoint = mode.equalsIgnoreCase("overall") ? "/players" : "/rankings/" + mode; + HttpURLConnection conn = createConnection(endpoint); + + if (conn.getResponseCode() == 200) { + try (InputStreamReader reader = new InputStreamReader(conn.getInputStream())) { + JsonObject json = gson.fromJson(reader, JsonObject.class); + if (json != null && json.has("data")) { + JsonArray data = json.getAsJsonArray("data"); + Map modeTopNames = new ConcurrentHashMap<>(); + Map modeTopTiers = new ConcurrentHashMap<>(); + + for (int i = 0; i < data.size(); i++) { + JsonObject pObj = data.get(i).getAsJsonObject(); + String name = pObj.has("username") && !pObj.get("username").isJsonNull() ? pObj.get("username").getAsString() : "Unknown"; + int pos = pObj.has("position") && !pObj.get("position").isJsonNull() ? pObj.get("position").getAsInt() : (i + 1); + + modeTopNames.put(pos, name); + + String tier = plugin.getConfig().getString("not-found-text", "Unranked"); + if (pObj.has("tiers") && !pObj.get("tiers").isJsonNull()) { + JsonObject tiersObj = pObj.getAsJsonObject("tiers"); + if (tiersObj.has(mode) && !tiersObj.get(mode).isJsonNull()) { + tier = tiersObj.get(mode).getAsString(); + } + } + modeTopTiers.put(pos, tier); + } + leaderboardCache.put(mode.toLowerCase(), modeTopNames); + leaderboardTierCache.put(mode.toLowerCase(), modeTopTiers); + } + } + } + } catch (Exception e) { + plugin.getLogger().warning("Failed to fetch leaderboard for " + mode + ": " + e.getMessage()); + } + } + } + + public void fetchPlayerAsync(String playerName) { + Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { + try { + HttpURLConnection conn = createConnection("/players/" + playerName); + if (conn.getResponseCode() == 200) { + try (InputStreamReader reader = new InputStreamReader(conn.getInputStream())) { + JsonObject json = gson.fromJson(reader, JsonObject.class); + if (json != null) { + Map pTiers = new ConcurrentHashMap<>(); + + if (json.has("tiers") && !json.get("tiers").isJsonNull()) { + JsonObject tiersObj = json.getAsJsonObject("tiers"); + for (Map.Entry entry : tiersObj.entrySet()) { + if (!entry.getValue().isJsonNull()) { + pTiers.put(entry.getKey().toLowerCase(), entry.getValue().getAsString()); + } + } + } + + playerTierCache.put(playerName.toLowerCase(), pTiers); + + if (json.has("position") && !json.get("position").isJsonNull()) { + playerRankCache.put(playerName.toLowerCase(), json.get("position").getAsInt()); + } + } + } + } + } catch (Exception e) { + } + }); + } + + public String getPlayerTier(String playerName, String mode) { + String pLow = playerName.toLowerCase(); + if (!playerTierCache.containsKey(pLow)) { + fetchPlayerAsync(playerName); + return plugin.getConfig().getString("not-found-text", "Unranked"); + } + Map tiers = playerTierCache.get(pLow); + return tiers.getOrDefault(mode.toLowerCase(), plugin.getConfig().getString("not-found-text", "Unranked")); + } + + public String getPlayerRank(String playerName) { + String pLow = playerName.toLowerCase(); + if (!playerRankCache.containsKey(pLow)) { + fetchPlayerAsync(playerName); + return plugin.getConfig().getString("not-found-text", "Unranked"); + } + return String.valueOf(playerRankCache.get(pLow)); + } + + public String getTopPlayerName(String mode, int position) { + Map modeCache = leaderboardCache.get(mode.toLowerCase()); + if (modeCache == null || !modeCache.containsKey(position)) { + return plugin.getConfig().getString("not-found-text", "None"); + } + return modeCache.get(position); + } + + public String getTopPlayerTier(String mode, int position) { + Map modeCache = leaderboardTierCache.get(mode.toLowerCase()); + if (modeCache == null || !modeCache.containsKey(position)) { + return plugin.getConfig().getString("not-found-text", "Unranked"); + } + return modeCache.get(position); + } +} diff --git a/src/main/java/dev/bailey/etplaceholders/ETExpansion.java b/src/main/java/dev/bailey/etplaceholders/ETExpansion.java new file mode 100644 index 0000000..bde2082 --- /dev/null +++ b/src/main/java/dev/bailey/etplaceholders/ETExpansion.java @@ -0,0 +1,75 @@ +package dev.bailey.etplaceholders; + +import me.clip.placeholderapi.expansion.PlaceholderExpansion; +import org.bukkit.entity.Player; + +public class ETExpansion extends PlaceholderExpansion { + + private final ETPlaceholdersPlugin plugin; + + public ETExpansion(ETPlaceholdersPlugin plugin) { + this.plugin = plugin; + } + + @Override + public String getIdentifier() { + return "et"; + } + + @Override + public String getAuthor() { + return "Bailey"; + } + + @Override + public String getVersion() { + return plugin.getDescription().getVersion(); + } + + @Override + public boolean persist() { + return true; + } + + @Override + public String onPlaceholderRequest(Player player, String identifier) { + if (identifier.equalsIgnoreCase("rank")) { + if (player == null) return ""; + return plugin.getDataManager().getPlayerRank(player.getName()); + } + + if (identifier.toLowerCase().startsWith("tier_")) { + if (player == null) return ""; + String mode = identifier.substring(5); + return plugin.getDataManager().getPlayerTier(player.getName(), mode); + } + + if (identifier.toLowerCase().startsWith("top_name_")) { + String[] parts = identifier.split("_"); + if (parts.length == 4) { + String mode = parts[2]; + try { + int pos = Integer.parseInt(parts[3]); + return plugin.getDataManager().getTopPlayerName(mode, pos); + } catch (NumberFormatException e) { + return null; + } + } + } + + if (identifier.toLowerCase().startsWith("top_tier_")) { + String[] parts = identifier.split("_"); + if (parts.length == 4) { + String mode = parts[2]; + try { + int pos = Integer.parseInt(parts[3]); + return plugin.getDataManager().getTopPlayerTier(mode, pos); + } catch (NumberFormatException e) { + return null; + } + } + } + + return null; + } +} diff --git a/src/main/java/dev/bailey/etplaceholders/ETPlaceholdersPlugin.java b/src/main/java/dev/bailey/etplaceholders/ETPlaceholdersPlugin.java new file mode 100644 index 0000000..16b47f2 --- /dev/null +++ b/src/main/java/dev/bailey/etplaceholders/ETPlaceholdersPlugin.java @@ -0,0 +1,33 @@ +package dev.bailey.etplaceholders; + +import org.bukkit.Bukkit; +import org.bukkit.plugin.java.JavaPlugin; + +public class ETPlaceholdersPlugin extends JavaPlugin { + + private DataManager dataManager; + + @Override + public void onEnable() { + saveDefaultConfig(); + + dataManager = new DataManager(this); + dataManager.startTasks(); + + if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) { + new ETExpansion(this).register(); + getLogger().info("ETPlaceholders enabled and hooked into PlaceholderAPI."); + } else { + getLogger().warning("PlaceholderAPI not found! Placeholders will not work."); + } + } + + @Override + public void onDisable() { + Bukkit.getScheduler().cancelTasks(this); + } + + public DataManager getDataManager() { + return dataManager; + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..b27f73d --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,15 @@ +# ET Placeholders Configuration +# Available Gamemodes: overall, vanilla, mace, axe, sword, smp, diamondsmp, uhc, pot, nethop, cart + +# The base URL of the EaglerTiers API +api-url: "https://api.eaglertiers.com/api" + +# Your API key. While public read requests don't require an API key, it is highly recommended to provide one to avoid rate limits. +api-key: "" + +# How often (in minutes) to refresh cached player and leaderboard data. +# Do not set this too low or you may hit the API rate limit (120 req/min). +cache-refresh-minutes: 15 + +# Value to display when a tier or player is not found +not-found-text: "Unranked" diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..1cb000b --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,7 @@ +name: ETPlaceholders +version: 1.0.0 +main: dev.bailey.etplaceholders.ETPlaceholdersPlugin +api-version: "1.13" +softdepend: [PlaceholderAPI] +description: PlaceholderAPI expansion for EaglerTiers +author: Bailey diff --git a/target/ETPlaceholders-1.0.0.jar b/target/ETPlaceholders-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..9b966c879039ba8159626b8f21826049c312d919 GIT binary patch literal 10060 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 literal 0 HcmV?d00001 diff --git a/target/classes/config.yml b/target/classes/config.yml new file mode 100644 index 0000000..b27f73d --- /dev/null +++ b/target/classes/config.yml @@ -0,0 +1,15 @@ +# ET Placeholders Configuration +# Available Gamemodes: overall, vanilla, mace, axe, sword, smp, diamondsmp, uhc, pot, nethop, cart + +# The base URL of the EaglerTiers API +api-url: "https://api.eaglertiers.com/api" + +# Your API key. While public read requests don't require an API key, it is highly recommended to provide one to avoid rate limits. +api-key: "" + +# How often (in minutes) to refresh cached player and leaderboard data. +# Do not set this too low or you may hit the API rate limit (120 req/min). +cache-refresh-minutes: 15 + +# Value to display when a tier or player is not found +not-found-text: "Unranked" diff --git a/target/classes/dev/bailey/etplaceholders/DataManager.class b/target/classes/dev/bailey/etplaceholders/DataManager.class new file mode 100644 index 0000000000000000000000000000000000000000..7ed886dccef1970e37a8e1ab932265c99757e61c GIT binary patch literal 9790 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 b8()*{I8Bt_X(?qqJu?0#(Q5t&lmfLG literal 0 HcmV?d00001 diff --git a/target/classes/plugin.yml b/target/classes/plugin.yml new file mode 100644 index 0000000..1cb000b --- /dev/null +++ b/target/classes/plugin.yml @@ -0,0 +1,7 @@ +name: ETPlaceholders +version: 1.0.0 +main: dev.bailey.etplaceholders.ETPlaceholdersPlugin +api-version: "1.13" +softdepend: [PlaceholderAPI] +description: PlaceholderAPI expansion for EaglerTiers +author: Bailey diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties new file mode 100644 index 0000000..10097c9 --- /dev/null +++ b/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=ETPlaceholders +groupId=dev.bailey +version=1.0.0 diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..f25342e --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,3 @@ +dev\bailey\etplaceholders\DataManager.class +dev\bailey\etplaceholders\ETExpansion.class +dev\bailey\etplaceholders\ETPlaceholdersPlugin.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..f1c76ae --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,3 @@ +X:\dev\plugin\et_placeholders\src\main\java\dev\bailey\etplaceholders\DataManager.java +X:\dev\plugin\et_placeholders\src\main\java\dev\bailey\etplaceholders\ETExpansion.java +X:\dev\plugin\et_placeholders\src\main\java\dev\bailey\etplaceholders\ETPlaceholdersPlugin.java