content: package emu.grasscutter.server.packet.send;
  
  import emu.grasscutter.game.entity.GameEntity;
  import emu.grasscutter.game.props.LifeState;
  import emu.grasscutter.net.packet.BasePacket;
  import emu.grasscutter.net.packet.PacketOpcodes;
  import emu.grasscutter.net.proto.LifeStateChangeNotifyOuterClass.LifeStateChangeNotify;
  import emu.grasscutter.net.proto.PlayerDieTypeOuterClass.PlayerDieType;
  
  public class PacketLifeStateChangeNotify extends BasePacket {
  	public PacketLifeStateChangeNotify(GameEntity target, LifeState lifeState) {
  		super(PacketOpcodes.LifeStateChangeNotify);
  
  		LifeStateChangeNotify proto = LifeStateChangeNotify.newBuilder()
  				.setEntityId(target.getId())
  				.setLifeState(lifeState.getValue())
  				.build();
  
  		this.setData(proto);
  	}
  	public PacketLifeStateChangeNotify(GameEntity attacker, GameEntity target, LifeState lifeState) {
  		super(PacketOpcodes.LifeStateChangeNotify);
  
  		LifeStateChangeNotify proto = LifeStateChangeNotify.newBuilder()
  				.setEntityId(target.getId())
  				.setLifeState(lifeState.getValue())
  				.setSourceEntityId(attacker.getId())
  				.build();
  		
  		this.setData(proto);
  	}
  	public PacketLifeStateChangeNotify(int attackerId, GameEntity target, LifeState lifeState) {
  		super(PacketOpcodes.LifeStateChangeNotify);
  
  		LifeStateChangeNotify proto = LifeStateChangeNotify.newBuilder()
  				.setEntityId(target.getId())
  				.setLifeState(lifeState.getValue())
  				.setSourceEntityId(attackerId)
  				.build();
  
  		this.setData(proto);
  	}
  
  	public PacketLifeStateChangeNotify(GameEntity entity, LifeState lifeState, PlayerDieType dieType) {
  		this(entity, lifeState, null, "", dieType);
  	}
  
  	public PacketLifeStateChangeNotify(GameEntity entity, LifeState lifeState, GameEntity sourceEntity,
  									   String attackTag, PlayerDieType dieType) {
  		super(PacketOpcodes.LifeStateChangeNotify);
  
  		LifeStateChangeNotify.Builder proto = LifeStateChangeNotify.newBuilder();
  
  
  		proto.setEntityId(entity.getId());
  		proto.setLifeState(lifeState.getValue());
  		if (sourceEntity != null) {
  			proto.setSourceEntityId(sourceEntity.getId());
  		}
  		proto.setAttackTag(attackTag);
  		proto.setDieType(dieType);
  
  		this.setData(proto.build());
  	}
  }
  