比如玩家射出了一支箭 或者 发射了一枚火球
然后距离超出了他周围已加载的区块 这时候这个发射物依然会被储存下来
翻了下1.12.2的doc 没有看到监听实体的移动方法
所以 有什么好的方法可以实现 在一枚发射物射出一段距离后 他周围没有玩家 就把这个发射物给清掉
然后距离超出了他周围已加载的区块 这时候这个发射物依然会被储存下来
翻了下1.12.2的doc 没有看到监听实体的移动方法
所以 有什么好的方法可以实现 在一枚发射物射出一段距离后 他周围没有玩家 就把这个发射物给清掉
本帖最后由 1448848683 于 2021-5-20 09:26 编辑
可以试试给发射物设置一个生命周期,例如2400刻,发射物生成时间超过这个刻了就删除,要不就用world.getEntitiesWithinAABB,但谨慎使用,这方法有点废性能。
至于怎么调用,你可以试试实体刻。
可以试试给发射物设置一个生命周期,例如2400刻,发射物生成时间超过这个刻了就删除,要不就用world.getEntitiesWithinAABB,但谨慎使用,这方法有点废性能。
至于怎么调用,你可以试试实体刻。
大体思路:
1. 对实体进行标记
2. 在区块加载时判断该区块上是否有需要移除的实体
3. 移除
1. 对实体进行标记
2. 在区块加载时判断该区块上是否有需要移除的实体
3. 移除
1448848683 发表于 2021-5-21 01:18
可以试试给发射物设置一个生命周期,例如2400刻,发射物生成时间超过这个刻了就删除,要不就用world.getEnt ...
我尝试过创建一个task来删掉这个发射物,但是在这个发射物进入未加载的区块时,他会直接被保存下来。
而这个task就算到了时间,这个生物已经被标记为dead了。
等区块被加载的时候,这个发射物会依然存在