占位符

This commit is contained in:
2026-06-04 02:54:30 +08:00
parent 4cf440b843
commit 29e5216c8c
4 changed files with 81 additions and 0 deletions
+11
View File
@@ -65,6 +65,10 @@
<id>spigotmc-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
<repository>
<id>placeholderapi</id>
<url>https://repo.helpch.at/releases/</url>
</repository>
</repositories>
<dependencies>
@@ -102,5 +106,12 @@
<version>4.4.1</version>
<scope>provided</scope>
</dependency>
<!-- PlaceholderAPI -->
<dependency>
<groupId>me.clip</groupId>
<artifactId>placeholderapi</artifactId>
<version>2.12.2</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
@@ -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()
}
}
}
@@ -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"
}
}
}
+1
View File
@@ -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