content: package emu.grasscutter.server.packet.send;
  
  import emu.grasscutter.game.entity.GameEntity;
  import emu.grasscutter.game.props.FightProperty;
  import emu.grasscutter.net.packet.BasePacket;
  import emu.grasscutter.net.packet.PacketOpcodes;
  import emu.grasscutter.net.proto.ChangeEnergyReasonOuterClass.ChangeEnergyReason;
  import emu.grasscutter.net.proto.ChangeHpReasonOuterClass.ChangeHpReason;
  import emu.grasscutter.net.proto.EntityFightPropChangeReasonNotifyOuterClass.EntityFightPropChangeReasonNotify;
  import emu.grasscutter.net.proto.PropChangeReasonOuterClass.PropChangeReason;
  
  import java.util.List;
  
  public class PacketEntityFightPropChangeReasonNotify extends BasePacket {
  
      public PacketEntityFightPropChangeReasonNotify(GameEntity entity, FightProperty prop, Float value, List<Integer> param, PropChangeReason reason, ChangeHpReason changeHpReason) {
          super(PacketOpcodes.EntityFightPropChangeReasonNotify);
  
          EntityFightPropChangeReasonNotify.Builder proto = EntityFightPropChangeReasonNotify.newBuilder()
                  .setEntityId(entity.getId())
                  .setPropType(prop.getId())
                  .setPropDelta(value)
                  .setReason(reason)
                  .setChangeHpReason(changeHpReason);
  
          for(int p : param){
              proto.addParamList(p);
          }
  
          this.setData(proto);
      }
  
      public PacketEntityFightPropChangeReasonNotify(GameEntity entity, FightProperty prop, Float value, PropChangeReason reason, ChangeHpReason changeHpReason) {
          super(PacketOpcodes.EntityFightPropChangeReasonNotify);
  
          EntityFightPropChangeReasonNotify proto = EntityFightPropChangeReasonNotify.newBuilder()
                  .setEntityId(entity.getId())
                  .setPropType(prop.getId())
                  .setPropDelta(value)
                  .setReason(reason)
                  .setChangeHpReason(changeHpReason)
                  .build();
  
          this.setData(proto);
      }
  
      public PacketEntityFightPropChangeReasonNotify(GameEntity entity, FightProperty prop, Float value, PropChangeReason reason) {
          super(PacketOpcodes.EntityFightPropChangeReasonNotify);
  
          EntityFightPropChangeReasonNotify proto = EntityFightPropChangeReasonNotify.newBuilder()
                  .setEntityId(entity.getId())
                  .setPropType(prop.getId())
                  .setPropDelta(value)
                  .setReason(reason)
                  .build();
  
          this.setData(proto);
      }
  
      public PacketEntityFightPropChangeReasonNotify(GameEntity entity, FightProperty prop, Float value, ChangeEnergyReason reason) {
          super(PacketOpcodes.EntityFightPropChangeReasonNotify);
  
          EntityFightPropChangeReasonNotify proto = EntityFightPropChangeReasonNotify.newBuilder()
                  .setEntityId(entity.getId())
                  .setPropType(prop.getId())
                  .setPropDelta(value)
                  .setChangeEnergyReason(reason)
                  .build();
  
          this.setData(proto);
      }
  }
  