= 创作分享 =
编程开发
Mod开发中击杀实体问题
OceanDragon

Mod开发中击杀实体问题

OceanDragon 于 2023-1-7 21:47 ( 1年前 ) [复制链接] [显示全部楼层] [打印]
版本:1.12.2,forge:2847
想问一下大佬setHeath,isDead=true,world.removeEntity,setDead这几个方法击杀实体的本质,因为我用这几个方法击杀实体一直出现假死(就是重进世界就会回来),想问一下解决办法,十分感谢!awa
发表于 2023-1-7 21:47:36 | 显示全部楼层 |阅读模式

回复 | 举报

该帖共收到 12 条回复!
OceanDragon
本人初学mod开发,可能会比较沙雕

点评

你应该附上完整代码  发表于 2023-1-8 10:00
发表于 2023-1-7 21:50:46 | 显示全部楼层

回复 | 举报

仙勾子
FireDragon 发表于 2023-1-7 21:50
本人初学mod开发,可能会比较沙雕

你是不是在client客户端调用的
未死之前,终有希望
发表于 2023-1-22 09:24:33 | 显示全部楼层

回复 | 举报

OceanDragon
xm94732568960 发表于 2023-1-22 09:24
你是不是在client客户端调用的

对,是不是得同步服务端
发表于 2023-1-22 23:41:51 | 显示全部楼层

回复 | 举报

仙勾子
本帖最后由 xm94732568960 于 2023-1-23 08:17 编辑
FireDragon 发表于 2023-1-22 23:41
对,是不是得同步服务端

触发击杀实体的代码应该在服务端执行,然后服务端给客户端发包让客户端知道这个实体被击杀了
可以理解为只有服务端对世界的更改是有效的(真实世界),在客户端里看到的内容都只是服务端发送的影子
如果击杀实体的包是从客户端发往服务端的话,这个模组就会有安全性问题,玩家开挂发包不就能随便秒杀服务端里的实体么

未死之前,终有希望
发表于 2023-1-23 08:14:08 | 显示全部楼层

回复 | 举报

OceanDragon
xm94732568960 发表于 2023-1-23 08:14
触发击杀实体的代码应该在服务端执行,然后服务端给客户端发包让客户端知道这个实体被击杀了
可以理解为只 ...

forge可真够6的
发表于 2023-2-5 08:33:31 | 显示全部楼层

回复 | 举报

仙勾子

和forge没关系,目前大多数游戏都使用这种发包机制
未死之前,终有希望
发表于 2023-2-5 09:59:21 | 显示全部楼层

回复 | 举报

仙勾子

正常情况下服务端杀死实体后,会自动发包给客户端让它知道这个实体被击杀了
未死之前,终有希望
发表于 2023-2-5 10:04:28 | 显示全部楼层

回复 | 举报

OceanDragon
xm94732568960 发表于 2023-2-5 10:04
正常情况下服务端杀死实体后,会自动发包给客户端让它知道这个实体被击杀了 ...

所以要获取服务端实体列表再用setHealth之类的杀吗?
发表于 2023-2-5 11:07:59 | 显示全部楼层

回复 | 举报

仙勾子
FireDragon 发表于 2023-2-5 11:07
所以要获取服务端实体列表再用setHealth之类的杀吗?

啊,客户端无权直接访问服务端数据,只能给服务端发包,应该是服务端自己寻找符合条件的实体,进行杀死就可以
未死之前,终有希望
发表于 2023-2-5 12:43:52 | 显示全部楼层

回复 | 举报

12下一页
百科目前不允许匿名发帖哦~ 请先 [ 登陆 ][ 注册 ] 吧~

本版积分规则

发新帖
  • 回复
  • 点评
  • 评分

[ MC百科(mcmod.cn) 除另有声明,所有开放公共编辑的内容均使用 BY-NC-SA 3.0 协议 ]

Minecraft百科CC协议
快速回复 返回顶部 返回列表