开启辅助访问     
收藏本站

站内搜索

搜索

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

[BE教程] Script Api - 实例:实体显示生命

头像被屏蔽
 发表于 2023-1-30 16:05:50 来自手机|显示全部楼层|阅读模式 IP:安徽省
显得没事,今天再出一期教程
话不多说,上代码
function Tick1(){
system.run(Tick1)
for(let player of Array.from(world.getPlayers())){
for(let entity of player.dimension.getEntities()){
if(entity.getComponent('health') != undefined&&entity.typeId != 'minecraft:player'){
entity.nameTag = `${entity.getComponent('health').current}/${entity.getComponent('health').value}`
}
}
}
system.run(Tick1)
以上代码就可以让实体显示血量了
原理:首先,要循环检测循环改,因为呢1.19.70没有tick了,所以用system.run()来代替,效果不能说是互不相干吧,几乎就是一模一样,循环的代码就是
function 函数名(){
system.run(函数名)
//要执行的js代码
}
system.run(函数名)
因为要修改实体嘛,所以第一步是获取,由于gt的限制,需要先获取纬度,那我们这先获取玩家,遍历一下,player.dimension就是该玩家所在纬度[不在的也没改的必要]
player.dimension这就是一个Dimension类,后面直接用Dimension的方法getEntities()返回该纬度所有实体,
然后我们再对这个进行遍历,对每个实体进行单独操作
,但是获取了,我们还要进一步筛选,并不是每个实体都有生命值的,比如掉落物,你肯定要出问题,还有就是玩家,这个没显血的必要了吧,用if排除了
如果没有生命值,那entity.getComponent('health')肯定不能获取,自然是undefined,如果是玩家那entity.typeId肯定是minecraft:player,排除了
最后,终于可以对实体进行操作了
我们可以直接修改nameTag,让他等于实体当前生命值,也就是entity.getComponent('health').current,current换成value,那就是最大生命值。
感觉这一帖好氵
苦力怕论坛,感谢有您~
 发表于 2023-1-30 16:39:41 来自手机|显示全部楼层 IP:福建省
感谢分享
2#2023-1-30 16:39:41回复收起回复
苦力怕论坛,感谢有您~
 发表于 2023-1-30 21:55:04 来自手机|显示全部楼层 IP:四川省
水中干货
3#2023-1-30 21:55:04回复收起回复
苦力怕论坛,感谢有您~
 发表于 2023-1-30 22:20:08 来自手机|显示全部楼层 IP:四川省
但不是整数而是浮点数啊,这个问题困扰我很久了
Screenshot_2023-01-30-22-18-32-45_5c8300b655012b1930f2e0a7b81bf6a9.jpg
4#2023-1-30 22:20:08收起回复
无......2024-7-31 17:33IP:广东省
回复举报
这个是要取正的
Math.ceil()向上取整
Math.floor()向下取整
苦力怕论坛,感谢有您~
头像被屏蔽
 楼主|  发表于 2023-1-31 08:11:01 来自手机|显示全部楼层 IP:安徽省
微笑:) 发表于 2023-1-30 22:20
但不是整数而是浮点数啊,这个问题困扰我很久了

你可以用Math.ceil方法来让他显示整数
5#2023-1-31 08:11:01回复收起回复
苦力怕论坛,感谢有您~
头像被屏蔽
 楼主|  发表于 2023-1-31 08:15:16 来自手机|显示全部楼层 IP:安徽省
显示整数生命值的代码在这
function Tick1(){
system.run(Tick1)
for(let player of Array.from(world.getPlayers())){
for(let entity of player.dimension.getEntities()){
if(entity.getComponent('health') != undefined&&entity.typeId != 'minecraft:player'){
entity.nameTag = `${Math.ceil(entity.getComponent('health').current)}/${entity.getComponent('health').value}`
}
}
}
system.run(Tick1)

其实就是对entity.getComponent('health').current用了Math.ceil()方法

评分

参与人数 1铁粒 +1收起理由
 果宝*** + 1感谢

查看全部评分

6#2023-1-31 08:15:16回复收起回复
苦力怕论坛,感谢有您~
 发表于 2023-2-1 20:06:41 来自手机|显示全部楼层 IP:广东省
看懂了,感谢分享
7#2023-2-1 20:06:41回复收起回复
苦力怕论坛,感谢有您~
 发表于 2023-2-3 19:21:36|显示全部楼层 IP:四川省
废了,支持
8#2023-2-3 19:21:36回复收起回复
苦力怕论坛,感谢有您~

本版积分规则

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

QQ群

访问手机版

访问手机版

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

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

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

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