From caf9521013c0fa590d4eca8a381a1a6b841befc0 Mon Sep 17 00:00:00 2001 From: hamusuke Date: Mon, 10 Apr 2023 09:20:12 +0900 Subject: [PATCH] feat: add ability to buy resin with primogems (#2104) * feat: add ability to buy resin with primogems * ResinManager#buy returns RetCode value --- .../net/proto/BuyResinReqOuterClass.java | 475 ++++++++++++++ .../net/proto/BuyResinRspOuterClass.java | 616 ++++++++++++++++++ .../proto/ResinChangeNotifyOuterClass.java | 172 +++-- .../game/managers/ResinManager.java | 30 +- .../emu/grasscutter/game/player/Player.java | 30 +- .../props/ItemUseAction/ItemUseAddItem.java | 3 +- .../packet/recv/HandlerBuyResinReq.java | 16 + .../server/packet/send/PacketBuyResinRsp.java | 18 + .../packet/send/PacketResinChangeNotify.java | 23 +- 9 files changed, 1265 insertions(+), 118 deletions(-) create mode 100644 src/generated/main/java/emu/grasscutter/net/proto/BuyResinReqOuterClass.java create mode 100644 src/generated/main/java/emu/grasscutter/net/proto/BuyResinRspOuterClass.java create mode 100644 src/main/java/emu/grasscutter/server/packet/recv/HandlerBuyResinReq.java create mode 100644 src/main/java/emu/grasscutter/server/packet/send/PacketBuyResinRsp.java diff --git a/src/generated/main/java/emu/grasscutter/net/proto/BuyResinReqOuterClass.java b/src/generated/main/java/emu/grasscutter/net/proto/BuyResinReqOuterClass.java new file mode 100644 index 000000000..69be718d5 --- /dev/null +++ b/src/generated/main/java/emu/grasscutter/net/proto/BuyResinReqOuterClass.java @@ -0,0 +1,475 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: BuyResinReq.proto + +package emu.grasscutter.net.proto; + +public final class BuyResinReqOuterClass { + private BuyResinReqOuterClass() {} + 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 BuyResinReqOrBuilder extends + // @@protoc_insertion_point(interface_extends:BuyResinReq) + com.google.protobuf.MessageOrBuilder { + } + /** + *
+   * Name: NIBFJEFHMIM
+   * CmdId: 630
+   * 
+ * + * Protobuf type {@code BuyResinReq} + */ + public static final class BuyResinReq extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:BuyResinReq) + BuyResinReqOrBuilder { + private static final long serialVersionUID = 0L; + // Use BuyResinReq.newBuilder() to construct. + private BuyResinReq(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private BuyResinReq() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new BuyResinReq(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private BuyResinReq( + 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; + 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 { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.BuyResinReqOuterClass.internal_static_BuyResinReq_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.BuyResinReqOuterClass.internal_static_BuyResinReq_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq.class, emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq.Builder.class); + } + + 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 { + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + 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.BuyResinReqOuterClass.BuyResinReq)) { + return super.equals(obj); + } + emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq other = (emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq) obj; + + 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 = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq 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.BuyResinReqOuterClass.BuyResinReq parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq 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.BuyResinReqOuterClass.BuyResinReq parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq 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.BuyResinReqOuterClass.BuyResinReq parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq 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.BuyResinReqOuterClass.BuyResinReq parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq 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.BuyResinReqOuterClass.BuyResinReq 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; + } + /** + *
+     * Name: NIBFJEFHMIM
+     * CmdId: 630
+     * 
+ * + * Protobuf type {@code BuyResinReq} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:BuyResinReq) + emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReqOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.BuyResinReqOuterClass.internal_static_BuyResinReq_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.BuyResinReqOuterClass.internal_static_BuyResinReq_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq.class, emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq.Builder.class); + } + + // Construct using emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq.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(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return emu.grasscutter.net.proto.BuyResinReqOuterClass.internal_static_BuyResinReq_descriptor; + } + + @java.lang.Override + public emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq getDefaultInstanceForType() { + return emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq.getDefaultInstance(); + } + + @java.lang.Override + public emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq build() { + emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq buildPartial() { + emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq result = new emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq(this); + 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.BuyResinReqOuterClass.BuyResinReq) { + return mergeFrom((emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq other) { + if (other == emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq.getDefaultInstance()) return this; + 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.BuyResinReqOuterClass.BuyResinReq parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + 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:BuyResinReq) + } + + // @@protoc_insertion_point(class_scope:BuyResinReq) + private static final emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq(); + } + + public static emu.grasscutter.net.proto.BuyResinReqOuterClass.BuyResinReq getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public BuyResinReq parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new BuyResinReq(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.BuyResinReqOuterClass.BuyResinReq getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_BuyResinReq_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_BuyResinReq_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\021BuyResinReq.proto\"\r\n\013BuyResinReqB\033\n\031em" + + "u.grasscutter.net.protob\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + }); + internal_static_BuyResinReq_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_BuyResinReq_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_BuyResinReq_descriptor, + new java.lang.String[] { }); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/src/generated/main/java/emu/grasscutter/net/proto/BuyResinRspOuterClass.java b/src/generated/main/java/emu/grasscutter/net/proto/BuyResinRspOuterClass.java new file mode 100644 index 000000000..c1f287c2b --- /dev/null +++ b/src/generated/main/java/emu/grasscutter/net/proto/BuyResinRspOuterClass.java @@ -0,0 +1,616 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: BuyResinRsp.proto + +package emu.grasscutter.net.proto; + +public final class BuyResinRspOuterClass { + private BuyResinRspOuterClass() {} + 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 BuyResinRspOrBuilder extends + // @@protoc_insertion_point(interface_extends:BuyResinRsp) + com.google.protobuf.MessageOrBuilder { + + /** + * int32 retcode = 9; + * @return The retcode. + */ + int getRetcode(); + + /** + * uint32 cur_value = 3; + * @return The curValue. + */ + int getCurValue(); + } + /** + *
+   * Name: PFLBPGOHFKJ
+   * CmdId: 687
+   * 
+ * + * Protobuf type {@code BuyResinRsp} + */ + public static final class BuyResinRsp extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:BuyResinRsp) + BuyResinRspOrBuilder { + private static final long serialVersionUID = 0L; + // Use BuyResinRsp.newBuilder() to construct. + private BuyResinRsp(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private BuyResinRsp() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new BuyResinRsp(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private BuyResinRsp( + 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 24: { + + curValue_ = input.readUInt32(); + break; + } + case 72: { + + retcode_ = input.readInt32(); + 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 { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.BuyResinRspOuterClass.internal_static_BuyResinRsp_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.BuyResinRspOuterClass.internal_static_BuyResinRsp_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp.class, emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp.Builder.class); + } + + public static final int RETCODE_FIELD_NUMBER = 9; + private int retcode_; + /** + * int32 retcode = 9; + * @return The retcode. + */ + @java.lang.Override + public int getRetcode() { + return retcode_; + } + + public static final int CUR_VALUE_FIELD_NUMBER = 3; + private int curValue_; + /** + * uint32 cur_value = 3; + * @return The curValue. + */ + @java.lang.Override + public int getCurValue() { + return curValue_; + } + + 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 (curValue_ != 0) { + output.writeUInt32(3, curValue_); + } + if (retcode_ != 0) { + output.writeInt32(9, retcode_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (curValue_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(3, curValue_); + } + if (retcode_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(9, retcode_); + } + 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.BuyResinRspOuterClass.BuyResinRsp)) { + return super.equals(obj); + } + emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp other = (emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp) obj; + + if (getRetcode() + != other.getRetcode()) return false; + if (getCurValue() + != other.getCurValue()) 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) + CUR_VALUE_FIELD_NUMBER; + hash = (53 * hash) + getCurValue(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp 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.BuyResinRspOuterClass.BuyResinRsp parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp 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.BuyResinRspOuterClass.BuyResinRsp parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp 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.BuyResinRspOuterClass.BuyResinRsp parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp 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.BuyResinRspOuterClass.BuyResinRsp parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp 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.BuyResinRspOuterClass.BuyResinRsp 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; + } + /** + *
+     * Name: PFLBPGOHFKJ
+     * CmdId: 687
+     * 
+ * + * Protobuf type {@code BuyResinRsp} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:BuyResinRsp) + emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRspOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.BuyResinRspOuterClass.internal_static_BuyResinRsp_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.BuyResinRspOuterClass.internal_static_BuyResinRsp_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp.class, emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp.Builder.class); + } + + // Construct using emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp.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; + + curValue_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return emu.grasscutter.net.proto.BuyResinRspOuterClass.internal_static_BuyResinRsp_descriptor; + } + + @java.lang.Override + public emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp getDefaultInstanceForType() { + return emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp.getDefaultInstance(); + } + + @java.lang.Override + public emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp build() { + emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp buildPartial() { + emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp result = new emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp(this); + result.retcode_ = retcode_; + result.curValue_ = curValue_; + 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.BuyResinRspOuterClass.BuyResinRsp) { + return mergeFrom((emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp other) { + if (other == emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp.getDefaultInstance()) return this; + if (other.getRetcode() != 0) { + setRetcode(other.getRetcode()); + } + if (other.getCurValue() != 0) { + setCurValue(other.getCurValue()); + } + 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.BuyResinRspOuterClass.BuyResinRsp parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int retcode_ ; + /** + * int32 retcode = 9; + * @return The retcode. + */ + @java.lang.Override + public int getRetcode() { + return retcode_; + } + /** + * int32 retcode = 9; + * @param value The retcode to set. + * @return This builder for chaining. + */ + public Builder setRetcode(int value) { + + retcode_ = value; + onChanged(); + return this; + } + /** + * int32 retcode = 9; + * @return This builder for chaining. + */ + public Builder clearRetcode() { + + retcode_ = 0; + onChanged(); + return this; + } + + private int curValue_ ; + /** + * uint32 cur_value = 3; + * @return The curValue. + */ + @java.lang.Override + public int getCurValue() { + return curValue_; + } + /** + * uint32 cur_value = 3; + * @param value The curValue to set. + * @return This builder for chaining. + */ + public Builder setCurValue(int value) { + + curValue_ = value; + onChanged(); + return this; + } + /** + * uint32 cur_value = 3; + * @return This builder for chaining. + */ + public Builder clearCurValue() { + + curValue_ = 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:BuyResinRsp) + } + + // @@protoc_insertion_point(class_scope:BuyResinRsp) + private static final emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp(); + } + + public static emu.grasscutter.net.proto.BuyResinRspOuterClass.BuyResinRsp getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public BuyResinRsp parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new BuyResinRsp(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.BuyResinRspOuterClass.BuyResinRsp getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_BuyResinRsp_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_BuyResinRsp_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\021BuyResinRsp.proto\"1\n\013BuyResinRsp\022\017\n\007re" + + "tcode\030\t \001(\005\022\021\n\tcur_value\030\003 \001(\rB\033\n\031emu.gr" + + "asscutter.net.protob\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + }); + internal_static_BuyResinRsp_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_BuyResinRsp_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_BuyResinRsp_descriptor, + new java.lang.String[] { "Retcode", "CurValue", }); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/src/generated/main/java/emu/grasscutter/net/proto/ResinChangeNotifyOuterClass.java b/src/generated/main/java/emu/grasscutter/net/proto/ResinChangeNotifyOuterClass.java index 0b21cec5f..f76117abb 100644 --- a/src/generated/main/java/emu/grasscutter/net/proto/ResinChangeNotifyOuterClass.java +++ b/src/generated/main/java/emu/grasscutter/net/proto/ResinChangeNotifyOuterClass.java @@ -25,23 +25,18 @@ public final class ResinChangeNotifyOuterClass { int getCurValue(); /** - * uint32 curBuyCount = 13; - * @return The curBuyCount. - */ - int getCurBuyCount(); - - /** - * uint32 nextAddTimestamp = 12; + * uint32 next_add_timestamp = 13; * @return The nextAddTimestamp. */ int getNextAddTimestamp(); + + /** + * uint32 cur_buy_count = 12; + * @return The curBuyCount. + */ + int getCurBuyCount(); } /** - *
-   * Name: IBIMGHOHNDK
-   * CmdId: 649
-   * 
- * * Protobuf type {@code ResinChangeNotify} */ public static final class ResinChangeNotify extends @@ -88,12 +83,12 @@ public final class ResinChangeNotifyOuterClass { break; case 96: { - nextAddTimestamp_ = input.readUInt32(); + curBuyCount_ = input.readUInt32(); break; } case 104: { - curBuyCount_ = input.readUInt32(); + nextAddTimestamp_ = input.readUInt32(); break; } case 112: { @@ -144,21 +139,10 @@ public final class ResinChangeNotifyOuterClass { return curValue_; } - public static final int CURBUYCOUNT_FIELD_NUMBER = 13; - private int curBuyCount_; - /** - * uint32 curBuyCount = 13; - * @return The curBuyCount. - */ - @java.lang.Override - public int getCurBuyCount() { - return curBuyCount_; - } - - public static final int NEXTADDTIMESTAMP_FIELD_NUMBER = 12; + public static final int NEXT_ADD_TIMESTAMP_FIELD_NUMBER = 13; private int nextAddTimestamp_; /** - * uint32 nextAddTimestamp = 12; + * uint32 next_add_timestamp = 13; * @return The nextAddTimestamp. */ @java.lang.Override @@ -166,6 +150,17 @@ public final class ResinChangeNotifyOuterClass { return nextAddTimestamp_; } + public static final int CUR_BUY_COUNT_FIELD_NUMBER = 12; + private int curBuyCount_; + /** + * uint32 cur_buy_count = 12; + * @return The curBuyCount. + */ + @java.lang.Override + public int getCurBuyCount() { + return curBuyCount_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -180,11 +175,11 @@ public final class ResinChangeNotifyOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (nextAddTimestamp_ != 0) { - output.writeUInt32(12, nextAddTimestamp_); - } if (curBuyCount_ != 0) { - output.writeUInt32(13, curBuyCount_); + output.writeUInt32(12, curBuyCount_); + } + if (nextAddTimestamp_ != 0) { + output.writeUInt32(13, nextAddTimestamp_); } if (curValue_ != 0) { output.writeUInt32(14, curValue_); @@ -198,13 +193,13 @@ public final class ResinChangeNotifyOuterClass { if (size != -1) return size; size = 0; - if (nextAddTimestamp_ != 0) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(12, nextAddTimestamp_); - } if (curBuyCount_ != 0) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(13, curBuyCount_); + .computeUInt32Size(12, curBuyCount_); + } + if (nextAddTimestamp_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(13, nextAddTimestamp_); } if (curValue_ != 0) { size += com.google.protobuf.CodedOutputStream @@ -227,10 +222,10 @@ public final class ResinChangeNotifyOuterClass { if (getCurValue() != other.getCurValue()) return false; - if (getCurBuyCount() - != other.getCurBuyCount()) return false; if (getNextAddTimestamp() != other.getNextAddTimestamp()) return false; + if (getCurBuyCount() + != other.getCurBuyCount()) return false; if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -244,10 +239,10 @@ public final class ResinChangeNotifyOuterClass { hash = (19 * hash) + getDescriptor().hashCode(); hash = (37 * hash) + CUR_VALUE_FIELD_NUMBER; hash = (53 * hash) + getCurValue(); - hash = (37 * hash) + CURBUYCOUNT_FIELD_NUMBER; - hash = (53 * hash) + getCurBuyCount(); - hash = (37 * hash) + NEXTADDTIMESTAMP_FIELD_NUMBER; + hash = (37 * hash) + NEXT_ADD_TIMESTAMP_FIELD_NUMBER; hash = (53 * hash) + getNextAddTimestamp(); + hash = (37 * hash) + CUR_BUY_COUNT_FIELD_NUMBER; + hash = (53 * hash) + getCurBuyCount(); hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -344,11 +339,6 @@ public final class ResinChangeNotifyOuterClass { return builder; } /** - *
-     * Name: IBIMGHOHNDK
-     * CmdId: 649
-     * 
- * * Protobuf type {@code ResinChangeNotify} */ public static final class Builder extends @@ -388,10 +378,10 @@ public final class ResinChangeNotifyOuterClass { super.clear(); curValue_ = 0; - curBuyCount_ = 0; - nextAddTimestamp_ = 0; + curBuyCount_ = 0; + return this; } @@ -419,8 +409,8 @@ public final class ResinChangeNotifyOuterClass { public emu.grasscutter.net.proto.ResinChangeNotifyOuterClass.ResinChangeNotify buildPartial() { emu.grasscutter.net.proto.ResinChangeNotifyOuterClass.ResinChangeNotify result = new emu.grasscutter.net.proto.ResinChangeNotifyOuterClass.ResinChangeNotify(this); result.curValue_ = curValue_; - result.curBuyCount_ = curBuyCount_; result.nextAddTimestamp_ = nextAddTimestamp_; + result.curBuyCount_ = curBuyCount_; onBuilt(); return result; } @@ -472,12 +462,12 @@ public final class ResinChangeNotifyOuterClass { if (other.getCurValue() != 0) { setCurValue(other.getCurValue()); } - if (other.getCurBuyCount() != 0) { - setCurBuyCount(other.getCurBuyCount()); - } if (other.getNextAddTimestamp() != 0) { setNextAddTimestamp(other.getNextAddTimestamp()); } + if (other.getCurBuyCount() != 0) { + setCurBuyCount(other.getCurBuyCount()); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -538,40 +528,9 @@ public final class ResinChangeNotifyOuterClass { return this; } - private int curBuyCount_ ; - /** - * uint32 curBuyCount = 13; - * @return The curBuyCount. - */ - @java.lang.Override - public int getCurBuyCount() { - return curBuyCount_; - } - /** - * uint32 curBuyCount = 13; - * @param value The curBuyCount to set. - * @return This builder for chaining. - */ - public Builder setCurBuyCount(int value) { - - curBuyCount_ = value; - onChanged(); - return this; - } - /** - * uint32 curBuyCount = 13; - * @return This builder for chaining. - */ - public Builder clearCurBuyCount() { - - curBuyCount_ = 0; - onChanged(); - return this; - } - private int nextAddTimestamp_ ; /** - * uint32 nextAddTimestamp = 12; + * uint32 next_add_timestamp = 13; * @return The nextAddTimestamp. */ @java.lang.Override @@ -579,7 +538,7 @@ public final class ResinChangeNotifyOuterClass { return nextAddTimestamp_; } /** - * uint32 nextAddTimestamp = 12; + * uint32 next_add_timestamp = 13; * @param value The nextAddTimestamp to set. * @return This builder for chaining. */ @@ -590,7 +549,7 @@ public final class ResinChangeNotifyOuterClass { return this; } /** - * uint32 nextAddTimestamp = 12; + * uint32 next_add_timestamp = 13; * @return This builder for chaining. */ public Builder clearNextAddTimestamp() { @@ -599,6 +558,37 @@ public final class ResinChangeNotifyOuterClass { onChanged(); return this; } + + private int curBuyCount_ ; + /** + * uint32 cur_buy_count = 12; + * @return The curBuyCount. + */ + @java.lang.Override + public int getCurBuyCount() { + return curBuyCount_; + } + /** + * uint32 cur_buy_count = 12; + * @param value The curBuyCount to set. + * @return This builder for chaining. + */ + public Builder setCurBuyCount(int value) { + + curBuyCount_ = value; + onChanged(); + return this; + } + /** + * uint32 cur_buy_count = 12; + * @return This builder for chaining. + */ + public Builder clearCurBuyCount() { + + curBuyCount_ = 0; + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -666,10 +656,10 @@ public final class ResinChangeNotifyOuterClass { descriptor; static { java.lang.String[] descriptorData = { - "\n\027ResinChangeNotify.proto\"U\n\021ResinChange" + - "Notify\022\021\n\tcur_value\030\016 \001(\r\022\023\n\013curBuyCount" + - "\030\r \001(\r\022\030\n\020nextAddTimestamp\030\014 \001(\rB\033\n\031emu." + - "grasscutter.net.protob\006proto3" + "\n\027ResinChangeNotify.proto\"Y\n\021ResinChange" + + "Notify\022\021\n\tcur_value\030\016 \001(\r\022\032\n\022next_add_ti" + + "mestamp\030\r \001(\r\022\025\n\rcur_buy_count\030\014 \001(\rB\033\n\031" + + "emu.grasscutter.net.protob\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -680,7 +670,7 @@ public final class ResinChangeNotifyOuterClass { internal_static_ResinChangeNotify_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_ResinChangeNotify_descriptor, - new java.lang.String[] { "CurValue", "CurBuyCount", "NextAddTimestamp", }); + new java.lang.String[] { "CurValue", "NextAddTimestamp", "CurBuyCount", }); } // @@protoc_insertion_point(outer_class_scope) diff --git a/src/main/java/emu/grasscutter/game/managers/ResinManager.java b/src/main/java/emu/grasscutter/game/managers/ResinManager.java index d6056571e..6e865b525 100644 --- a/src/main/java/emu/grasscutter/game/managers/ResinManager.java +++ b/src/main/java/emu/grasscutter/game/managers/ResinManager.java @@ -1,16 +1,22 @@ package emu.grasscutter.game.managers; -import static emu.grasscutter.config.Configuration.GAME_OPTIONS; - +import emu.grasscutter.game.inventory.GameItem; import emu.grasscutter.game.player.BasePlayerManager; import emu.grasscutter.game.player.Player; +import emu.grasscutter.game.props.ActionReason; import emu.grasscutter.game.props.PlayerProperty; import emu.grasscutter.game.props.WatcherTriggerType; -import emu.grasscutter.server.packet.send.PacketPlayerPropNotify; +import emu.grasscutter.net.proto.RetcodeOuterClass; +import emu.grasscutter.server.packet.send.PacketItemAddHintNotify; import emu.grasscutter.server.packet.send.PacketResinChangeNotify; import emu.grasscutter.utils.Utils; +import static emu.grasscutter.config.Configuration.GAME_OPTIONS; + public class ResinManager extends BasePlayerManager { + public static final int MAX_RESIN_BUYING_COUNT = 6; + public static final int AMOUNT_TO_ADD = 60; + public static final int[] HCOIN_NUM_TO_BUY_RESIN = new int[]{50, 100, 100, 150, 200, 200}; public ResinManager(Player player) { super(player); @@ -146,4 +152,22 @@ public class ResinManager extends BasePlayerManager { // Send initial notifications on logon. this.player.sendPacket(new PacketResinChangeNotify(this.player)); } + + public int buy() { + if (this.player.getResinBuyCount() >= MAX_RESIN_BUYING_COUNT) { + return RetcodeOuterClass.Retcode.RET_RESIN_BOUGHT_COUNT_EXCEEDED_VALUE; + } + + var res = this.player.getInventory().payItem(201, HCOIN_NUM_TO_BUY_RESIN[this.player.getResinBuyCount()]); + if (!res) { + return RetcodeOuterClass.Retcode.RET_HCOIN_NOT_ENOUGH_VALUE; + } + + this.player.setResinBuyCount(this.player.getResinBuyCount() + 1); + this.player.setProperty(PlayerProperty.PROP_PLAYER_WAIT_SUB_HCOIN, 0); + this.addResin(AMOUNT_TO_ADD); + this.player.sendPacket(new PacketItemAddHintNotify(new GameItem(106, AMOUNT_TO_ADD), ActionReason.BuyResin)); + + return 0; + } } diff --git a/src/main/java/emu/grasscutter/game/player/Player.java b/src/main/java/emu/grasscutter/game/player/Player.java index 1e504dd2d..0c7d91815 100644 --- a/src/main/java/emu/grasscutter/game/player/Player.java +++ b/src/main/java/emu/grasscutter/game/player/Player.java @@ -15,29 +15,30 @@ import emu.grasscutter.game.activity.ActivityManager; import emu.grasscutter.game.avatar.Avatar; import emu.grasscutter.game.avatar.AvatarStorage; import emu.grasscutter.game.battlepass.BattlePassManager; -import emu.grasscutter.game.entity.*; -import emu.grasscutter.game.home.GameHome; +import emu.grasscutter.game.entity.GameEntity; import emu.grasscutter.game.expedition.ExpeditionInfo; import emu.grasscutter.game.friends.FriendsList; import emu.grasscutter.game.friends.PlayerProfile; import emu.grasscutter.game.gacha.PlayerGachaInfo; +import emu.grasscutter.game.home.GameHome; import emu.grasscutter.game.inventory.GameItem; import emu.grasscutter.game.inventory.Inventory; import emu.grasscutter.game.mail.Mail; import emu.grasscutter.game.mail.MailHandler; -import emu.grasscutter.game.managers.cooking.ActiveCookCompoundData; -import emu.grasscutter.game.managers.cooking.CookingCompoundManager; -import emu.grasscutter.game.managers.cooking.CookingManager; import emu.grasscutter.game.managers.FurnitureManager; import emu.grasscutter.game.managers.ResinManager; import emu.grasscutter.game.managers.SatiationManager; +import emu.grasscutter.game.managers.SotSManager; +import emu.grasscutter.game.managers.cooking.ActiveCookCompoundData; +import emu.grasscutter.game.managers.cooking.CookingCompoundManager; +import emu.grasscutter.game.managers.cooking.CookingManager; import emu.grasscutter.game.managers.deforestation.DeforestationManager; import emu.grasscutter.game.managers.energy.EnergyManager; import emu.grasscutter.game.managers.forging.ActiveForgeData; import emu.grasscutter.game.managers.forging.ForgingManager; -import emu.grasscutter.game.managers.mapmark.*; +import emu.grasscutter.game.managers.mapmark.MapMark; +import emu.grasscutter.game.managers.mapmark.MapMarksManager; import emu.grasscutter.game.managers.stamina.StaminaManager; -import emu.grasscutter.game.managers.SotSManager; import emu.grasscutter.game.props.ActionReason; import emu.grasscutter.game.props.ClimateType; import emu.grasscutter.game.props.PlayerProperty; @@ -50,17 +51,20 @@ import emu.grasscutter.game.tower.TowerManager; import emu.grasscutter.game.world.Scene; import emu.grasscutter.game.world.World; import emu.grasscutter.net.packet.BasePacket; -import emu.grasscutter.net.proto.*; import emu.grasscutter.net.proto.AbilityInvokeEntryOuterClass.AbilityInvokeEntry; import emu.grasscutter.net.proto.AttackResultOuterClass.AttackResult; import emu.grasscutter.net.proto.CombatInvokeEntryOuterClass.CombatInvokeEntry; import emu.grasscutter.net.proto.GadgetInteractReqOuterClass.GadgetInteractReq; import emu.grasscutter.net.proto.MpSettingTypeOuterClass.MpSettingType; import emu.grasscutter.net.proto.OnlinePlayerInfoOuterClass.OnlinePlayerInfo; +import emu.grasscutter.net.proto.PlayerApplyEnterMpResultNotifyOuterClass; import emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo; +import emu.grasscutter.net.proto.PlayerWorldLocationInfoOuterClass; import emu.grasscutter.net.proto.ProfilePictureOuterClass.ProfilePicture; import emu.grasscutter.net.proto.PropChangeReasonOuterClass.PropChangeReason; +import emu.grasscutter.net.proto.ShowAvatarInfoOuterClass; import emu.grasscutter.net.proto.SocialDetailOuterClass.SocialDetail; +import emu.grasscutter.net.proto.SocialShowAvatarInfoOuterClass; import emu.grasscutter.scripts.data.SceneRegion; import emu.grasscutter.server.event.player.PlayerJoinEvent; import emu.grasscutter.server.event.player.PlayerQuitEvent; @@ -69,16 +73,14 @@ import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.game.GameSession.SessionState; import emu.grasscutter.server.packet.send.*; import emu.grasscutter.utils.DateHelper; -import emu.grasscutter.utils.Position; import emu.grasscutter.utils.MessageHandler; +import emu.grasscutter.utils.Position; import emu.grasscutter.utils.Utils; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import lombok.Getter; import lombok.Setter; -import static emu.grasscutter.config.Configuration.*; - import java.time.DayOfWeek; import java.time.Instant; import java.time.LocalDate; @@ -87,6 +89,8 @@ import java.util.*; import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.LinkedBlockingQueue; +import static emu.grasscutter.config.Configuration.GAME_OPTIONS; + @Entity(value = "players", useDiscriminator = false) public class Player { @Id private int id; @@ -199,6 +203,7 @@ public class Player { @Getter @Setter private long springLastUsed; private HashMap mapMarks; // Getter makes an empty hashmap - maybe do this elsewhere? @Getter @Setter private int nextResinRefresh; + @Getter @Setter private int resinBuyCount; @Getter @Setter private int lastDailyReset; @Getter private transient MpSettingType mpSetting = MpSettingType.MP_SETTING_TYPE_ENTER_AFTER_APPLY; // TODO @@ -1145,6 +1150,9 @@ public class Player { this.getBattlePassManager().resetWeeklyMissions(); } + // Reset resin-buying count. + this.setResinBuyCount(0); + // Done. Update last reset time. this.setLastDailyReset(currentTime); } diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddItem.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddItem.java index 9f5c7ad39..0d36d486f 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddItem.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddItem.java @@ -1,5 +1,6 @@ package emu.grasscutter.game.props.ItemUseAction; +import emu.grasscutter.game.props.ActionReason; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseAddItem extends ItemUseInt { @@ -19,6 +20,6 @@ public class ItemUseAddItem extends ItemUseInt { @Override public boolean useItem(UseItemParams params) { - return params.player.getInventory().addItem(this.i, this.count * params.count); + return params.player.getInventory().addItem(this.i, this.count * params.count, ActionReason.PlayerUseItem); } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerBuyResinReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerBuyResinReq.java new file mode 100644 index 000000000..13ada5de7 --- /dev/null +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerBuyResinReq.java @@ -0,0 +1,16 @@ +package emu.grasscutter.server.packet.recv; + +import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.server.game.GameSession; +import emu.grasscutter.server.packet.send.PacketBuyResinRsp; + +@Opcodes(PacketOpcodes.BuyResinReq) +public class HandlerBuyResinReq extends PacketHandler { + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + var player = session.getPlayer(); + session.send(new PacketBuyResinRsp(player, player.getResinManager().buy())); + } +} diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketBuyResinRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketBuyResinRsp.java new file mode 100644 index 000000000..07f8bba01 --- /dev/null +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketBuyResinRsp.java @@ -0,0 +1,18 @@ +package emu.grasscutter.server.packet.send; + +import emu.grasscutter.game.player.Player; +import emu.grasscutter.game.props.PlayerProperty; +import emu.grasscutter.net.packet.BasePacket; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.BuyResinRspOuterClass; + +public class PacketBuyResinRsp extends BasePacket { + public PacketBuyResinRsp(Player player, int ret) { + super(PacketOpcodes.BuyResinRsp); + + this.setData(BuyResinRspOuterClass.BuyResinRsp.newBuilder() + .setCurValue(player.getProperty(PlayerProperty.PROP_PLAYER_RESIN)) + .setRetcode(ret) + .build()); + } +} diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketResinChangeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketResinChangeNotify.java index b61c1ab0a..5f9b8bd92 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketResinChangeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketResinChangeNotify.java @@ -7,17 +7,16 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ResinChangeNotifyOuterClass.ResinChangeNotify; public class PacketResinChangeNotify extends BasePacket { - - public PacketResinChangeNotify(Player player) { - super(PacketOpcodes.ResinChangeNotify); - - ResinChangeNotify proto = ResinChangeNotify.newBuilder() - .setCurValue(player.getProperty(PlayerProperty.PROP_PLAYER_RESIN)) - .setNextAddTimestamp(player.getNextResinRefresh()) - .build(); - // ToDo: Add ability to buy resin with primogems, has to be included here. - - this.setData(proto); - } + public PacketResinChangeNotify(Player player) { + super(PacketOpcodes.ResinChangeNotify); + + ResinChangeNotify proto = ResinChangeNotify.newBuilder() + .setCurValue(player.getProperty(PlayerProperty.PROP_PLAYER_RESIN)) + .setNextAddTimestamp(player.getNextResinRefresh()) + .setCurBuyCount(player.getResinBuyCount()) + .build(); + + this.setData(proto); + } }