content: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: Monster.proto
  
  package emu.grasscutter.net.proto;
  
  public final class MonsterOuterClass {
    private MonsterOuterClass() {}
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistryLite registry) {
    }
  
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistry registry) {
      registerAllExtensions(
          (com.google.protobuf.ExtensionRegistryLite) registry);
    }
    public interface MonsterOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Monster)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>uint32 monsterId = 1;</code>
       * @return The monsterId.
       */
      int getMonsterId();
  
      /**
       * <code>uint32 groupId = 2;</code>
       * @return The groupId.
       */
      int getGroupId();
  
      /**
       * <code>uint32 configId = 3;</code>
       * @return The configId.
       */
      int getConfigId();
  
      /**
       * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
       */
      java.util.List<emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo> 
          getWeaponListList();
      /**
       * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
       */
      emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo getWeaponList(int index);
      /**
       * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
       */
      int getWeaponListCount();
      /**
       * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
       */
      java.util.List<? extends emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfoOrBuilder> 
          getWeaponListOrBuilderList();
      /**
       * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
       */
      emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfoOrBuilder getWeaponListOrBuilder(
          int index);
  
      /**
       * <code>uint32 authorityPeerId = 5;</code>
       * @return The authorityPeerId.
       */
      int getAuthorityPeerId();
  
      /**
       * <code>repeated uint32 affixList = 6;</code>
       * @return A list containing the affixList.
       */
      java.util.List<java.lang.Integer> getAffixListList();
      /**
       * <code>repeated uint32 affixList = 6;</code>
       * @return The count of affixList.
       */
      int getAffixListCount();
      /**
       * <code>repeated uint32 affixList = 6;</code>
       * @param index The index of the element to return.
       * @return The affixList at the given index.
       */
      int getAffixList(int index);
  
      /**
       * <code>bool isElite = 7;</code>
       * @return The isElite.
       */
      boolean getIsElite();
  
      /**
       * <code>uint32 ownerEntityId = 8;</code>
       * @return The ownerEntityId.
       */
      int getOwnerEntityId();
  
      /**
       * <code>uint32 summonedTag = 9;</code>
       * @return The summonedTag.
       */
      int getSummonedTag();
  
      /**
       * <code>map&lt;uint32, uint32&gt; summonTagMap = 10;</code>
       */
      int getSummonTagMapCount();
      /**
       * <code>map&lt;uint32, uint32&gt; summonTagMap = 10;</code>
       */
      boolean containsSummonTagMap(
          int key);
      /**
       * Use {@link #getSummonTagMapMap()} instead.
       */
      @java.lang.Deprecated
      java.util.Map<java.lang.Integer, java.lang.Integer>
      getSummonTagMap();
      /**
       * <code>map&lt;uint32, uint32&gt; summonTagMap = 10;</code>
       */
      java.util.Map<java.lang.Integer, java.lang.Integer>
      getSummonTagMapMap();
      /**
       * <code>map&lt;uint32, uint32&gt; summonTagMap = 10;</code>
       */
  
      int getSummonTagMapOrDefault(
          int key,
          int defaultValue);
      /**
       * <code>map&lt;uint32, uint32&gt; summonTagMap = 10;</code>
       */
  
      int getSummonTagMapOrThrow(
          int key);
  
      /**
       * <code>uint32 poseId = 11;</code>
       * @return The poseId.
       */
      int getPoseId();
  
      /**
       * <code>.MonsterBornType bornType = 12;</code>
       * @return The enum numeric value on the wire for bornType.
       */
      int getBornTypeValue();
      /**
       * <code>.MonsterBornType bornType = 12;</code>
       * @return The bornType.
       */
      emu.grasscutter.net.proto.MonsterBornTypeOuterClass.MonsterBornType getBornType();
  
      /**
       * <code>uint32 blockId = 13;</code>
       * @return The blockId.
       */
      int getBlockId();
  
      /**
       * <code>uint32 markFlag = 14;</code>
       * @return The markFlag.
       */
      int getMarkFlag();
  
      /**
       * <code>uint32 titleId = 15;</code>
       * @return The titleId.
       */
      int getTitleId();
  
      /**
       * <code>uint32 specialNameId = 16;</code>
       * @return The specialNameId.
       */
      int getSpecialNameId();
  
      /**
       * <code>uint32 attackTargetId = 17;</code>
       * @return The attackTargetId.
       */
      int getAttackTargetId();
  
      /**
       * <code>.MonsterRoute monsterRoute = 18;</code>
       * @return Whether the monsterRoute field is set.
       */
      boolean hasMonsterRoute();
      /**
       * <code>.MonsterRoute monsterRoute = 18;</code>
       * @return The monsterRoute.
       */
      emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRoute getMonsterRoute();
      /**
       * <code>.MonsterRoute monsterRoute = 18;</code>
       */
      emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRouteOrBuilder getMonsterRouteOrBuilder();
  
      /**
       * <code>uint32 aiConfigId = 19;</code>
       * @return The aiConfigId.
       */
      int getAiConfigId();
  
      /**
       * <code>uint32 levelRouteId = 20;</code>
       * @return The levelRouteId.
       */
      int getLevelRouteId();
  
      /**
       * <code>uint32 initPoseId = 21;</code>
       * @return The initPoseId.
       */
      int getInitPoseId();
  
      /**
       * <code>bool isLight = 22;</code>
       * @return The isLight.
       */
      boolean getIsLight();
  
      /**
       * <code>uint32 killNum = 23;</code>
       * @return The killNum.
       */
      int getKillNum();
  
      /**
       * <code>.FishInfo fish_info = 50;</code>
       * @return Whether the fishInfo field is set.
       */
      boolean hasFishInfo();
      /**
       * <code>.FishInfo fish_info = 50;</code>
       * @return The fishInfo.
       */
      emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo getFishInfo();
      /**
       * <code>.FishInfo fish_info = 50;</code>
       */
      emu.grasscutter.net.proto.FishInfoOuterClass.FishInfoOrBuilder getFishInfoOrBuilder();
  
      /**
       * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
       * @return Whether the fishtankFishInfo field is set.
       */
      boolean hasFishtankFishInfo();
      /**
       * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
       * @return The fishtankFishInfo.
       */
      emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo getFishtankFishInfo();
      /**
       * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
       */
      emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfoOrBuilder getFishtankFishInfoOrBuilder();
  
      public emu.grasscutter.net.proto.MonsterOuterClass.Monster.LOBCEJBFAABCase getLOBCEJBFAABCase();
    }
    /**
     * Protobuf type {@code Monster}
     */
    public static final class Monster extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Monster)
        MonsterOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Monster.newBuilder() to construct.
      private Monster(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Monster() {
        weaponList_ = java.util.Collections.emptyList();
        affixList_ = emptyIntList();
        bornType_ = 0;
      }
  
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Monster();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Monster(
          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<emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo>();
                  mutable_bitField0_ |= 0x00000001;
                }
                weaponList_.add(
                    input.readMessage(emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo.parser(), extensionRegistry));
                break;
              }
              case 40: {
  
                authorityPeerId_ = input.readUInt32();
                break;
              }
              case 48: {
                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                  affixList_ = newIntList();
                  mutable_bitField0_ |= 0x00000002;
                }
                affixList_.addInt(input.readUInt32());
                break;
              }
              case 50: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000002) != 0) && input.getBytesUntilLimit() > 0) {
                  affixList_ = newIntList();
                  mutable_bitField0_ |= 0x00000002;
                }
                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_ & 0x00000004) != 0)) {
                  summonTagMap_ = com.google.protobuf.MapField.newMapField(
                      SummonTagMapDefaultEntryHolder.defaultEntry);
                  mutable_bitField0_ |= 0x00000004;
                }
                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: {
                emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRoute.Builder subBuilder = null;
                if (monsterRoute_ != null) {
                  subBuilder = monsterRoute_.toBuilder();
                }
                monsterRoute_ = input.readMessage(emu.grasscutter.net.proto.MonsterRouteOuterClass.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: {
  
                initPoseId_ = input.readUInt32();
                break;
              }
              case 176: {
  
                isLight_ = input.readBool();
                break;
              }
              case 184: {
  
                killNum_ = input.readUInt32();
                break;
              }
              case 402: {
                emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo.Builder subBuilder = null;
                if (lOBCEJBFAABCase_ == 50) {
                  subBuilder = ((emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo) lOBCEJBFAAB_).toBuilder();
                }
                lOBCEJBFAAB_ =
                    input.readMessage(emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom((emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo) lOBCEJBFAAB_);
                  lOBCEJBFAAB_ = subBuilder.buildPartial();
                }
                lOBCEJBFAABCase_ = 50;
                break;
              }
              case 410: {
                emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo.Builder subBuilder = null;
                if (lOBCEJBFAABCase_ == 51) {
                  subBuilder = ((emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo) lOBCEJBFAAB_).toBuilder();
                }
                lOBCEJBFAAB_ =
                    input.readMessage(emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom((emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo) lOBCEJBFAAB_);
                  lOBCEJBFAAB_ = subBuilder.buildPartial();
                }
                lOBCEJBFAABCase_ = 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_ & 0x00000002) != 0)) {
            affixList_.makeImmutable(); // C
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return emu.grasscutter.net.proto.MonsterOuterClass.internal_static_Monster_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 emu.grasscutter.net.proto.MonsterOuterClass.internal_static_Monster_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                emu.grasscutter.net.proto.MonsterOuterClass.Monster.class, emu.grasscutter.net.proto.MonsterOuterClass.Monster.Builder.class);
      }
  
      private int lOBCEJBFAABCase_ = 0;
      private java.lang.Object lOBCEJBFAAB_;
      public enum LOBCEJBFAABCase
          implements com.google.protobuf.Internal.EnumLite,
              com.google.protobuf.AbstractMessage.InternalOneOfEnum {
        FISH_INFO(50),
        FISHTANK_FISH_INFO(51),
        LOBCEJBFAAB_NOT_SET(0);
        private final int value;
        private LOBCEJBFAABCase(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 LOBCEJBFAABCase valueOf(int value) {
          return forNumber(value);
        }
  
        public static LOBCEJBFAABCase forNumber(int value) {
          switch (value) {
            case 50: return FISH_INFO;
            case 51: return FISHTANK_FISH_INFO;
            case 0: return LOBCEJBFAAB_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };
  
      public LOBCEJBFAABCase
      getLOBCEJBFAABCase() {
        return LOBCEJBFAABCase.forNumber(
            lOBCEJBFAABCase_);
      }
  
      public static final int MONSTERID_FIELD_NUMBER = 1;
      private int monsterId_;
      /**
       * <code>uint32 monsterId = 1;</code>
       * @return The monsterId.
       */
      @java.lang.Override
      public int getMonsterId() {
        return monsterId_;
      }
  
      public static final int GROUPID_FIELD_NUMBER = 2;
      private int groupId_;
      /**
       * <code>uint32 groupId = 2;</code>
       * @return The groupId.
       */
      @java.lang.Override
      public int getGroupId() {
        return groupId_;
      }
  
      public static final int CONFIGID_FIELD_NUMBER = 3;
      private int configId_;
      /**
       * <code>uint32 configId = 3;</code>
       * @return The configId.
       */
      @java.lang.Override
      public int getConfigId() {
        return configId_;
      }
  
      public static final int WEAPONLIST_FIELD_NUMBER = 4;
      private java.util.List<emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo> weaponList_;
      /**
       * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
       */
      @java.lang.Override
      public java.util.List<emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo> getWeaponListList() {
        return weaponList_;
      }
      /**
       * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
       */
      @java.lang.Override
      public java.util.List<? extends emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfoOrBuilder> 
          getWeaponListOrBuilderList() {
        return weaponList_;
      }
      /**
       * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
       */
      @java.lang.Override
      public int getWeaponListCount() {
        return weaponList_.size();
      }
      /**
       * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo getWeaponList(int index) {
        return weaponList_.get(index);
      }
      /**
       * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfoOrBuilder getWeaponListOrBuilder(
          int index) {
        return weaponList_.get(index);
      }
  
      public static final int AUTHORITYPEERID_FIELD_NUMBER = 5;
      private int authorityPeerId_;
      /**
       * <code>uint32 authorityPeerId = 5;</code>
       * @return The authorityPeerId.
       */
      @java.lang.Override
      public int getAuthorityPeerId() {
        return authorityPeerId_;
      }
  
      public static final int AFFIXLIST_FIELD_NUMBER = 6;
      private com.google.protobuf.Internal.IntList affixList_;
      /**
       * <code>repeated uint32 affixList = 6;</code>
       * @return A list containing the affixList.
       */
      @java.lang.Override
      public java.util.List<java.lang.Integer>
          getAffixListList() {
        return affixList_;
      }
      /**
       * <code>repeated uint32 affixList = 6;</code>
       * @return The count of affixList.
       */
      public int getAffixListCount() {
        return affixList_.size();
      }
      /**
       * <code>repeated uint32 affixList = 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 ISELITE_FIELD_NUMBER = 7;
      private boolean isElite_;
      /**
       * <code>bool isElite = 7;</code>
       * @return The isElite.
       */
      @java.lang.Override
      public boolean getIsElite() {
        return isElite_;
      }
  
      public static final int OWNERENTITYID_FIELD_NUMBER = 8;
      private int ownerEntityId_;
      /**
       * <code>uint32 ownerEntityId = 8;</code>
       * @return The ownerEntityId.
       */
      @java.lang.Override
      public int getOwnerEntityId() {
        return ownerEntityId_;
      }
  
      public static final int SUMMONEDTAG_FIELD_NUMBER = 9;
      private int summonedTag_;
      /**
       * <code>uint32 summonedTag = 9;</code>
       * @return The summonedTag.
       */
      @java.lang.Override
      public int getSummonedTag() {
        return summonedTag_;
      }
  
      public static final int SUMMONTAGMAP_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(
                    emu.grasscutter.net.proto.MonsterOuterClass.internal_static_Monster_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; summonTagMap = 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; summonTagMap = 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; summonTagMap = 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; summonTagMap = 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 POSEID_FIELD_NUMBER = 11;
      private int poseId_;
      /**
       * <code>uint32 poseId = 11;</code>
       * @return The poseId.
       */
      @java.lang.Override
      public int getPoseId() {
        return poseId_;
      }
  
      public static final int BORNTYPE_FIELD_NUMBER = 12;
      private int bornType_;
      /**
       * <code>.MonsterBornType bornType = 12;</code>
       * @return The enum numeric value on the wire for bornType.
       */
      @java.lang.Override public int getBornTypeValue() {
        return bornType_;
      }
      /**
       * <code>.MonsterBornType bornType = 12;</code>
       * @return The bornType.
       */
      @java.lang.Override public emu.grasscutter.net.proto.MonsterBornTypeOuterClass.MonsterBornType getBornType() {
        @SuppressWarnings("deprecation")
        emu.grasscutter.net.proto.MonsterBornTypeOuterClass.MonsterBornType result = emu.grasscutter.net.proto.MonsterBornTypeOuterClass.MonsterBornType.valueOf(bornType_);
        return result == null ? emu.grasscutter.net.proto.MonsterBornTypeOuterClass.MonsterBornType.UNRECOGNIZED : result;
      }
  
      public static final int BLOCKID_FIELD_NUMBER = 13;
      private int blockId_;
      /**
       * <code>uint32 blockId = 13;</code>
       * @return The blockId.
       */
      @java.lang.Override
      public int getBlockId() {
        return blockId_;
      }
  
      public static final int MARKFLAG_FIELD_NUMBER = 14;
      private int markFlag_;
      /**
       * <code>uint32 markFlag = 14;</code>
       * @return The markFlag.
       */
      @java.lang.Override
      public int getMarkFlag() {
        return markFlag_;
      }
  
      public static final int TITLEID_FIELD_NUMBER = 15;
      private int titleId_;
      /**
       * <code>uint32 titleId = 15;</code>
       * @return The titleId.
       */
      @java.lang.Override
      public int getTitleId() {
        return titleId_;
      }
  
      public static final int SPECIALNAMEID_FIELD_NUMBER = 16;
      private int specialNameId_;
      /**
       * <code>uint32 specialNameId = 16;</code>
       * @return The specialNameId.
       */
      @java.lang.Override
      public int getSpecialNameId() {
        return specialNameId_;
      }
  
      public static final int ATTACKTARGETID_FIELD_NUMBER = 17;
      private int attackTargetId_;
      /**
       * <code>uint32 attackTargetId = 17;</code>
       * @return The attackTargetId.
       */
      @java.lang.Override
      public int getAttackTargetId() {
        return attackTargetId_;
      }
  
      public static final int MONSTERROUTE_FIELD_NUMBER = 18;
      private emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRoute monsterRoute_;
      /**
       * <code>.MonsterRoute monsterRoute = 18;</code>
       * @return Whether the monsterRoute field is set.
       */
      @java.lang.Override
      public boolean hasMonsterRoute() {
        return monsterRoute_ != null;
      }
      /**
       * <code>.MonsterRoute monsterRoute = 18;</code>
       * @return The monsterRoute.
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRoute getMonsterRoute() {
        return monsterRoute_ == null ? emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRoute.getDefaultInstance() : monsterRoute_;
      }
      /**
       * <code>.MonsterRoute monsterRoute = 18;</code>
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRouteOrBuilder getMonsterRouteOrBuilder() {
        return getMonsterRoute();
      }
  
      public static final int AICONFIGID_FIELD_NUMBER = 19;
      private int aiConfigId_;
      /**
       * <code>uint32 aiConfigId = 19;</code>
       * @return The aiConfigId.
       */
      @java.lang.Override
      public int getAiConfigId() {
        return aiConfigId_;
      }
  
      public static final int LEVELROUTEID_FIELD_NUMBER = 20;
      private int levelRouteId_;
      /**
       * <code>uint32 levelRouteId = 20;</code>
       * @return The levelRouteId.
       */
      @java.lang.Override
      public int getLevelRouteId() {
        return levelRouteId_;
      }
  
      public static final int INITPOSEID_FIELD_NUMBER = 21;
      private int initPoseId_;
      /**
       * <code>uint32 initPoseId = 21;</code>
       * @return The initPoseId.
       */
      @java.lang.Override
      public int getInitPoseId() {
        return initPoseId_;
      }
  
      public static final int ISLIGHT_FIELD_NUMBER = 22;
      private boolean isLight_;
      /**
       * <code>bool isLight = 22;</code>
       * @return The isLight.
       */
      @java.lang.Override
      public boolean getIsLight() {
        return isLight_;
      }
  
      public static final int KILLNUM_FIELD_NUMBER = 23;
      private int killNum_;
      /**
       * <code>uint32 killNum = 23;</code>
       * @return The killNum.
       */
      @java.lang.Override
      public int getKillNum() {
        return killNum_;
      }
  
      public static final int FISH_INFO_FIELD_NUMBER = 50;
      /**
       * <code>.FishInfo fish_info = 50;</code>
       * @return Whether the fishInfo field is set.
       */
      @java.lang.Override
      public boolean hasFishInfo() {
        return lOBCEJBFAABCase_ == 50;
      }
      /**
       * <code>.FishInfo fish_info = 50;</code>
       * @return The fishInfo.
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo getFishInfo() {
        if (lOBCEJBFAABCase_ == 50) {
           return (emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo) lOBCEJBFAAB_;
        }
        return emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo.getDefaultInstance();
      }
      /**
       * <code>.FishInfo fish_info = 50;</code>
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.FishInfoOuterClass.FishInfoOrBuilder getFishInfoOrBuilder() {
        if (lOBCEJBFAABCase_ == 50) {
           return (emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo) lOBCEJBFAAB_;
        }
        return emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo.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 lOBCEJBFAABCase_ == 51;
      }
      /**
       * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
       * @return The fishtankFishInfo.
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo getFishtankFishInfo() {
        if (lOBCEJBFAABCase_ == 51) {
           return (emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo) lOBCEJBFAAB_;
        }
        return emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo.getDefaultInstance();
      }
      /**
       * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfoOrBuilder getFishtankFishInfoOrBuilder() {
        if (lOBCEJBFAABCase_ == 51) {
           return (emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo) lOBCEJBFAAB_;
        }
        return emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo.getDefaultInstance();
      }
  
      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_ != emu.grasscutter.net.proto.MonsterBornTypeOuterClass.MonsterBornType.MONSTER_BORN_TYPE_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 (initPoseId_ != 0) {
          output.writeUInt32(21, initPoseId_);
        }
        if (isLight_ != false) {
          output.writeBool(22, isLight_);
        }
        if (killNum_ != 0) {
          output.writeUInt32(23, killNum_);
        }
        if (lOBCEJBFAABCase_ == 50) {
          output.writeMessage(50, (emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo) lOBCEJBFAAB_);
        }
        if (lOBCEJBFAABCase_ == 51) {
          output.writeMessage(51, (emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo) lOBCEJBFAAB_);
        }
        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_ != emu.grasscutter.net.proto.MonsterBornTypeOuterClass.MonsterBornType.MONSTER_BORN_TYPE_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 (initPoseId_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(21, initPoseId_);
        }
        if (isLight_ != false) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(22, isLight_);
        }
        if (killNum_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(23, killNum_);
        }
        if (lOBCEJBFAABCase_ == 50) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(50, (emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo) lOBCEJBFAAB_);
        }
        if (lOBCEJBFAABCase_ == 51) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(51, (emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo) lOBCEJBFAAB_);
        }
        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 emu.grasscutter.net.proto.MonsterOuterClass.Monster)) {
          return super.equals(obj);
        }
        emu.grasscutter.net.proto.MonsterOuterClass.Monster other = (emu.grasscutter.net.proto.MonsterOuterClass.Monster) obj;
  
        if (getMonsterId()
            != other.getMonsterId()) return false;
        if (getGroupId()
            != other.getGroupId()) return false;
        if (getConfigId()
            != other.getConfigId()) return false;
        if (!getWeaponListList()
            .equals(other.getWeaponListList())) return false;
        if (getAuthorityPeerId()
            != other.getAuthorityPeerId()) return false;
        if (!getAffixListList()
            .equals(other.getAffixListList())) return false;
        if (getIsElite()
            != other.getIsElite()) return false;
        if (getOwnerEntityId()
            != other.getOwnerEntityId()) return false;
        if (getSummonedTag()
            != other.getSummonedTag()) return false;
        if (!internalGetSummonTagMap().equals(
            other.internalGetSummonTagMap())) return false;
        if (getPoseId()
            != other.getPoseId()) return false;
        if (bornType_ != other.bornType_) return false;
        if (getBlockId()
            != other.getBlockId()) return false;
        if (getMarkFlag()
            != other.getMarkFlag()) return false;
        if (getTitleId()
            != other.getTitleId()) return false;
        if (getSpecialNameId()
            != other.getSpecialNameId()) return false;
        if (getAttackTargetId()
            != other.getAttackTargetId()) return false;
        if (hasMonsterRoute() != other.hasMonsterRoute()) return false;
        if (hasMonsterRoute()) {
          if (!getMonsterRoute()
              .equals(other.getMonsterRoute())) return false;
        }
        if (getAiConfigId()
            != other.getAiConfigId()) return false;
        if (getLevelRouteId()
            != other.getLevelRouteId()) return false;
        if (getInitPoseId()
            != other.getInitPoseId()) return false;
        if (getIsLight()
            != other.getIsLight()) return false;
        if (getKillNum()
            != other.getKillNum()) return false;
        if (!getLOBCEJBFAABCase().equals(other.getLOBCEJBFAABCase())) return false;
        switch (lOBCEJBFAABCase_) {
          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();
        hash = (37 * hash) + MONSTERID_FIELD_NUMBER;
        hash = (53 * hash) + getMonsterId();
        hash = (37 * hash) + GROUPID_FIELD_NUMBER;
        hash = (53 * hash) + getGroupId();
        hash = (37 * hash) + CONFIGID_FIELD_NUMBER;
        hash = (53 * hash) + getConfigId();
        if (getWeaponListCount() > 0) {
          hash = (37 * hash) + WEAPONLIST_FIELD_NUMBER;
          hash = (53 * hash) + getWeaponListList().hashCode();
        }
        hash = (37 * hash) + AUTHORITYPEERID_FIELD_NUMBER;
        hash = (53 * hash) + getAuthorityPeerId();
        if (getAffixListCount() > 0) {
          hash = (37 * hash) + AFFIXLIST_FIELD_NUMBER;
          hash = (53 * hash) + getAffixListList().hashCode();
        }
        hash = (37 * hash) + ISELITE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsElite());
        hash = (37 * hash) + OWNERENTITYID_FIELD_NUMBER;
        hash = (53 * hash) + getOwnerEntityId();
        hash = (37 * hash) + SUMMONEDTAG_FIELD_NUMBER;
        hash = (53 * hash) + getSummonedTag();
        if (!internalGetSummonTagMap().getMap().isEmpty()) {
          hash = (37 * hash) + SUMMONTAGMAP_FIELD_NUMBER;
          hash = (53 * hash) + internalGetSummonTagMap().hashCode();
        }
        hash = (37 * hash) + POSEID_FIELD_NUMBER;
        hash = (53 * hash) + getPoseId();
        hash = (37 * hash) + BORNTYPE_FIELD_NUMBER;
        hash = (53 * hash) + bornType_;
        hash = (37 * hash) + BLOCKID_FIELD_NUMBER;
        hash = (53 * hash) + getBlockId();
        hash = (37 * hash) + MARKFLAG_FIELD_NUMBER;
        hash = (53 * hash) + getMarkFlag();
        hash = (37 * hash) + TITLEID_FIELD_NUMBER;
        hash = (53 * hash) + getTitleId();
        hash = (37 * hash) + SPECIALNAMEID_FIELD_NUMBER;
        hash = (53 * hash) + getSpecialNameId();
        hash = (37 * hash) + ATTACKTARGETID_FIELD_NUMBER;
        hash = (53 * hash) + getAttackTargetId();
        if (hasMonsterRoute()) {
          hash = (37 * hash) + MONSTERROUTE_FIELD_NUMBER;
          hash = (53 * hash) + getMonsterRoute().hashCode();
        }
        hash = (37 * hash) + AICONFIGID_FIELD_NUMBER;
        hash = (53 * hash) + getAiConfigId();
        hash = (37 * hash) + LEVELROUTEID_FIELD_NUMBER;
        hash = (53 * hash) + getLevelRouteId();
        hash = (37 * hash) + INITPOSEID_FIELD_NUMBER;
        hash = (53 * hash) + getInitPoseId();
        hash = (37 * hash) + ISLIGHT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsLight());
        hash = (37 * hash) + KILLNUM_FIELD_NUMBER;
        hash = (53 * hash) + getKillNum();
        switch (lOBCEJBFAABCase_) {
          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 emu.grasscutter.net.proto.MonsterOuterClass.Monster parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static emu.grasscutter.net.proto.MonsterOuterClass.Monster parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static emu.grasscutter.net.proto.MonsterOuterClass.Monster parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static emu.grasscutter.net.proto.MonsterOuterClass.Monster parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static emu.grasscutter.net.proto.MonsterOuterClass.Monster parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static emu.grasscutter.net.proto.MonsterOuterClass.Monster parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static emu.grasscutter.net.proto.MonsterOuterClass.Monster parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static emu.grasscutter.net.proto.MonsterOuterClass.Monster 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 emu.grasscutter.net.proto.MonsterOuterClass.Monster parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static emu.grasscutter.net.proto.MonsterOuterClass.Monster 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 emu.grasscutter.net.proto.MonsterOuterClass.Monster parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static emu.grasscutter.net.proto.MonsterOuterClass.Monster 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(emu.grasscutter.net.proto.MonsterOuterClass.Monster 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 Monster}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Monster)
          emu.grasscutter.net.proto.MonsterOuterClass.MonsterOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return emu.grasscutter.net.proto.MonsterOuterClass.internal_static_Monster_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 emu.grasscutter.net.proto.MonsterOuterClass.internal_static_Monster_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  emu.grasscutter.net.proto.MonsterOuterClass.Monster.class, emu.grasscutter.net.proto.MonsterOuterClass.Monster.Builder.class);
        }
  
        // Construct using emu.grasscutter.net.proto.MonsterOuterClass.Monster.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();
          monsterId_ = 0;
  
          groupId_ = 0;
  
          configId_ = 0;
  
          if (weaponListBuilder_ == null) {
            weaponList_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            weaponListBuilder_.clear();
          }
          authorityPeerId_ = 0;
  
          affixList_ = emptyIntList();
          bitField0_ = (bitField0_ & ~0x00000002);
          isElite_ = false;
  
          ownerEntityId_ = 0;
  
          summonedTag_ = 0;
  
          internalGetMutableSummonTagMap().clear();
          poseId_ = 0;
  
          bornType_ = 0;
  
          blockId_ = 0;
  
          markFlag_ = 0;
  
          titleId_ = 0;
  
          specialNameId_ = 0;
  
          attackTargetId_ = 0;
  
          if (monsterRouteBuilder_ == null) {
            monsterRoute_ = null;
          } else {
            monsterRoute_ = null;
            monsterRouteBuilder_ = null;
          }
          aiConfigId_ = 0;
  
          levelRouteId_ = 0;
  
          initPoseId_ = 0;
  
          isLight_ = false;
  
          killNum_ = 0;
  
          lOBCEJBFAABCase_ = 0;
          lOBCEJBFAAB_ = null;
          return this;
        }
  
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return emu.grasscutter.net.proto.MonsterOuterClass.internal_static_Monster_descriptor;
        }
  
        @java.lang.Override
        public emu.grasscutter.net.proto.MonsterOuterClass.Monster getDefaultInstanceForType() {
          return emu.grasscutter.net.proto.MonsterOuterClass.Monster.getDefaultInstance();
        }
  
        @java.lang.Override
        public emu.grasscutter.net.proto.MonsterOuterClass.Monster build() {
          emu.grasscutter.net.proto.MonsterOuterClass.Monster result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public emu.grasscutter.net.proto.MonsterOuterClass.Monster buildPartial() {
          emu.grasscutter.net.proto.MonsterOuterClass.Monster result = new emu.grasscutter.net.proto.MonsterOuterClass.Monster(this);
          int from_bitField0_ = bitField0_;
          result.monsterId_ = monsterId_;
          result.groupId_ = groupId_;
          result.configId_ = configId_;
          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.authorityPeerId_ = authorityPeerId_;
          if (((bitField0_ & 0x00000002) != 0)) {
            affixList_.makeImmutable();
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.affixList_ = affixList_;
          result.isElite_ = isElite_;
          result.ownerEntityId_ = ownerEntityId_;
          result.summonedTag_ = summonedTag_;
          result.summonTagMap_ = internalGetSummonTagMap();
          result.summonTagMap_.makeImmutable();
          result.poseId_ = poseId_;
          result.bornType_ = bornType_;
          result.blockId_ = blockId_;
          result.markFlag_ = markFlag_;
          result.titleId_ = titleId_;
          result.specialNameId_ = specialNameId_;
          result.attackTargetId_ = attackTargetId_;
          if (monsterRouteBuilder_ == null) {
            result.monsterRoute_ = monsterRoute_;
          } else {
            result.monsterRoute_ = monsterRouteBuilder_.build();
          }
          result.aiConfigId_ = aiConfigId_;
          result.levelRouteId_ = levelRouteId_;
          result.initPoseId_ = initPoseId_;
          result.isLight_ = isLight_;
          result.killNum_ = killNum_;
          if (lOBCEJBFAABCase_ == 50) {
            if (fishInfoBuilder_ == null) {
              result.lOBCEJBFAAB_ = lOBCEJBFAAB_;
            } else {
              result.lOBCEJBFAAB_ = fishInfoBuilder_.build();
            }
          }
          if (lOBCEJBFAABCase_ == 51) {
            if (fishtankFishInfoBuilder_ == null) {
              result.lOBCEJBFAAB_ = lOBCEJBFAAB_;
            } else {
              result.lOBCEJBFAAB_ = fishtankFishInfoBuilder_.build();
            }
          }
          result.lOBCEJBFAABCase_ = lOBCEJBFAABCase_;
          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 emu.grasscutter.net.proto.MonsterOuterClass.Monster) {
            return mergeFrom((emu.grasscutter.net.proto.MonsterOuterClass.Monster)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(emu.grasscutter.net.proto.MonsterOuterClass.Monster other) {
          if (other == emu.grasscutter.net.proto.MonsterOuterClass.Monster.getDefaultInstance()) return this;
          if (other.getMonsterId() != 0) {
            setMonsterId(other.getMonsterId());
          }
          if (other.getGroupId() != 0) {
            setGroupId(other.getGroupId());
          }
          if (other.getConfigId() != 0) {
            setConfigId(other.getConfigId());
          }
          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_);
              }
            }
          }
          if (other.getAuthorityPeerId() != 0) {
            setAuthorityPeerId(other.getAuthorityPeerId());
          }
          if (!other.affixList_.isEmpty()) {
            if (affixList_.isEmpty()) {
              affixList_ = other.affixList_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureAffixListIsMutable();
              affixList_.addAll(other.affixList_);
            }
            onChanged();
          }
          if (other.getIsElite() != false) {
            setIsElite(other.getIsElite());
          }
          if (other.getOwnerEntityId() != 0) {
            setOwnerEntityId(other.getOwnerEntityId());
          }
          if (other.getSummonedTag() != 0) {
            setSummonedTag(other.getSummonedTag());
          }
          internalGetMutableSummonTagMap().mergeFrom(
              other.internalGetSummonTagMap());
          if (other.getPoseId() != 0) {
            setPoseId(other.getPoseId());
          }
          if (other.bornType_ != 0) {
            setBornTypeValue(other.getBornTypeValue());
          }
          if (other.getBlockId() != 0) {
            setBlockId(other.getBlockId());
          }
          if (other.getMarkFlag() != 0) {
            setMarkFlag(other.getMarkFlag());
          }
          if (other.getTitleId() != 0) {
            setTitleId(other.getTitleId());
          }
          if (other.getSpecialNameId() != 0) {
            setSpecialNameId(other.getSpecialNameId());
          }
          if (other.getAttackTargetId() != 0) {
            setAttackTargetId(other.getAttackTargetId());
          }
          if (other.hasMonsterRoute()) {
            mergeMonsterRoute(other.getMonsterRoute());
          }
          if (other.getAiConfigId() != 0) {
            setAiConfigId(other.getAiConfigId());
          }
          if (other.getLevelRouteId() != 0) {
            setLevelRouteId(other.getLevelRouteId());
          }
          if (other.getInitPoseId() != 0) {
            setInitPoseId(other.getInitPoseId());
          }
          if (other.getIsLight() != false) {
            setIsLight(other.getIsLight());
          }
          if (other.getKillNum() != 0) {
            setKillNum(other.getKillNum());
          }
          switch (other.getLOBCEJBFAABCase()) {
            case FISH_INFO: {
              mergeFishInfo(other.getFishInfo());
              break;
            }
            case FISHTANK_FISH_INFO: {
              mergeFishtankFishInfo(other.getFishtankFishInfo());
              break;
            }
            case LOBCEJBFAAB_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 {
          emu.grasscutter.net.proto.MonsterOuterClass.Monster parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (emu.grasscutter.net.proto.MonsterOuterClass.Monster) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int lOBCEJBFAABCase_ = 0;
        private java.lang.Object lOBCEJBFAAB_;
        public LOBCEJBFAABCase
            getLOBCEJBFAABCase() {
          return LOBCEJBFAABCase.forNumber(
              lOBCEJBFAABCase_);
        }
  
        public Builder clearLOBCEJBFAAB() {
          lOBCEJBFAABCase_ = 0;
          lOBCEJBFAAB_ = null;
          onChanged();
          return this;
        }
  
        private int bitField0_;
  
        private int monsterId_ ;
        /**
         * <code>uint32 monsterId = 1;</code>
         * @return The monsterId.
         */
        @java.lang.Override
        public int getMonsterId() {
          return monsterId_;
        }
        /**
         * <code>uint32 monsterId = 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 monsterId = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearMonsterId() {
          
          monsterId_ = 0;
          onChanged();
          return this;
        }
  
        private int groupId_ ;
        /**
         * <code>uint32 groupId = 2;</code>
         * @return The groupId.
         */
        @java.lang.Override
        public int getGroupId() {
          return groupId_;
        }
        /**
         * <code>uint32 groupId = 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 groupId = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearGroupId() {
          
          groupId_ = 0;
          onChanged();
          return this;
        }
  
        private int configId_ ;
        /**
         * <code>uint32 configId = 3;</code>
         * @return The configId.
         */
        @java.lang.Override
        public int getConfigId() {
          return configId_;
        }
        /**
         * <code>uint32 configId = 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 configId = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearConfigId() {
          
          configId_ = 0;
          onChanged();
          return this;
        }
  
        private java.util.List<emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo> weaponList_ =
          java.util.Collections.emptyList();
        private void ensureWeaponListIsMutable() {
          if (!((bitField0_ & 0x00000001) != 0)) {
            weaponList_ = new java.util.ArrayList<emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo>(weaponList_);
            bitField0_ |= 0x00000001;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo, emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo.Builder, emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfoOrBuilder> weaponListBuilder_;
  
        /**
         * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
         */
        public java.util.List<emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo> getWeaponListList() {
          if (weaponListBuilder_ == null) {
            return java.util.Collections.unmodifiableList(weaponList_);
          } else {
            return weaponListBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
         */
        public int getWeaponListCount() {
          if (weaponListBuilder_ == null) {
            return weaponList_.size();
          } else {
            return weaponListBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
         */
        public emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo getWeaponList(int index) {
          if (weaponListBuilder_ == null) {
            return weaponList_.get(index);
          } else {
            return weaponListBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
         */
        public Builder setWeaponList(
            int index, emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.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 weaponList = 4;</code>
         */
        public Builder setWeaponList(
            int index, emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo.Builder builderForValue) {
          if (weaponListBuilder_ == null) {
            ensureWeaponListIsMutable();
            weaponList_.set(index, builderForValue.build());
            onChanged();
          } else {
            weaponListBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
         */
        public Builder addWeaponList(emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.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 weaponList = 4;</code>
         */
        public Builder addWeaponList(
            int index, emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.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 weaponList = 4;</code>
         */
        public Builder addWeaponList(
            emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo.Builder builderForValue) {
          if (weaponListBuilder_ == null) {
            ensureWeaponListIsMutable();
            weaponList_.add(builderForValue.build());
            onChanged();
          } else {
            weaponListBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
         */
        public Builder addWeaponList(
            int index, emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo.Builder builderForValue) {
          if (weaponListBuilder_ == null) {
            ensureWeaponListIsMutable();
            weaponList_.add(index, builderForValue.build());
            onChanged();
          } else {
            weaponListBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
         */
        public Builder addAllWeaponList(
            java.lang.Iterable<? extends emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo> values) {
          if (weaponListBuilder_ == null) {
            ensureWeaponListIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, weaponList_);
            onChanged();
          } else {
            weaponListBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .SceneWeaponInfo weaponList = 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 weaponList = 4;</code>
         */
        public Builder removeWeaponList(int index) {
          if (weaponListBuilder_ == null) {
            ensureWeaponListIsMutable();
            weaponList_.remove(index);
            onChanged();
          } else {
            weaponListBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
         */
        public emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo.Builder getWeaponListBuilder(
            int index) {
          return getWeaponListFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
         */
        public emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfoOrBuilder getWeaponListOrBuilder(
            int index) {
          if (weaponListBuilder_ == null) {
            return weaponList_.get(index);  } else {
            return weaponListBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
         */
        public java.util.List<? extends emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfoOrBuilder> 
             getWeaponListOrBuilderList() {
          if (weaponListBuilder_ != null) {
            return weaponListBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(weaponList_);
          }
        }
        /**
         * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
         */
        public emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo.Builder addWeaponListBuilder() {
          return getWeaponListFieldBuilder().addBuilder(
              emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo.getDefaultInstance());
        }
        /**
         * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
         */
        public emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo.Builder addWeaponListBuilder(
            int index) {
          return getWeaponListFieldBuilder().addBuilder(
              index, emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo.getDefaultInstance());
        }
        /**
         * <code>repeated .SceneWeaponInfo weaponList = 4;</code>
         */
        public java.util.List<emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo.Builder> 
             getWeaponListBuilderList() {
          return getWeaponListFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo, emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo.Builder, emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfoOrBuilder> 
            getWeaponListFieldBuilder() {
          if (weaponListBuilder_ == null) {
            weaponListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo, emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfo.Builder, emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.SceneWeaponInfoOrBuilder>(
                    weaponList_,
                    ((bitField0_ & 0x00000001) != 0),
                    getParentForChildren(),
                    isClean());
            weaponList_ = null;
          }
          return weaponListBuilder_;
        }
  
        private int authorityPeerId_ ;
        /**
         * <code>uint32 authorityPeerId = 5;</code>
         * @return The authorityPeerId.
         */
        @java.lang.Override
        public int getAuthorityPeerId() {
          return authorityPeerId_;
        }
        /**
         * <code>uint32 authorityPeerId = 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 authorityPeerId = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearAuthorityPeerId() {
          
          authorityPeerId_ = 0;
          onChanged();
          return this;
        }
  
        private com.google.protobuf.Internal.IntList affixList_ = emptyIntList();
        private void ensureAffixListIsMutable() {
          if (!((bitField0_ & 0x00000002) != 0)) {
            affixList_ = mutableCopy(affixList_);
            bitField0_ |= 0x00000002;
           }
        }
        /**
         * <code>repeated uint32 affixList = 6;</code>
         * @return A list containing the affixList.
         */
        public java.util.List<java.lang.Integer>
            getAffixListList() {
          return ((bitField0_ & 0x00000002) != 0) ?
                   java.util.Collections.unmodifiableList(affixList_) : affixList_;
        }
        /**
         * <code>repeated uint32 affixList = 6;</code>
         * @return The count of affixList.
         */
        public int getAffixListCount() {
          return affixList_.size();
        }
        /**
         * <code>repeated uint32 affixList = 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 affixList = 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 affixList = 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 affixList = 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 affixList = 6;</code>
         * @return This builder for chaining.
         */
        public Builder clearAffixList() {
          affixList_ = emptyIntList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
  
        private boolean isElite_ ;
        /**
         * <code>bool isElite = 7;</code>
         * @return The isElite.
         */
        @java.lang.Override
        public boolean getIsElite() {
          return isElite_;
        }
        /**
         * <code>bool isElite = 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 isElite = 7;</code>
         * @return This builder for chaining.
         */
        public Builder clearIsElite() {
          
          isElite_ = false;
          onChanged();
          return this;
        }
  
        private int ownerEntityId_ ;
        /**
         * <code>uint32 ownerEntityId = 8;</code>
         * @return The ownerEntityId.
         */
        @java.lang.Override
        public int getOwnerEntityId() {
          return ownerEntityId_;
        }
        /**
         * <code>uint32 ownerEntityId = 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 ownerEntityId = 8;</code>
         * @return This builder for chaining.
         */
        public Builder clearOwnerEntityId() {
          
          ownerEntityId_ = 0;
          onChanged();
          return this;
        }
  
        private int summonedTag_ ;
        /**
         * <code>uint32 summonedTag = 9;</code>
         * @return The summonedTag.
         */
        @java.lang.Override
        public int getSummonedTag() {
          return summonedTag_;
        }
        /**
         * <code>uint32 summonedTag = 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 summonedTag = 9;</code>
         * @return This builder for chaining.
         */
        public Builder clearSummonedTag() {
          
          summonedTag_ = 0;
          onChanged();
          return this;
        }
  
        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; summonTagMap = 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; summonTagMap = 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; summonTagMap = 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; summonTagMap = 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; summonTagMap = 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; summonTagMap = 10;</code>
         */
        public Builder putSummonTagMap(
            int key,
            int value) {
          
          
          internalGetMutableSummonTagMap().getMutableMap()
              .put(key, value);
          return this;
        }
        /**
         * <code>map&lt;uint32, uint32&gt; summonTagMap = 10;</code>
         */
  
        public Builder putAllSummonTagMap(
            java.util.Map<java.lang.Integer, java.lang.Integer> values) {
          internalGetMutableSummonTagMap().getMutableMap()
              .putAll(values);
          return this;
        }
  
        private int poseId_ ;
        /**
         * <code>uint32 poseId = 11;</code>
         * @return The poseId.
         */
        @java.lang.Override
        public int getPoseId() {
          return poseId_;
        }
        /**
         * <code>uint32 poseId = 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 poseId = 11;</code>
         * @return This builder for chaining.
         */
        public Builder clearPoseId() {
          
          poseId_ = 0;
          onChanged();
          return this;
        }
  
        private int bornType_ = 0;
        /**
         * <code>.MonsterBornType bornType = 12;</code>
         * @return The enum numeric value on the wire for bornType.
         */
        @java.lang.Override public int getBornTypeValue() {
          return bornType_;
        }
        /**
         * <code>.MonsterBornType bornType = 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 bornType = 12;</code>
         * @return The bornType.
         */
        @java.lang.Override
        public emu.grasscutter.net.proto.MonsterBornTypeOuterClass.MonsterBornType getBornType() {
          @SuppressWarnings("deprecation")
          emu.grasscutter.net.proto.MonsterBornTypeOuterClass.MonsterBornType result = emu.grasscutter.net.proto.MonsterBornTypeOuterClass.MonsterBornType.valueOf(bornType_);
          return result == null ? emu.grasscutter.net.proto.MonsterBornTypeOuterClass.MonsterBornType.UNRECOGNIZED : result;
        }
        /**
         * <code>.MonsterBornType bornType = 12;</code>
         * @param value The bornType to set.
         * @return This builder for chaining.
         */
        public Builder setBornType(emu.grasscutter.net.proto.MonsterBornTypeOuterClass.MonsterBornType value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          bornType_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.MonsterBornType bornType = 12;</code>
         * @return This builder for chaining.
         */
        public Builder clearBornType() {
          
          bornType_ = 0;
          onChanged();
          return this;
        }
  
        private int blockId_ ;
        /**
         * <code>uint32 blockId = 13;</code>
         * @return The blockId.
         */
        @java.lang.Override
        public int getBlockId() {
          return blockId_;
        }
        /**
         * <code>uint32 blockId = 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 blockId = 13;</code>
         * @return This builder for chaining.
         */
        public Builder clearBlockId() {
          
          blockId_ = 0;
          onChanged();
          return this;
        }
  
        private int markFlag_ ;
        /**
         * <code>uint32 markFlag = 14;</code>
         * @return The markFlag.
         */
        @java.lang.Override
        public int getMarkFlag() {
          return markFlag_;
        }
        /**
         * <code>uint32 markFlag = 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 markFlag = 14;</code>
         * @return This builder for chaining.
         */
        public Builder clearMarkFlag() {
          
          markFlag_ = 0;
          onChanged();
          return this;
        }
  
        private int titleId_ ;
        /**
         * <code>uint32 titleId = 15;</code>
         * @return The titleId.
         */
        @java.lang.Override
        public int getTitleId() {
          return titleId_;
        }
        /**
         * <code>uint32 titleId = 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 titleId = 15;</code>
         * @return This builder for chaining.
         */
        public Builder clearTitleId() {
          
          titleId_ = 0;
          onChanged();
          return this;
        }
  
        private int specialNameId_ ;
        /**
         * <code>uint32 specialNameId = 16;</code>
         * @return The specialNameId.
         */
        @java.lang.Override
        public int getSpecialNameId() {
          return specialNameId_;
        }
        /**
         * <code>uint32 specialNameId = 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 specialNameId = 16;</code>
         * @return This builder for chaining.
         */
        public Builder clearSpecialNameId() {
          
          specialNameId_ = 0;
          onChanged();
          return this;
        }
  
        private int attackTargetId_ ;
        /**
         * <code>uint32 attackTargetId = 17;</code>
         * @return The attackTargetId.
         */
        @java.lang.Override
        public int getAttackTargetId() {
          return attackTargetId_;
        }
        /**
         * <code>uint32 attackTargetId = 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 attackTargetId = 17;</code>
         * @return This builder for chaining.
         */
        public Builder clearAttackTargetId() {
          
          attackTargetId_ = 0;
          onChanged();
          return this;
        }
  
        private emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRoute monsterRoute_;
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRoute, emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRoute.Builder, emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRouteOrBuilder> monsterRouteBuilder_;
        /**
         * <code>.MonsterRoute monsterRoute = 18;</code>
         * @return Whether the monsterRoute field is set.
         */
        public boolean hasMonsterRoute() {
          return monsterRouteBuilder_ != null || monsterRoute_ != null;
        }
        /**
         * <code>.MonsterRoute monsterRoute = 18;</code>
         * @return The monsterRoute.
         */
        public emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRoute getMonsterRoute() {
          if (monsterRouteBuilder_ == null) {
            return monsterRoute_ == null ? emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRoute.getDefaultInstance() : monsterRoute_;
          } else {
            return monsterRouteBuilder_.getMessage();
          }
        }
        /**
         * <code>.MonsterRoute monsterRoute = 18;</code>
         */
        public Builder setMonsterRoute(emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRoute value) {
          if (monsterRouteBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            monsterRoute_ = value;
            onChanged();
          } else {
            monsterRouteBuilder_.setMessage(value);
          }
  
          return this;
        }
        /**
         * <code>.MonsterRoute monsterRoute = 18;</code>
         */
        public Builder setMonsterRoute(
            emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRoute.Builder builderForValue) {
          if (monsterRouteBuilder_ == null) {
            monsterRoute_ = builderForValue.build();
            onChanged();
          } else {
            monsterRouteBuilder_.setMessage(builderForValue.build());
          }
  
          return this;
        }
        /**
         * <code>.MonsterRoute monsterRoute = 18;</code>
         */
        public Builder mergeMonsterRoute(emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRoute value) {
          if (monsterRouteBuilder_ == null) {
            if (monsterRoute_ != null) {
              monsterRoute_ =
                emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRoute.newBuilder(monsterRoute_).mergeFrom(value).buildPartial();
            } else {
              monsterRoute_ = value;
            }
            onChanged();
          } else {
            monsterRouteBuilder_.mergeFrom(value);
          }
  
          return this;
        }
        /**
         * <code>.MonsterRoute monsterRoute = 18;</code>
         */
        public Builder clearMonsterRoute() {
          if (monsterRouteBuilder_ == null) {
            monsterRoute_ = null;
            onChanged();
          } else {
            monsterRoute_ = null;
            monsterRouteBuilder_ = null;
          }
  
          return this;
        }
        /**
         * <code>.MonsterRoute monsterRoute = 18;</code>
         */
        public emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRoute.Builder getMonsterRouteBuilder() {
          
          onChanged();
          return getMonsterRouteFieldBuilder().getBuilder();
        }
        /**
         * <code>.MonsterRoute monsterRoute = 18;</code>
         */
        public emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRouteOrBuilder getMonsterRouteOrBuilder() {
          if (monsterRouteBuilder_ != null) {
            return monsterRouteBuilder_.getMessageOrBuilder();
          } else {
            return monsterRoute_ == null ?
                emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRoute.getDefaultInstance() : monsterRoute_;
          }
        }
        /**
         * <code>.MonsterRoute monsterRoute = 18;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRoute, emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRoute.Builder, emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRouteOrBuilder> 
            getMonsterRouteFieldBuilder() {
          if (monsterRouteBuilder_ == null) {
            monsterRouteBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRoute, emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRoute.Builder, emu.grasscutter.net.proto.MonsterRouteOuterClass.MonsterRouteOrBuilder>(
                    getMonsterRoute(),
                    getParentForChildren(),
                    isClean());
            monsterRoute_ = null;
          }
          return monsterRouteBuilder_;
        }
  
        private int aiConfigId_ ;
        /**
         * <code>uint32 aiConfigId = 19;</code>
         * @return The aiConfigId.
         */
        @java.lang.Override
        public int getAiConfigId() {
          return aiConfigId_;
        }
        /**
         * <code>uint32 aiConfigId = 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 aiConfigId = 19;</code>
         * @return This builder for chaining.
         */
        public Builder clearAiConfigId() {
          
          aiConfigId_ = 0;
          onChanged();
          return this;
        }
  
        private int levelRouteId_ ;
        /**
         * <code>uint32 levelRouteId = 20;</code>
         * @return The levelRouteId.
         */
        @java.lang.Override
        public int getLevelRouteId() {
          return levelRouteId_;
        }
        /**
         * <code>uint32 levelRouteId = 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 levelRouteId = 20;</code>
         * @return This builder for chaining.
         */
        public Builder clearLevelRouteId() {
          
          levelRouteId_ = 0;
          onChanged();
          return this;
        }
  
        private int initPoseId_ ;
        /**
         * <code>uint32 initPoseId = 21;</code>
         * @return The initPoseId.
         */
        @java.lang.Override
        public int getInitPoseId() {
          return initPoseId_;
        }
        /**
         * <code>uint32 initPoseId = 21;</code>
         * @param value The initPoseId to set.
         * @return This builder for chaining.
         */
        public Builder setInitPoseId(int value) {
          
          initPoseId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>uint32 initPoseId = 21;</code>
         * @return This builder for chaining.
         */
        public Builder clearInitPoseId() {
          
          initPoseId_ = 0;
          onChanged();
          return this;
        }
  
        private boolean isLight_ ;
        /**
         * <code>bool isLight = 22;</code>
         * @return The isLight.
         */
        @java.lang.Override
        public boolean getIsLight() {
          return isLight_;
        }
        /**
         * <code>bool isLight = 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 isLight = 22;</code>
         * @return This builder for chaining.
         */
        public Builder clearIsLight() {
          
          isLight_ = false;
          onChanged();
          return this;
        }
  
        private int killNum_ ;
        /**
         * <code>uint32 killNum = 23;</code>
         * @return The killNum.
         */
        @java.lang.Override
        public int getKillNum() {
          return killNum_;
        }
        /**
         * <code>uint32 killNum = 23;</code>
         * @param value The killNum to set.
         * @return This builder for chaining.
         */
        public Builder setKillNum(int value) {
          
          killNum_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>uint32 killNum = 23;</code>
         * @return This builder for chaining.
         */
        public Builder clearKillNum() {
          
          killNum_ = 0;
          onChanged();
          return this;
        }
  
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo, emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo.Builder, emu.grasscutter.net.proto.FishInfoOuterClass.FishInfoOrBuilder> fishInfoBuilder_;
        /**
         * <code>.FishInfo fish_info = 50;</code>
         * @return Whether the fishInfo field is set.
         */
        @java.lang.Override
        public boolean hasFishInfo() {
          return lOBCEJBFAABCase_ == 50;
        }
        /**
         * <code>.FishInfo fish_info = 50;</code>
         * @return The fishInfo.
         */
        @java.lang.Override
        public emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo getFishInfo() {
          if (fishInfoBuilder_ == null) {
            if (lOBCEJBFAABCase_ == 50) {
              return (emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo) lOBCEJBFAAB_;
            }
            return emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo.getDefaultInstance();
          } else {
            if (lOBCEJBFAABCase_ == 50) {
              return fishInfoBuilder_.getMessage();
            }
            return emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo.getDefaultInstance();
          }
        }
        /**
         * <code>.FishInfo fish_info = 50;</code>
         */
        public Builder setFishInfo(emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo value) {
          if (fishInfoBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            lOBCEJBFAAB_ = value;
            onChanged();
          } else {
            fishInfoBuilder_.setMessage(value);
          }
          lOBCEJBFAABCase_ = 50;
          return this;
        }
        /**
         * <code>.FishInfo fish_info = 50;</code>
         */
        public Builder setFishInfo(
            emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo.Builder builderForValue) {
          if (fishInfoBuilder_ == null) {
            lOBCEJBFAAB_ = builderForValue.build();
            onChanged();
          } else {
            fishInfoBuilder_.setMessage(builderForValue.build());
          }
          lOBCEJBFAABCase_ = 50;
          return this;
        }
        /**
         * <code>.FishInfo fish_info = 50;</code>
         */
        public Builder mergeFishInfo(emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo value) {
          if (fishInfoBuilder_ == null) {
            if (lOBCEJBFAABCase_ == 50 &&
                lOBCEJBFAAB_ != emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo.getDefaultInstance()) {
              lOBCEJBFAAB_ = emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo.newBuilder((emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo) lOBCEJBFAAB_)
                  .mergeFrom(value).buildPartial();
            } else {
              lOBCEJBFAAB_ = value;
            }
            onChanged();
          } else {
            if (lOBCEJBFAABCase_ == 50) {
              fishInfoBuilder_.mergeFrom(value);
            }
            fishInfoBuilder_.setMessage(value);
          }
          lOBCEJBFAABCase_ = 50;
          return this;
        }
        /**
         * <code>.FishInfo fish_info = 50;</code>
         */
        public Builder clearFishInfo() {
          if (fishInfoBuilder_ == null) {
            if (lOBCEJBFAABCase_ == 50) {
              lOBCEJBFAABCase_ = 0;
              lOBCEJBFAAB_ = null;
              onChanged();
            }
          } else {
            if (lOBCEJBFAABCase_ == 50) {
              lOBCEJBFAABCase_ = 0;
              lOBCEJBFAAB_ = null;
            }
            fishInfoBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>.FishInfo fish_info = 50;</code>
         */
        public emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo.Builder getFishInfoBuilder() {
          return getFishInfoFieldBuilder().getBuilder();
        }
        /**
         * <code>.FishInfo fish_info = 50;</code>
         */
        @java.lang.Override
        public emu.grasscutter.net.proto.FishInfoOuterClass.FishInfoOrBuilder getFishInfoOrBuilder() {
          if ((lOBCEJBFAABCase_ == 50) && (fishInfoBuilder_ != null)) {
            return fishInfoBuilder_.getMessageOrBuilder();
          } else {
            if (lOBCEJBFAABCase_ == 50) {
              return (emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo) lOBCEJBFAAB_;
            }
            return emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo.getDefaultInstance();
          }
        }
        /**
         * <code>.FishInfo fish_info = 50;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo, emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo.Builder, emu.grasscutter.net.proto.FishInfoOuterClass.FishInfoOrBuilder> 
            getFishInfoFieldBuilder() {
          if (fishInfoBuilder_ == null) {
            if (!(lOBCEJBFAABCase_ == 50)) {
              lOBCEJBFAAB_ = emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo.getDefaultInstance();
            }
            fishInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo, emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo.Builder, emu.grasscutter.net.proto.FishInfoOuterClass.FishInfoOrBuilder>(
                    (emu.grasscutter.net.proto.FishInfoOuterClass.FishInfo) lOBCEJBFAAB_,
                    getParentForChildren(),
                    isClean());
            lOBCEJBFAAB_ = null;
          }
          lOBCEJBFAABCase_ = 50;
          onChanged();;
          return fishInfoBuilder_;
        }
  
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo, emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo.Builder, emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfoOrBuilder> fishtankFishInfoBuilder_;
        /**
         * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
         * @return Whether the fishtankFishInfo field is set.
         */
        @java.lang.Override
        public boolean hasFishtankFishInfo() {
          return lOBCEJBFAABCase_ == 51;
        }
        /**
         * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
         * @return The fishtankFishInfo.
         */
        @java.lang.Override
        public emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo getFishtankFishInfo() {
          if (fishtankFishInfoBuilder_ == null) {
            if (lOBCEJBFAABCase_ == 51) {
              return (emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo) lOBCEJBFAAB_;
            }
            return emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo.getDefaultInstance();
          } else {
            if (lOBCEJBFAABCase_ == 51) {
              return fishtankFishInfoBuilder_.getMessage();
            }
            return emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo.getDefaultInstance();
          }
        }
        /**
         * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
         */
        public Builder setFishtankFishInfo(emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo value) {
          if (fishtankFishInfoBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            lOBCEJBFAAB_ = value;
            onChanged();
          } else {
            fishtankFishInfoBuilder_.setMessage(value);
          }
          lOBCEJBFAABCase_ = 51;
          return this;
        }
        /**
         * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
         */
        public Builder setFishtankFishInfo(
            emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo.Builder builderForValue) {
          if (fishtankFishInfoBuilder_ == null) {
            lOBCEJBFAAB_ = builderForValue.build();
            onChanged();
          } else {
            fishtankFishInfoBuilder_.setMessage(builderForValue.build());
          }
          lOBCEJBFAABCase_ = 51;
          return this;
        }
        /**
         * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
         */
        public Builder mergeFishtankFishInfo(emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo value) {
          if (fishtankFishInfoBuilder_ == null) {
            if (lOBCEJBFAABCase_ == 51 &&
                lOBCEJBFAAB_ != emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo.getDefaultInstance()) {
              lOBCEJBFAAB_ = emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo.newBuilder((emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo) lOBCEJBFAAB_)
                  .mergeFrom(value).buildPartial();
            } else {
              lOBCEJBFAAB_ = value;
            }
            onChanged();
          } else {
            if (lOBCEJBFAABCase_ == 51) {
              fishtankFishInfoBuilder_.mergeFrom(value);
            }
            fishtankFishInfoBuilder_.setMessage(value);
          }
          lOBCEJBFAABCase_ = 51;
          return this;
        }
        /**
         * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
         */
        public Builder clearFishtankFishInfo() {
          if (fishtankFishInfoBuilder_ == null) {
            if (lOBCEJBFAABCase_ == 51) {
              lOBCEJBFAABCase_ = 0;
              lOBCEJBFAAB_ = null;
              onChanged();
            }
          } else {
            if (lOBCEJBFAABCase_ == 51) {
              lOBCEJBFAABCase_ = 0;
              lOBCEJBFAAB_ = null;
            }
            fishtankFishInfoBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
         */
        public emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo.Builder getFishtankFishInfoBuilder() {
          return getFishtankFishInfoFieldBuilder().getBuilder();
        }
        /**
         * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
         */
        @java.lang.Override
        public emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfoOrBuilder getFishtankFishInfoOrBuilder() {
          if ((lOBCEJBFAABCase_ == 51) && (fishtankFishInfoBuilder_ != null)) {
            return fishtankFishInfoBuilder_.getMessageOrBuilder();
          } else {
            if (lOBCEJBFAABCase_ == 51) {
              return (emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo) lOBCEJBFAAB_;
            }
            return emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo.getDefaultInstance();
          }
        }
        /**
         * <code>.FishtankFishInfo fishtank_fish_info = 51;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo, emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo.Builder, emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfoOrBuilder> 
            getFishtankFishInfoFieldBuilder() {
          if (fishtankFishInfoBuilder_ == null) {
            if (!(lOBCEJBFAABCase_ == 51)) {
              lOBCEJBFAAB_ = emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo.getDefaultInstance();
            }
            fishtankFishInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo, emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo.Builder, emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfoOrBuilder>(
                    (emu.grasscutter.net.proto.FishtankFishInfoOuterClass.FishtankFishInfo) lOBCEJBFAAB_,
                    getParentForChildren(),
                    isClean());
            lOBCEJBFAAB_ = null;
          }
          lOBCEJBFAABCase_ = 51;
          onChanged();;
          return fishtankFishInfoBuilder_;
        }
        @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:Monster)
      }
  
      // @@protoc_insertion_point(class_scope:Monster)
      private static final emu.grasscutter.net.proto.MonsterOuterClass.Monster DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new emu.grasscutter.net.proto.MonsterOuterClass.Monster();
      }
  
      public static emu.grasscutter.net.proto.MonsterOuterClass.Monster getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.google.protobuf.Parser<Monster>
          PARSER = new com.google.protobuf.AbstractParser<Monster>() {
        @java.lang.Override
        public Monster parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Monster(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<Monster> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<Monster> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public emu.grasscutter.net.proto.MonsterOuterClass.Monster getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Monster_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Monster_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Monster_SummonTagMapEntry_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Monster_SummonTagMapEntry_fieldAccessorTable;
  
    public static com.google.protobuf.Descriptors.FileDescriptor
        getDescriptor() {
      return descriptor;
    }
    private static  com.google.protobuf.Descriptors.FileDescriptor
        descriptor;
    static {
      java.lang.String[] descriptorData = {
        "\n\rMonster.proto\032\025MonsterBornType.proto\032\022" +
        "MonsterRoute.proto\032\016FishInfo.proto\032\026Fish" +
        "tankFishInfo.proto\032\025SceneWeaponInfo.prot" +
        "o\"\261\005\n\007Monster\022\021\n\tmonsterId\030\001 \001(\r\022\017\n\007grou" +
        "pId\030\002 \001(\r\022\020\n\010configId\030\003 \001(\r\022$\n\nweaponLis" +
        "t\030\004 \003(\0132\020.SceneWeaponInfo\022\027\n\017authorityPe" +
        "erId\030\005 \001(\r\022\021\n\taffixList\030\006 \003(\r\022\017\n\007isElite" +
        "\030\007 \001(\010\022\025\n\rownerEntityId\030\010 \001(\r\022\023\n\013summone" +
        "dTag\030\t \001(\r\0220\n\014summonTagMap\030\n \003(\0132\032.Monst" +
        "er.SummonTagMapEntry\022\016\n\006poseId\030\013 \001(\r\022\"\n\010" +
        "bornType\030\014 \001(\0162\020.MonsterBornType\022\017\n\007bloc" +
        "kId\030\r \001(\r\022\020\n\010markFlag\030\016 \001(\r\022\017\n\007titleId\030\017" +
        " \001(\r\022\025\n\rspecialNameId\030\020 \001(\r\022\026\n\016attackTar" +
        "getId\030\021 \001(\r\022#\n\014monsterRoute\030\022 \001(\0132\r.Mons" +
        "terRoute\022\022\n\naiConfigId\030\023 \001(\r\022\024\n\014levelRou" +
        "teId\030\024 \001(\r\022\022\n\ninitPoseId\030\025 \001(\r\022\017\n\007isLigh" +
        "t\030\026 \001(\010\022\017\n\007killNum\030\027 \001(\r\022\036\n\tfish_info\0302 " +
        "\001(\0132\t.FishInfoH\000\022/\n\022fishtank_fish_info\0303" +
        " \001(\0132\021.FishtankFishInfoH\000\0323\n\021SummonTagMa" +
        "pEntry\022\013\n\003key\030\001 \001(\r\022\r\n\005value\030\002 \001(\r:\0028\001B\r" +
        "\n\013LOBCEJBFAABB\033\n\031emu.grasscutter.net.pro" +
        "tob\006proto3"
      };
      descriptor = com.google.protobuf.Descriptors.FileDescriptor
        .internalBuildGeneratedFileFrom(descriptorData,
          new com.google.protobuf.Descriptors.FileDescriptor[] {
            emu.grasscutter.net.proto.MonsterBornTypeOuterClass.getDescriptor(),
            emu.grasscutter.net.proto.MonsterRouteOuterClass.getDescriptor(),
            emu.grasscutter.net.proto.FishInfoOuterClass.getDescriptor(),
            emu.grasscutter.net.proto.FishtankFishInfoOuterClass.getDescriptor(),
            emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.getDescriptor(),
          });
      internal_static_Monster_descriptor =
        getDescriptor().getMessageTypes().get(0);
      internal_static_Monster_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Monster_descriptor,
          new java.lang.String[] { "MonsterId", "GroupId", "ConfigId", "WeaponList", "AuthorityPeerId", "AffixList", "IsElite", "OwnerEntityId", "SummonedTag", "SummonTagMap", "PoseId", "BornType", "BlockId", "MarkFlag", "TitleId", "SpecialNameId", "AttackTargetId", "MonsterRoute", "AiConfigId", "LevelRouteId", "InitPoseId", "IsLight", "KillNum", "FishInfo", "FishtankFishInfo", "LOBCEJBFAAB", });
      internal_static_Monster_SummonTagMapEntry_descriptor =
        internal_static_Monster_descriptor.getNestedTypes().get(0);
      internal_static_Monster_SummonTagMapEntry_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Monster_SummonTagMapEntry_descriptor,
          new java.lang.String[] { "Key", "Value", });
      emu.grasscutter.net.proto.MonsterBornTypeOuterClass.getDescriptor();
      emu.grasscutter.net.proto.MonsterRouteOuterClass.getDescriptor();
      emu.grasscutter.net.proto.FishInfoOuterClass.getDescriptor();
      emu.grasscutter.net.proto.FishtankFishInfoOuterClass.getDescriptor();
      emu.grasscutter.net.proto.SceneWeaponInfoOuterClass.getDescriptor();
    }
  
    // @@protoc_insertion_point(outer_class_scope)
  }
  