From e2543483ffd2acef6b08e1378ebe5d12c0168398 Mon Sep 17 00:00:00 2001 From: Miyucchi Date: Sat, 23 Apr 2022 03:22:32 +0200 Subject: [PATCH 1/2] Profile set birthday feature --- .../emu/grasscutter/game/GenshinPlayer.java | 16 +- .../game/player/PlayerBirthday.java | 68 ++ .../net/proto/BirthdayOuterClass.java | 10 +- .../proto/SetPlayerBirthdayReqOuterClass.java | 674 ++++++++++++++++++ .../proto/SetPlayerBirthdayRspOuterClass.java | 674 ++++++++++++++++++ .../recv/HandlerSetPlayerBirthdayReq.java | 38 + .../send/PacketSetPlayerBirthdayRsp.java | 22 + 7 files changed, 1497 insertions(+), 5 deletions(-) create mode 100644 src/main/java/emu/grasscutter/game/player/PlayerBirthday.java create mode 100644 src/main/java/emu/grasscutter/net/proto/SetPlayerBirthdayReqOuterClass.java create mode 100644 src/main/java/emu/grasscutter/net/proto/SetPlayerBirthdayRspOuterClass.java create mode 100644 src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerBirthdayReq.java create mode 100644 src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerBirthdayRsp.java diff --git a/src/main/java/emu/grasscutter/game/GenshinPlayer.java b/src/main/java/emu/grasscutter/game/GenshinPlayer.java index 44f960198..5a8b96748 100644 --- a/src/main/java/emu/grasscutter/game/GenshinPlayer.java +++ b/src/main/java/emu/grasscutter/game/GenshinPlayer.java @@ -18,6 +18,7 @@ import emu.grasscutter.game.friends.PlayerProfile; import emu.grasscutter.game.gacha.PlayerGachaInfo; import emu.grasscutter.game.inventory.GenshinItem; import emu.grasscutter.game.inventory.Inventory; +import emu.grasscutter.game.player.PlayerBirthday; import emu.grasscutter.game.props.ActionReason; import emu.grasscutter.game.props.PlayerProperty; import emu.grasscutter.net.packet.GenshinPacket; @@ -73,6 +74,7 @@ public class GenshinPlayer { private int nameCardId = 210001; private Position pos; private Position rotation; + private PlayerBirthday birthday; private Map properties; private Set nameCardList; @@ -139,6 +141,8 @@ public class GenshinPlayer { this.combatInvokeHandler = new InvokeHandler(PacketCombatInvocationsNotify.class); this.abilityInvokeHandler = new InvokeHandler(PacketAbilityInvocationsNotify.class); this.clientAbilityInitFinishHandler = new InvokeHandler(PacketClientAbilityInitFinishNotify.class); + + this.birthday = new PlayerBirthday(); } // On player creation @@ -150,6 +154,7 @@ public class GenshinPlayer { this.nickname = "Traveler"; this.signature = ""; this.teamManager = new TeamManager(this); + this.birthday = new PlayerBirthday(); this.setProperty(PlayerProperty.PROP_PLAYER_LEVEL, 1); this.setProperty(PlayerProperty.PROP_IS_SPRING_AUTO_USE, 1); this.setProperty(PlayerProperty.PROP_SPRING_AUTO_USE_PERCENT, 50); @@ -642,6 +647,15 @@ public class GenshinPlayer { return onlineInfo.build(); } + public PlayerBirthday getBirthday(){ + return this.birthday; + } + + public void setBirthday(int d, int m) { + this.birthday = new PlayerBirthday(d, m); + this.updateProfile(); + } + public SocialDetail.Builder getSocialDetail() { SocialDetail.Builder social = SocialDetail.newBuilder() .setUid(this.getUid()) @@ -649,7 +663,7 @@ public class GenshinPlayer { .setNickname(this.getNickname()) .setSignature(this.getSignature()) .setLevel(this.getLevel()) - .setBirthday(Birthday.newBuilder()) + .setBirthday(this.getBirthday().getFilledProtoWhenNotEmpty()) .setWorldLevel(this.getWorldLevel()) .setUnk1(1) .setUnk3(1) diff --git a/src/main/java/emu/grasscutter/game/player/PlayerBirthday.java b/src/main/java/emu/grasscutter/game/player/PlayerBirthday.java new file mode 100644 index 000000000..733f58ee5 --- /dev/null +++ b/src/main/java/emu/grasscutter/game/player/PlayerBirthday.java @@ -0,0 +1,68 @@ +package emu.grasscutter.game.player; + +import emu.grasscutter.net.proto.BirthdayOuterClass.Birthday; + +public class PlayerBirthday { + private int day; + private int month; + + public PlayerBirthday(){ + this.day = 0; + this.month = 0; + } + + public PlayerBirthday(int day, int month){ + this.day = day; + this.month = month; + } + + public PlayerBirthday set(PlayerBirthday birth){ + this.day = birth.day; + this.month = birth.month; + + return this; + } + + public PlayerBirthday set(int d, int m){ + this.day = d; + this.month = m; + + return this; + } + + public PlayerBirthday setDay(int value){ + this.day = value; + return this; + } + + public PlayerBirthday setMonth(int value){ + this.month = value; + return this; + } + + public int getDay(){ + return this.day; + } + + public int getMonth(){ + return this.month; + } + + public Birthday toProto(){ + return Birthday.newBuilder() + .setDay(this.getDay()) + .setMonth(this.getMonth()) + .build(); + } + + public Birthday.Builder getFilledProtoWhenNotEmpty(){ + if(this.getDay() > 0) + { + return Birthday.newBuilder() + .setDay(this.getDay()) + .setMonth(this.getMonth()); + } + + return Birthday.newBuilder(); + } +} \ No newline at end of file diff --git a/src/main/java/emu/grasscutter/net/proto/BirthdayOuterClass.java b/src/main/java/emu/grasscutter/net/proto/BirthdayOuterClass.java index d06d120f7..e3af15e27 100644 --- a/src/main/java/emu/grasscutter/net/proto/BirthdayOuterClass.java +++ b/src/main/java/emu/grasscutter/net/proto/BirthdayOuterClass.java @@ -1,5 +1,5 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! -// source: Birthday.proto +// source: proto/Birthday.proto package emu.grasscutter.net.proto; @@ -96,6 +96,8 @@ public final class BirthdayOuterClass { } } 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); @@ -586,9 +588,9 @@ public final class BirthdayOuterClass { descriptor; static { java.lang.String[] descriptorData = { - "\n\016Birthday.proto\"&\n\010Birthday\022\r\n\005month\030\001 " + - "\001(\r\022\013\n\003day\030\002 \001(\rB\033\n\031emu.grasscutter.net." + - "protob\006proto3" + "\n\024proto/Birthday.proto\"&\n\010Birthday\022\r\n\005mo" + + "nth\030\001 \001(\r\022\013\n\003day\030\002 \001(\rB\033\n\031emu.grasscutte" + + "r.net.protob\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, diff --git a/src/main/java/emu/grasscutter/net/proto/SetPlayerBirthdayReqOuterClass.java b/src/main/java/emu/grasscutter/net/proto/SetPlayerBirthdayReqOuterClass.java new file mode 100644 index 000000000..d49e0f983 --- /dev/null +++ b/src/main/java/emu/grasscutter/net/proto/SetPlayerBirthdayReqOuterClass.java @@ -0,0 +1,674 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: proto/SetPlayerBirthdayReq.proto + +package emu.grasscutter.net.proto; + +public final class SetPlayerBirthdayReqOuterClass { + private SetPlayerBirthdayReqOuterClass() {} + 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 SetPlayerBirthdayReqOrBuilder extends + // @@protoc_insertion_point(interface_extends:SetPlayerBirthdayReq) + com.google.protobuf.MessageOrBuilder { + + /** + * .Birthday birth = 1; + * @return Whether the birth field is set. + */ + boolean hasBirth(); + /** + * .Birthday birth = 1; + * @return The birth. + */ + emu.grasscutter.net.proto.BirthdayOuterClass.Birthday getBirth(); + /** + * .Birthday birth = 1; + */ + emu.grasscutter.net.proto.BirthdayOuterClass.BirthdayOrBuilder getBirthOrBuilder(); + } + /** + * Protobuf type {@code SetPlayerBirthdayReq} + */ + public static final class SetPlayerBirthdayReq extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:SetPlayerBirthdayReq) + SetPlayerBirthdayReqOrBuilder { + private static final long serialVersionUID = 0L; + // Use SetPlayerBirthdayReq.newBuilder() to construct. + private SetPlayerBirthdayReq(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SetPlayerBirthdayReq() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new SetPlayerBirthdayReq(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private SetPlayerBirthdayReq( + 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 10: { + emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.Builder subBuilder = null; + if (birth_ != null) { + subBuilder = birth_.toBuilder(); + } + birth_ = input.readMessage(emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(birth_); + birth_ = subBuilder.buildPartial(); + } + + 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.SetPlayerBirthdayReqOuterClass.internal_static_SetPlayerBirthdayReq_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.internal_static_SetPlayerBirthdayReq_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq.class, emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq.Builder.class); + } + + public static final int BIRTH_FIELD_NUMBER = 1; + private emu.grasscutter.net.proto.BirthdayOuterClass.Birthday birth_; + /** + * .Birthday birth = 1; + * @return Whether the birth field is set. + */ + @java.lang.Override + public boolean hasBirth() { + return birth_ != null; + } + /** + * .Birthday birth = 1; + * @return The birth. + */ + @java.lang.Override + public emu.grasscutter.net.proto.BirthdayOuterClass.Birthday getBirth() { + return birth_ == null ? emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.getDefaultInstance() : birth_; + } + /** + * .Birthday birth = 1; + */ + @java.lang.Override + public emu.grasscutter.net.proto.BirthdayOuterClass.BirthdayOrBuilder getBirthOrBuilder() { + return getBirth(); + } + + 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 (birth_ != null) { + output.writeMessage(1, getBirth()); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (birth_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getBirth()); + } + 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.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq)) { + return super.equals(obj); + } + emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq other = (emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq) obj; + + if (hasBirth() != other.hasBirth()) return false; + if (hasBirth()) { + if (!getBirth() + .equals(other.getBirth())) 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(); + if (hasBirth()) { + hash = (37 * hash) + BIRTH_FIELD_NUMBER; + hash = (53 * hash) + getBirth().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq 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.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq 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.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq 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.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq 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.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq 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.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq 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 SetPlayerBirthdayReq} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:SetPlayerBirthdayReq) + emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReqOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.internal_static_SetPlayerBirthdayReq_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.internal_static_SetPlayerBirthdayReq_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq.class, emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq.Builder.class); + } + + // Construct using emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq.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(); + if (birthBuilder_ == null) { + birth_ = null; + } else { + birth_ = null; + birthBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.internal_static_SetPlayerBirthdayReq_descriptor; + } + + @java.lang.Override + public emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq getDefaultInstanceForType() { + return emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq.getDefaultInstance(); + } + + @java.lang.Override + public emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq build() { + emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq buildPartial() { + emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq result = new emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq(this); + if (birthBuilder_ == null) { + result.birth_ = birth_; + } else { + result.birth_ = birthBuilder_.build(); + } + 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.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq) { + return mergeFrom((emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq other) { + if (other == emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq.getDefaultInstance()) return this; + if (other.hasBirth()) { + mergeBirth(other.getBirth()); + } + 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.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private emu.grasscutter.net.proto.BirthdayOuterClass.Birthday birth_; + private com.google.protobuf.SingleFieldBuilderV3< + emu.grasscutter.net.proto.BirthdayOuterClass.Birthday, emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.Builder, emu.grasscutter.net.proto.BirthdayOuterClass.BirthdayOrBuilder> birthBuilder_; + /** + * .Birthday birth = 1; + * @return Whether the birth field is set. + */ + public boolean hasBirth() { + return birthBuilder_ != null || birth_ != null; + } + /** + * .Birthday birth = 1; + * @return The birth. + */ + public emu.grasscutter.net.proto.BirthdayOuterClass.Birthday getBirth() { + if (birthBuilder_ == null) { + return birth_ == null ? emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.getDefaultInstance() : birth_; + } else { + return birthBuilder_.getMessage(); + } + } + /** + * .Birthday birth = 1; + */ + public Builder setBirth(emu.grasscutter.net.proto.BirthdayOuterClass.Birthday value) { + if (birthBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + birth_ = value; + onChanged(); + } else { + birthBuilder_.setMessage(value); + } + + return this; + } + /** + * .Birthday birth = 1; + */ + public Builder setBirth( + emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.Builder builderForValue) { + if (birthBuilder_ == null) { + birth_ = builderForValue.build(); + onChanged(); + } else { + birthBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .Birthday birth = 1; + */ + public Builder mergeBirth(emu.grasscutter.net.proto.BirthdayOuterClass.Birthday value) { + if (birthBuilder_ == null) { + if (birth_ != null) { + birth_ = + emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.newBuilder(birth_).mergeFrom(value).buildPartial(); + } else { + birth_ = value; + } + onChanged(); + } else { + birthBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .Birthday birth = 1; + */ + public Builder clearBirth() { + if (birthBuilder_ == null) { + birth_ = null; + onChanged(); + } else { + birth_ = null; + birthBuilder_ = null; + } + + return this; + } + /** + * .Birthday birth = 1; + */ + public emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.Builder getBirthBuilder() { + + onChanged(); + return getBirthFieldBuilder().getBuilder(); + } + /** + * .Birthday birth = 1; + */ + public emu.grasscutter.net.proto.BirthdayOuterClass.BirthdayOrBuilder getBirthOrBuilder() { + if (birthBuilder_ != null) { + return birthBuilder_.getMessageOrBuilder(); + } else { + return birth_ == null ? + emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.getDefaultInstance() : birth_; + } + } + /** + * .Birthday birth = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + emu.grasscutter.net.proto.BirthdayOuterClass.Birthday, emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.Builder, emu.grasscutter.net.proto.BirthdayOuterClass.BirthdayOrBuilder> + getBirthFieldBuilder() { + if (birthBuilder_ == null) { + birthBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + emu.grasscutter.net.proto.BirthdayOuterClass.Birthday, emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.Builder, emu.grasscutter.net.proto.BirthdayOuterClass.BirthdayOrBuilder>( + getBirth(), + getParentForChildren(), + isClean()); + birth_ = null; + } + return birthBuilder_; + } + @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:SetPlayerBirthdayReq) + } + + // @@protoc_insertion_point(class_scope:SetPlayerBirthdayReq) + private static final emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq(); + } + + public static emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SetPlayerBirthdayReq parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new SetPlayerBirthdayReq(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.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_SetPlayerBirthdayReq_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_SetPlayerBirthdayReq_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 proto/SetPlayerBirthdayReq.proto\032\024prot" + + "o/Birthday.proto\"0\n\024SetPlayerBirthdayReq" + + "\022\030\n\005birth\030\001 \001(\0132\t.BirthdayB\033\n\031emu.grassc" + + "utter.net.protob\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + emu.grasscutter.net.proto.BirthdayOuterClass.getDescriptor(), + }); + internal_static_SetPlayerBirthdayReq_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_SetPlayerBirthdayReq_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_SetPlayerBirthdayReq_descriptor, + new java.lang.String[] { "Birth", }); + emu.grasscutter.net.proto.BirthdayOuterClass.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/src/main/java/emu/grasscutter/net/proto/SetPlayerBirthdayRspOuterClass.java b/src/main/java/emu/grasscutter/net/proto/SetPlayerBirthdayRspOuterClass.java new file mode 100644 index 000000000..acb24b8b2 --- /dev/null +++ b/src/main/java/emu/grasscutter/net/proto/SetPlayerBirthdayRspOuterClass.java @@ -0,0 +1,674 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: proto/SetPlayerBirthdayRsp.proto + +package emu.grasscutter.net.proto; + +public final class SetPlayerBirthdayRspOuterClass { + private SetPlayerBirthdayRspOuterClass() {} + 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 SetPlayerBirthdayRspOrBuilder extends + // @@protoc_insertion_point(interface_extends:SetPlayerBirthdayRsp) + com.google.protobuf.MessageOrBuilder { + + /** + * .Birthday birth = 1; + * @return Whether the birth field is set. + */ + boolean hasBirth(); + /** + * .Birthday birth = 1; + * @return The birth. + */ + emu.grasscutter.net.proto.BirthdayOuterClass.Birthday getBirth(); + /** + * .Birthday birth = 1; + */ + emu.grasscutter.net.proto.BirthdayOuterClass.BirthdayOrBuilder getBirthOrBuilder(); + } + /** + * Protobuf type {@code SetPlayerBirthdayRsp} + */ + public static final class SetPlayerBirthdayRsp extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:SetPlayerBirthdayRsp) + SetPlayerBirthdayRspOrBuilder { + private static final long serialVersionUID = 0L; + // Use SetPlayerBirthdayRsp.newBuilder() to construct. + private SetPlayerBirthdayRsp(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SetPlayerBirthdayRsp() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new SetPlayerBirthdayRsp(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private SetPlayerBirthdayRsp( + 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 10: { + emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.Builder subBuilder = null; + if (birth_ != null) { + subBuilder = birth_.toBuilder(); + } + birth_ = input.readMessage(emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(birth_); + birth_ = subBuilder.buildPartial(); + } + + 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.SetPlayerBirthdayRspOuterClass.internal_static_SetPlayerBirthdayRsp_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.internal_static_SetPlayerBirthdayRsp_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp.class, emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp.Builder.class); + } + + public static final int BIRTH_FIELD_NUMBER = 1; + private emu.grasscutter.net.proto.BirthdayOuterClass.Birthday birth_; + /** + * .Birthday birth = 1; + * @return Whether the birth field is set. + */ + @java.lang.Override + public boolean hasBirth() { + return birth_ != null; + } + /** + * .Birthday birth = 1; + * @return The birth. + */ + @java.lang.Override + public emu.grasscutter.net.proto.BirthdayOuterClass.Birthday getBirth() { + return birth_ == null ? emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.getDefaultInstance() : birth_; + } + /** + * .Birthday birth = 1; + */ + @java.lang.Override + public emu.grasscutter.net.proto.BirthdayOuterClass.BirthdayOrBuilder getBirthOrBuilder() { + return getBirth(); + } + + 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 (birth_ != null) { + output.writeMessage(1, getBirth()); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (birth_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getBirth()); + } + 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.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp)) { + return super.equals(obj); + } + emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp other = (emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp) obj; + + if (hasBirth() != other.hasBirth()) return false; + if (hasBirth()) { + if (!getBirth() + .equals(other.getBirth())) 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(); + if (hasBirth()) { + hash = (37 * hash) + BIRTH_FIELD_NUMBER; + hash = (53 * hash) + getBirth().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp 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.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp 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.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp 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.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp 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.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp 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.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp 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 SetPlayerBirthdayRsp} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:SetPlayerBirthdayRsp) + emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRspOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.internal_static_SetPlayerBirthdayRsp_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.internal_static_SetPlayerBirthdayRsp_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp.class, emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp.Builder.class); + } + + // Construct using emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp.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(); + if (birthBuilder_ == null) { + birth_ = null; + } else { + birth_ = null; + birthBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.internal_static_SetPlayerBirthdayRsp_descriptor; + } + + @java.lang.Override + public emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp getDefaultInstanceForType() { + return emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp.getDefaultInstance(); + } + + @java.lang.Override + public emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp build() { + emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp buildPartial() { + emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp result = new emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp(this); + if (birthBuilder_ == null) { + result.birth_ = birth_; + } else { + result.birth_ = birthBuilder_.build(); + } + 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.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp) { + return mergeFrom((emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp other) { + if (other == emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp.getDefaultInstance()) return this; + if (other.hasBirth()) { + mergeBirth(other.getBirth()); + } + 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.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private emu.grasscutter.net.proto.BirthdayOuterClass.Birthday birth_; + private com.google.protobuf.SingleFieldBuilderV3< + emu.grasscutter.net.proto.BirthdayOuterClass.Birthday, emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.Builder, emu.grasscutter.net.proto.BirthdayOuterClass.BirthdayOrBuilder> birthBuilder_; + /** + * .Birthday birth = 1; + * @return Whether the birth field is set. + */ + public boolean hasBirth() { + return birthBuilder_ != null || birth_ != null; + } + /** + * .Birthday birth = 1; + * @return The birth. + */ + public emu.grasscutter.net.proto.BirthdayOuterClass.Birthday getBirth() { + if (birthBuilder_ == null) { + return birth_ == null ? emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.getDefaultInstance() : birth_; + } else { + return birthBuilder_.getMessage(); + } + } + /** + * .Birthday birth = 1; + */ + public Builder setBirth(emu.grasscutter.net.proto.BirthdayOuterClass.Birthday value) { + if (birthBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + birth_ = value; + onChanged(); + } else { + birthBuilder_.setMessage(value); + } + + return this; + } + /** + * .Birthday birth = 1; + */ + public Builder setBirth( + emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.Builder builderForValue) { + if (birthBuilder_ == null) { + birth_ = builderForValue.build(); + onChanged(); + } else { + birthBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .Birthday birth = 1; + */ + public Builder mergeBirth(emu.grasscutter.net.proto.BirthdayOuterClass.Birthday value) { + if (birthBuilder_ == null) { + if (birth_ != null) { + birth_ = + emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.newBuilder(birth_).mergeFrom(value).buildPartial(); + } else { + birth_ = value; + } + onChanged(); + } else { + birthBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .Birthday birth = 1; + */ + public Builder clearBirth() { + if (birthBuilder_ == null) { + birth_ = null; + onChanged(); + } else { + birth_ = null; + birthBuilder_ = null; + } + + return this; + } + /** + * .Birthday birth = 1; + */ + public emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.Builder getBirthBuilder() { + + onChanged(); + return getBirthFieldBuilder().getBuilder(); + } + /** + * .Birthday birth = 1; + */ + public emu.grasscutter.net.proto.BirthdayOuterClass.BirthdayOrBuilder getBirthOrBuilder() { + if (birthBuilder_ != null) { + return birthBuilder_.getMessageOrBuilder(); + } else { + return birth_ == null ? + emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.getDefaultInstance() : birth_; + } + } + /** + * .Birthday birth = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + emu.grasscutter.net.proto.BirthdayOuterClass.Birthday, emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.Builder, emu.grasscutter.net.proto.BirthdayOuterClass.BirthdayOrBuilder> + getBirthFieldBuilder() { + if (birthBuilder_ == null) { + birthBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + emu.grasscutter.net.proto.BirthdayOuterClass.Birthday, emu.grasscutter.net.proto.BirthdayOuterClass.Birthday.Builder, emu.grasscutter.net.proto.BirthdayOuterClass.BirthdayOrBuilder>( + getBirth(), + getParentForChildren(), + isClean()); + birth_ = null; + } + return birthBuilder_; + } + @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:SetPlayerBirthdayRsp) + } + + // @@protoc_insertion_point(class_scope:SetPlayerBirthdayRsp) + private static final emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp(); + } + + public static emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SetPlayerBirthdayRsp parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new SetPlayerBirthdayRsp(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.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_SetPlayerBirthdayRsp_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_SetPlayerBirthdayRsp_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 proto/SetPlayerBirthdayRsp.proto\032\024prot" + + "o/Birthday.proto\"0\n\024SetPlayerBirthdayRsp" + + "\022\030\n\005birth\030\001 \001(\0132\t.BirthdayB\033\n\031emu.grassc" + + "utter.net.protob\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + emu.grasscutter.net.proto.BirthdayOuterClass.getDescriptor(), + }); + internal_static_SetPlayerBirthdayRsp_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_SetPlayerBirthdayRsp_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_SetPlayerBirthdayRsp_descriptor, + new java.lang.String[] { "Birth", }); + emu.grasscutter.net.proto.BirthdayOuterClass.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerBirthdayReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerBirthdayReq.java new file mode 100644 index 000000000..0edb08f73 --- /dev/null +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerBirthdayReq.java @@ -0,0 +1,38 @@ +package emu.grasscutter.server.packet.recv; + +import emu.grasscutter.server.game.GameSession; +import emu.grasscutter.server.packet.send.PacketGetPlayerSocialDetailRsp; +import emu.grasscutter.server.packet.send.PacketSetPlayerBirthdayRsp; + +import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.packet.PacketHandler; + +import emu.grasscutter.net.proto.SocialDetailOuterClass.SocialDetail; +import emu.grasscutter.net.proto.SetPlayerBirthdayReqOuterClass.SetPlayerBirthdayReq; + +import com.google.gson.Gson; + +@Opcodes(PacketOpcodes.SetPlayerBirthdayReq) +public class HandlerSetPlayerBirthdayReq extends PacketHandler { + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + SetPlayerBirthdayReq req = SetPlayerBirthdayReq.parseFrom(payload); + + if(req.getBirth() != null && req.getBirth().getDay() > 0 && req.getBirth().getMonth() > 0) + { + int day = req.getBirth().getDay(); + int month = req.getBirth().getMonth(); + + // Update birthday value + session.getPlayer().setBirthday(day, month); + + // Save birthday month and day + session.getPlayer().save(); + SocialDetail.Builder detail = session.getPlayer().getSocialDetail(); + + session.send(new PacketSetPlayerBirthdayRsp(session.getPlayer())); + session.send(new PacketGetPlayerSocialDetailRsp(detail)); + } + } +} diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerBirthdayRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerBirthdayRsp.java new file mode 100644 index 000000000..acca25068 --- /dev/null +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerBirthdayRsp.java @@ -0,0 +1,22 @@ +package emu.grasscutter.server.packet.send; + +import emu.grasscutter.Grasscutter; +import emu.grasscutter.game.GenshinPlayer; +import emu.grasscutter.net.packet.GenshinPacket; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp; +import emu.grasscutter.net.proto.BirthdayOuterClass.Birthday; + +public class PacketSetPlayerBirthdayRsp extends GenshinPacket { + public PacketSetPlayerBirthdayRsp(GenshinPlayer player) { + super(PacketOpcodes.SetPlayerBirthdayRsp); + + SetPlayerBirthdayRsp proto = SetPlayerBirthdayRsp.newBuilder() + .setBirth(player.getBirthday().toProto()) + .build(); + + this.setData(proto); + + if(Grasscutter.getConfig().DebugMode == true) Grasscutter.getLogger().info("Sending packet"); + } +} From 6d53f2d6acf0a20ebe434dfa4a65d7d8e192299d Mon Sep 17 00:00:00 2001 From: Miyucchi Date: Sat, 23 Apr 2022 03:29:08 +0200 Subject: [PATCH 2/2] Feature: SetBirthdayDate --- .../server/packet/send/PacketSetPlayerBirthdayRsp.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerBirthdayRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerBirthdayRsp.java index acca25068..9b73b6b13 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerBirthdayRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerBirthdayRsp.java @@ -16,7 +16,5 @@ public class PacketSetPlayerBirthdayRsp extends GenshinPacket { .build(); this.setData(proto); - - if(Grasscutter.getConfig().DebugMode == true) Grasscutter.getLogger().info("Sending packet"); } }