【MCJE_KJS】【1.19+】实现水壶浇水的功能
实现功能呈现:
水壶右键土方块可以将土方块转换为湿润的耕地(有水花的粒子效果),并在公屏发送信息 ,浇水有间隔(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可替换为其他),相关详见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("洒水壶")
})
其他要求:
自备水壶材质
脚本粒子部分用到“机械动力”模组,如不想要使用可以替换为原版粒子。
【类星露谷物语系列】源码及相关素材
觉得对你有帮助请❤STAR❤这对我帮助很大谢谢~
本文是原创文章,采用CC BY-NC-ND 4.0协议,完整转载请注明来自尘末ChenM0M。
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果