content: package emu.grasscutter.server.packet.send;
  
  import emu.grasscutter.game.player.Player;
  import emu.grasscutter.net.packet.BasePacket;
  import emu.grasscutter.net.packet.PacketOpcodes;
  import emu.grasscutter.net.proto.AllWidgetDataNotifyOuterClass.AllWidgetDataNotify;
  import emu.grasscutter.net.proto.LunchBoxDataOuterClass;
  import emu.grasscutter.net.proto.WidgetSlotDataOuterClass;
  import emu.grasscutter.net.proto.WidgetSlotTagOuterClass;
  
  import java.util.List;
  
  public class PacketAllWidgetDataNotify extends BasePacket {
  
      public PacketAllWidgetDataNotify(Player player) {
          super(PacketOpcodes.AllWidgetDataNotify);
  
          // TODO: Implement this
  
          AllWidgetDataNotify.Builder proto = AllWidgetDataNotify.newBuilder()
              // If you want to implement this, feel free to do so. :)
              .setLunchBoxData(
                  LunchBoxDataOuterClass.LunchBoxData.newBuilder().build()
              )
              // Maybe it's a little difficult, or it makes you upset :(
              .addAllOneoffGatherPointDetectorDataList(List.of())
              // So, goodbye, and hopefully sometime in the future o(*￣▽￣*)ブ
              .addAllCoolDownGroupDataList(List.of())
              // I'll see your PR with a title that says (・∀・(・∀・(・∀・*)
              .addAllAnchorPointList(List.of())
              // "Complete implementation of widget functionality" b（￣▽￣）d　
              .addAllClientCollectorDataList(List.of())
              // Good luck, my boy.
              .addAllNormalCoolDownDataList(List.of());
  
          if (player.getWidgetId() == 0) {  // TODO: check this logic later, it was null-checking an int before which made it dead code
              proto.addAllSlotList(List.of());
          } else {
              proto.addSlotList(
                  WidgetSlotDataOuterClass.WidgetSlotData.newBuilder()
                      .setIsActive(true)
                      .setMaterialId(player.getWidgetId())
                      .build()
              );
  
              proto.addSlotList(
                  WidgetSlotDataOuterClass.WidgetSlotData.newBuilder()
                      .setTag(WidgetSlotTagOuterClass.WidgetSlotTag.WIDGET_SLOT_TAG_ATTACH_AVATAR)
                      .build()
              );
          }
  
          AllWidgetDataNotify protoData = proto.build();
  
          this.setData(protoData);
      }
  }
  
  