diff --git a/src/main/java/emu/grasscutter/net/proto/NpcTalkReqOuterClass.java b/src/main/java/emu/grasscutter/net/proto/NpcTalkReqOuterClass.java
new file mode 100644
index 000000000..a974986b9
--- /dev/null
+++ b/src/main/java/emu/grasscutter/net/proto/NpcTalkReqOuterClass.java
@@ -0,0 +1,680 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: Grasscutter-Protos/proto/NpcTalkReq.proto
+
+package emu.grasscutter.net.proto;
+
+public final class NpcTalkReqOuterClass {
+ private NpcTalkReqOuterClass() {}
+ 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 NpcTalkReqOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:NpcTalkReq)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ * uint32 npc_entity_id = 1;
+ * @return The npcEntityId.
+ */
+ int getNpcEntityId();
+
+ /**
+ * uint32 talk_id = 3;
+ * @return The talkId.
+ */
+ int getTalkId();
+
+ /**
+ * uint32 entity_id = 4;
+ * @return The entityId.
+ */
+ int getEntityId();
+ }
+ /**
+ * Protobuf type {@code NpcTalkReq}
+ */
+ public static final class NpcTalkReq extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:NpcTalkReq)
+ NpcTalkReqOrBuilder {
+ private static final long serialVersionUID = 0L;
+ // Use NpcTalkReq.newBuilder() to construct.
+ private NpcTalkReq(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+ private NpcTalkReq() {
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new NpcTalkReq();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private NpcTalkReq(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ 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: {
+
+ npcEntityId_ = input.readUInt32();
+ break;
+ }
+ case 24: {
+
+ talkId_ = input.readUInt32();
+ break;
+ }
+ case 32: {
+
+ entityId_ = input.readUInt32();
+ break;
+ }
+ default: {
+ if (!parseUnknownField(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (com.google.protobuf.UninitializedMessageException e) {
+ throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return emu.grasscutter.net.proto.NpcTalkReqOuterClass.internal_static_NpcTalkReq_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return emu.grasscutter.net.proto.NpcTalkReqOuterClass.internal_static_NpcTalkReq_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.class, emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.Builder.class);
+ }
+
+ public static final int NPC_ENTITY_ID_FIELD_NUMBER = 1;
+ private int npcEntityId_;
+ /**
+ * uint32 npc_entity_id = 1;
+ * @return The npcEntityId.
+ */
+ @java.lang.Override
+ public int getNpcEntityId() {
+ return npcEntityId_;
+ }
+
+ public static final int TALK_ID_FIELD_NUMBER = 3;
+ private int talkId_;
+ /**
+ * uint32 talk_id = 3;
+ * @return The talkId.
+ */
+ @java.lang.Override
+ public int getTalkId() {
+ return talkId_;
+ }
+
+ public static final int ENTITY_ID_FIELD_NUMBER = 4;
+ private int entityId_;
+ /**
+ * uint32 entity_id = 4;
+ * @return The entityId.
+ */
+ @java.lang.Override
+ public int getEntityId() {
+ return entityId_;
+ }
+
+ 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 {
+ if (npcEntityId_ != 0) {
+ output.writeUInt32(1, npcEntityId_);
+ }
+ if (talkId_ != 0) {
+ output.writeUInt32(3, talkId_);
+ }
+ if (entityId_ != 0) {
+ output.writeUInt32(4, entityId_);
+ }
+ unknownFields.writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (npcEntityId_ != 0) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeUInt32Size(1, npcEntityId_);
+ }
+ if (talkId_ != 0) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeUInt32Size(3, talkId_);
+ }
+ if (entityId_ != 0) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeUInt32Size(4, entityId_);
+ }
+ 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.NpcTalkReqOuterClass.NpcTalkReq)) {
+ return super.equals(obj);
+ }
+ emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq other = (emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq) obj;
+
+ if (getNpcEntityId()
+ != other.getNpcEntityId()) return false;
+ if (getTalkId()
+ != other.getTalkId()) return false;
+ if (getEntityId()
+ != other.getEntityId()) return false;
+ 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) + NPC_ENTITY_ID_FIELD_NUMBER;
+ hash = (53 * hash) + getNpcEntityId();
+ hash = (37 * hash) + TALK_ID_FIELD_NUMBER;
+ hash = (53 * hash) + getTalkId();
+ hash = (37 * hash) + ENTITY_ID_FIELD_NUMBER;
+ hash = (53 * hash) + getEntityId();
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq 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.NpcTalkReqOuterClass.NpcTalkReq parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq 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.NpcTalkReqOuterClass.NpcTalkReq parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq 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.NpcTalkReqOuterClass.NpcTalkReq parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq 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.NpcTalkReqOuterClass.NpcTalkReq parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq 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.NpcTalkReqOuterClass.NpcTalkReq 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 NpcTalkReq}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder implements
+ // @@protoc_insertion_point(builder_implements:NpcTalkReq)
+ emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReqOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return emu.grasscutter.net.proto.NpcTalkReqOuterClass.internal_static_NpcTalkReq_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return emu.grasscutter.net.proto.NpcTalkReqOuterClass.internal_static_NpcTalkReq_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.class, emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.Builder.class);
+ }
+
+ // Construct using emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+ @java.lang.Override
+ public Builder clear() {
+ super.clear();
+ npcEntityId_ = 0;
+
+ talkId_ = 0;
+
+ entityId_ = 0;
+
+ return this;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return emu.grasscutter.net.proto.NpcTalkReqOuterClass.internal_static_NpcTalkReq_descriptor;
+ }
+
+ @java.lang.Override
+ public emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq getDefaultInstanceForType() {
+ return emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.getDefaultInstance();
+ }
+
+ @java.lang.Override
+ public emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq build() {
+ emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ @java.lang.Override
+ public emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq buildPartial() {
+ emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq result = new emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq(this);
+ result.npcEntityId_ = npcEntityId_;
+ result.talkId_ = talkId_;
+ result.entityId_ = entityId_;
+ 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.NpcTalkReqOuterClass.NpcTalkReq) {
+ return mergeFrom((emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq other) {
+ if (other == emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.getDefaultInstance()) return this;
+ if (other.getNpcEntityId() != 0) {
+ setNpcEntityId(other.getNpcEntityId());
+ }
+ if (other.getTalkId() != 0) {
+ setTalkId(other.getTalkId());
+ }
+ if (other.getEntityId() != 0) {
+ setEntityId(other.getEntityId());
+ }
+ 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.NpcTalkReqOuterClass.NpcTalkReq parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+
+ private int npcEntityId_ ;
+ /**
+ * uint32 npc_entity_id = 1;
+ * @return The npcEntityId.
+ */
+ @java.lang.Override
+ public int getNpcEntityId() {
+ return npcEntityId_;
+ }
+ /**
+ * uint32 npc_entity_id = 1;
+ * @param value The npcEntityId to set.
+ * @return This builder for chaining.
+ */
+ public Builder setNpcEntityId(int value) {
+
+ npcEntityId_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * uint32 npc_entity_id = 1;
+ * @return This builder for chaining.
+ */
+ public Builder clearNpcEntityId() {
+
+ npcEntityId_ = 0;
+ onChanged();
+ return this;
+ }
+
+ private int talkId_ ;
+ /**
+ * uint32 talk_id = 3;
+ * @return The talkId.
+ */
+ @java.lang.Override
+ public int getTalkId() {
+ return talkId_;
+ }
+ /**
+ * uint32 talk_id = 3;
+ * @param value The talkId to set.
+ * @return This builder for chaining.
+ */
+ public Builder setTalkId(int value) {
+
+ talkId_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * uint32 talk_id = 3;
+ * @return This builder for chaining.
+ */
+ public Builder clearTalkId() {
+
+ talkId_ = 0;
+ onChanged();
+ return this;
+ }
+
+ private int entityId_ ;
+ /**
+ * uint32 entity_id = 4;
+ * @return The entityId.
+ */
+ @java.lang.Override
+ public int getEntityId() {
+ return entityId_;
+ }
+ /**
+ * uint32 entity_id = 4;
+ * @param value The entityId to set.
+ * @return This builder for chaining.
+ */
+ public Builder setEntityId(int value) {
+
+ entityId_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * uint32 entity_id = 4;
+ * @return This builder for chaining.
+ */
+ public Builder clearEntityId() {
+
+ entityId_ = 0;
+ onChanged();
+ return this;
+ }
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:NpcTalkReq)
+ }
+
+ // @@protoc_insertion_point(class_scope:NpcTalkReq)
+ private static final emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq();
+ }
+
+ public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser
+ PARSER = new com.google.protobuf.AbstractParser() {
+ @java.lang.Override
+ public NpcTalkReq parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new NpcTalkReq(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser getParserForType() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+ }
+
+ private static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_NpcTalkReq_descriptor;
+ private static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_NpcTalkReq_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)Grasscutter-Protos/proto/NpcTalkReq.pr" +
+ "oto\"G\n\nNpcTalkReq\022\025\n\rnpc_entity_id\030\001 \001(\r" +
+ "\022\017\n\007talk_id\030\003 \001(\r\022\021\n\tentity_id\030\004 \001(\rB1\n\031" +
+ "emu.grasscutter.net.protoB\024NpcTalkReqOut" +
+ "erClassb\006proto3"
+ };
+ descriptor = com.google.protobuf.Descriptors.FileDescriptor
+ .internalBuildGeneratedFileFrom(descriptorData,
+ new com.google.protobuf.Descriptors.FileDescriptor[] {
+ });
+ internal_static_NpcTalkReq_descriptor =
+ getDescriptor().getMessageTypes().get(0);
+ internal_static_NpcTalkReq_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_NpcTalkReq_descriptor,
+ new java.lang.String[] { "NpcEntityId", "TalkId", "EntityId", });
+ }
+
+ // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/src/main/java/emu/grasscutter/net/proto/NpcTalkRspOuterClass.java b/src/main/java/emu/grasscutter/net/proto/NpcTalkRspOuterClass.java
new file mode 100644
index 000000000..80daa3154
--- /dev/null
+++ b/src/main/java/emu/grasscutter/net/proto/NpcTalkRspOuterClass.java
@@ -0,0 +1,750 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: Grasscutter-Protos/proto/NpcTalkRsp.proto
+
+package emu.grasscutter.net.proto;
+
+public final class NpcTalkRspOuterClass {
+ private NpcTalkRspOuterClass() {}
+ 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 NpcTalkRspOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:NpcTalkRsp)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ * int32 retcode = 1;
+ * @return The retcode.
+ */
+ int getRetcode();
+
+ /**
+ * uint32 npc_entity_id = 2;
+ * @return The npcEntityId.
+ */
+ int getNpcEntityId();
+
+ /**
+ * uint32 cur_talk_id = 4;
+ * @return The curTalkId.
+ */
+ int getCurTalkId();
+
+ /**
+ * uint32 entity_id = 5;
+ * @return The entityId.
+ */
+ int getEntityId();
+ }
+ /**
+ * Protobuf type {@code NpcTalkRsp}
+ */
+ public static final class NpcTalkRsp extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:NpcTalkRsp)
+ NpcTalkRspOrBuilder {
+ private static final long serialVersionUID = 0L;
+ // Use NpcTalkRsp.newBuilder() to construct.
+ private NpcTalkRsp(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+ private NpcTalkRsp() {
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new NpcTalkRsp();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private NpcTalkRsp(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ 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: {
+
+ retcode_ = input.readInt32();
+ break;
+ }
+ case 16: {
+
+ npcEntityId_ = input.readUInt32();
+ break;
+ }
+ case 32: {
+
+ curTalkId_ = input.readUInt32();
+ break;
+ }
+ case 40: {
+
+ entityId_ = input.readUInt32();
+ break;
+ }
+ default: {
+ if (!parseUnknownField(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (com.google.protobuf.UninitializedMessageException e) {
+ throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return emu.grasscutter.net.proto.NpcTalkRspOuterClass.internal_static_NpcTalkRsp_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return emu.grasscutter.net.proto.NpcTalkRspOuterClass.internal_static_NpcTalkRsp_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.class, emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.Builder.class);
+ }
+
+ public static final int RETCODE_FIELD_NUMBER = 1;
+ private int retcode_;
+ /**
+ * int32 retcode = 1;
+ * @return The retcode.
+ */
+ @java.lang.Override
+ public int getRetcode() {
+ return retcode_;
+ }
+
+ public static final int NPC_ENTITY_ID_FIELD_NUMBER = 2;
+ private int npcEntityId_;
+ /**
+ * uint32 npc_entity_id = 2;
+ * @return The npcEntityId.
+ */
+ @java.lang.Override
+ public int getNpcEntityId() {
+ return npcEntityId_;
+ }
+
+ public static final int CUR_TALK_ID_FIELD_NUMBER = 4;
+ private int curTalkId_;
+ /**
+ * uint32 cur_talk_id = 4;
+ * @return The curTalkId.
+ */
+ @java.lang.Override
+ public int getCurTalkId() {
+ return curTalkId_;
+ }
+
+ public static final int ENTITY_ID_FIELD_NUMBER = 5;
+ private int entityId_;
+ /**
+ * uint32 entity_id = 5;
+ * @return The entityId.
+ */
+ @java.lang.Override
+ public int getEntityId() {
+ return entityId_;
+ }
+
+ 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 {
+ if (retcode_ != 0) {
+ output.writeInt32(1, retcode_);
+ }
+ if (npcEntityId_ != 0) {
+ output.writeUInt32(2, npcEntityId_);
+ }
+ if (curTalkId_ != 0) {
+ output.writeUInt32(4, curTalkId_);
+ }
+ if (entityId_ != 0) {
+ output.writeUInt32(5, entityId_);
+ }
+ unknownFields.writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (retcode_ != 0) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(1, retcode_);
+ }
+ if (npcEntityId_ != 0) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeUInt32Size(2, npcEntityId_);
+ }
+ if (curTalkId_ != 0) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeUInt32Size(4, curTalkId_);
+ }
+ if (entityId_ != 0) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeUInt32Size(5, entityId_);
+ }
+ 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.NpcTalkRspOuterClass.NpcTalkRsp)) {
+ return super.equals(obj);
+ }
+ emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp other = (emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp) obj;
+
+ if (getRetcode()
+ != other.getRetcode()) return false;
+ if (getNpcEntityId()
+ != other.getNpcEntityId()) return false;
+ if (getCurTalkId()
+ != other.getCurTalkId()) return false;
+ if (getEntityId()
+ != other.getEntityId()) return false;
+ 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) + RETCODE_FIELD_NUMBER;
+ hash = (53 * hash) + getRetcode();
+ hash = (37 * hash) + NPC_ENTITY_ID_FIELD_NUMBER;
+ hash = (53 * hash) + getNpcEntityId();
+ hash = (37 * hash) + CUR_TALK_ID_FIELD_NUMBER;
+ hash = (53 * hash) + getCurTalkId();
+ hash = (37 * hash) + ENTITY_ID_FIELD_NUMBER;
+ hash = (53 * hash) + getEntityId();
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp 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.NpcTalkRspOuterClass.NpcTalkRsp parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp 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.NpcTalkRspOuterClass.NpcTalkRsp parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp 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.NpcTalkRspOuterClass.NpcTalkRsp parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp 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.NpcTalkRspOuterClass.NpcTalkRsp parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp 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.NpcTalkRspOuterClass.NpcTalkRsp 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 NpcTalkRsp}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder implements
+ // @@protoc_insertion_point(builder_implements:NpcTalkRsp)
+ emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRspOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return emu.grasscutter.net.proto.NpcTalkRspOuterClass.internal_static_NpcTalkRsp_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return emu.grasscutter.net.proto.NpcTalkRspOuterClass.internal_static_NpcTalkRsp_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.class, emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.Builder.class);
+ }
+
+ // Construct using emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+ @java.lang.Override
+ public Builder clear() {
+ super.clear();
+ retcode_ = 0;
+
+ npcEntityId_ = 0;
+
+ curTalkId_ = 0;
+
+ entityId_ = 0;
+
+ return this;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return emu.grasscutter.net.proto.NpcTalkRspOuterClass.internal_static_NpcTalkRsp_descriptor;
+ }
+
+ @java.lang.Override
+ public emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp getDefaultInstanceForType() {
+ return emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.getDefaultInstance();
+ }
+
+ @java.lang.Override
+ public emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp build() {
+ emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ @java.lang.Override
+ public emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp buildPartial() {
+ emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp result = new emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp(this);
+ result.retcode_ = retcode_;
+ result.npcEntityId_ = npcEntityId_;
+ result.curTalkId_ = curTalkId_;
+ result.entityId_ = entityId_;
+ 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.NpcTalkRspOuterClass.NpcTalkRsp) {
+ return mergeFrom((emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp other) {
+ if (other == emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.getDefaultInstance()) return this;
+ if (other.getRetcode() != 0) {
+ setRetcode(other.getRetcode());
+ }
+ if (other.getNpcEntityId() != 0) {
+ setNpcEntityId(other.getNpcEntityId());
+ }
+ if (other.getCurTalkId() != 0) {
+ setCurTalkId(other.getCurTalkId());
+ }
+ if (other.getEntityId() != 0) {
+ setEntityId(other.getEntityId());
+ }
+ 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.NpcTalkRspOuterClass.NpcTalkRsp parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+
+ private int retcode_ ;
+ /**
+ * int32 retcode = 1;
+ * @return The retcode.
+ */
+ @java.lang.Override
+ public int getRetcode() {
+ return retcode_;
+ }
+ /**
+ * int32 retcode = 1;
+ * @param value The retcode to set.
+ * @return This builder for chaining.
+ */
+ public Builder setRetcode(int value) {
+
+ retcode_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * int32 retcode = 1;
+ * @return This builder for chaining.
+ */
+ public Builder clearRetcode() {
+
+ retcode_ = 0;
+ onChanged();
+ return this;
+ }
+
+ private int npcEntityId_ ;
+ /**
+ * uint32 npc_entity_id = 2;
+ * @return The npcEntityId.
+ */
+ @java.lang.Override
+ public int getNpcEntityId() {
+ return npcEntityId_;
+ }
+ /**
+ * uint32 npc_entity_id = 2;
+ * @param value The npcEntityId to set.
+ * @return This builder for chaining.
+ */
+ public Builder setNpcEntityId(int value) {
+
+ npcEntityId_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * uint32 npc_entity_id = 2;
+ * @return This builder for chaining.
+ */
+ public Builder clearNpcEntityId() {
+
+ npcEntityId_ = 0;
+ onChanged();
+ return this;
+ }
+
+ private int curTalkId_ ;
+ /**
+ * uint32 cur_talk_id = 4;
+ * @return The curTalkId.
+ */
+ @java.lang.Override
+ public int getCurTalkId() {
+ return curTalkId_;
+ }
+ /**
+ * uint32 cur_talk_id = 4;
+ * @param value The curTalkId to set.
+ * @return This builder for chaining.
+ */
+ public Builder setCurTalkId(int value) {
+
+ curTalkId_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * uint32 cur_talk_id = 4;
+ * @return This builder for chaining.
+ */
+ public Builder clearCurTalkId() {
+
+ curTalkId_ = 0;
+ onChanged();
+ return this;
+ }
+
+ private int entityId_ ;
+ /**
+ * uint32 entity_id = 5;
+ * @return The entityId.
+ */
+ @java.lang.Override
+ public int getEntityId() {
+ return entityId_;
+ }
+ /**
+ * uint32 entity_id = 5;
+ * @param value The entityId to set.
+ * @return This builder for chaining.
+ */
+ public Builder setEntityId(int value) {
+
+ entityId_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * uint32 entity_id = 5;
+ * @return This builder for chaining.
+ */
+ public Builder clearEntityId() {
+
+ entityId_ = 0;
+ onChanged();
+ return this;
+ }
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:NpcTalkRsp)
+ }
+
+ // @@protoc_insertion_point(class_scope:NpcTalkRsp)
+ private static final emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp();
+ }
+
+ public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser
+ PARSER = new com.google.protobuf.AbstractParser() {
+ @java.lang.Override
+ public NpcTalkRsp parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new NpcTalkRsp(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser getParserForType() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+ }
+
+ private static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_NpcTalkRsp_descriptor;
+ private static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_NpcTalkRsp_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)Grasscutter-Protos/proto/NpcTalkRsp.pr" +
+ "oto\"\\\n\nNpcTalkRsp\022\017\n\007retcode\030\001 \001(\005\022\025\n\rnp" +
+ "c_entity_id\030\002 \001(\r\022\023\n\013cur_talk_id\030\004 \001(\r\022\021" +
+ "\n\tentity_id\030\005 \001(\rB1\n\031emu.grasscutter.net" +
+ ".protoB\024NpcTalkRspOuterClassb\006proto3"
+ };
+ descriptor = com.google.protobuf.Descriptors.FileDescriptor
+ .internalBuildGeneratedFileFrom(descriptorData,
+ new com.google.protobuf.Descriptors.FileDescriptor[] {
+ });
+ internal_static_NpcTalkRsp_descriptor =
+ getDescriptor().getMessageTypes().get(0);
+ internal_static_NpcTalkRsp_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_NpcTalkRsp_descriptor,
+ new java.lang.String[] { "Retcode", "NpcEntityId", "CurTalkId", "EntityId", });
+ }
+
+ // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerNpcTalkReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerNpcTalkReq.java
new file mode 100644
index 000000000..588e1c4e1
--- /dev/null
+++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerNpcTalkReq.java
@@ -0,0 +1,21 @@
+package emu.grasscutter.server.packet.recv;
+
+import emu.grasscutter.game.inventory.GenshinItem;
+import emu.grasscutter.net.packet.Opcodes;
+import emu.grasscutter.net.packet.PacketOpcodes;
+import emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq;
+import emu.grasscutter.net.packet.PacketHandler;
+import emu.grasscutter.server.game.GameSession;
+import emu.grasscutter.server.packet.send.PacketNpcTalkRsp;
+
+@Opcodes(PacketOpcodes.NpcTalkReq)
+public class HandlerNpcTalkReq extends PacketHandler {
+
+ @Override
+ public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
+ NpcTalkReq req = NpcTalkReq.parseFrom(payload);
+
+ session.send(new PacketNpcTalkRsp(req.getNpcEntityId(), req.getTalkId(), req.getEntityId()));
+ }
+
+}
diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketNpcTalkRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketNpcTalkRsp.java
new file mode 100644
index 000000000..b447a19eb
--- /dev/null
+++ b/src/main/java/emu/grasscutter/server/packet/send/PacketNpcTalkRsp.java
@@ -0,0 +1,19 @@
+package emu.grasscutter.server.packet.send;
+
+import emu.grasscutter.net.packet.GenshinPacket;
+import emu.grasscutter.net.packet.PacketOpcodes;
+import emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp;
+
+public class PacketNpcTalkRsp extends GenshinPacket {
+ public PacketNpcTalkRsp(int npcEntityId, int curTalkId, int entityId) {
+ super(PacketOpcodes.NpcTalkRsp);
+
+ NpcTalkRsp p = NpcTalkRsp.newBuilder()
+ .setNpcEntityId(npcEntityId)
+ .setCurTalkId(curTalkId)
+ .setEntityId(entityId)
+ .build();
+
+ this.setData(p);
+ }
+}