实现功能呈现: 

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

1da3db69480197dad70fc2660ee55fea.jpg

代码实现部分:

(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可替换为其他),相关详见MCwiki中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("洒水壶")
})

其他要求:

自备水壶材质

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

【类星露谷物语系列】源码及相关素材

点击跳转至GitHub

觉得对你有帮助请❤STAR❤这对我帮助很大谢谢~