【参考模版】【1.19+】实现水壶浇水的功能
尘末者ChenMom

发布于 2023-05-10 14:08

【实现功能呈现】: 

水壶右键土方块可以将土方块转换为湿润的耕地(有水花的粒子效果),并在公屏发送信息 ,浇水有间隔(CD)。水壶浇水消耗自身耐久,对着水右键可以灌水补充耐久,并发送灌水成功的消息。


【代码实现部分】: 

(sever_scripts)

BlockEvents.rightClicked('minecraft:dirt', event => {

    if(event.player.mainHandItem.id == Item.of('kubejs:watering_can'))

    {

        if(event.item.nbt.Damage == 4 )//判断当水壶只剩1点耐久时禁用浇水

        {

            event.server.runCommand(`say 触发保护机制`)

            event.cancel()

        }

        else

        {

        event.server.runCommandSilent(`setblock ${event.block.x} ${event.block.y} ${event.block.z} minecraft:farmland[moisture= 7]`)//替换方块为湿润的耕地

        event.server.runCommandSilent(`particle create:fluid_drip ${event.block.x} ${event.block.y} ${event.block.z} 0.5 0.5 0.5 0.1 50`);//生成粒子(fliuid_drip可替换为其他),相关详见wiki中particle指令的内容

        event.server.runCommand(`say 浇水成功喽~`)//公屏播放

        event.player.damageHeldItem('main_hand', 1)//消耗一点耐久

        event.player.addItemCooldown('kubejs:watering_can', 20)//废物代码)不影响浇水频率)

        }

    }

})


ItemEvents.rightClicked(e=>{

    let player = e.player

    if (player.getHeldItem(e.hand) == 'kubejs:watering_can') {

        let target = player.rayTrace(5)

        if (target.block.id == 'minecraft:water') //通过玩家实现追踪实现辨认玩家对着水右键

        {

            e.server.runCommand(`say 灌水成功喽~`)//公屏播放

            let pos = player.block

            e.server.runCommandSilent(`particle create:fluid_drip ${pos.x} ${pos.y} ${pos.z} 0.5 0.5 0.5 0.1 50`);

            e.player.damageHeldItem('main_hand', -1)//增加一点耐久

        }

    }

})


(starup_scripts) 

StartupEvents.registry("item", event => { 

    event.create("watering_can", "basic").glow(true).unstackable().maxDamage(5).displayName("洒水壶") 

}) 


【其他要求】: 

自备水壶材质

脚本粒子部分用到“机械动力”模组,如不想要使用可以替换为原版粒子。


【标签(为方便检索)】:水壶,右键检测,耐久消耗、恢复,粒子效果、条件禁用物品功能

编辑于 2023-05-20 23:06
允许转载,请注明作者及出处
打开APP DoDo提供建站支持