本帖最后由 Tollainmear 于 2022-5-23 23:25 编辑
巧了 我上个月也在服务器里搞了一个罐头的配方,也拿出来分享一下吧:
-
喝掉一罐炖菜罐头
-
得到一个沾满油污的空罐
-
100%概率获得夜视和急迫效果
-
50%概率获得生命恢复效果
-
25%概率获得力量2效果
添加的物品:
从左至右依次是:
锡板、轻薄锡板、锡罐、炖菜汤、启封的炖菜罐头、炖菜罐头、脏兮兮的锡罐
注册这些道具、流体的代码:
-
//道具注册
-
onEvent('item.registry', event => {
-
//工序复杂,所以我们多加一些buff收益,其中口渴Debuff源自水源mod
-
event.create('opened_soup_can').maxStackSize(1)//不可堆叠
-
.food((food) => {
-
food.hunger(12) //恢复12点饱食度
-
.meat(true)
-
.alwaysEdible(true)//不饿的时候也可以吃
-
.fastToEat(true) //吃的快
-
.effect('watersource:thirst', 1200, 2, 0.1) //10%概率获得口渴buff
-
.effect('minecraft:night_vision', 3600, 1, 1) //100%概率获得夜视buff
-
.effect('minecraft:haste', 1800, 1, 1) //100%概率获得急迫buff
-
.effect('minecraft:strength', 1200, 2, 0.25) //25%概率获得力量2buff
-
.effect('minecraft:regeneration', 200, 1, 0.5) //50%概率获得生命再生buff
-
}).texture('kubejs:item/opened_soup_can')
-
.displayName('启封的炖菜罐头')
-
-
//这里我们把没启封的罐头也设定为食物,后面解释
-
event.create('soup_can').maxStackSize(16)
-
.food((food) => {
-
food.hunger(0)
-
.fastToEat(true)
-
.alwaysEdible(true)
-
}).texture('kubejs:item/soup_can')
-
.displayName('炖菜罐头')
-
-
event.create('tin_plate').maxStackSize(64)
-
.texture('kubejs:item/tin_plate')
-
.displayName('锡板')
-
-
event.create('tin_thin_plate').maxStackSize(64)
-
.texture('kubejs:item/tin_thin_plate')
-
.displayName('轻薄锡板')
-
-
event.create('tin_can').maxStackSize(64)
-
.texture('kubejs:item/tin_can')
-
.displayName('锡罐')
-
-
event.create('dirty_tin_can').maxStackSize(64)
-
.texture('kubejs:item/dirty_tin_can')
-
.displayName('脏兮兮的锡罐')
-
})
-
-
//注册流体
-
onEvent('fluid.registry', event => {
-
event.create('liquid_soup').bucketColor(0xb07f22) //流体颜色(安装Optifine可能导致显示不正确)
-
.textureStill('kubejs:fluid/soup_still') //不流动的纹理
-
.textureFlowing('kubejs:fluid/soup_flow') //流动的纹理
-
.displayName(`炖菜汤`)
-
})
复制代码
制作顺序:
第一步
锡锭 >> 锡板
Create金属压片
-
event.recipes.createPressing('kubejs:tin_plate', '#forge:ingots/tin')
复制代码
第二步
锡板 >> 轻薄锡板x8
Create序列组装
-
//锡板辊压8次获得8张轻薄锡板
-
event.recipes.createSequencedAssembly('8x kubejs:tin_thin_plate', 'kubejs:tin_plate', [
-
event.recipes.createPressing('kubejs:tin_thin_plate', 'kubejs:tin_thin_plate')
-
]).transitionalItem('kubejs:tin_thin_plate')
-
.loops(8) //循环8次
-
.id('kubejs:tin_thin_plate')
复制代码
第三步
轻薄锡板x7 >> 锡罐x4
原版合成
-
//如上图所示
-
event.shaped('4x kubejs:tin_can', [
-
'A A',
-
'A A',
-
'AAA'
-
], {
-
A: 'kubejs:tin_thin_plate'
-
})
复制代码
第四步
盐 + 水(1000mb) + 任意蔬菜x16 + 任意木屑x8 + 任意蛋白质x2 >> 炖菜汤(1000mb)
Create混合搅拌(加热)
-
//这里用#来匹配tag,以实现任意蔬菜和任意蛋白质
-
event.recipes.createMixing(Fluid.of('kubejs:liquid_soup', 1000), [
-
Fluid.of('minecraft:water', 1000), //注意:单中流体不能大于1000
-
'16x #forge:vegetables', //16个任意蔬菜
-
'8x #forge:dusts/wood', //8个木屑,因为是冬季救援整合包,所以恶搞了一些蒸汽朋克的梗
-
'2x #diet:proteins', //2个蛋白质,该tag属于diet模组
-
'#forge:salt' //一撮盐,吃了盐才有力气对吧?
-
]).heated();//加热
复制代码
-
//这是指定Tag,用于匹配配方
-
onEvent('item.tags', event => {
-
event.get('forge:vegetables').add('frostedheart:white_turnip_block') //把白萝卜加上蔬菜的tag
-
event.get("diet:proteins").add("kubejs:opened_soup_can") //把炖菜汤加上蛋白质的tag
-
})
复制代码
第五步
肉汤 + 锡罐 >> 启封的的炖菜罐头
Create注液
-
//注液的方法,把250mb的炖菜汤灌到锡罐里
-
event.recipes.createFilling('kubejs:opened_soup_can', ['kubejs:tin_can', Fluid.of('kubejs:liquid_soup', 250)])
复制代码
第六步
启封的炖菜罐头 + 轻薄锡板 >> 炖菜罐头
Create机械手
-
//利用机械手臂给罐头封闭
-
event.recipes.createDeploying('kubejs:soup_can', ['kubejs:opened_soup_can', 'kubejs:tin_thin_plate'])
复制代码
关于启封罐头的两种方式
第一种方法 —— 用嘴啃:
-
//监听吃东西的事件
-
onEvent('item.food_eaten', event => {
-
//判断被吃掉物品的类型
-
if (event.item.id == "kubejs:soup_can") {
-
//给他一个启封的炖菜罐头,代表他启封成功啦
-
event.player.giveInHand('kubejs:opened_soup_can')
-
//不会有人觉得嘴巴比锡罐硬吧
-
//不会有人觉得嘴巴不会受伤吧
-
//当玩家生命值低于4,那他开完罐头大概率就死了
-
if (event.player.getHealth() <= 4){
-
event.server.tell("§4[奇葩新闻]§c" + event.player + "因为用嘴开罐头被活活扎死。")
-
}else{
-
//没死算你小子命硬,提醒一下,下次不要用嘴巴开罐头了
-
event.player.tell("§c你为啃开一个罐头,把嘴巴划破了。")
-
}
-
//给嘴硬的家伙施加4点伤害
-
event.player.attack(4)
-
}
-
})
复制代码
第二种开罐头的方法 —— 合成:
-
//这样才规规矩矩
-
event.shapeless('kubejs:opened_soup_can', 'kubejs:soup_can')
复制代码
让锡罐重复利用!
-
//当有人吃完罐头,让罐头留下一个沾满油渍的空罐子
-
onEvent('item.food_eaten', event => {
-
if (event.item.id == "kubejs:opened_soup_can") {
-
event.player.giveInHand('kubejs:dirty_tin_can')
-
}
-
})
复制代码
两种清洁罐子的方法
第一种 —— 手洗!
-
//我们这里使用右击物品事件
-
onEvent('item.right_click', event => {
-
let player = event.player
-
//判定手持物类型
-
if (player.getHeldItem(event.hand) == 'kubejs:dirty_tin_can') {
-
//因为水方块不像实心方块一样有交互事件,所以我们选择用射线追踪
-
let target = player.rayTrace(5)
-
//如果视线5格范围内有水方块
-
if (target.block.id == 'minecraft:water') {
-
player.tell('我: 芜湖~有点儿冷[抖...]')
-
//使用原版指令,给他一个潮湿的buff(该效果来自冰冻之心,会让玩家失温)
-
let testCmd = `effect give ${player.name} frostedheart:wet 15`
-
//这里使用悄咪咪的执行指令
-
event.server.runCommandSilent(testCmd)
-
//拿走一个浸油的锡罐
-
let amount = (player.getHeldItem(event.hand).count - 1)
-
player.setHeldItem(event.hand, Item.of('kubejs:dirty_tin_can', amount))
-
//给他一个洗干净的锡罐
-
player.giveInHand('kubejs:tin_can')
-
}
-
}
-
})
复制代码
第二种 —— 机器搅拌!
-
//工作盆里用100mb水进行搅拌
-
event.recipes.createMixing('kubejs:tin_can', [
-
Fluid.of('minecraft:water', 100),
-
'kubejs:dirty_tin_can'
-
])
复制代码
|