[新增接口]
1. Player -> com.async.command.module.Player [玩家接口]
[Player类]
[构造方法]: Player(org.bukkit.entity.Player): => Player: 【注意】: 这里的org.bukkit.entity.Player为Spigot的原玩家对象
[代码示例]
JavaScript:let Player = com.async.command.module.Player; function PlayerChatEvent(event) { let player = new Player(event.getPlayer()); player.sendMessage(player.getIP())//获取玩家IP地址 }
Method: 方法
1. void setPlayer(org.bukkit.entity.Player: player): 设置新的玩家对象
2. void sendMessage(string: message): 发送一条信息JavaScript:Player.setPlayer(event.getPlayer())
3. string getIP(): 获取玩家IP地址JavaScript:Player.sendMessage("hello")
3. boolean ifFlight(): 获取玩家是否能飞JavaScript:let ip = Player.getIP(); java.lang.System.out.println(ip);
4. string getName(): 获取玩家名称JavaScript:if(Player.ifFlight()) { Player.sendMessage("有飞行权限") }
5. string getNameTag(): 获取玩家头顶的名字JavaScript:java.lang.System.out.println(Player.getName())
6. void setNameTag(string name): 设置玩家头顶的名字JavaScript:java.lang.System.out.println(Player.getNameTag())
7. number getFlySpeed(): 获取玩家飞行速度JavaScript:Player.setNameTag("hello")
8 number getHealth(): 获取玩家血量JavaScript:java.lang.System.out.println("玩家"+Player.getName()+"的飞行速度 = "+Player.getFlySpeed())
9. void setHealth(number: health): 设置玩家血量JavaScript:Player.setNameTag(Player.getHealth().toString())
10. number getLevel(): 获取玩家经验等级JavaScript:Player.setHealth(10.0)
11. void setLevel(number: level): 设置玩家经验等级JavaScript:java.lang.System.out.println(Player.getLevel())
12. number getWalkSpeed(): 获取玩家行走速度JavaScript:Player.setLevel(1)
13. boolean isSneaking(): 玩家是否潜行JavaScript:java.lang.System.out.println(Player.getWalkSpeed())
14. void setSneaking(boolean bool): 设置玩家是否潜行JavaScript:if(Player.isSneaking()) { Player.sendMessage("玩家在潜行") }
15. boolean isSprinting(): 玩家是否在疾跑JavaScript:Player.setSneaking(false)
16. void kickPlayer(string: message): 踢出玩家并显示踢出的信息JavaScript:if(Player.isSprinting()) { java.lang.System.out.println("玩家"+Player.getName()+"在冲刺") }
17. void sendBlockData(Location: location, Material: material, number: data): 向玩家周围发送伪数据包方块 【注意】Location为Spigot的org.bukkit.Location, Material为Spigot的org.bukkit.MaterialJavaScript:Player.kickPlayer("游戏作弊,被踢出了游戏!")
18. void setFlying(boolean bool): 设置玩家是否可以飞行JavaScript:Player.sendBlockData(Player.getLocation(), org.bukkit.Material.DIAMOND_ORE, 0)
19. void setFlySpeed(number: int): 设置玩家飞行速度JavaScript:Player.setFlying(true)
20. void runCommand(string: command): 玩家执行指令JavaScript:Player.setFlySpeed(1.9)
21. Item getMainHand(): 获取玩家手持物品: 【注意】Item为com.async.command.module.ItemJavaScript:Player.runCommand("say hello")
22. void setMainHand(Item: item): 设置玩家手持物品 【注意】Item为com.async.command.module.ItemJavaScript:let item = Player.getMainHand();
23. boolean isOp(): 玩家是否有管理员权限JavaScript:let item = Player.getMainHand(); Player.setMainHand(item)
24. void setOp(boolean bool): 设置玩家是否为管理员JavaScript:if(Player.isOp()) { java.lang.System.out.println(Player.getName()+"有管理员权限") }
25. Location getLocation(): 返回玩家的坐标 【注意】Location为org.bukkit.LocationJavaScript:Player.setOp(false)
25. void teleport(Location location): 传送玩家到指定坐标JavaScript:let location = Player.getLocation(); let x = location.getX();
JavaScript:let location = Player.getLocation(); let x = location.getX(); location.setZ(x); Player.teleport(location)
2. Item -> com.async.command.module.Item[物品接口]
[构造方法]: Item(org.bukkit.Material) => Item
[代码示例]
JavaScript:function onCommand(player, command) { if(command == 'test') { let targetPlayer = new com.async.command.module.Player(player); let item = new com.async.command.module.Item(org.bukkit.Material.WOODEN_PICKAXE, 1) item.setLore(["这是一个拥有100级时运附魔的木稿"]) item.addEnchant(org.bukkit.enchantments.Enchantment.LOOT_BONUS_BLOCKS, 100) targetPalyer.setMainHand(item) } }
Method: 方法
1. void setLore(Array[]: lore): 向物品添加Lore数组标签
2. void setAmount(number: int): 设置物品最大叠堆数量JavaScript:Item.setLore(["hello"])
3. number getAmount(): 获取叠堆数量JavaScript:Item.setAmount(1)
4. number getEnchantmentLevel(Enchantment: enchant): 获取指定附魔等级 【注意】 Enchantment为Spigot的org.bukkit.enchantments.EnchantmentJavaScript:let count = Item.getAmount()
5. void removeEnchant(Enchantment: enchant): 移除指定附魔JavaScript:let level = Item.getEnchantmentLevel(org.bukkit.enchantments.Enchantment.LOOT_BONUS_BLOCKS)//获取时运等级
6. void addEnchant(Enchantment: enchant, number: level): 添加指定附魔[可突破等级限制]JavaScript:Item.removeEnchant(org.bukkit.enchantments.Enchantment.LOOT_BONUS_BLOCKS)
JavaScript:Item.addEnchant(org.bukkit.enchantments.Enchantment.LOOT_BONUS_BLOCKS, 32767)
[新增背包注册事件]
【1】(玩家点击背包栏事件 -- 对应Spigot事件InventoryClickEvent)
JavaScript:function InventoryClickEvent(event) { if(event.getView().getTitle() == 'hello') { event.setCancelled(true); } }
[新增方块注册事件 - 教程]
【1】(玩家放置方块事件 -- 对应Spigot事件BlockPlaceEvent)
JavaScript:function BlockPlaceEvent(event) { let player = event.getPlayer(); player.sendMessage("不允许放置方块!!") event.setCancelled(true) }
【2】(方块要被火烧掉事件 -- 对应Spigot事件BlockBurnEvent)
JavaScript:function BlockBurnEvent(event) { event.setCancelled(true); }
【3】(方块被破坏掉落经验触发 -- 对应Spigot事件BlockExpEvent)
JavaScript:function BlockExpEvent(event) { event.setExpToDrop(50);//设置掉落经验为50 }
【4】(方块被玩家破坏并且掉落物品事件 -- 对应Spigot事件BlockDropItemEvent)
JavaScript:function BlockDropItemEvent(event) { let player = event.getPlayer(); let item = org.bukkit.inventory.ItemStack; let material = org.bukkit.Material; let arr = event.getItems(); if(arr[0] != undefined) { arr[0].setItemStack(new item(material.DIAMOND_SWORD)) } }
[更新教程 - 事件注册]
【1】(玩家聊天事件 -- 对应Spigot事件PlayerChatEvent)
JavaScript:function PlayerChatEvent(event) { let player = event.getPlayer();//返回的对象为玩家对象,具体可以查看Spigot文档 java.lang.System.out.println("玩家"+player.getName()+"说: "+event.getMessage()); }
【2】(玩家登录服务器事件 -- 对应Spigot事件PlayerLoginEvent)
JavaScript:function PlayerLoginEvent(event) { let player = event.getPlayer(); java.lang.System.out.println(event.getAddress())//获取连接地址对象 }
【3】(玩家加入游戏事件 -- 对应Spigot事件PlayerJoinEvent)
JavaScript:function PlayerJoinEvent(event) { let playerName = event.getPlayer().getName() event.setJoinMessage("玩家"+playerName+"加入了服务器"); }
【4】(玩家丢弃物品事件 -- 对应Spigot事件PlayerDropItemEvent)
JavaScript:function PlayerDropItemEvent(event) { let player = event.getPlayer(); player.sendMessage("你不能在这里扔掉物品喔!!!"); event.setCancelled(true); }
【5】(玩家点击空气或者地面交互事件 -- 对应Spigot事件PlayerInteractEvent)
JavaScript:function PlayerInteractEvent(event) { let player = event.getPlayer(); java.lang.System.out.println(event.getItem().getEnchantments()) event.setCancelled(true); }
【6】(玩家装备通过经验修补附魔修补耐久触发 -- 对应Spigot事件PlayerItemMendEvent)
JavaScript:function PlayerItemMendEvent(event) { event.setCancelled(true); }
【7】(玩家死亡事件 -- 对应Spigot事件PlayerDeathEvent)
JavaScript:function PlayerDeathEvent(event) { let player = event.getPlayer(); player.sendMessage("已替您保留了背包") event.setKeepInventory(true); }
【8】(玩家关闭背包栏界面事件 -- 对应Spigot事件InventoryCloseEvent)
JavaScript:function InventoryCloseEvent(player, event) { //player已经为您返回了event.getPlayer(); let title = event.getView().getTitle(); if(title == 'hello') { player.sendMessage("您关闭了标题为hello的背包栏"); } }
【9】(实体生成事件 -- 对应Spigot事件EntitySpawnEvent)
JavaScript:function EntitySpawnEvent(event) { let entity = event.getEntity(); entity.remove();//移除该实体 }
【10】(实体受到来自其他实体伤害事件 -- 对应Spigot事件EntityDamageByEntityEvent)
JavaScript:function EntityDamageByEntityEvent(event) { event.setCancelled(true); }
【11】(实体爆炸事件 -- 对应Spigot事件EntityExplodeEvent)
JavaScript:function EntityExplodeEvent(event) { event.setCancelled(true); }
【12】(实体死亡事件 -- 对应Spigot事件EntityDeathEvent)
JavaScript:function EntityDeathEvent(event) { event.setDroppedExp(100);//设置掉落100经验 }
【13】(方块被玩家破坏事件 -- 对应Spigot事件BlockBreakEvent)
JavaScript:function BlockBreakEvent(event) { event.setCancelled(true); }
【14】(方块爆炸事件 -- 对应Spigot事件BlockExplodeEvent)
JavaScript:function BlockExplodeEvent(event) { event.setCancelled(true); }
【15】(玩家执行scriptevent引擎指令事件)
JavaScript:function onCommand(player, command) { let args = command.split(" "); if(args[0] == 'hello') {//该逻辑为执行/scriptevent hello触发 player.sendMessage("hello") } }
[更新公告]
1. API接口更新 com.tools.script.yml 包装yml文件读写
2. 新增监听事件【onEnable, onDisable】插件启用触发事件, 插件关闭触发事件
[yml接口方法]
1. load(String files): 加载yml文件
2. create(String path): 创建指定路径
3. get(String path): 获取指定路径的数据对象
4. set(String path, any data): 设置指定路径的数据
5. getBoolean(String path): 获取指定路径的布尔值
6. getInt(String path): 获取指定路径的number
7. getDouble(String path): 获取指定路径的double小数
8. close(): 保存并关闭yml文件对象
[使用方法 - 代码演示]
JavaScript:function onEnable() { java.lang.System.out.println("插件加载啦!!!"); let yml = new com.tools.script.yml(); yml.load("./test.yml"); java.lang.System.out.println(yml.get("test.info")); } function onDisable() { java.lang.System.out.println("插件关闭啦!!!"); }