onEvent('item.registry', event => { // 监听物品注册事件
event.create('can_empty').displayName('空罐头盒').maxStackSize(32);// 最大堆叠数:32
event.create('can').displayName('密封的牛肉罐头').maxStackSize(8);// 最大堆叠数:8
event.create('can_open').displayName('打开的牛肉罐头').maxStackSize(1).food(food => {
food.hunger(18);// 设置食物信息
food.saturation(18);
});
})
onEvent('recipes', event => { // 监听配方事件
// 空罐头盒合成
event.shaped('8x kubejs:can_empty', [
'GGG',
'G G',
'GGG'
], {
G: 'minecraft:glass_pane'
})
// 罐头合成
event.shapeless('kubejs:can', ['kubejs:can_empty', '2x minecraft:cooked_beef'])
})
onEvent("item.right_click", event => {// 监听物品右键事件
if(event.player.mainHandItem.id == "kubejs:can"){ // 判断物品是否为给定物品
if(event.player.persistentData.canholdtime / 10 >= 1){
// 当时间达到一定值时就执行物品交换
// 给予玩家空罐头盒
event.player.give("kubejs:can_open");
// 重置persistentData
event.player.persistentData.canholdtime = 0;
// 密封罐头数-1
event.item.count--;
}
// 若时间未达到一定值则自增1
event.player.persistentData.canholdtime++;
// 刷新罐头打开进度条
event.player.statusMessage = `罐头打开进度:${event.player.persistentData.canholdtime * 10}%`;
}
})
onEvent("player.logged_in", event =>{// 监听玩家登录事件
// 玩家加入世界时初始化 persistentData 否则其值将为NAN
event.player.persistentData.canholdtime = 0;
})
onEvent("item.food_eaten", event =>{// 监听吃食物事件
// 如果物品id为打开的罐头就给予玩家一个罐头盒
if(event.item.id == "kubejs:can_open"){
event.player.give("kubejs:can_empty")
}
})