コマンドを簡単に作成することができます。plugin.yml
にコマンドを書く必要はありません。
plugin.command("teleport") {
description = "テレポート系の処理を行う"
aliases = listOf("tp", "sample-teleport")
// タブ補完の設定を行える
tab {
// 引数が何も入力されていない場合の補完候補
argument {
add("here")
addAll(onlinePlayerNames)
}
// 最初の引数が here の場合の補完候補
argument("here **") {
addAll(onlinePlayerNames)
}
}
// 実行時の処理を設定できる
execute {
// ...
}
}
TextComponent 関連の便利な関数・クラスを追加します。
コンフィグを簡単に読み込むことができます。
plugin.config(sender, "config.yml") {
val message: String? = get("message", ConfigDataType.String)
// ...
}
// 複数ファイルにまたがったコンフィグも扱えます。
plugin.configDirectory(sender, "mobs") {
// id が指定されていなければファイル名を使用します。
val id: String = get("id", ConfigDataType.String, file.nameWithoutExtension)
section("attribute")?.forEach { name ->
val level = get("attribute.$name.level", ConfigDataType.Int, 1)
// ...
}
// ...
}
イベントを簡単に定義・登録することができます。
// event<>{} で定義できる
object EventListener {
override fun register() {
plugin.events {
// 入退出メッセージを変更する
event<PlayerJoinEvent> {
it.joinMessage = ">> Join ${it.player.displayName}"
}
event<PlayerQuitEvent> {
it.quitMessage = ">> Quit ${it.player.displayName}"
}
// プレイヤーに対するダメージをキャンセルする
cancelEventIf<EntityDamageEvent> {
it.entity is Player
}
// OP 以外の移動をキャンセルする
cancelEventIfNot<PlayerMoveEvent> {
it.player.isOp
}
}
}
}
インベントリを簡単に扱うことができます。使用する場合は必ず、EasySpigotAPIOption::useInventory
を実行してください。
class Main : JavaPlugin() {
override fun onEnable() {
CustomInventory.onEnable(this)
}
}
fun open(player: Player) {
inventory("&9&lサンプルインベントリ", 4) {
item(4, Material.PUFFERFISH) {
onClick {
player.playSound(Sound.ENTITY_PLAYER_LEVELUP)
}
}
item(22, Material.ORANGE_STAINED_GLASS_PANE, "&a&l◀ &c&l▶") {
onClick(ClickType.LEFT) {
item(22, Material.LIME_STAINED_GLASS_PANE, "&a&l◀ &c&l▶")
}
onClick(ClickType.MIDDLE) {
item(22, Material.ORANGE_STAINED_GLASS_PANE, "&a&l◀ &c&l▶")
}
onClick(ClickType.RIGHT) {
item(22, Material.RED_STAINED_GLASS_PANE, "&a&l◀ &c&l▶")
}
}
}.open(player)
}
Item 関連の便利な関数を追加します。
メッセージ関連の便利な関数を追加します。
NMSを使うための関数・クラスを追加します。
- nms/CraftItemStackWrapper.kt
- nms/extension.kt
- nms/NBTTagCompoundWrapper.kt
- nms/NMSItemStackWrapper.kt
- nms/NMSWrapper.kt
パーティクル関連の便利な関数を追加します。
スケジューラを簡単に使うことができます。
// 10秒後に実行されます
runTaskLater(10 * 20) {
// async: false ... サーバーに同期した処理です
server.broadcastMessage("プラグインが有効になってから10秒経ちました")
}
// 30秒毎に実行されます
runTaskTimer(30 * 20, async = true) {
// async: true ... サーバーに同期していない処理です
server.onlinePlayers.forEach {
it.giveExpLevels(1)
}
}
音関連の便利な関数を追加します。
String 関連の便利な関数を追加します。
UUID 関連の便利な関数・クラスを追加します。
World 関連の便利なクラスを追加します。
EasySpigotAPI を使用してプラグインを製作した場合は以下に追加してください。参考にしていただけたらと思います。