Skip to content
This repository has been archived by the owner on Aug 10, 2023. It is now read-only.
/ cmdlib Public archive
forked from uTen2c/cmdlib

Paper用のBrigadierのKotlinラッパー

License

Notifications You must be signed in to change notification settings

Lepinoid/cmdlib

 
 

Repository files navigation

cmdlib

BrigadierのKotlin用ラッパー

Maven metadata URL

uten2c/cmdlibのフォーク版です.本人より許諾を得て改変・MITライセンスでの配布を行っております

1.18以降のバージョンではuten2c氏のstroboより移植しています。

注意:一部argumentはNMSが必須になります

Groovy DSL

repositories {
    maven { url 'https://lepinoid.github.io/maven-repo/' }
}

dependencies {
    implementation 'net.lepinoid:cmdlib:VERSION'
}

Kotlin DSL

repositories {
    maven("https://lepinoid.github.io/maven-repo/")
}

dependencies {
    implementation("net.lepinoid:cmdlib:VERSION")
}

Example

val cmdLib = CmdLib(Plugin)

cmdLib.register("example") {
    requires("permission.name") // Bukkit permission name
    // requires(2) // or Minecraft op level
    // or custom
    // requires { sender ->
    //     sender is Player && sender.gameMode == GameMode.CREATIVE
    // }

    literal("echo") {
        executes {
            sender.sendMessage("Hello")
        }
    }

    literal("getDiamond") {
        //before 1.18
        integer("amount", 0, 64) {
            executes {
                val itemStack = ItemStack(Material.DIAMOND).apply {
                    amount = getInteger("amount")
                }
                player.inventory.addItem(itemStack)
            }
        }
        // 1.18~
        integer(0, 64) { getAmount ->
            executes {
                val itemStack = ItemStack(Material.DIAMOND).apply {
                    amount = getAmount()
                }
                player.inventory.addItem(itemStack)
            }
        }
    }

    literal("tp") {
        // before 1.18
        entity("target") {
            executes {
                val target = getEntity("target")
                player.teleport(target.location)
            }
        }
        // 1.18~
        entity { getTarget ->
            executes {
                player.teleport(getTarget().location)
            }
        }
    }
}

引数

see CommandBuilder.kt

Tips

  • executes内でplayerを使用するときコマンドの実行者がプレイヤーでない場合実行に失敗するのでsenderがプレイヤーであるかの検証をする必要はない

About

Paper用のBrigadierのKotlinラッパー

Topics

Resources

License

Stars

Watchers

Forks

Languages

  • Kotlin 100.0%