开启辅助访问     
收藏本站

站内搜索

搜索

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

[BE教程] 附加包教程:38.实体(四)

 发表于 2023-8-20 11:06:18 来自手机|显示全部楼层|阅读模式 IP:山西省
本帖最后由 Cat_Anchor 于 2023-9-30 06:52 编辑

前言

上期,我们实现了主要功能。现在我们来解决那个漏洞。
解决漏洞

这个漏洞的出现原因是播放时,原先的分数就被破坏掉了,因此只能想办法还原这个分数。上期,我们举例说有3个标记,播放前的分数是1,2,3,播放后就成了-2,-1,0。容易看出,两组中每个数字的差为3。所以把第二组的每个数字加3就可以还原出第一组的数据。那这个3是根据什么决定的?显然是标记数量。所以只要求出标记总数,然后把这个数字与每个标记的分数相加,再把结果赋值给标记的moving分数就好了。因此,end事件的代码如下。
  1. "end": {
  2.   "run_command": {
  3.     "command": [
  4.       "camera @p clear", //播放结束,首先清除玩家的相机,使相机回到正常状态
  5.       "camera @p[tag=fade] fade time 1.1 0.3 1.1", //淡入淡出功能
  6.       "scoreboard objectives add moving_temp dummy", //创建临时的计分板,用于获取标记数量
  7.       "scoreboard players operation @s moving_temp += * moving2", //计算标记数量
  8.       "scoreboard players operation @e[type=supplementary:moving_mark] moving += @s moving_temp", //把标记数量与moving的分数加起来,并将结果赋值给moving
  9.       "scoreboard objectives remove moving_temp" //移除临时的计分板
  10.     ]
  11.   }
  12. }
复制代码

到这里,这个实体算是正式制作完成了。不过还需要在资源包根目录下entity文件夹中创建相关文件,并定义材料、纹理、模型和渲染控制器才可以成功显示。为了省事,我直接用栓绳的材料和渲染控制器。
  1. {
  2.         "format_version": "1.10.0",
  3.         "minecraft:client_entity": {
  4.                 "description": {
  5.                         "identifier": "supplementary:moving_mark", //命名空间ID
  6.                         "materials": {
  7.                                 "default": "leash_knot" //材料
  8.                         },
  9.                         "textures": {
  10.                                 "default": "textures/entity/moving_mark" //纹理
  11.                         },
  12.                         "geometry": {
  13.                                 "default": "geometry.moving_mark" //模型
  14.                         },
  15.                         "render_controllers": [
  16.                                 "controller.render.leash_knot" //渲染控制器
  17.                         ]
  18.                 }
  19.         }
  20. }
复制代码

接着在/models/entity下定义模型。
  1. {"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.moving_mark","texture_width":32,"texture_height":32,"visible_bounds_width":2,"visible_bounds_height":2.5,"visible_bounds_offset":[0,0.75,0]},"bones":[{"name":"bb_main","pivot":[0,0,0],"cubes":[{"origin":[-4,3,-4],"size":[8,13,8],"uv":[0,0]}]}]}]}
复制代码

还需要纹理,不过这就简单多了。

总之,现在,基本的功能已经制作完成。还有些其他功能以及用物品执行命令来让操作简单易懂等,那就非常简单了。
最后的实体代码如下。

后记

这一期,我们完成了一个实体的制作,这个实体是相机缓动的关键部分。
什么?模板包?直接去我开发的相机平滑移动附加包就好了,这三篇教程中的所有代码都是那个附加包里的(作了一点小改动)。其实这里已经放出了大部分代码,还有模型、纹理等,直接复制也可以。


苦力怕论坛,感谢有您~
 发表于 2023-8-28 21:56:13|显示全部楼层 IP:四川省
感谢作者大大的一系列教程
2#2023-8-28 21:56:13回复收起回复
苦力怕论坛,感谢有您~
 发表于 2023-9-30 12:27:39 来自手机|显示全部楼层 IP:广东省
本帖最后由 Po_Cu 于 2023-9-30 12:39 编辑

作者,附加包能不能改玩家的各项属性?(比如伤害值)
3#2023-9-30 12:27:39回复收起回复
苦力怕论坛,感谢有您~
 楼主|  发表于 2023-9-30 13:41:19 来自手机|显示全部楼层 IP:山西省
本帖最后由 Cat_Anchor 于 2023-9-30 13:44 编辑
Po_Cu 发表于 2023-9-30 12:27
作者,附加包能不能改玩家的各项属性?(比如伤害值)


可以改,例如要改玩家的伤害就是在entities文件夹下player.json里改这个地方
"minecraft:attack": {
  "damage": 1 //伤害值
}
4#2023-9-30 13:41:19收起回复
Po_Cu2023-9-30 13:54IP:广东省
回复举报
感谢作者大大
苦力怕论坛,感谢有您~

本版积分规则

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

QQ群

访问手机版

访问手机版

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

粤公网安备 44200002445329号 | 由 木韩网络 提供支持 | GMT+8, 2024-11-24 13:55

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

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