开启辅助访问     
收藏本站

站内搜索

搜索

Minecraft(我的世界)苦力怕论坛

[BE教程] 附加包教程第九期——物品:食物

 发表于 2022-5-10 18:54:53|显示全部楼层|阅读模式 IP:江苏省
本帖最后由 782 于 2022-6-6 18:20 编辑

物品(二)
食物

一、前言
上一期,我们认识了物品的基础组件,今天,我们就来教大家制作可食用物品(食物)。
本期教程假定读者已经基本了解上一期的内容。

二、行为包文件与详解
现在让我们定义一个食物,这将会使用组件“minecraft:food”和其他一些组件来创建自定义食物。
示例:
  1. {
  2.     "format_version": "1.12.0",
  3.     "minecraft:item": {
  4.         "description": {
  5.             "identifier": "demo:my_meal"
  6.         },
  7.         "components": {
  8.             "minecraft:hand_equipped": false,
  9.             "minecraft:stacked_by_data": true,
  10.             "minecraft:foil": false,
  11.             "minecraft:max_stack_size": 64,
  12.             "minecraft:use_duration": 32,
  13.             "minecraft:food": {
  14.                 "nutrition": 4,
  15.                 "saturation_modifier": "normal",
  16.                 "can_always_eat": false,
  17.                 "effects": [{
  18.                         "name": "regeneration",
  19.                         "chance": 1.0,
  20.                         "duration": 5,
  21.                         "amplifier": 0
  22.                     },
  23.                     {
  24.                         "name": "absorption",
  25.                         "chance": 1.0,
  26.                         "duration": 120,
  27.                         "amplifier": 2
  28.                     }
  29.                 ]
  30.             }
  31.         }
  32.     }
  33. }
复制代码

详解:
新物品需要唯一的标识符“identifier”,填写字符串。

“minecraft:use_duration”定义玩家需要“使用”多长时间才能完全食用食物,填写整数。
要注意的是,填写的是游戏刻,而不是秒。

“minecraft:food”是能使物品成为食物的组件,为JSON对象。
让我们分开理解:
  • “nutrition”表示玩家食用食物后要恢复几点饥饿值,填写整数。
  • “saturation_modifier”表示食物的营养价值,填写字符串。
    可以设置为“poor”(差)、“low”(低)、“normal”(普通)、“high”(高)、“good”(好)、“max”(极好)或“supernatural”(超自然)。
  • “can_always_eat”定义玩家是否可以在饥饿值满的时候吃食物,填写布尔值。
    例如,金苹果的这个组件设置为true,但对于大多数其他原版食物来说,它被设置为false的。
  • “effects”是玩家食用食物时应用的状态效果,是一个数组。让我们深入理解一下:
    • “name”指定了效果名称,填写字符串。
    • “chance”指定获得该效果的概率,填写浮点数(小数)。
      填写的数就是把百分比换算成小数结果,
      例如,食用生鸡肉有30%的概率获得饥饿效果,就填写“0.3”表示30%。
    • “duration”表示效果获得后持续的时间,填写整数。
      这里和上方截然相反,这里是秒,不是游戏刻。
    • “amplifier”表示效果等级,填写整数。
      实际使用时会减1

    所以,这一个组件的意义就是:
    当玩家食用此物品后,他们肯定会获得5秒的生命恢复 I和120秒的抗性提升 III的效果。
    这一个组件是可选的。


三、资源包文件与详解
示例:
  1. {
  2.     "format_version": "1.10",
  3.     "minecraft:item": {
  4.         "description": {
  5.             "identifier": "demo:my_meal",
  6.             "category": "Nature"
  7.         },
  8.         "components": {
  9.             "minecraft:icon": "meal",
  10.             "minecraft:use_animation": "eat",
  11.             "minecraft:render_offsets": "apple"
  12.         }
  13.     }
  14. }
复制代码

详解:
这里大部分组件与上一期的相同,有一个不一样:
“minecraft:use_animation”定义玩家使用物品时播放的动画,填写字符串。
可用动画有:“bow”(拉弓),“eat”(食用食物),“drink”(喝药水等),“crossbow”(拉弩时),等等。

四、物品图标与.lang文件示例
这里语法与上一期基本相同,不作过多解释。
物品图标文件示例:
  1. {
  2.     "resource_pack_name": "demo",
  3.     "texture_name": "atlas.items",
  4.     "texture_data": {
  5.         "meal": {
  6.             "textures": "textures/items/meal"
  7.         }
  8.     }
  9. }
复制代码

.lang文件示例:
  1. item.demo:my_meal.name=我的第一个食物
复制代码


五、Wiki拓展阅读
1. 饥饿值与饱和度的区别
玩家有两项不同的食物统计,只有其中一项是可见的:饥饿值(可见)和饱和度(不可见)。

饥饿值以一排鸡腿的形式呈现,在Java版及启用桌面版UI的基岩版中显示于屏幕右下方,在启用携带版UI的基岩版中则显示于屏幕右上角。虽然名称为饥饿值,但该值标示的是饱和程度,数值越高玩家越接近饱和。

当玩家进行能量消耗的行动,饱和度是首先减少的食物统计。在饱和度耗尽后,可见的饥饿值才会减少。虽然饱和度一般是隐藏的,然而,如果饥饿值开始抖动,这代表饱和度已被耗尽。

食用一种食物补充固定的饥饿值和饱和度,某些食物比其他食物有较好的饱和度和饥饿值的比值。

玩家当前的饱和度不会超过当前的饥饿值。例如一名玩家的饥饿值是5,他只能有最多5饱和度。记住选择食用效率最高的食物是很重要的:当玩家的饥饿值比较满,尤其在饥饿值开始抖动时,应该食用增加较多饱和度/增加较少饥饿值的食物。如果你在饥饿值低时食用增加较多饱和度的食物,增加的饱和度很可能会被浪费,因为饱和度不可能超过饥饿值。

2.营养价值
营养价值是回复饱和度与饥饿值的比值,高营养价值的食物应当在饥饿度比较满时食用。

六、本期文件下载
行为包文件示例:
 my_meal.item.json(1005 Bytes, 下载次数: 20)
资源包文件示例:  my_meal.item.json(340 Bytes, 下载次数: 27)
item_texture.json文件示例:
 item_texture.json(174 Bytes, 下载次数: 23)


预告:下一期会教大家制作自己的武器

大家的打赏是对楼主最好的鼓励!


附加包教程系列导航
上一期  下一期

评分

参与人数 1铁粒 +1收起理由
 Have*** + 1史蒂夫觉得很淦!

查看全部评分

苦力怕论坛,感谢有您~
 发表于 2022-6-4 10:40:47 来自手机|显示全部楼层 IP:山东省
行为包效果部分的amplifier(效果等级)部分好像应该填写实际数值-1吧
这是附魔金的抗火部分
  1.           {
  2.             "name": "fire_resistance",
  3.             "chance": 1.0,
  4.             "duration": 300,
  5.             "amplifier": 0
  6.           }
复制代码

评分

参与人数 1铁粒 +5收起理由
 7*** + 5感谢反馈,已修改

查看全部评分

2#2022-6-4 10:40:47回复收起回复
苦力怕论坛,感谢有您~
 发表于 2022-10-2 15:15:03 来自手机|显示全部楼层 IP:河北省
楼主没有做太全吧
3#2022-10-2 15:15:03回复收起回复
苦力怕论坛,感谢有您~
 发表于 2023-6-5 13:17:46 来自手机|显示全部楼层 IP:河北省
4#2023-6-5 13:17:46回复收起回复
苦力怕论坛,感谢有您~
 发表于 2023-6-6 10:13:04 来自手机|显示全部楼层 IP:广东省
大佬牛逼
5#2023-6-6 10:13:04回复收起回复
苦力怕论坛,感谢有您~

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

粤公网安备 44200002445329号 | 由 木韩网络 提供支持 | GMT+8, 2024-12-22 22:44

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4 粤ICP备2023071842号-3