15.5 本章例子


一、使玩家在潜行状态下无法使用指定物品

第一块是对着空气使用物品,第二块是对着方块使用物品

onEvent('item.right_click', event => {
    if(event.player.crouching == true && event.item.id == "minecraft:diamond"){
        event.cancel();// 取消该事件
    }
})

onEvent('block.right_click', event => {
    if(event.player.crouching == true && event.item.id == "minecraft:diamond"){
        event.cancel();// 取消该事件
    }
})

二、随机传送

// 最小及最大坐标
const minX = 1000;
const minZ = 1000;
const maxX = 10000;
const maxZ = 10000;
const minY = 100;
const maxY = 200;
// 是否随机取负值
const reverseNumber = true;

// 返回随机数
function getNumber(min,max){
    let randNumber = Math.floor(Math.random() * (max - min + 1) ) + min;
    if(Math.random() > 0.5 && reverseNumber){
        randNumber = -randNumber;
    }
    return randNumber;
}

// 监听聊天事件,如果内容为 "!rtp" 就随机传送并给予缓降效果
onEvent('player.chat',function (event){
	let input = event.message.trim();
	if(input == "!rtp"){
        event.player.setPosition(getNumber(minX,maxX), Math.abs(getNumber(minY,maxY)), getNumber(minZ,maxZ));// 设置坐标
        event.player.statusMessage = `已将你传送到 x: ${event.player.x} y: ${event.player.y} z: ${event.player.z}`;// 玩家状态栏显示文字
        event.player.potionEffects.add('minecraft:slow_falling', 600, 10, false, false);// 给予缓降效果
        /**
         * EntityPotionEffectsJS支持以下函数
         * .clear() 清除药水效果
         * .getActive() 返回具有的效果
         * .isActive(MobEffect 效果) 返回是否具有给定效果
         * .getDuration(MobEffect 效果) 返回给定效果剩余时间
         * .add(MobEffect 效果, 整形 持续时间(tick), 整形 等级, 布尔值 是否为信标产生, 布尔值 是否显示粒子)
         *     其中后三项,后两项,后一项均可省略不写,默认值对应为0,false, true. 
         * .isApplicable(MobEffect 效果) 返回给定效果是否能应用于当前实体上
         */
        event.cancel();// 取消该事件,也就是说玩家发送的消息不会显示在其他玩家的公屏上
    }
})
/**
 * 另一种写法:监听物品右键事件,如果物品id为钻石则消耗一个钻石随机传送并冷却100秒
 * 此处钻石可以替换为你想使用的物品
 * 注:重进世界会刷新冷却时间
 */
onEvent('item.right_click',function (event){
	if(event.player.mainHandItem.id == "minecraft:diamond"){
        event.player.setPosition(getNumber(minX,maxX), Math.abs(getNumber(minY,maxY)), getNumber(minZ,maxZ));
        event.player.statusMessage = `已将你传送到 x: ${event.player.x} y: ${event.player.y} z: ${event.player.z}`;
        event.player.potionEffects.add('minecraft:slow_falling', 600, 10, false, false);
		// 钻石数量减一
		event.item.count--;
        event.player.addItemCooldown('minecraft:diamond', 2000);
    }
})

三、爆炸“法杖”

这里的烈焰棒只是一个"占位符",你可以换成你想使用的任何物品

四、扫地机器人

这有帮助吗?