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..d6d2243 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 placeholder + expansion = ForternExpansion(this) + if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { + 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