Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Davis1216/PixelWorldPro

Repository files navigation

快速创建一个带有EasyLib 的 Minecraft项目

菜单

需要在插件主类使用菜单模块

class EasyTemplate : EasyPlugin() {
 init {
 // 代表使用ui根据模块 不使用不会监听ui点击
 useUIModule()
 }
}
object Menu {
 fun test(player: Player) {
 // "测试菜单 %player_name%".replacePlaceholder(player) 代表进行Papi变量替换
 val basic = Basic(player, "测试菜单 %player_name%".replacePlaceholder(player))
 // 代表这个菜单有多少行
 basic.rows(6)
 // 设置10号位置的物品
 basic.set(10, buildItem(XMaterial.STONE) {
 name = "我是石头"
 lore.add("我是大石头")
 })
 // 设置点击10号位的反应
 basic.onClick(10) {
 player.sendLang("你点击了10号位置")
 }
 basic.onClick {
 // 所有点击都会传入这里
 }
 basic.onDrag {
 // 所有拖动都会传入这里
 }
 basic.openAsync()
 }
}

命令

第一种写法 需要执行注册

override fun enable() {
 registerCommand(CommandPort::class.java)
}
@CommandHeader(command = "test", description = "描述", permission = "命令使用权限")
class CommandPort {
 @CommandBody // command<CommandSender> 所有类型都可以执行
 val a = command<CommandSender>("a") {
 description = "执行a"
 exec {
 sender.sendMessage("你执行了 /test a")
 }
 }
 @CommandBody // command<Player> 为只能玩家类型执行
 val b = command<Player>("b") {
 description = "执行b"
 exec {
 player.sendMessage("你执行了 /test b")
 }
 }
}

第二种写法 需要执行注册

override fun enable() {
 rootCommand.register()
}
// 自定义补全节点
private val testArgNode = ArgNode<World>("世界", exec = { token ->
 Bukkit.getWorlds().map { it.name }.filter { it.uppercase().startsWith(token.uppercase()) }
}, parse = {
 Bukkit.getWorld(it) ?: error("World $it not found")
})
private val test20 = command<CommandSender>("killWorldAllEntity") {
 description = "杀死世界所有实体"
 arg(testArgNode) { worldArg ->
 exec {
 val world = valueOf(worldArg)
 world.entities.filter { it !is Player }.forEach {
 it.remove()
 }
 }
 }
}
// 第二种写法
private val test21 = command<CommandSender>("a") {
 // 需要传入一个booleans参数
 booleans { b ->
 // 位置参数
 x { x ->
 y { y ->
 z { z ->
 exec {
 val boolean = valueOf(b)
 val xyz = "${valueOf(x)},${valueOf(y)},${valueOf(z)}"
 sender.sendMessage("你执行了 /test2 a,你输入的结果是 $boolean, $xyz")
 }
 }
 }
 }
 }
}
private val test22 = command<Player>("b") {
 // 要求传入一个玩家参数
 onlinePlayers { playerArg ->
 exec {
 val player = valueOf(playerArg)
 sender.sendMessage("你执行了 /test2 b")
 player.forEach {
 it.sendMessage("你好,你被选中了")
 }
 }
 }
}
val rootCommand = command<CommandSender>("test2") {
 description = "描述"
 permission = "执行权限"
 sub(test21)
 sub(test22)
 sub(test20)
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Kotlin 89.3%
  • Java 10.7%

AltStyle によって変換されたページ (->オリジナル) /