Grasscutter/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterSceneInfoNotify.java
2022-04-26 21:27:35 -07:00

58 lines
2.3 KiB
Java

package emu.grasscutter.server.packet.send;
import emu.grasscutter.game.entity.EntityAvatar;
import emu.grasscutter.game.inventory.GameItem;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.AbilityControlBlockOuterClass;
import emu.grasscutter.net.proto.AbilitySyncStateInfoOuterClass.AbilitySyncStateInfo;
import emu.grasscutter.net.proto.AvatarEnterSceneInfoOuterClass.AvatarEnterSceneInfo;
import emu.grasscutter.net.proto.MPLevelEntityInfoOuterClass.MPLevelEntityInfo;
import emu.grasscutter.net.proto.PlayerEnterSceneInfoNotifyOuterClass.PlayerEnterSceneInfoNotify;
import emu.grasscutter.net.proto.TeamEnterSceneInfoOuterClass.TeamEnterSceneInfo;
public class PacketPlayerEnterSceneInfoNotify extends BasePacket {
public PacketPlayerEnterSceneInfoNotify(Player player) {
super(PacketOpcodes.PlayerEnterSceneInfoNotify);
AbilitySyncStateInfo empty = AbilitySyncStateInfo.newBuilder().build();
PlayerEnterSceneInfoNotify.Builder proto = PlayerEnterSceneInfoNotify.newBuilder()
.setCurAvatarEntityId(player.getTeamManager().getCurrentAvatarEntity().getId())
.setEnterSceneToken(player.getEnterSceneToken());
proto.setTeamEnterInfo(
TeamEnterSceneInfo.newBuilder()
.setTeamEntityId(player.getTeamManager().getEntityId()) // 150995833
.setTeamAbilityInfo(empty)
.setAbilityControlBlock(AbilityControlBlockOuterClass.AbilityControlBlock.newBuilder().build())
);
proto.setMpLevelEntityInfo(
MPLevelEntityInfo.newBuilder()
.setEntityId(player.getWorld().getLevelEntityId()) // 184550274
.setAuthorityPeerId(player.getWorld().getHostPeerId())
.setAbilityInfo(empty)
);
for (EntityAvatar avatarEntity : player.getTeamManager().getActiveTeam()) {
GameItem weapon = avatarEntity.getAvatar().getWeapon();
long weaponGuid = weapon != null ? weapon.getGuid() : 0;
AvatarEnterSceneInfo avatarInfo = AvatarEnterSceneInfo.newBuilder()
.setAvatarGuid(avatarEntity.getAvatar().getGuid())
.setAvatarEntityId(avatarEntity.getId())
.setWeaponGuid(weaponGuid)
.setWeaponEntityId(avatarEntity.getWeaponEntityId())
.setAvatarAbilityInfo(empty)
.setWeaponAbilityInfo(empty)
.build();
proto.addAvatarEnterInfo(avatarInfo);
}
this.setData(proto.build());
}
}