网易我的世界论坛
标题:
[公告]AddEntitySeat接口管理通知
[打印本页]
作者:
我的世界开花组
时间:
2025-3-7 18:12
标题:
[公告]AddEntitySeat接口管理通知
尊敬的各位开发者:
AddEntitySeat接口为实体添加座位时会存档,给实体新增的座位并不会在退出游戏时自动清除。若您的组件使用了AddEntitySeat接口,如果未做生命周期管理,会导致为一个实体添加过多座位,造成玩家无法进入存档等问题。为给各位玩家一个更加良好的游戏体验,使您在维护作品的过程中减少不必要的成本,现建议您参照以下代码进行接口生命周期管理:
# 注,该装饰器代表监听OnMobHitMobServerEvent事件,且名称和回调函数一致,具体请参考内容库《快速mod开发模板》
# 假设最大座位号是self.seatCount
@Listen
def OnMobHitMobServerEvent(self, args):
mobId = args['mobId']
for entityId in args['hittedMobList']:
if CF.CreateEngineType(entityId).GetEngineTypeStr() == 'minecraft:player':
# 循环会一直调用DeleteEntitySeat方法,直到返回False为止,即没有座位可删除时才会退出循环
while CF.CreateRide(entityId).DeleteEntitySeat(self.seatCount):
self.seatCount -= 1
# 删完后再添加座位
seatIndex = CF.CreateRide(entityId).AddEntitySeat((0, 1, 0), 0, 359)
# 把最大座位号存入全局变量
self.seatCount = seatIndex
CF.CreateRide(mobId).SetRiderRideEntity(mobId, entityId, seatIndex)
CF.CreatePlayer(mobId).ClosePlayerHitMobDetection()
复制代码
欢迎光临 网易我的世界论坛 (http://mc.netease.com/)
Powered by Discuz! X3.3