• 欢迎加入MineBBS QQ讨论群:点击查看所有的官方讨论群
  • 我们将于近期对服务器进行迁移,服务可能中断至多2日。请各位安排好自己的访问计划,造成不便敬请谅解!
  • MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】
AsyncChat[1.19-1.20]

工具 AsyncChat[1.19-1.20] v1.2.05

完成注册/登录后下载
[新增接口]
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): 设置新的玩家对象
JavaScript:
Player.setPlayer(event.getPlayer())
2. void sendMessage(string: message): 发送一条信息
JavaScript:
Player.sendMessage("hello")
3. string getIP(): 获取玩家IP地址

JavaScript:
let ip = Player.getIP();

java.lang.System.out.println(ip);
3. boolean ifFlight(): 获取玩家是否能飞
JavaScript:
if(Player.ifFlight()) {
    Player.sendMessage("有飞行权限")
}
4. string getName(): 获取玩家名称
JavaScript:
java.lang.System.out.println(Player.getName())
5. string getNameTag(): 获取玩家头顶的名字
JavaScript:
java.lang.System.out.println(Player.getNameTag())
6. void setNameTag(string name): 设置玩家头顶的名字
JavaScript:
Player.setNameTag("hello")
7. number getFlySpeed(): 获取玩家飞行速度
JavaScript:
java.lang.System.out.println("玩家"+Player.getName()+"的飞行速度 = "+Player.getFlySpeed())
8 number getHealth(): 获取玩家血量
JavaScript:
Player.setNameTag(Player.getHealth().toString())
9. void setHealth(number: health): 设置玩家血量
JavaScript:
Player.setHealth(10.0)
10. number getLevel(): 获取玩家经验等级
JavaScript:
java.lang.System.out.println(Player.getLevel())
11. void setLevel(number: level): 设置玩家经验等级
JavaScript:
Player.setLevel(1)
12. number getWalkSpeed(): 获取玩家行走速度
JavaScript:
java.lang.System.out.println(Player.getWalkSpeed())
13. boolean isSneaking(): 玩家是否潜行

JavaScript:
if(Player.isSneaking()) {
    Player.sendMessage("玩家在潜行")
}
14. void setSneaking(boolean bool): 设置玩家是否潜行
JavaScript:
Player.setSneaking(false)
15. boolean isSprinting(): 玩家是否在疾跑

JavaScript:
if(Player.isSprinting()) {
    java.lang.System.out.println("玩家"+Player.getName()+"在冲刺")
}
16. void kickPlayer(string: message): 踢出玩家并显示踢出的信息
JavaScript:
Player.kickPlayer("游戏作弊,被踢出了游戏!")
17. void sendBlockData(Location: location, Material: material, number: data): 向玩家周围发送伪数据包方块 【注意】Location为Spigot的org.bukkit.Location, Material为Spigot的org.bukkit.Material
JavaScript:
Player.sendBlockData(Player.getLocation(), org.bukkit.Material.DIAMOND_ORE, 0)
18. void setFlying(boolean bool): 设置玩家是否可以飞行
JavaScript:
Player.setFlying(true)
19. void setFlySpeed(number: int): 设置玩家飞行速度
JavaScript:
Player.setFlySpeed(1.9)
20. void runCommand(string: command): 玩家执行指令
JavaScript:
Player.runCommand("say hello")
21. Item getMainHand(): 获取玩家手持物品: 【注意】Item为com.async.command.module.Item
JavaScript:
let item = Player.getMainHand();
22. void setMainHand(Item: item): 设置玩家手持物品 【注意】Item为com.async.command.module.Item
JavaScript:
let item = Player.getMainHand();

Player.setMainHand(item)
23. boolean isOp(): 玩家是否有管理员权限
JavaScript:
if(Player.isOp()) {
    java.lang.System.out.println(Player.getName()+"有管理员权限")
}
24. void setOp(boolean bool): 设置玩家是否为管理员
JavaScript:
Player.setOp(false)
25. Location getLocation(): 返回玩家的坐标 【注意】Location为org.bukkit.Location
JavaScript:
let location = Player.getLocation();

let x = location.getX();
25. void teleport(Location location): 传送玩家到指定坐标
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数组标签
JavaScript:
Item.setLore(["hello"])
2. void setAmount(number: int): 设置物品最大叠堆数量
JavaScript:
Item.setAmount(1)
3. number getAmount(): 获取叠堆数量
JavaScript:
let count = Item.getAmount()
4. number getEnchantmentLevel(Enchantment: enchant): 获取指定附魔等级 【注意】 Enchantment为Spigot的org.bukkit.enchantments.Enchantment
JavaScript:
let level = Item.getEnchantmentLevel(org.bukkit.enchantments.Enchantment.LOOT_BONUS_BLOCKS)//获取时运等级
5. void removeEnchant(Enchantment: enchant): 移除指定附魔
JavaScript:
Item.removeEnchant(org.bukkit.enchantments.Enchantment.LOOT_BONUS_BLOCKS)
6. void addEnchant(Enchantment: enchant, number: level): 添加指定附魔[可突破等级限制]
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("插件关闭啦!!!");
}
后退
顶部 底部