diff --git a/pom.xml b/pom.xml
index eb4466d..bd71d87 100644
--- a/pom.xml
+++ b/pom.xml
@@ -65,6 +65,10 @@
spigotmc-repo
https://hub.spigotmc.org/nexus/content/repositories/snapshots/
+
+ placeholderapi
+ https://repo.helpch.at/releases/
+
@@ -102,5 +106,12 @@
4.4.1
provided
+
+
+ me.clip
+ placeholderapi
+ 2.12.2
+ provided
+
diff --git a/src/main/kotlin/xyz/fortern/forternhelper/Helper.kt b/src/main/kotlin/xyz/fortern/forternhelper/Helper.kt
index 86275f2..ced2b9a 100644
--- a/src/main/kotlin/xyz/fortern/forternhelper/Helper.kt
+++ b/src/main/kotlin/xyz/fortern/forternhelper/Helper.kt
@@ -1,23 +1,39 @@
package xyz.fortern.forternhelper
+import me.clip.placeholderapi.expansion.PlaceholderExpansion
import net.kyori.adventure.platform.bukkit.BukkitAudiences
import org.bukkit.Bukkit
import org.bukkit.plugin.java.JavaPlugin
import xyz.fortern.forternhelper.command.HelperCommand
import xyz.fortern.forternhelper.listener.ForternListener
+import xyz.fortern.forternhelper.placeholder.ForternExpansion
class Helper : JavaPlugin() {
private lateinit var adventure: BukkitAudiences
+ private lateinit var expansion: PlaceholderExpansion
+
override fun onEnable() {
// Plugin startup logic
this.adventure = BukkitAudiences.create(this)
logger.info("Registering listeners...")
+ // register listeners
Bukkit.getPluginManager().registerEvents(ForternListener(this), this)
+ logger.info("Registering commands...")
+ // register commands
Bukkit.getPluginCommand("helper")?.setExecutor(HelperCommand(this, adventure))
+ // register placeholders
+ if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
+ expansion = ForternExpansion(this)
+ logger.info("Registering placeholders...")
+ expansion.register()
+ }
}
override fun onDisable() {
// Plugin shutdown logic
+ if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
+ expansion.unregister()
+ }
}
}
diff --git a/src/main/kotlin/xyz/fortern/forternhelper/placeholder/ForternExpansion.kt b/src/main/kotlin/xyz/fortern/forternhelper/placeholder/ForternExpansion.kt
new file mode 100644
index 0000000..c7838e9
--- /dev/null
+++ b/src/main/kotlin/xyz/fortern/forternhelper/placeholder/ForternExpansion.kt
@@ -0,0 +1,53 @@
+package xyz.fortern.forternhelper.placeholder
+
+import me.clip.placeholderapi.expansion.PlaceholderExpansion
+import org.bukkit.Bukkit
+import org.bukkit.OfflinePlayer
+import org.bukkit.plugin.java.JavaPlugin
+
+
+class ForternExpansion(
+ val plugin: JavaPlugin
+) : PlaceholderExpansion() {
+ override fun getIdentifier(): String {
+ return "fortern"
+ }
+
+ override fun getAuthor(): String {
+ return plugin.description.authors.toString()
+ }
+
+ override fun getVersion(): String {
+ return plugin.description.version
+ }
+
+ override fun persist(): Boolean {
+ return true
+ }
+
+ override fun onRequest(player: OfflinePlayer, params: String): String {
+ return if (params.startsWith("loadlevel_")) {
+ // e.g. peace_the_nether_x,z
+ val first = params.indexOf('_')
+ if (first < 0) return "unknown"
+ val last = params.lastIndexOf('_')
+ if (last <= first) return "unknown"
+ val chunkPos = params.substring(last + 1)
+ val split = chunkPos.split(',')
+ if (split.size < 2) return "unknown"
+ val chunkX = split[0]
+ val chunkZ = split[1]
+ val worldName = params.substring(first + 1, last)
+ val world = Bukkit.getWorld(worldName) ?: return "unknown"
+ try {
+ val x = Integer.parseInt(chunkX)
+ val z = Integer.parseInt(chunkZ)
+ world.getChunkAt(x, z).loadLevel.toString()
+ } catch (_: NumberFormatException) {
+ "unknown"
+ }
+ } else {
+ "unknown"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index fdac0e9..1d44a6b 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -3,6 +3,7 @@ version: '${version}'
authors: [ Fortern ]
api-version: '26.1'
main: xyz.fortern.forternhelper.Helper
+softdepend: ["PlaceholderAPI"]
libraries:
- org.jetbrains.kotlin:kotlin-stdlib:2.3.21