Skip to content

6.2 食物注册


一、基础信息

借助ItemBuilder下的方法food(Consumer<FoodBuilder>),你可以便捷地创建食物物品,例如:

js
StartupEvents.registry("item",event =>{
    event.create("example_food","basic").food(food=>{
        // 在此设置食物属性
    })
})

二、FoodBuilder

方法描述备注
hunger(int 饱食度)设置食物提供的饱食度详情见Minecraft Wiki
saturation(float 饱和度)设置食物提供的饱和度倍率[1]详情见Minecraft Wiki
meat(boolean flag)设置是否为肉食例如原版中作为狼的食物
meat()设置为肉食同上
alwaysEdible(boolean flag)设置是否随时可食用例如金苹果
alwaysEdible()设置为随时可食用同上
fastToEat(boolean flag)设置是否快速食用例如干海带
fastToEat()设置为快速食用同上
effect(ResourceLocation 药效ID, int 持续时间, int 倍率, float 概率)食用后给予药效概率为0~1
removeEffect(MobEffect 药效)食用后移除指定药效-
eaten(Consumer 事件)设置食用完成后事件[1]

[1]

饱和度 = 设置的食物提供饱食度 * 饱和度倍率

[2]

FoodEatenEventJS具有以下属性:
player 返回食用玩家
item 返回食用物品
值得注意的是,FoodEatenEventJS是PlayerEventJS的子类,这意味着其具有PlayerEventJS中的方法或属性。

三、示例

js
StartupEvents.registry("item",event =>{
    event.create("super_wudji","basic").fireResistant(true).glow(true).food(food=>{
        food.hunger(3)
        food.saturation(2.0)// 提供的饱和度为 3 * 2 = 6
        food.alwaysEdible(true)
        food.fastToEat(true)
        food.meat(true)
        food.eaten(ctx =>{
            let player = ctx.player;
            if (player.getUsername() == "Wudji_NotFound"){
                player.potionEffects.add("minecraft:resistance",23333,5,true,false);
            }else{
                if(Utils.random() > 0.5){
                    player.give(Item.of("kubejs:super_wudji"));
                }
            }
        })
    })
})

Contributors

Changelog