// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: define.proto

package io.grasscutter.net.proto.define;

/**
 * Protobuf type {@code SceneMonsterInfo}
 */
public final class SceneMonsterInfo extends
    com.google.protobuf.GeneratedMessageV3 implements
    // @@protoc_insertion_point(message_implements:SceneMonsterInfo)
    SceneMonsterInfoOrBuilder {
private static final long serialVersionUID = 0L;
  // Use SceneMonsterInfo.newBuilder() to construct.
  private SceneMonsterInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }
  private SceneMonsterInfo() {
    weaponList_ = java.util.Collections.emptyList();
    affixList_ = emptyIntList();
    bornType_ = 0;
  }

  @java.lang.Override
  @SuppressWarnings({"unused"})
  protected java.lang.Object newInstance(
      UnusedPrivateParameter unused) {
    return new SceneMonsterInfo();
  }

  @java.lang.Override
  public final com.google.protobuf.UnknownFieldSet
  getUnknownFields() {
    return this.unknownFields;
  }
  private SceneMonsterInfo(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    this();
    if (extensionRegistry == null) {
      throw new java.lang.NullPointerException();
    }
    int mutable_bitField0_ = 0;
    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
        com.google.protobuf.UnknownFieldSet.newBuilder();
    try {
      boolean done = false;
      while (!done) {
        int tag = input.readTag();
        switch (tag) {
          case 0:
            done = true;
            break;
          case 8: {

            monsterId_ = input.readUInt32();
            break;
          }
          case 16: {

            groupId_ = input.readUInt32();
            break;
          }
          case 24: {

            configId_ = input.readUInt32();
            break;
          }
          case 34: {
            if (!((mutable_bitField0_ & 0x00000001) != 0)) {
              weaponList_ = new java.util.ArrayList<io.grasscutter.net.proto.define.SceneWeaponInfo>();
              mutable_bitField0_ |= 0x00000001;
            }
            weaponList_.add(
                input.readMessage(io.grasscutter.net.proto.define.SceneWeaponInfo.parser(), extensionRegistry));
            break;
          }
          case 40: {

            authorityPeerId_ = input.readUInt32();
            break;
          }
          case 48: {
            if (!((mutable_bitField0_ & 0x00000004) != 0)) {
              affixList_ = newIntList();
              mutable_bitField0_ |= 0x00000004;
            }
            affixList_.addInt(input.readUInt32());
            break;
          }
          case 50: {
            int length = input.readRawVarint32();
            int limit = input.pushLimit(length);
            if (!((mutable_bitField0_ & 0x00000004) != 0) && input.getBytesUntilLimit() > 0) {
              affixList_ = newIntList();
              mutable_bitField0_ |= 0x00000004;
            }
            while (input.getBytesUntilLimit() > 0) {
              affixList_.addInt(input.readUInt32());
            }
            input.popLimit(limit);
            break;
          }
          case 56: {

            isElite_ = input.readBool();
            break;
          }
          case 64: {

            ownerEntityId_ = input.readUInt32();
            break;
          }
          case 72: {

            summonedTag_ = input.readUInt32();
            break;
          }
          case 82: {
            if (!((mutable_bitField0_ & 0x00000002) != 0)) {
              summonTagMap_ = com.google.protobuf.MapField.newMapField(
                  SummonTagMapDefaultEntryHolder.defaultEntry);
              mutable_bitField0_ |= 0x00000002;
            }
            com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Integer>
            summonTagMap__ = input.readMessage(
                SummonTagMapDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
            summonTagMap_.getMutableMap().put(
                summonTagMap__.getKey(), summonTagMap__.getValue());
            break;
          }
          case 88: {

            poseId_ = input.readUInt32();
            break;
          }
          case 96: {
            int rawValue = input.readEnum();

            bornType_ = rawValue;
            break;
          }
          case 104: {

            blockId_ = input.readUInt32();
            break;
          }
          case 112: {

            markFlag_ = input.readUInt32();
            break;
          }
          case 120: {

            titleId_ = input.readUInt32();
            break;
          }
          case 128: {

            specialNameId_ = input.readUInt32();
            break;
          }
          case 136: {

            attackTargetId_ = input.readUInt32();
            break;
          }
          case 146: {
            io.grasscutter.net.proto.define.MonsterRoute.Builder subBuilder = null;
            if (monsterRoute_ != null) {
              subBuilder = monsterRoute_.toBuilder();
            }
            monsterRoute_ = input.readMessage(io.grasscutter.net.proto.define.MonsterRoute.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(monsterRoute_);
              monsterRoute_ = subBuilder.buildPartial();
            }

            break;
          }
          case 152: {

            aiConfigId_ = input.readUInt32();
            break;
          }
          case 160: {

            levelRouteId_ = input.readUInt32();
            break;
          }
          case 168: {

            campType_ = input.readUInt32();
            break;
          }
          case 176: {

            isLight_ = input.readBool();
            break;
          }
          case 402: {
            io.grasscutter.net.proto.define.SceneFishInfo.Builder subBuilder = null;
            if (contentCase_ == 50) {
              subBuilder = ((io.grasscutter.net.proto.define.SceneFishInfo) content_).toBuilder();
            }
            content_ =
                input.readMessage(io.grasscutter.net.proto.define.SceneFishInfo.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom((io.grasscutter.net.proto.define.SceneFishInfo) content_);
              content_ = subBuilder.buildPartial();
            }
            contentCase_ = 50;
            break;
          }
          case 410: {
            io.grasscutter.net.proto.define.FishtankFishInfo.Builder subBuilder = null;
            if (contentCase_ == 51) {
              subBuilder = ((io.grasscutter.net.proto.define.FishtankFishInfo) content_).toBuilder();
            }
            content_ =
                input.readMessage(io.grasscutter.net.proto.define.FishtankFishInfo.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom((io.grasscutter.net.proto.define.FishtankFishInfo) content_);
              content_ = subBuilder.buildPartial();
            }
            contentCase_ = 51;
            break;
          }
          default: {
            if (!parseUnknownField(
                input, unknownFields, extensionRegistry, tag)) {
              done = true;
            }
            break;
          }
        }
      }
    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
      throw e.setUnfinishedMessage(this);
    } catch (java.io.IOException e) {
      throw new com.google.protobuf.InvalidProtocolBufferException(
          e).setUnfinishedMessage(this);
    } finally {
      if (((mutable_bitField0_ & 0x00000001) != 0)) {
        weaponList_ = java.util.Collections.unmodifiableList(weaponList_);
      }
      if (((mutable_bitField0_ & 0x00000004) != 0)) {
        affixList_.makeImmutable(); // C
      }
      this.unknownFields = unknownFields.build();
      makeExtensionsImmutable();
    }
  }
  public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
    return io.grasscutter.net.proto.define.Define.internal_static_SceneMonsterInfo_descriptor;
  }

  @SuppressWarnings({"rawtypes"})
  @java.lang.Override
  protected com.google.protobuf.MapField internalGetMapField(
      int number) {
    switch (number) {
      case 10:
        return internalGetSummonTagMap();
      default:
        throw new RuntimeException(
            "Invalid map field number: " + number);
    }
  }
  @java.lang.Override
  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return io.grasscutter.net.proto.define.Define.internal_static_SceneMonsterInfo_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            io.grasscutter.net.proto.define.SceneMonsterInfo.class, io.grasscutter.net.proto.define.SceneMonsterInfo.Builder.class);
  }

  private int contentCase_ = 0;
  private java.lang.Object content_;
  public enum ContentCase
      implements com.google.protobuf.Internal.EnumLite,
          com.google.protobuf.AbstractMessage.InternalOneOfEnum {
    FISH_INFO(50),
    FISHTANK_FISH_INFO(51),
    CONTENT_NOT_SET(0);
    private final int value;
    private ContentCase(int value) {
      this.value = value;
    }
    /**
     * @param value The number of the enum to look for.
     * @return The enum associated with the given number.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static ContentCase valueOf(int value) {
      return forNumber(value);
    }

    public static ContentCase forNumber(int value) {
      switch (value) {
        case 50: return FISH_INFO;
        case 51: return FISHTANK_FISH_INFO;
        case 0: return CONTENT_NOT_SET;
        default: return null;
      }
    }
    public int getNumber() {
      return this.value;
    }
  };

  public ContentCase
  getContentCase() {
    return ContentCase.forNumber(
        contentCase_);
  }

  public static final int WEAPON_LIST_FIELD_NUMBER = 4;
  private java.util.List<io.grasscutter.net.proto.define.SceneWeaponInfo> weaponList_;
  /**
   * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
   */
  @java.lang.Override
  public java.util.List<io.grasscutter.net.proto.define.SceneWeaponInfo> getWeaponListList() {
    return weaponList_;
  }
  /**
   * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
   */
  @java.lang.Override
  public java.util.List<? extends io.grasscutter.net.proto.define.SceneWeaponInfoOrBuilder> 
      getWeaponListOrBuilderList() {
    return weaponList_;
  }
  /**
   * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
   */
  @java.lang.Override
  public int getWeaponListCount() {
    return weaponList_.size();
  }
  /**
   * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
   */
  @java.lang.Override
  public io.grasscutter.net.proto.define.SceneWeaponInfo getWeaponList(int index) {
    return weaponList_.get(index);
  }
  /**
   * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
   */
  @java.lang.Override
  public io.grasscutter.net.proto.define.SceneWeaponInfoOrBuilder getWeaponListOrBuilder(
      int index) {
    return weaponList_.get(index);
  }

  public static final int SUMMON_TAG_MAP_FIELD_NUMBER = 10;
  private static final class SummonTagMapDefaultEntryHolder {
    static final com.google.protobuf.MapEntry<
        java.lang.Integer, java.lang.Integer> defaultEntry =
            com.google.protobuf.MapEntry
            .<java.lang.Integer, java.lang.Integer>newDefaultInstance(
                io.grasscutter.net.proto.define.Define.internal_static_SceneMonsterInfo_SummonTagMapEntry_descriptor, 
                com.google.protobuf.WireFormat.FieldType.UINT32,
                0,
                com.google.protobuf.WireFormat.FieldType.UINT32,
                0);
  }
  private com.google.protobuf.MapField<
      java.lang.Integer, java.lang.Integer> summonTagMap_;
  private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer>
  internalGetSummonTagMap() {
    if (summonTagMap_ == null) {
      return com.google.protobuf.MapField.emptyMapField(
          SummonTagMapDefaultEntryHolder.defaultEntry);
    }
    return summonTagMap_;
  }

  public int getSummonTagMapCount() {
    return internalGetSummonTagMap().getMap().size();
  }
  /**
   * <code>map&lt;uint32, uint32&gt; summon_tag_map = 10;</code>
   */

  @java.lang.Override
  public boolean containsSummonTagMap(
      int key) {
    
    return internalGetSummonTagMap().getMap().containsKey(key);
  }
  /**
   * Use {@link #getSummonTagMapMap()} instead.
   */
  @java.lang.Override
  @java.lang.Deprecated
  public java.util.Map<java.lang.Integer, java.lang.Integer> getSummonTagMap() {
    return getSummonTagMapMap();
  }
  /**
   * <code>map&lt;uint32, uint32&gt; summon_tag_map = 10;</code>
   */
  @java.lang.Override

  public java.util.Map<java.lang.Integer, java.lang.Integer> getSummonTagMapMap() {
    return internalGetSummonTagMap().getMap();
  }
  /**
   * <code>map&lt;uint32, uint32&gt; summon_tag_map = 10;</code>
   */
  @java.lang.Override

  public int getSummonTagMapOrDefault(
      int key,
      int defaultValue) {
    
    java.util.Map<java.lang.Integer, java.lang.Integer> map =
        internalGetSummonTagMap().getMap();
    return map.containsKey(key) ? map.get(key) : defaultValue;
  }
  /**
   * <code>map&lt;uint32, uint32&gt; summon_tag_map = 10;</code>
   */
  @java.lang.Override

  public int getSummonTagMapOrThrow(
      int key) {
    
    java.util.Map<java.lang.Integer, java.lang.Integer> map =
        internalGetSummonTagMap().getMap();
    if (!map.containsKey(key)) {
      throw new java.lang.IllegalArgumentException();
    }
    return map.get(key);
  }

  public static final int AFFIX_LIST_FIELD_NUMBER = 6;
  private com.google.protobuf.Internal.IntList affixList_;
  /**
   * <code>repeated uint32 affix_list = 6;</code>
   * @return A list containing the affixList.
   */
  @java.lang.Override
  public java.util.List<java.lang.Integer>
      getAffixListList() {
    return affixList_;
  }
  /**
   * <code>repeated uint32 affix_list = 6;</code>
   * @return The count of affixList.
   */
  public int getAffixListCount() {
    return affixList_.size();
  }
  /**
   * <code>repeated uint32 affix_list = 6;</code>
   * @param index The index of the element to return.
   * @return The affixList at the given index.
   */
  public int getAffixList(int index) {
    return affixList_.getInt(index);
  }
  private int affixListMemoizedSerializedSize = -1;

  public static final int MONSTER_ROUTE_FIELD_NUMBER = 18;
  private io.grasscutter.net.proto.define.MonsterRoute monsterRoute_;
  /**
   * <code>.MonsterRoute monster_route = 18;</code>
   * @return Whether the monsterRoute field is set.
   */
  @java.lang.Override
  public boolean hasMonsterRoute() {
    return monsterRoute_ != null;
  }
  /**
   * <code>.MonsterRoute monster_route = 18;</code>
   * @return The monsterRoute.
   */
  @java.lang.Override
  public io.grasscutter.net.proto.define.MonsterRoute getMonsterRoute() {
    return monsterRoute_ == null ? io.grasscutter.net.proto.define.MonsterRoute.getDefaultInstance() : monsterRoute_;
  }
  /**
   * <code>.MonsterRoute monster_route = 18;</code>
   */
  @java.lang.Override
  public io.grasscutter.net.proto.define.MonsterRouteOrBuilder getMonsterRouteOrBuilder() {
    return getMonsterRoute();
  }

  public static final int MONSTER_ID_FIELD_NUMBER = 1;
  private int monsterId_;
  /**
   * <code>uint32 monster_id = 1;</code>
   * @return The monsterId.
   */
  @java.lang.Override
  public int getMonsterId() {
    return monsterId_;
  }

  public static final int GROUP_ID_FIELD_NUMBER = 2;
  private int groupId_;
  /**
   * <code>uint32 group_id = 2;</code>
   * @return The groupId.
   */
  @java.lang.Override
  public int getGroupId() {
    return groupId_;
  }

  public static final int CONFIG_ID_FIELD_NUMBER = 3;
  private int configId_;
  /**
   * <code>uint32 config_id = 3;</code>
   * @return The configId.
   */
  @java.lang.Override
  public int getConfigId() {
    return configId_;
  }

  public static final int CAMP_TYPE_FIELD_NUMBER = 21;
  private int campType_;
  /**
   * <code>uint32 camp_type = 21;</code>
   * @return The campType.
   */
  @java.lang.Override
  public int getCampType() {
    return campType_;
  }

  public static final int OWNER_ENTITY_ID_FIELD_NUMBER = 8;
  private int ownerEntityId_;
  /**
   * <code>uint32 owner_entity_id = 8;</code>
   * @return The ownerEntityId.
   */
  @java.lang.Override
  public int getOwnerEntityId() {
    return ownerEntityId_;
  }

  public static final int BLOCK_ID_FIELD_NUMBER = 13;
  private int blockId_;
  /**
   * <code>uint32 block_id = 13;</code>
   * @return The blockId.
   */
  @java.lang.Override
  public int getBlockId() {
    return blockId_;
  }

  public static final int AI_CONFIG_ID_FIELD_NUMBER = 19;
  private int aiConfigId_;
  /**
   * <code>uint32 ai_config_id = 19;</code>
   * @return The aiConfigId.
   */
  @java.lang.Override
  public int getAiConfigId() {
    return aiConfigId_;
  }

  public static final int IS_ELITE_FIELD_NUMBER = 7;
  private boolean isElite_;
  /**
   * <code>bool is_elite = 7;</code>
   * @return The isElite.
   */
  @java.lang.Override
  public boolean getIsElite() {
    return isElite_;
  }

  public static final int IS_LIGHT_FIELD_NUMBER = 22;
  private boolean isLight_;
  /**
   * <code>bool is_light = 22;</code>
   * @return The isLight.
   */
  @java.lang.Override
  public boolean getIsLight() {
    return isLight_;
  }

  public static final int ATTACK_TARGET_ID_FIELD_NUMBER = 17;
  private int attackTargetId_;
  /**
   * <code>uint32 attack_target_id = 17;</code>
   * @return The attackTargetId.
   */
  @java.lang.Override
  public int getAttackTargetId() {
    return attackTargetId_;
  }

  public static final int FISH_INFO_FIELD_NUMBER = 50;
  /**
   * <code>.SceneFishInfo fish_info = 50;</code>
   * @return Whether the fishInfo field is set.
   */
  @java.lang.Override
  public boolean hasFishInfo() {
    return contentCase_ == 50;
  }
  /**
   * <code>.SceneFishInfo fish_info = 50;</code>
   * @return The fishInfo.
   */
  @java.lang.Override
  public io.grasscutter.net.proto.define.SceneFishInfo getFishInfo() {
    if (contentCase_ == 50) {
       return (io.grasscutter.net.proto.define.SceneFishInfo) content_;
    }
    return io.grasscutter.net.proto.define.SceneFishInfo.getDefaultInstance();
  }
  /**
   * <code>.SceneFishInfo fish_info = 50;</code>
   */
  @java.lang.Override
  public io.grasscutter.net.proto.define.SceneFishInfoOrBuilder getFishInfoOrBuilder() {
    if (contentCase_ == 50) {
       return (io.grasscutter.net.proto.define.SceneFishInfo) content_;
    }
    return io.grasscutter.net.proto.define.SceneFishInfo.getDefaultInstance();
  }

  public static final int FISHTANK_FISH_INFO_FIELD_NUMBER = 51;
  /**
   * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
   * @return Whether the fishtankFishInfo field is set.
   */
  @java.lang.Override
  public boolean hasFishtankFishInfo() {
    return contentCase_ == 51;
  }
  /**
   * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
   * @return The fishtankFishInfo.
   */
  @java.lang.Override
  public io.grasscutter.net.proto.define.FishtankFishInfo getFishtankFishInfo() {
    if (contentCase_ == 51) {
       return (io.grasscutter.net.proto.define.FishtankFishInfo) content_;
    }
    return io.grasscutter.net.proto.define.FishtankFishInfo.getDefaultInstance();
  }
  /**
   * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
   */
  @java.lang.Override
  public io.grasscutter.net.proto.define.FishtankFishInfoOrBuilder getFishtankFishInfoOrBuilder() {
    if (contentCase_ == 51) {
       return (io.grasscutter.net.proto.define.FishtankFishInfo) content_;
    }
    return io.grasscutter.net.proto.define.FishtankFishInfo.getDefaultInstance();
  }

  public static final int LEVEL_ROUTE_ID_FIELD_NUMBER = 20;
  private int levelRouteId_;
  /**
   * <code>uint32 level_route_id = 20;</code>
   * @return The levelRouteId.
   */
  @java.lang.Override
  public int getLevelRouteId() {
    return levelRouteId_;
  }

  public static final int SUMMONED_TAG_FIELD_NUMBER = 9;
  private int summonedTag_;
  /**
   * <code>uint32 summoned_tag = 9;</code>
   * @return The summonedTag.
   */
  @java.lang.Override
  public int getSummonedTag() {
    return summonedTag_;
  }

  public static final int BORN_TYPE_FIELD_NUMBER = 12;
  private int bornType_;
  /**
   * <code>.MonsterBornType born_type = 12;</code>
   * @return The enum numeric value on the wire for bornType.
   */
  @java.lang.Override public int getBornTypeValue() {
    return bornType_;
  }
  /**
   * <code>.MonsterBornType born_type = 12;</code>
   * @return The bornType.
   */
  @java.lang.Override public io.grasscutter.net.proto.define.MonsterBornType getBornType() {
    @SuppressWarnings("deprecation")
    io.grasscutter.net.proto.define.MonsterBornType result = io.grasscutter.net.proto.define.MonsterBornType.valueOf(bornType_);
    return result == null ? io.grasscutter.net.proto.define.MonsterBornType.UNRECOGNIZED : result;
  }

  public static final int MARK_FLAG_FIELD_NUMBER = 14;
  private int markFlag_;
  /**
   * <code>uint32 mark_flag = 14;</code>
   * @return The markFlag.
   */
  @java.lang.Override
  public int getMarkFlag() {
    return markFlag_;
  }

  public static final int TITLE_ID_FIELD_NUMBER = 15;
  private int titleId_;
  /**
   * <code>uint32 title_id = 15;</code>
   * @return The titleId.
   */
  @java.lang.Override
  public int getTitleId() {
    return titleId_;
  }

  public static final int AUTHORITY_PEER_ID_FIELD_NUMBER = 5;
  private int authorityPeerId_;
  /**
   * <code>uint32 authority_peer_id = 5;</code>
   * @return The authorityPeerId.
   */
  @java.lang.Override
  public int getAuthorityPeerId() {
    return authorityPeerId_;
  }

  public static final int SPECIAL_NAME_ID_FIELD_NUMBER = 16;
  private int specialNameId_;
  /**
   * <code>uint32 special_name_id = 16;</code>
   * @return The specialNameId.
   */
  @java.lang.Override
  public int getSpecialNameId() {
    return specialNameId_;
  }

  public static final int POSE_ID_FIELD_NUMBER = 11;
  private int poseId_;
  /**
   * <code>uint32 pose_id = 11;</code>
   * @return The poseId.
   */
  @java.lang.Override
  public int getPoseId() {
    return poseId_;
  }

  private byte memoizedIsInitialized = -1;
  @java.lang.Override
  public final boolean isInitialized() {
    byte isInitialized = memoizedIsInitialized;
    if (isInitialized == 1) return true;
    if (isInitialized == 0) return false;

    memoizedIsInitialized = 1;
    return true;
  }

  @java.lang.Override
  public void writeTo(com.google.protobuf.CodedOutputStream output)
                      throws java.io.IOException {
    getSerializedSize();
    if (monsterId_ != 0) {
      output.writeUInt32(1, monsterId_);
    }
    if (groupId_ != 0) {
      output.writeUInt32(2, groupId_);
    }
    if (configId_ != 0) {
      output.writeUInt32(3, configId_);
    }
    for (int i = 0; i < weaponList_.size(); i++) {
      output.writeMessage(4, weaponList_.get(i));
    }
    if (authorityPeerId_ != 0) {
      output.writeUInt32(5, authorityPeerId_);
    }
    if (getAffixListList().size() > 0) {
      output.writeUInt32NoTag(50);
      output.writeUInt32NoTag(affixListMemoizedSerializedSize);
    }
    for (int i = 0; i < affixList_.size(); i++) {
      output.writeUInt32NoTag(affixList_.getInt(i));
    }
    if (isElite_ != false) {
      output.writeBool(7, isElite_);
    }
    if (ownerEntityId_ != 0) {
      output.writeUInt32(8, ownerEntityId_);
    }
    if (summonedTag_ != 0) {
      output.writeUInt32(9, summonedTag_);
    }
    com.google.protobuf.GeneratedMessageV3
      .serializeIntegerMapTo(
        output,
        internalGetSummonTagMap(),
        SummonTagMapDefaultEntryHolder.defaultEntry,
        10);
    if (poseId_ != 0) {
      output.writeUInt32(11, poseId_);
    }
    if (bornType_ != io.grasscutter.net.proto.define.MonsterBornType.MonsterBornType_MONSTER_BORN_NONE.getNumber()) {
      output.writeEnum(12, bornType_);
    }
    if (blockId_ != 0) {
      output.writeUInt32(13, blockId_);
    }
    if (markFlag_ != 0) {
      output.writeUInt32(14, markFlag_);
    }
    if (titleId_ != 0) {
      output.writeUInt32(15, titleId_);
    }
    if (specialNameId_ != 0) {
      output.writeUInt32(16, specialNameId_);
    }
    if (attackTargetId_ != 0) {
      output.writeUInt32(17, attackTargetId_);
    }
    if (monsterRoute_ != null) {
      output.writeMessage(18, getMonsterRoute());
    }
    if (aiConfigId_ != 0) {
      output.writeUInt32(19, aiConfigId_);
    }
    if (levelRouteId_ != 0) {
      output.writeUInt32(20, levelRouteId_);
    }
    if (campType_ != 0) {
      output.writeUInt32(21, campType_);
    }
    if (isLight_ != false) {
      output.writeBool(22, isLight_);
    }
    if (contentCase_ == 50) {
      output.writeMessage(50, (io.grasscutter.net.proto.define.SceneFishInfo) content_);
    }
    if (contentCase_ == 51) {
      output.writeMessage(51, (io.grasscutter.net.proto.define.FishtankFishInfo) content_);
    }
    unknownFields.writeTo(output);
  }

  @java.lang.Override
  public int getSerializedSize() {
    int size = memoizedSize;
    if (size != -1) return size;

    size = 0;
    if (monsterId_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(1, monsterId_);
    }
    if (groupId_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(2, groupId_);
    }
    if (configId_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(3, configId_);
    }
    for (int i = 0; i < weaponList_.size(); i++) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(4, weaponList_.get(i));
    }
    if (authorityPeerId_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(5, authorityPeerId_);
    }
    {
      int dataSize = 0;
      for (int i = 0; i < affixList_.size(); i++) {
        dataSize += com.google.protobuf.CodedOutputStream
          .computeUInt32SizeNoTag(affixList_.getInt(i));
      }
      size += dataSize;
      if (!getAffixListList().isEmpty()) {
        size += 1;
        size += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(dataSize);
      }
      affixListMemoizedSerializedSize = dataSize;
    }
    if (isElite_ != false) {
      size += com.google.protobuf.CodedOutputStream
        .computeBoolSize(7, isElite_);
    }
    if (ownerEntityId_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(8, ownerEntityId_);
    }
    if (summonedTag_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(9, summonedTag_);
    }
    for (java.util.Map.Entry<java.lang.Integer, java.lang.Integer> entry
         : internalGetSummonTagMap().getMap().entrySet()) {
      com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Integer>
      summonTagMap__ = SummonTagMapDefaultEntryHolder.defaultEntry.newBuilderForType()
          .setKey(entry.getKey())
          .setValue(entry.getValue())
          .build();
      size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, summonTagMap__);
    }
    if (poseId_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(11, poseId_);
    }
    if (bornType_ != io.grasscutter.net.proto.define.MonsterBornType.MonsterBornType_MONSTER_BORN_NONE.getNumber()) {
      size += com.google.protobuf.CodedOutputStream
        .computeEnumSize(12, bornType_);
    }
    if (blockId_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(13, blockId_);
    }
    if (markFlag_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(14, markFlag_);
    }
    if (titleId_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(15, titleId_);
    }
    if (specialNameId_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(16, specialNameId_);
    }
    if (attackTargetId_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(17, attackTargetId_);
    }
    if (monsterRoute_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(18, getMonsterRoute());
    }
    if (aiConfigId_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(19, aiConfigId_);
    }
    if (levelRouteId_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(20, levelRouteId_);
    }
    if (campType_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(21, campType_);
    }
    if (isLight_ != false) {
      size += com.google.protobuf.CodedOutputStream
        .computeBoolSize(22, isLight_);
    }
    if (contentCase_ == 50) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(50, (io.grasscutter.net.proto.define.SceneFishInfo) content_);
    }
    if (contentCase_ == 51) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(51, (io.grasscutter.net.proto.define.FishtankFishInfo) content_);
    }
    size += unknownFields.getSerializedSize();
    memoizedSize = size;
    return size;
  }

  @java.lang.Override
  public boolean equals(final java.lang.Object obj) {
    if (obj == this) {
     return true;
    }
    if (!(obj instanceof io.grasscutter.net.proto.define.SceneMonsterInfo)) {
      return super.equals(obj);
    }
    io.grasscutter.net.proto.define.SceneMonsterInfo other = (io.grasscutter.net.proto.define.SceneMonsterInfo) obj;

    if (!getWeaponListList()
        .equals(other.getWeaponListList())) return false;
    if (!internalGetSummonTagMap().equals(
        other.internalGetSummonTagMap())) return false;
    if (!getAffixListList()
        .equals(other.getAffixListList())) return false;
    if (hasMonsterRoute() != other.hasMonsterRoute()) return false;
    if (hasMonsterRoute()) {
      if (!getMonsterRoute()
          .equals(other.getMonsterRoute())) return false;
    }
    if (getMonsterId()
        != other.getMonsterId()) return false;
    if (getGroupId()
        != other.getGroupId()) return false;
    if (getConfigId()
        != other.getConfigId()) return false;
    if (getCampType()
        != other.getCampType()) return false;
    if (getOwnerEntityId()
        != other.getOwnerEntityId()) return false;
    if (getBlockId()
        != other.getBlockId()) return false;
    if (getAiConfigId()
        != other.getAiConfigId()) return false;
    if (getIsElite()
        != other.getIsElite()) return false;
    if (getIsLight()
        != other.getIsLight()) return false;
    if (getAttackTargetId()
        != other.getAttackTargetId()) return false;
    if (getLevelRouteId()
        != other.getLevelRouteId()) return false;
    if (getSummonedTag()
        != other.getSummonedTag()) return false;
    if (bornType_ != other.bornType_) return false;
    if (getMarkFlag()
        != other.getMarkFlag()) return false;
    if (getTitleId()
        != other.getTitleId()) return false;
    if (getAuthorityPeerId()
        != other.getAuthorityPeerId()) return false;
    if (getSpecialNameId()
        != other.getSpecialNameId()) return false;
    if (getPoseId()
        != other.getPoseId()) return false;
    if (!getContentCase().equals(other.getContentCase())) return false;
    switch (contentCase_) {
      case 50:
        if (!getFishInfo()
            .equals(other.getFishInfo())) return false;
        break;
      case 51:
        if (!getFishtankFishInfo()
            .equals(other.getFishtankFishInfo())) return false;
        break;
      case 0:
      default:
    }
    if (!unknownFields.equals(other.unknownFields)) return false;
    return true;
  }

  @java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    if (getWeaponListCount() > 0) {
      hash = (37 * hash) + WEAPON_LIST_FIELD_NUMBER;
      hash = (53 * hash) + getWeaponListList().hashCode();
    }
    if (!internalGetSummonTagMap().getMap().isEmpty()) {
      hash = (37 * hash) + SUMMON_TAG_MAP_FIELD_NUMBER;
      hash = (53 * hash) + internalGetSummonTagMap().hashCode();
    }
    if (getAffixListCount() > 0) {
      hash = (37 * hash) + AFFIX_LIST_FIELD_NUMBER;
      hash = (53 * hash) + getAffixListList().hashCode();
    }
    if (hasMonsterRoute()) {
      hash = (37 * hash) + MONSTER_ROUTE_FIELD_NUMBER;
      hash = (53 * hash) + getMonsterRoute().hashCode();
    }
    hash = (37 * hash) + MONSTER_ID_FIELD_NUMBER;
    hash = (53 * hash) + getMonsterId();
    hash = (37 * hash) + GROUP_ID_FIELD_NUMBER;
    hash = (53 * hash) + getGroupId();
    hash = (37 * hash) + CONFIG_ID_FIELD_NUMBER;
    hash = (53 * hash) + getConfigId();
    hash = (37 * hash) + CAMP_TYPE_FIELD_NUMBER;
    hash = (53 * hash) + getCampType();
    hash = (37 * hash) + OWNER_ENTITY_ID_FIELD_NUMBER;
    hash = (53 * hash) + getOwnerEntityId();
    hash = (37 * hash) + BLOCK_ID_FIELD_NUMBER;
    hash = (53 * hash) + getBlockId();
    hash = (37 * hash) + AI_CONFIG_ID_FIELD_NUMBER;
    hash = (53 * hash) + getAiConfigId();
    hash = (37 * hash) + IS_ELITE_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
        getIsElite());
    hash = (37 * hash) + IS_LIGHT_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
        getIsLight());
    hash = (37 * hash) + ATTACK_TARGET_ID_FIELD_NUMBER;
    hash = (53 * hash) + getAttackTargetId();
    hash = (37 * hash) + LEVEL_ROUTE_ID_FIELD_NUMBER;
    hash = (53 * hash) + getLevelRouteId();
    hash = (37 * hash) + SUMMONED_TAG_FIELD_NUMBER;
    hash = (53 * hash) + getSummonedTag();
    hash = (37 * hash) + BORN_TYPE_FIELD_NUMBER;
    hash = (53 * hash) + bornType_;
    hash = (37 * hash) + MARK_FLAG_FIELD_NUMBER;
    hash = (53 * hash) + getMarkFlag();
    hash = (37 * hash) + TITLE_ID_FIELD_NUMBER;
    hash = (53 * hash) + getTitleId();
    hash = (37 * hash) + AUTHORITY_PEER_ID_FIELD_NUMBER;
    hash = (53 * hash) + getAuthorityPeerId();
    hash = (37 * hash) + SPECIAL_NAME_ID_FIELD_NUMBER;
    hash = (53 * hash) + getSpecialNameId();
    hash = (37 * hash) + POSE_ID_FIELD_NUMBER;
    hash = (53 * hash) + getPoseId();
    switch (contentCase_) {
      case 50:
        hash = (37 * hash) + FISH_INFO_FIELD_NUMBER;
        hash = (53 * hash) + getFishInfo().hashCode();
        break;
      case 51:
        hash = (37 * hash) + FISHTANK_FISH_INFO_FIELD_NUMBER;
        hash = (53 * hash) + getFishtankFishInfo().hashCode();
        break;
      case 0:
      default:
    }
    hash = (29 * hash) + unknownFields.hashCode();
    memoizedHashCode = hash;
    return hash;
  }

  public static io.grasscutter.net.proto.define.SceneMonsterInfo parseFrom(
      java.nio.ByteBuffer data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static io.grasscutter.net.proto.define.SceneMonsterInfo parseFrom(
      java.nio.ByteBuffer data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static io.grasscutter.net.proto.define.SceneMonsterInfo parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static io.grasscutter.net.proto.define.SceneMonsterInfo parseFrom(
      com.google.protobuf.ByteString data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static io.grasscutter.net.proto.define.SceneMonsterInfo parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static io.grasscutter.net.proto.define.SceneMonsterInfo parseFrom(
      byte[] data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static io.grasscutter.net.proto.define.SceneMonsterInfo parseFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static io.grasscutter.net.proto.define.SceneMonsterInfo parseFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input, extensionRegistry);
  }
  public static io.grasscutter.net.proto.define.SceneMonsterInfo parseDelimitedFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input);
  }
  public static io.grasscutter.net.proto.define.SceneMonsterInfo parseDelimitedFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
  }
  public static io.grasscutter.net.proto.define.SceneMonsterInfo parseFrom(
      com.google.protobuf.CodedInputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static io.grasscutter.net.proto.define.SceneMonsterInfo parseFrom(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input, extensionRegistry);
  }

  @java.lang.Override
  public Builder newBuilderForType() { return newBuilder(); }
  public static Builder newBuilder() {
    return DEFAULT_INSTANCE.toBuilder();
  }
  public static Builder newBuilder(io.grasscutter.net.proto.define.SceneMonsterInfo prototype) {
    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  }
  @java.lang.Override
  public Builder toBuilder() {
    return this == DEFAULT_INSTANCE
        ? new Builder() : new Builder().mergeFrom(this);
  }

  @java.lang.Override
  protected Builder newBuilderForType(
      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    Builder builder = new Builder(parent);
    return builder;
  }
  /**
   * Protobuf type {@code SceneMonsterInfo}
   */
  public static final class Builder extends
      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
      // @@protoc_insertion_point(builder_implements:SceneMonsterInfo)
      io.grasscutter.net.proto.define.SceneMonsterInfoOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grasscutter.net.proto.define.Define.internal_static_SceneMonsterInfo_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 10:
          return internalGetSummonTagMap();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @SuppressWarnings({"rawtypes"})
    protected com.google.protobuf.MapField internalGetMutableMapField(
        int number) {
      switch (number) {
        case 10:
          return internalGetMutableSummonTagMap();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grasscutter.net.proto.define.Define.internal_static_SceneMonsterInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grasscutter.net.proto.define.SceneMonsterInfo.class, io.grasscutter.net.proto.define.SceneMonsterInfo.Builder.class);
    }

    // Construct using io.grasscutter.net.proto.define.SceneMonsterInfo.newBuilder()
    private Builder() {
      maybeForceBuilderInitialization();
    }

    private Builder(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      super(parent);
      maybeForceBuilderInitialization();
    }
    private void maybeForceBuilderInitialization() {
      if (com.google.protobuf.GeneratedMessageV3
              .alwaysUseFieldBuilders) {
        getWeaponListFieldBuilder();
      }
    }
    @java.lang.Override
    public Builder clear() {
      super.clear();
      if (weaponListBuilder_ == null) {
        weaponList_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
      } else {
        weaponListBuilder_.clear();
      }
      internalGetMutableSummonTagMap().clear();
      affixList_ = emptyIntList();
      bitField0_ = (bitField0_ & ~0x00000004);
      if (monsterRouteBuilder_ == null) {
        monsterRoute_ = null;
      } else {
        monsterRoute_ = null;
        monsterRouteBuilder_ = null;
      }
      monsterId_ = 0;

      groupId_ = 0;

      configId_ = 0;

      campType_ = 0;

      ownerEntityId_ = 0;

      blockId_ = 0;

      aiConfigId_ = 0;

      isElite_ = false;

      isLight_ = false;

      attackTargetId_ = 0;

      levelRouteId_ = 0;

      summonedTag_ = 0;

      bornType_ = 0;

      markFlag_ = 0;

      titleId_ = 0;

      authorityPeerId_ = 0;

      specialNameId_ = 0;

      poseId_ = 0;

      contentCase_ = 0;
      content_ = null;
      return this;
    }

    @java.lang.Override
    public com.google.protobuf.Descriptors.Descriptor
        getDescriptorForType() {
      return io.grasscutter.net.proto.define.Define.internal_static_SceneMonsterInfo_descriptor;
    }

    @java.lang.Override
    public io.grasscutter.net.proto.define.SceneMonsterInfo getDefaultInstanceForType() {
      return io.grasscutter.net.proto.define.SceneMonsterInfo.getDefaultInstance();
    }

    @java.lang.Override
    public io.grasscutter.net.proto.define.SceneMonsterInfo build() {
      io.grasscutter.net.proto.define.SceneMonsterInfo result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    @java.lang.Override
    public io.grasscutter.net.proto.define.SceneMonsterInfo buildPartial() {
      io.grasscutter.net.proto.define.SceneMonsterInfo result = new io.grasscutter.net.proto.define.SceneMonsterInfo(this);
      int from_bitField0_ = bitField0_;
      if (weaponListBuilder_ == null) {
        if (((bitField0_ & 0x00000001) != 0)) {
          weaponList_ = java.util.Collections.unmodifiableList(weaponList_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.weaponList_ = weaponList_;
      } else {
        result.weaponList_ = weaponListBuilder_.build();
      }
      result.summonTagMap_ = internalGetSummonTagMap();
      result.summonTagMap_.makeImmutable();
      if (((bitField0_ & 0x00000004) != 0)) {
        affixList_.makeImmutable();
        bitField0_ = (bitField0_ & ~0x00000004);
      }
      result.affixList_ = affixList_;
      if (monsterRouteBuilder_ == null) {
        result.monsterRoute_ = monsterRoute_;
      } else {
        result.monsterRoute_ = monsterRouteBuilder_.build();
      }
      result.monsterId_ = monsterId_;
      result.groupId_ = groupId_;
      result.configId_ = configId_;
      result.campType_ = campType_;
      result.ownerEntityId_ = ownerEntityId_;
      result.blockId_ = blockId_;
      result.aiConfigId_ = aiConfigId_;
      result.isElite_ = isElite_;
      result.isLight_ = isLight_;
      result.attackTargetId_ = attackTargetId_;
      if (contentCase_ == 50) {
        if (fishInfoBuilder_ == null) {
          result.content_ = content_;
        } else {
          result.content_ = fishInfoBuilder_.build();
        }
      }
      if (contentCase_ == 51) {
        if (fishtankFishInfoBuilder_ == null) {
          result.content_ = content_;
        } else {
          result.content_ = fishtankFishInfoBuilder_.build();
        }
      }
      result.levelRouteId_ = levelRouteId_;
      result.summonedTag_ = summonedTag_;
      result.bornType_ = bornType_;
      result.markFlag_ = markFlag_;
      result.titleId_ = titleId_;
      result.authorityPeerId_ = authorityPeerId_;
      result.specialNameId_ = specialNameId_;
      result.poseId_ = poseId_;
      result.contentCase_ = contentCase_;
      onBuilt();
      return result;
    }

    @java.lang.Override
    public Builder clone() {
      return super.clone();
    }
    @java.lang.Override
    public Builder setField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        java.lang.Object value) {
      return super.setField(field, value);
    }
    @java.lang.Override
    public Builder clearField(
        com.google.protobuf.Descriptors.FieldDescriptor field) {
      return super.clearField(field);
    }
    @java.lang.Override
    public Builder clearOneof(
        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
      return super.clearOneof(oneof);
    }
    @java.lang.Override
    public Builder setRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        int index, java.lang.Object value) {
      return super.setRepeatedField(field, index, value);
    }
    @java.lang.Override
    public Builder addRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        java.lang.Object value) {
      return super.addRepeatedField(field, value);
    }
    @java.lang.Override
    public Builder mergeFrom(com.google.protobuf.Message other) {
      if (other instanceof io.grasscutter.net.proto.define.SceneMonsterInfo) {
        return mergeFrom((io.grasscutter.net.proto.define.SceneMonsterInfo)other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(io.grasscutter.net.proto.define.SceneMonsterInfo other) {
      if (other == io.grasscutter.net.proto.define.SceneMonsterInfo.getDefaultInstance()) return this;
      if (weaponListBuilder_ == null) {
        if (!other.weaponList_.isEmpty()) {
          if (weaponList_.isEmpty()) {
            weaponList_ = other.weaponList_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureWeaponListIsMutable();
            weaponList_.addAll(other.weaponList_);
          }
          onChanged();
        }
      } else {
        if (!other.weaponList_.isEmpty()) {
          if (weaponListBuilder_.isEmpty()) {
            weaponListBuilder_.dispose();
            weaponListBuilder_ = null;
            weaponList_ = other.weaponList_;
            bitField0_ = (bitField0_ & ~0x00000001);
            weaponListBuilder_ = 
              com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                 getWeaponListFieldBuilder() : null;
          } else {
            weaponListBuilder_.addAllMessages(other.weaponList_);
          }
        }
      }
      internalGetMutableSummonTagMap().mergeFrom(
          other.internalGetSummonTagMap());
      if (!other.affixList_.isEmpty()) {
        if (affixList_.isEmpty()) {
          affixList_ = other.affixList_;
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          ensureAffixListIsMutable();
          affixList_.addAll(other.affixList_);
        }
        onChanged();
      }
      if (other.hasMonsterRoute()) {
        mergeMonsterRoute(other.getMonsterRoute());
      }
      if (other.getMonsterId() != 0) {
        setMonsterId(other.getMonsterId());
      }
      if (other.getGroupId() != 0) {
        setGroupId(other.getGroupId());
      }
      if (other.getConfigId() != 0) {
        setConfigId(other.getConfigId());
      }
      if (other.getCampType() != 0) {
        setCampType(other.getCampType());
      }
      if (other.getOwnerEntityId() != 0) {
        setOwnerEntityId(other.getOwnerEntityId());
      }
      if (other.getBlockId() != 0) {
        setBlockId(other.getBlockId());
      }
      if (other.getAiConfigId() != 0) {
        setAiConfigId(other.getAiConfigId());
      }
      if (other.getIsElite() != false) {
        setIsElite(other.getIsElite());
      }
      if (other.getIsLight() != false) {
        setIsLight(other.getIsLight());
      }
      if (other.getAttackTargetId() != 0) {
        setAttackTargetId(other.getAttackTargetId());
      }
      if (other.getLevelRouteId() != 0) {
        setLevelRouteId(other.getLevelRouteId());
      }
      if (other.getSummonedTag() != 0) {
        setSummonedTag(other.getSummonedTag());
      }
      if (other.bornType_ != 0) {
        setBornTypeValue(other.getBornTypeValue());
      }
      if (other.getMarkFlag() != 0) {
        setMarkFlag(other.getMarkFlag());
      }
      if (other.getTitleId() != 0) {
        setTitleId(other.getTitleId());
      }
      if (other.getAuthorityPeerId() != 0) {
        setAuthorityPeerId(other.getAuthorityPeerId());
      }
      if (other.getSpecialNameId() != 0) {
        setSpecialNameId(other.getSpecialNameId());
      }
      if (other.getPoseId() != 0) {
        setPoseId(other.getPoseId());
      }
      switch (other.getContentCase()) {
        case FISH_INFO: {
          mergeFishInfo(other.getFishInfo());
          break;
        }
        case FISHTANK_FISH_INFO: {
          mergeFishtankFishInfo(other.getFishtankFishInfo());
          break;
        }
        case CONTENT_NOT_SET: {
          break;
        }
      }
      this.mergeUnknownFields(other.unknownFields);
      onChanged();
      return this;
    }

    @java.lang.Override
    public final boolean isInitialized() {
      return true;
    }

    @java.lang.Override
    public Builder mergeFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      io.grasscutter.net.proto.define.SceneMonsterInfo parsedMessage = null;
      try {
        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        parsedMessage = (io.grasscutter.net.proto.define.SceneMonsterInfo) e.getUnfinishedMessage();
        throw e.unwrapIOException();
      } finally {
        if (parsedMessage != null) {
          mergeFrom(parsedMessage);
        }
      }
      return this;
    }
    private int contentCase_ = 0;
    private java.lang.Object content_;
    public ContentCase
        getContentCase() {
      return ContentCase.forNumber(
          contentCase_);
    }

    public Builder clearContent() {
      contentCase_ = 0;
      content_ = null;
      onChanged();
      return this;
    }

    private int bitField0_;

    private java.util.List<io.grasscutter.net.proto.define.SceneWeaponInfo> weaponList_ =
      java.util.Collections.emptyList();
    private void ensureWeaponListIsMutable() {
      if (!((bitField0_ & 0x00000001) != 0)) {
        weaponList_ = new java.util.ArrayList<io.grasscutter.net.proto.define.SceneWeaponInfo>(weaponList_);
        bitField0_ |= 0x00000001;
       }
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
        io.grasscutter.net.proto.define.SceneWeaponInfo, io.grasscutter.net.proto.define.SceneWeaponInfo.Builder, io.grasscutter.net.proto.define.SceneWeaponInfoOrBuilder> weaponListBuilder_;

    /**
     * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
     */
    public java.util.List<io.grasscutter.net.proto.define.SceneWeaponInfo> getWeaponListList() {
      if (weaponListBuilder_ == null) {
        return java.util.Collections.unmodifiableList(weaponList_);
      } else {
        return weaponListBuilder_.getMessageList();
      }
    }
    /**
     * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
     */
    public int getWeaponListCount() {
      if (weaponListBuilder_ == null) {
        return weaponList_.size();
      } else {
        return weaponListBuilder_.getCount();
      }
    }
    /**
     * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
     */
    public io.grasscutter.net.proto.define.SceneWeaponInfo getWeaponList(int index) {
      if (weaponListBuilder_ == null) {
        return weaponList_.get(index);
      } else {
        return weaponListBuilder_.getMessage(index);
      }
    }
    /**
     * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
     */
    public Builder setWeaponList(
        int index, io.grasscutter.net.proto.define.SceneWeaponInfo value) {
      if (weaponListBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureWeaponListIsMutable();
        weaponList_.set(index, value);
        onChanged();
      } else {
        weaponListBuilder_.setMessage(index, value);
      }
      return this;
    }
    /**
     * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
     */
    public Builder setWeaponList(
        int index, io.grasscutter.net.proto.define.SceneWeaponInfo.Builder builderForValue) {
      if (weaponListBuilder_ == null) {
        ensureWeaponListIsMutable();
        weaponList_.set(index, builderForValue.build());
        onChanged();
      } else {
        weaponListBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
     */
    public Builder addWeaponList(io.grasscutter.net.proto.define.SceneWeaponInfo value) {
      if (weaponListBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureWeaponListIsMutable();
        weaponList_.add(value);
        onChanged();
      } else {
        weaponListBuilder_.addMessage(value);
      }
      return this;
    }
    /**
     * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
     */
    public Builder addWeaponList(
        int index, io.grasscutter.net.proto.define.SceneWeaponInfo value) {
      if (weaponListBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureWeaponListIsMutable();
        weaponList_.add(index, value);
        onChanged();
      } else {
        weaponListBuilder_.addMessage(index, value);
      }
      return this;
    }
    /**
     * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
     */
    public Builder addWeaponList(
        io.grasscutter.net.proto.define.SceneWeaponInfo.Builder builderForValue) {
      if (weaponListBuilder_ == null) {
        ensureWeaponListIsMutable();
        weaponList_.add(builderForValue.build());
        onChanged();
      } else {
        weaponListBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }
    /**
     * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
     */
    public Builder addWeaponList(
        int index, io.grasscutter.net.proto.define.SceneWeaponInfo.Builder builderForValue) {
      if (weaponListBuilder_ == null) {
        ensureWeaponListIsMutable();
        weaponList_.add(index, builderForValue.build());
        onChanged();
      } else {
        weaponListBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
     */
    public Builder addAllWeaponList(
        java.lang.Iterable<? extends io.grasscutter.net.proto.define.SceneWeaponInfo> values) {
      if (weaponListBuilder_ == null) {
        ensureWeaponListIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, weaponList_);
        onChanged();
      } else {
        weaponListBuilder_.addAllMessages(values);
      }
      return this;
    }
    /**
     * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
     */
    public Builder clearWeaponList() {
      if (weaponListBuilder_ == null) {
        weaponList_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
      } else {
        weaponListBuilder_.clear();
      }
      return this;
    }
    /**
     * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
     */
    public Builder removeWeaponList(int index) {
      if (weaponListBuilder_ == null) {
        ensureWeaponListIsMutable();
        weaponList_.remove(index);
        onChanged();
      } else {
        weaponListBuilder_.remove(index);
      }
      return this;
    }
    /**
     * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
     */
    public io.grasscutter.net.proto.define.SceneWeaponInfo.Builder getWeaponListBuilder(
        int index) {
      return getWeaponListFieldBuilder().getBuilder(index);
    }
    /**
     * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
     */
    public io.grasscutter.net.proto.define.SceneWeaponInfoOrBuilder getWeaponListOrBuilder(
        int index) {
      if (weaponListBuilder_ == null) {
        return weaponList_.get(index);  } else {
        return weaponListBuilder_.getMessageOrBuilder(index);
      }
    }
    /**
     * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
     */
    public java.util.List<? extends io.grasscutter.net.proto.define.SceneWeaponInfoOrBuilder> 
         getWeaponListOrBuilderList() {
      if (weaponListBuilder_ != null) {
        return weaponListBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(weaponList_);
      }
    }
    /**
     * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
     */
    public io.grasscutter.net.proto.define.SceneWeaponInfo.Builder addWeaponListBuilder() {
      return getWeaponListFieldBuilder().addBuilder(
          io.grasscutter.net.proto.define.SceneWeaponInfo.getDefaultInstance());
    }
    /**
     * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
     */
    public io.grasscutter.net.proto.define.SceneWeaponInfo.Builder addWeaponListBuilder(
        int index) {
      return getWeaponListFieldBuilder().addBuilder(
          index, io.grasscutter.net.proto.define.SceneWeaponInfo.getDefaultInstance());
    }
    /**
     * <code>repeated .SceneWeaponInfo weapon_list = 4;</code>
     */
    public java.util.List<io.grasscutter.net.proto.define.SceneWeaponInfo.Builder> 
         getWeaponListBuilderList() {
      return getWeaponListFieldBuilder().getBuilderList();
    }
    private com.google.protobuf.RepeatedFieldBuilderV3<
        io.grasscutter.net.proto.define.SceneWeaponInfo, io.grasscutter.net.proto.define.SceneWeaponInfo.Builder, io.grasscutter.net.proto.define.SceneWeaponInfoOrBuilder> 
        getWeaponListFieldBuilder() {
      if (weaponListBuilder_ == null) {
        weaponListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
            io.grasscutter.net.proto.define.SceneWeaponInfo, io.grasscutter.net.proto.define.SceneWeaponInfo.Builder, io.grasscutter.net.proto.define.SceneWeaponInfoOrBuilder>(
                weaponList_,
                ((bitField0_ & 0x00000001) != 0),
                getParentForChildren(),
                isClean());
        weaponList_ = null;
      }
      return weaponListBuilder_;
    }

    private com.google.protobuf.MapField<
        java.lang.Integer, java.lang.Integer> summonTagMap_;
    private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer>
    internalGetSummonTagMap() {
      if (summonTagMap_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            SummonTagMapDefaultEntryHolder.defaultEntry);
      }
      return summonTagMap_;
    }
    private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer>
    internalGetMutableSummonTagMap() {
      onChanged();;
      if (summonTagMap_ == null) {
        summonTagMap_ = com.google.protobuf.MapField.newMapField(
            SummonTagMapDefaultEntryHolder.defaultEntry);
      }
      if (!summonTagMap_.isMutable()) {
        summonTagMap_ = summonTagMap_.copy();
      }
      return summonTagMap_;
    }

    public int getSummonTagMapCount() {
      return internalGetSummonTagMap().getMap().size();
    }
    /**
     * <code>map&lt;uint32, uint32&gt; summon_tag_map = 10;</code>
     */

    @java.lang.Override
    public boolean containsSummonTagMap(
        int key) {
      
      return internalGetSummonTagMap().getMap().containsKey(key);
    }
    /**
     * Use {@link #getSummonTagMapMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.Integer, java.lang.Integer> getSummonTagMap() {
      return getSummonTagMapMap();
    }
    /**
     * <code>map&lt;uint32, uint32&gt; summon_tag_map = 10;</code>
     */
    @java.lang.Override

    public java.util.Map<java.lang.Integer, java.lang.Integer> getSummonTagMapMap() {
      return internalGetSummonTagMap().getMap();
    }
    /**
     * <code>map&lt;uint32, uint32&gt; summon_tag_map = 10;</code>
     */
    @java.lang.Override

    public int getSummonTagMapOrDefault(
        int key,
        int defaultValue) {
      
      java.util.Map<java.lang.Integer, java.lang.Integer> map =
          internalGetSummonTagMap().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;uint32, uint32&gt; summon_tag_map = 10;</code>
     */
    @java.lang.Override

    public int getSummonTagMapOrThrow(
        int key) {
      
      java.util.Map<java.lang.Integer, java.lang.Integer> map =
          internalGetSummonTagMap().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public Builder clearSummonTagMap() {
      internalGetMutableSummonTagMap().getMutableMap()
          .clear();
      return this;
    }
    /**
     * <code>map&lt;uint32, uint32&gt; summon_tag_map = 10;</code>
     */

    public Builder removeSummonTagMap(
        int key) {
      
      internalGetMutableSummonTagMap().getMutableMap()
          .remove(key);
      return this;
    }
    /**
     * Use alternate mutation accessors instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.Integer, java.lang.Integer>
    getMutableSummonTagMap() {
      return internalGetMutableSummonTagMap().getMutableMap();
    }
    /**
     * <code>map&lt;uint32, uint32&gt; summon_tag_map = 10;</code>
     */
    public Builder putSummonTagMap(
        int key,
        int value) {
      
      
      internalGetMutableSummonTagMap().getMutableMap()
          .put(key, value);
      return this;
    }
    /**
     * <code>map&lt;uint32, uint32&gt; summon_tag_map = 10;</code>
     */

    public Builder putAllSummonTagMap(
        java.util.Map<java.lang.Integer, java.lang.Integer> values) {
      internalGetMutableSummonTagMap().getMutableMap()
          .putAll(values);
      return this;
    }

    private com.google.protobuf.Internal.IntList affixList_ = emptyIntList();
    private void ensureAffixListIsMutable() {
      if (!((bitField0_ & 0x00000004) != 0)) {
        affixList_ = mutableCopy(affixList_);
        bitField0_ |= 0x00000004;
       }
    }
    /**
     * <code>repeated uint32 affix_list = 6;</code>
     * @return A list containing the affixList.
     */
    public java.util.List<java.lang.Integer>
        getAffixListList() {
      return ((bitField0_ & 0x00000004) != 0) ?
               java.util.Collections.unmodifiableList(affixList_) : affixList_;
    }
    /**
     * <code>repeated uint32 affix_list = 6;</code>
     * @return The count of affixList.
     */
    public int getAffixListCount() {
      return affixList_.size();
    }
    /**
     * <code>repeated uint32 affix_list = 6;</code>
     * @param index The index of the element to return.
     * @return The affixList at the given index.
     */
    public int getAffixList(int index) {
      return affixList_.getInt(index);
    }
    /**
     * <code>repeated uint32 affix_list = 6;</code>
     * @param index The index to set the value at.
     * @param value The affixList to set.
     * @return This builder for chaining.
     */
    public Builder setAffixList(
        int index, int value) {
      ensureAffixListIsMutable();
      affixList_.setInt(index, value);
      onChanged();
      return this;
    }
    /**
     * <code>repeated uint32 affix_list = 6;</code>
     * @param value The affixList to add.
     * @return This builder for chaining.
     */
    public Builder addAffixList(int value) {
      ensureAffixListIsMutable();
      affixList_.addInt(value);
      onChanged();
      return this;
    }
    /**
     * <code>repeated uint32 affix_list = 6;</code>
     * @param values The affixList to add.
     * @return This builder for chaining.
     */
    public Builder addAllAffixList(
        java.lang.Iterable<? extends java.lang.Integer> values) {
      ensureAffixListIsMutable();
      com.google.protobuf.AbstractMessageLite.Builder.addAll(
          values, affixList_);
      onChanged();
      return this;
    }
    /**
     * <code>repeated uint32 affix_list = 6;</code>
     * @return This builder for chaining.
     */
    public Builder clearAffixList() {
      affixList_ = emptyIntList();
      bitField0_ = (bitField0_ & ~0x00000004);
      onChanged();
      return this;
    }

    private io.grasscutter.net.proto.define.MonsterRoute monsterRoute_;
    private com.google.protobuf.SingleFieldBuilderV3<
        io.grasscutter.net.proto.define.MonsterRoute, io.grasscutter.net.proto.define.MonsterRoute.Builder, io.grasscutter.net.proto.define.MonsterRouteOrBuilder> monsterRouteBuilder_;
    /**
     * <code>.MonsterRoute monster_route = 18;</code>
     * @return Whether the monsterRoute field is set.
     */
    public boolean hasMonsterRoute() {
      return monsterRouteBuilder_ != null || monsterRoute_ != null;
    }
    /**
     * <code>.MonsterRoute monster_route = 18;</code>
     * @return The monsterRoute.
     */
    public io.grasscutter.net.proto.define.MonsterRoute getMonsterRoute() {
      if (monsterRouteBuilder_ == null) {
        return monsterRoute_ == null ? io.grasscutter.net.proto.define.MonsterRoute.getDefaultInstance() : monsterRoute_;
      } else {
        return monsterRouteBuilder_.getMessage();
      }
    }
    /**
     * <code>.MonsterRoute monster_route = 18;</code>
     */
    public Builder setMonsterRoute(io.grasscutter.net.proto.define.MonsterRoute value) {
      if (monsterRouteBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        monsterRoute_ = value;
        onChanged();
      } else {
        monsterRouteBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     * <code>.MonsterRoute monster_route = 18;</code>
     */
    public Builder setMonsterRoute(
        io.grasscutter.net.proto.define.MonsterRoute.Builder builderForValue) {
      if (monsterRouteBuilder_ == null) {
        monsterRoute_ = builderForValue.build();
        onChanged();
      } else {
        monsterRouteBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     * <code>.MonsterRoute monster_route = 18;</code>
     */
    public Builder mergeMonsterRoute(io.grasscutter.net.proto.define.MonsterRoute value) {
      if (monsterRouteBuilder_ == null) {
        if (monsterRoute_ != null) {
          monsterRoute_ =
            io.grasscutter.net.proto.define.MonsterRoute.newBuilder(monsterRoute_).mergeFrom(value).buildPartial();
        } else {
          monsterRoute_ = value;
        }
        onChanged();
      } else {
        monsterRouteBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     * <code>.MonsterRoute monster_route = 18;</code>
     */
    public Builder clearMonsterRoute() {
      if (monsterRouteBuilder_ == null) {
        monsterRoute_ = null;
        onChanged();
      } else {
        monsterRoute_ = null;
        monsterRouteBuilder_ = null;
      }

      return this;
    }
    /**
     * <code>.MonsterRoute monster_route = 18;</code>
     */
    public io.grasscutter.net.proto.define.MonsterRoute.Builder getMonsterRouteBuilder() {
      
      onChanged();
      return getMonsterRouteFieldBuilder().getBuilder();
    }
    /**
     * <code>.MonsterRoute monster_route = 18;</code>
     */
    public io.grasscutter.net.proto.define.MonsterRouteOrBuilder getMonsterRouteOrBuilder() {
      if (monsterRouteBuilder_ != null) {
        return monsterRouteBuilder_.getMessageOrBuilder();
      } else {
        return monsterRoute_ == null ?
            io.grasscutter.net.proto.define.MonsterRoute.getDefaultInstance() : monsterRoute_;
      }
    }
    /**
     * <code>.MonsterRoute monster_route = 18;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        io.grasscutter.net.proto.define.MonsterRoute, io.grasscutter.net.proto.define.MonsterRoute.Builder, io.grasscutter.net.proto.define.MonsterRouteOrBuilder> 
        getMonsterRouteFieldBuilder() {
      if (monsterRouteBuilder_ == null) {
        monsterRouteBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            io.grasscutter.net.proto.define.MonsterRoute, io.grasscutter.net.proto.define.MonsterRoute.Builder, io.grasscutter.net.proto.define.MonsterRouteOrBuilder>(
                getMonsterRoute(),
                getParentForChildren(),
                isClean());
        monsterRoute_ = null;
      }
      return monsterRouteBuilder_;
    }

    private int monsterId_ ;
    /**
     * <code>uint32 monster_id = 1;</code>
     * @return The monsterId.
     */
    @java.lang.Override
    public int getMonsterId() {
      return monsterId_;
    }
    /**
     * <code>uint32 monster_id = 1;</code>
     * @param value The monsterId to set.
     * @return This builder for chaining.
     */
    public Builder setMonsterId(int value) {
      
      monsterId_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 monster_id = 1;</code>
     * @return This builder for chaining.
     */
    public Builder clearMonsterId() {
      
      monsterId_ = 0;
      onChanged();
      return this;
    }

    private int groupId_ ;
    /**
     * <code>uint32 group_id = 2;</code>
     * @return The groupId.
     */
    @java.lang.Override
    public int getGroupId() {
      return groupId_;
    }
    /**
     * <code>uint32 group_id = 2;</code>
     * @param value The groupId to set.
     * @return This builder for chaining.
     */
    public Builder setGroupId(int value) {
      
      groupId_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 group_id = 2;</code>
     * @return This builder for chaining.
     */
    public Builder clearGroupId() {
      
      groupId_ = 0;
      onChanged();
      return this;
    }

    private int configId_ ;
    /**
     * <code>uint32 config_id = 3;</code>
     * @return The configId.
     */
    @java.lang.Override
    public int getConfigId() {
      return configId_;
    }
    /**
     * <code>uint32 config_id = 3;</code>
     * @param value The configId to set.
     * @return This builder for chaining.
     */
    public Builder setConfigId(int value) {
      
      configId_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 config_id = 3;</code>
     * @return This builder for chaining.
     */
    public Builder clearConfigId() {
      
      configId_ = 0;
      onChanged();
      return this;
    }

    private int campType_ ;
    /**
     * <code>uint32 camp_type = 21;</code>
     * @return The campType.
     */
    @java.lang.Override
    public int getCampType() {
      return campType_;
    }
    /**
     * <code>uint32 camp_type = 21;</code>
     * @param value The campType to set.
     * @return This builder for chaining.
     */
    public Builder setCampType(int value) {
      
      campType_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 camp_type = 21;</code>
     * @return This builder for chaining.
     */
    public Builder clearCampType() {
      
      campType_ = 0;
      onChanged();
      return this;
    }

    private int ownerEntityId_ ;
    /**
     * <code>uint32 owner_entity_id = 8;</code>
     * @return The ownerEntityId.
     */
    @java.lang.Override
    public int getOwnerEntityId() {
      return ownerEntityId_;
    }
    /**
     * <code>uint32 owner_entity_id = 8;</code>
     * @param value The ownerEntityId to set.
     * @return This builder for chaining.
     */
    public Builder setOwnerEntityId(int value) {
      
      ownerEntityId_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 owner_entity_id = 8;</code>
     * @return This builder for chaining.
     */
    public Builder clearOwnerEntityId() {
      
      ownerEntityId_ = 0;
      onChanged();
      return this;
    }

    private int blockId_ ;
    /**
     * <code>uint32 block_id = 13;</code>
     * @return The blockId.
     */
    @java.lang.Override
    public int getBlockId() {
      return blockId_;
    }
    /**
     * <code>uint32 block_id = 13;</code>
     * @param value The blockId to set.
     * @return This builder for chaining.
     */
    public Builder setBlockId(int value) {
      
      blockId_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 block_id = 13;</code>
     * @return This builder for chaining.
     */
    public Builder clearBlockId() {
      
      blockId_ = 0;
      onChanged();
      return this;
    }

    private int aiConfigId_ ;
    /**
     * <code>uint32 ai_config_id = 19;</code>
     * @return The aiConfigId.
     */
    @java.lang.Override
    public int getAiConfigId() {
      return aiConfigId_;
    }
    /**
     * <code>uint32 ai_config_id = 19;</code>
     * @param value The aiConfigId to set.
     * @return This builder for chaining.
     */
    public Builder setAiConfigId(int value) {
      
      aiConfigId_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 ai_config_id = 19;</code>
     * @return This builder for chaining.
     */
    public Builder clearAiConfigId() {
      
      aiConfigId_ = 0;
      onChanged();
      return this;
    }

    private boolean isElite_ ;
    /**
     * <code>bool is_elite = 7;</code>
     * @return The isElite.
     */
    @java.lang.Override
    public boolean getIsElite() {
      return isElite_;
    }
    /**
     * <code>bool is_elite = 7;</code>
     * @param value The isElite to set.
     * @return This builder for chaining.
     */
    public Builder setIsElite(boolean value) {
      
      isElite_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>bool is_elite = 7;</code>
     * @return This builder for chaining.
     */
    public Builder clearIsElite() {
      
      isElite_ = false;
      onChanged();
      return this;
    }

    private boolean isLight_ ;
    /**
     * <code>bool is_light = 22;</code>
     * @return The isLight.
     */
    @java.lang.Override
    public boolean getIsLight() {
      return isLight_;
    }
    /**
     * <code>bool is_light = 22;</code>
     * @param value The isLight to set.
     * @return This builder for chaining.
     */
    public Builder setIsLight(boolean value) {
      
      isLight_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>bool is_light = 22;</code>
     * @return This builder for chaining.
     */
    public Builder clearIsLight() {
      
      isLight_ = false;
      onChanged();
      return this;
    }

    private int attackTargetId_ ;
    /**
     * <code>uint32 attack_target_id = 17;</code>
     * @return The attackTargetId.
     */
    @java.lang.Override
    public int getAttackTargetId() {
      return attackTargetId_;
    }
    /**
     * <code>uint32 attack_target_id = 17;</code>
     * @param value The attackTargetId to set.
     * @return This builder for chaining.
     */
    public Builder setAttackTargetId(int value) {
      
      attackTargetId_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 attack_target_id = 17;</code>
     * @return This builder for chaining.
     */
    public Builder clearAttackTargetId() {
      
      attackTargetId_ = 0;
      onChanged();
      return this;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        io.grasscutter.net.proto.define.SceneFishInfo, io.grasscutter.net.proto.define.SceneFishInfo.Builder, io.grasscutter.net.proto.define.SceneFishInfoOrBuilder> fishInfoBuilder_;
    /**
     * <code>.SceneFishInfo fish_info = 50;</code>
     * @return Whether the fishInfo field is set.
     */
    @java.lang.Override
    public boolean hasFishInfo() {
      return contentCase_ == 50;
    }
    /**
     * <code>.SceneFishInfo fish_info = 50;</code>
     * @return The fishInfo.
     */
    @java.lang.Override
    public io.grasscutter.net.proto.define.SceneFishInfo getFishInfo() {
      if (fishInfoBuilder_ == null) {
        if (contentCase_ == 50) {
          return (io.grasscutter.net.proto.define.SceneFishInfo) content_;
        }
        return io.grasscutter.net.proto.define.SceneFishInfo.getDefaultInstance();
      } else {
        if (contentCase_ == 50) {
          return fishInfoBuilder_.getMessage();
        }
        return io.grasscutter.net.proto.define.SceneFishInfo.getDefaultInstance();
      }
    }
    /**
     * <code>.SceneFishInfo fish_info = 50;</code>
     */
    public Builder setFishInfo(io.grasscutter.net.proto.define.SceneFishInfo value) {
      if (fishInfoBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        content_ = value;
        onChanged();
      } else {
        fishInfoBuilder_.setMessage(value);
      }
      contentCase_ = 50;
      return this;
    }
    /**
     * <code>.SceneFishInfo fish_info = 50;</code>
     */
    public Builder setFishInfo(
        io.grasscutter.net.proto.define.SceneFishInfo.Builder builderForValue) {
      if (fishInfoBuilder_ == null) {
        content_ = builderForValue.build();
        onChanged();
      } else {
        fishInfoBuilder_.setMessage(builderForValue.build());
      }
      contentCase_ = 50;
      return this;
    }
    /**
     * <code>.SceneFishInfo fish_info = 50;</code>
     */
    public Builder mergeFishInfo(io.grasscutter.net.proto.define.SceneFishInfo value) {
      if (fishInfoBuilder_ == null) {
        if (contentCase_ == 50 &&
            content_ != io.grasscutter.net.proto.define.SceneFishInfo.getDefaultInstance()) {
          content_ = io.grasscutter.net.proto.define.SceneFishInfo.newBuilder((io.grasscutter.net.proto.define.SceneFishInfo) content_)
              .mergeFrom(value).buildPartial();
        } else {
          content_ = value;
        }
        onChanged();
      } else {
        if (contentCase_ == 50) {
          fishInfoBuilder_.mergeFrom(value);
        }
        fishInfoBuilder_.setMessage(value);
      }
      contentCase_ = 50;
      return this;
    }
    /**
     * <code>.SceneFishInfo fish_info = 50;</code>
     */
    public Builder clearFishInfo() {
      if (fishInfoBuilder_ == null) {
        if (contentCase_ == 50) {
          contentCase_ = 0;
          content_ = null;
          onChanged();
        }
      } else {
        if (contentCase_ == 50) {
          contentCase_ = 0;
          content_ = null;
        }
        fishInfoBuilder_.clear();
      }
      return this;
    }
    /**
     * <code>.SceneFishInfo fish_info = 50;</code>
     */
    public io.grasscutter.net.proto.define.SceneFishInfo.Builder getFishInfoBuilder() {
      return getFishInfoFieldBuilder().getBuilder();
    }
    /**
     * <code>.SceneFishInfo fish_info = 50;</code>
     */
    @java.lang.Override
    public io.grasscutter.net.proto.define.SceneFishInfoOrBuilder getFishInfoOrBuilder() {
      if ((contentCase_ == 50) && (fishInfoBuilder_ != null)) {
        return fishInfoBuilder_.getMessageOrBuilder();
      } else {
        if (contentCase_ == 50) {
          return (io.grasscutter.net.proto.define.SceneFishInfo) content_;
        }
        return io.grasscutter.net.proto.define.SceneFishInfo.getDefaultInstance();
      }
    }
    /**
     * <code>.SceneFishInfo fish_info = 50;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        io.grasscutter.net.proto.define.SceneFishInfo, io.grasscutter.net.proto.define.SceneFishInfo.Builder, io.grasscutter.net.proto.define.SceneFishInfoOrBuilder> 
        getFishInfoFieldBuilder() {
      if (fishInfoBuilder_ == null) {
        if (!(contentCase_ == 50)) {
          content_ = io.grasscutter.net.proto.define.SceneFishInfo.getDefaultInstance();
        }
        fishInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            io.grasscutter.net.proto.define.SceneFishInfo, io.grasscutter.net.proto.define.SceneFishInfo.Builder, io.grasscutter.net.proto.define.SceneFishInfoOrBuilder>(
                (io.grasscutter.net.proto.define.SceneFishInfo) content_,
                getParentForChildren(),
                isClean());
        content_ = null;
      }
      contentCase_ = 50;
      onChanged();;
      return fishInfoBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        io.grasscutter.net.proto.define.FishtankFishInfo, io.grasscutter.net.proto.define.FishtankFishInfo.Builder, io.grasscutter.net.proto.define.FishtankFishInfoOrBuilder> fishtankFishInfoBuilder_;
    /**
     * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
     * @return Whether the fishtankFishInfo field is set.
     */
    @java.lang.Override
    public boolean hasFishtankFishInfo() {
      return contentCase_ == 51;
    }
    /**
     * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
     * @return The fishtankFishInfo.
     */
    @java.lang.Override
    public io.grasscutter.net.proto.define.FishtankFishInfo getFishtankFishInfo() {
      if (fishtankFishInfoBuilder_ == null) {
        if (contentCase_ == 51) {
          return (io.grasscutter.net.proto.define.FishtankFishInfo) content_;
        }
        return io.grasscutter.net.proto.define.FishtankFishInfo.getDefaultInstance();
      } else {
        if (contentCase_ == 51) {
          return fishtankFishInfoBuilder_.getMessage();
        }
        return io.grasscutter.net.proto.define.FishtankFishInfo.getDefaultInstance();
      }
    }
    /**
     * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
     */
    public Builder setFishtankFishInfo(io.grasscutter.net.proto.define.FishtankFishInfo value) {
      if (fishtankFishInfoBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        content_ = value;
        onChanged();
      } else {
        fishtankFishInfoBuilder_.setMessage(value);
      }
      contentCase_ = 51;
      return this;
    }
    /**
     * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
     */
    public Builder setFishtankFishInfo(
        io.grasscutter.net.proto.define.FishtankFishInfo.Builder builderForValue) {
      if (fishtankFishInfoBuilder_ == null) {
        content_ = builderForValue.build();
        onChanged();
      } else {
        fishtankFishInfoBuilder_.setMessage(builderForValue.build());
      }
      contentCase_ = 51;
      return this;
    }
    /**
     * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
     */
    public Builder mergeFishtankFishInfo(io.grasscutter.net.proto.define.FishtankFishInfo value) {
      if (fishtankFishInfoBuilder_ == null) {
        if (contentCase_ == 51 &&
            content_ != io.grasscutter.net.proto.define.FishtankFishInfo.getDefaultInstance()) {
          content_ = io.grasscutter.net.proto.define.FishtankFishInfo.newBuilder((io.grasscutter.net.proto.define.FishtankFishInfo) content_)
              .mergeFrom(value).buildPartial();
        } else {
          content_ = value;
        }
        onChanged();
      } else {
        if (contentCase_ == 51) {
          fishtankFishInfoBuilder_.mergeFrom(value);
        }
        fishtankFishInfoBuilder_.setMessage(value);
      }
      contentCase_ = 51;
      return this;
    }
    /**
     * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
     */
    public Builder clearFishtankFishInfo() {
      if (fishtankFishInfoBuilder_ == null) {
        if (contentCase_ == 51) {
          contentCase_ = 0;
          content_ = null;
          onChanged();
        }
      } else {
        if (contentCase_ == 51) {
          contentCase_ = 0;
          content_ = null;
        }
        fishtankFishInfoBuilder_.clear();
      }
      return this;
    }
    /**
     * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
     */
    public io.grasscutter.net.proto.define.FishtankFishInfo.Builder getFishtankFishInfoBuilder() {
      return getFishtankFishInfoFieldBuilder().getBuilder();
    }
    /**
     * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
     */
    @java.lang.Override
    public io.grasscutter.net.proto.define.FishtankFishInfoOrBuilder getFishtankFishInfoOrBuilder() {
      if ((contentCase_ == 51) && (fishtankFishInfoBuilder_ != null)) {
        return fishtankFishInfoBuilder_.getMessageOrBuilder();
      } else {
        if (contentCase_ == 51) {
          return (io.grasscutter.net.proto.define.FishtankFishInfo) content_;
        }
        return io.grasscutter.net.proto.define.FishtankFishInfo.getDefaultInstance();
      }
    }
    /**
     * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        io.grasscutter.net.proto.define.FishtankFishInfo, io.grasscutter.net.proto.define.FishtankFishInfo.Builder, io.grasscutter.net.proto.define.FishtankFishInfoOrBuilder> 
        getFishtankFishInfoFieldBuilder() {
      if (fishtankFishInfoBuilder_ == null) {
        if (!(contentCase_ == 51)) {
          content_ = io.grasscutter.net.proto.define.FishtankFishInfo.getDefaultInstance();
        }
        fishtankFishInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            io.grasscutter.net.proto.define.FishtankFishInfo, io.grasscutter.net.proto.define.FishtankFishInfo.Builder, io.grasscutter.net.proto.define.FishtankFishInfoOrBuilder>(
                (io.grasscutter.net.proto.define.FishtankFishInfo) content_,
                getParentForChildren(),
                isClean());
        content_ = null;
      }
      contentCase_ = 51;
      onChanged();;
      return fishtankFishInfoBuilder_;
    }

    private int levelRouteId_ ;
    /**
     * <code>uint32 level_route_id = 20;</code>
     * @return The levelRouteId.
     */
    @java.lang.Override
    public int getLevelRouteId() {
      return levelRouteId_;
    }
    /**
     * <code>uint32 level_route_id = 20;</code>
     * @param value The levelRouteId to set.
     * @return This builder for chaining.
     */
    public Builder setLevelRouteId(int value) {
      
      levelRouteId_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 level_route_id = 20;</code>
     * @return This builder for chaining.
     */
    public Builder clearLevelRouteId() {
      
      levelRouteId_ = 0;
      onChanged();
      return this;
    }

    private int summonedTag_ ;
    /**
     * <code>uint32 summoned_tag = 9;</code>
     * @return The summonedTag.
     */
    @java.lang.Override
    public int getSummonedTag() {
      return summonedTag_;
    }
    /**
     * <code>uint32 summoned_tag = 9;</code>
     * @param value The summonedTag to set.
     * @return This builder for chaining.
     */
    public Builder setSummonedTag(int value) {
      
      summonedTag_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 summoned_tag = 9;</code>
     * @return This builder for chaining.
     */
    public Builder clearSummonedTag() {
      
      summonedTag_ = 0;
      onChanged();
      return this;
    }

    private int bornType_ = 0;
    /**
     * <code>.MonsterBornType born_type = 12;</code>
     * @return The enum numeric value on the wire for bornType.
     */
    @java.lang.Override public int getBornTypeValue() {
      return bornType_;
    }
    /**
     * <code>.MonsterBornType born_type = 12;</code>
     * @param value The enum numeric value on the wire for bornType to set.
     * @return This builder for chaining.
     */
    public Builder setBornTypeValue(int value) {
      
      bornType_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>.MonsterBornType born_type = 12;</code>
     * @return The bornType.
     */
    @java.lang.Override
    public io.grasscutter.net.proto.define.MonsterBornType getBornType() {
      @SuppressWarnings("deprecation")
      io.grasscutter.net.proto.define.MonsterBornType result = io.grasscutter.net.proto.define.MonsterBornType.valueOf(bornType_);
      return result == null ? io.grasscutter.net.proto.define.MonsterBornType.UNRECOGNIZED : result;
    }
    /**
     * <code>.MonsterBornType born_type = 12;</code>
     * @param value The bornType to set.
     * @return This builder for chaining.
     */
    public Builder setBornType(io.grasscutter.net.proto.define.MonsterBornType value) {
      if (value == null) {
        throw new NullPointerException();
      }
      
      bornType_ = value.getNumber();
      onChanged();
      return this;
    }
    /**
     * <code>.MonsterBornType born_type = 12;</code>
     * @return This builder for chaining.
     */
    public Builder clearBornType() {
      
      bornType_ = 0;
      onChanged();
      return this;
    }

    private int markFlag_ ;
    /**
     * <code>uint32 mark_flag = 14;</code>
     * @return The markFlag.
     */
    @java.lang.Override
    public int getMarkFlag() {
      return markFlag_;
    }
    /**
     * <code>uint32 mark_flag = 14;</code>
     * @param value The markFlag to set.
     * @return This builder for chaining.
     */
    public Builder setMarkFlag(int value) {
      
      markFlag_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 mark_flag = 14;</code>
     * @return This builder for chaining.
     */
    public Builder clearMarkFlag() {
      
      markFlag_ = 0;
      onChanged();
      return this;
    }

    private int titleId_ ;
    /**
     * <code>uint32 title_id = 15;</code>
     * @return The titleId.
     */
    @java.lang.Override
    public int getTitleId() {
      return titleId_;
    }
    /**
     * <code>uint32 title_id = 15;</code>
     * @param value The titleId to set.
     * @return This builder for chaining.
     */
    public Builder setTitleId(int value) {
      
      titleId_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 title_id = 15;</code>
     * @return This builder for chaining.
     */
    public Builder clearTitleId() {
      
      titleId_ = 0;
      onChanged();
      return this;
    }

    private int authorityPeerId_ ;
    /**
     * <code>uint32 authority_peer_id = 5;</code>
     * @return The authorityPeerId.
     */
    @java.lang.Override
    public int getAuthorityPeerId() {
      return authorityPeerId_;
    }
    /**
     * <code>uint32 authority_peer_id = 5;</code>
     * @param value The authorityPeerId to set.
     * @return This builder for chaining.
     */
    public Builder setAuthorityPeerId(int value) {
      
      authorityPeerId_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 authority_peer_id = 5;</code>
     * @return This builder for chaining.
     */
    public Builder clearAuthorityPeerId() {
      
      authorityPeerId_ = 0;
      onChanged();
      return this;
    }

    private int specialNameId_ ;
    /**
     * <code>uint32 special_name_id = 16;</code>
     * @return The specialNameId.
     */
    @java.lang.Override
    public int getSpecialNameId() {
      return specialNameId_;
    }
    /**
     * <code>uint32 special_name_id = 16;</code>
     * @param value The specialNameId to set.
     * @return This builder for chaining.
     */
    public Builder setSpecialNameId(int value) {
      
      specialNameId_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 special_name_id = 16;</code>
     * @return This builder for chaining.
     */
    public Builder clearSpecialNameId() {
      
      specialNameId_ = 0;
      onChanged();
      return this;
    }

    private int poseId_ ;
    /**
     * <code>uint32 pose_id = 11;</code>
     * @return The poseId.
     */
    @java.lang.Override
    public int getPoseId() {
      return poseId_;
    }
    /**
     * <code>uint32 pose_id = 11;</code>
     * @param value The poseId to set.
     * @return This builder for chaining.
     */
    public Builder setPoseId(int value) {
      
      poseId_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 pose_id = 11;</code>
     * @return This builder for chaining.
     */
    public Builder clearPoseId() {
      
      poseId_ = 0;
      onChanged();
      return this;
    }
    @java.lang.Override
    public final Builder setUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.setUnknownFields(unknownFields);
    }

    @java.lang.Override
    public final Builder mergeUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.mergeUnknownFields(unknownFields);
    }


    // @@protoc_insertion_point(builder_scope:SceneMonsterInfo)
  }

  // @@protoc_insertion_point(class_scope:SceneMonsterInfo)
  private static final io.grasscutter.net.proto.define.SceneMonsterInfo DEFAULT_INSTANCE;
  static {
    DEFAULT_INSTANCE = new io.grasscutter.net.proto.define.SceneMonsterInfo();
  }

  public static io.grasscutter.net.proto.define.SceneMonsterInfo getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

  private static final com.google.protobuf.Parser<SceneMonsterInfo>
      PARSER = new com.google.protobuf.AbstractParser<SceneMonsterInfo>() {
    @java.lang.Override
    public SceneMonsterInfo parsePartialFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return new SceneMonsterInfo(input, extensionRegistry);
    }
  };

  public static com.google.protobuf.Parser<SceneMonsterInfo> parser() {
    return PARSER;
  }

  @java.lang.Override
  public com.google.protobuf.Parser<SceneMonsterInfo> getParserForType() {
    return PARSER;
  }

  @java.lang.Override
  public io.grasscutter.net.proto.define.SceneMonsterInfo getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }

}

