Merge branch 'unstable' into unstable-quests

# Conflicts:
#	.gitignore
#	src/generated/main/java/emu/grasscutter/net/proto/ABJDNCBDEKIOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AKFPAANICKGOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityActionGenerateElemBallOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityAppliedAbilityOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityAppliedModifierOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityAttachedModifierOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityControlBlockOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityEmbryoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityGadgetInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityIdentifierOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityInvocationsNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityInvokeArgumentOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityInvokeEntryHeadOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityInvokeEntryOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityMetaAddAbilityOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityMetaModifierChangeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityMetaModifierDurabilityChangeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityMetaReInitOverrideMapOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityMixinRecoverInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityScalarTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityScalarValueEntryOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilityStringOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AbilitySyncStateInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AchievementAllDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AchievementOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AchievementUpdateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ActivityInfoNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ActivityInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ActivityPushTipsDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ActivityPushTipsStateOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ActivityScheduleInfoNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ActivityScheduleInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ActivityShopSheetInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ActivityTakeWatcherRewardReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ActivityTakeWatcherRewardRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ActivityUpdateWatcherNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ActivityWatcherInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AddBackupAvatarTeamReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AddBackupAvatarTeamRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AddNoGachaAvatarCardNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AddNoGachaAvatarCardTransferItemOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AddQuestContentProgressReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AddQuestContentProgressRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AdjustTrackingInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AiSkillCdInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AiSyncInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AiThreatInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AkaFesDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AllWidgetDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AnchorPointDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AnimatorParameterValueInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AnimatorParameterValueInfoPairOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AnnounceDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AntiAddictNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ArenaChallengeActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ArenaChallengeMonsterLevelOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AskAddFriendNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AskAddFriendReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AskAddFriendRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AsterActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AsterLargeDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AsterLittleDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AsterLittleStageStateOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AsterMidCampInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AsterMidDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AsterProgressDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AttackHitEffectResultOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AttackResultOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarAddNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarChangeCostumeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarChangeCostumeReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarChangeCostumeRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarChangeElementTypeReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarChangeElementTypeRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarDelNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarDieAnimationEndReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarDieAnimationEndRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarEnterSceneInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarEquipAffixInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarEquipAffixStartNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarEquipChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarExcelInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarExpeditionAllDataReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarExpeditionAllDataRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarExpeditionCallBackReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarExpeditionCallBackRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarExpeditionDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarExpeditionGetRewardReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarExpeditionGetRewardRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarExpeditionInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarExpeditionStartReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarExpeditionStartRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarExpeditionStateOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarFetterDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarFetterInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarFetterLevelRewardReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarFetterLevelRewardRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarFightPropNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarFightPropUpdateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarFlycloakChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarFollowRouteNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarGainCostumeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarGainFlycloakNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarLifeStateChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarPromoteReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarPromoteRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarPropChangeReasonNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarPropNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarRenameInfoNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarRenameInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarSatiationDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarSatiationDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarSkillChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarSkillDepotChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarSkillInfoNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarSkillInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarSkillMaxChargeCountNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarSkillUpgradeReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarSkillUpgradeRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarTeamAllDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarTeamOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarTeamResonanceInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarTeamUpdateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarUnlockTalentNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarUpgradeReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarUpgradeRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarWearFlycloakReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/AvatarWearFlycloakRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BEAMFIKPMLEOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BackMyWorldRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BartenderActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BartenderLevelInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BartenderTaskInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BatchBuyGoodsReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BatchBuyGoodsRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BattlePassAllDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BattlePassCurScheduleUpdateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BattlePassCycleOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BattlePassMissionDelNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BattlePassMissionOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BattlePassMissionUpdateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BattlePassProductOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BattlePassRewardTagOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BattlePassRewardTakeOptionOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BattlePassScheduleOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BattlePassUnlockStatusOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BirthdayOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BlessingActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BlitzRushActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BlitzRushStageOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BlockInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BlossomBriefInfoNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BlossomBriefInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BlossomChestInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BonusActivityInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BonusActivityInfoReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BonusActivityInfoRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BonusOpActivityInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BossChestInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BounceConjuringActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BounceConjuringChapterInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BreakoutActionOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BreakoutBrickInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BreakoutElementReactionCounterOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BreakoutPhysicalObjectModifierOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BreakoutPhysicalObjectOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BreakoutSnapShotOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BreakoutSpawnPointOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BreakoutSyncConnectUidInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BreakoutVector2OuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BrickBreakerActivityStageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BrickBreakerDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BrickBreakerLevelInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BuoyantCombatDailyInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BuoyantCombatDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BuyBattlePassLevelReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BuyBattlePassLevelRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BuyGoodsParamOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BuyGoodsReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BuyGoodsRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BuyResinReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/BuyResinRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CFFFGFFKINKOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CKMJBOGJFMBOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CalcWeaponUpgradeReturnItemsReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CalcWeaponUpgradeReturnItemsRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CanUseSkillNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CancelFinishParentQuestNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CardProductRewardNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChallengeBriefOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChallengeDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChallengeFinishTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChangeAvatarReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChangeAvatarRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChangeEnergyReasonOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChangeGameTimeReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChangeGameTimeRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChangeHpReasonOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChangeMailStarNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChangeMpTeamAvatarReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChangeMpTeamAvatarRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChangeTeamNameReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChangeTeamNameRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChannelerSlabActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChannelerSlabCampOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChannelerSlabChallengeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChannelerSlabChallengeStageOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChannelerSlabOneoffDungeonOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChannellerSlabAssistInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChannellerSlabBuffInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChannellerSlabBuffSchemeInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChannellerSlabLoopDungeonInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChannellerSlabLoopDungeonResultInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChannellerSlabLoopDungeonStageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChapterStateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChapterStateOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CharAmusementAvatarInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CharAmusementDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CharAmusementStageDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChatEmojiCollectionDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChatInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CheckAddItemExceedLimitNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CheckUgcStateReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CheckUgcStateRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CheckUgcUpdateReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CheckUgcUpdateRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChessActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChildQuestOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChooseCurAvatarTeamReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ChooseCurAvatarTeamRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CityInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CityReputationQuestInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ClientAIStateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ClientAbilityChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ClientAbilityInitFinishNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ClientCollectorDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ClientGadgetInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ClientInputTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ClientLoadingCostumeVerificationNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ClientLockGameTimeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CloseCommonTipsNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ClosedItemNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CodexDataFullNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CodexDataUpdateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CodexTypeDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CodexTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CoinCollectDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CoinCollectLevelDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CoinCollectOperatorInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CoinCollectTeamAvatarInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CoinCollectTeamInfoDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CombatInvocationsNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CombatInvokeEntryOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CombatTypeArgumentOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CombineDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CombineFormulaDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CombineReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CombineRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CompoundBoostTakeStatusTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CompoundDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CompoundQueueDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CookDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CookRecipeDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CookRecipeDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CoopCgOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CoopChapterOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CoopPointOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CoopRewardOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CreateEntityInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CreateGadgetInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CreateVehicleReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CreateVehicleRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CrucibleActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CrucibleBattleUidInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CrystalLinkActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CrystalLinkAvatarInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CrystalLinkBuffInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CrystalLinkDungeonAvatarInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CrystalLinkDungeonSettleInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CrystalLinkLevelInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CrystalLinkTeamInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CurVehicleInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CustomCommonNodeInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CustomDungeonFinishTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CustomDungeonResultInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CustomGadgetTreeInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CutSceneBeginNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/CutSceneExtraParamOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DKFDACEPNALOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DailyDungeonEntryInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DailyTaskDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DailyTaskFilterCityReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DailyTaskFilterCityRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DailyTaskInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DailyTaskProgressNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DailyTaskUnlockedCitiesNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DataResVersionNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DealAddFriendReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DealAddFriendResultTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DealAddFriendRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DelBackupAvatarTeamReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DelBackupAvatarTeamRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DelMailReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DelMailRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DelTeamEntityNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DeleteFriendNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DeleteFriendReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DeleteFriendRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DeliveryActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DeshretObeliskGadgetInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DestroyMaterialReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DestroyMaterialRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DigActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DigMarkPointOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DoGachaReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DoGachaRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DoSetPlayerBornDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DragonSpineActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DragonSpineChapterInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DropHintNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DropItemReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DropItemRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DuelHeartDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DuelHeartLevelDifficultyInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DuelHeartLevelInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DungeonCandidateTeamChangeAvatarReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DungeonCandidateTeamChangeAvatarRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DungeonChallengeBeginNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DungeonChallengeFinishNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DungeonEnterPosInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DungeonEntryInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DungeonEntryInfoReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DungeonEntryInfoRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DungeonEntryPointInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DungeonPlayerDieNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DungeonPlayerDieReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DungeonPlayerDieRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DungeonSettleExhibitionInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DungeonSettleNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DungeonShowReminderNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DungeonSlipRevivePointActivateReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DungeonSlipRevivePointActivateRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DungeonWayPointActivateReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DungeonWayPointActivateRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/DungeonWayPointNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EchoShellDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EchoShellInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EffigyActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EffigyChallengeDungeonResultInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EffigyChallengeV2DetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EffigyChallengeV2LevelDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EffigyChallengeV2SettleInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EffigyDailyInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ElectroherculesBattleDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ElectroherculesBattleLevelInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ElectroherculesBattleStageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EndCameraSceneLookNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EnterSceneDoneReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EnterSceneDoneRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EnterScenePeerNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EnterSceneReadyReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EnterSceneReadyRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EnterTransPointRegionNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EnterTrialAvatarActivityDungeonReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EnterTrialAvatarActivityDungeonRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EnterTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EnterWorldAreaReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EnterWorldAreaRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EntityAbilityInvokeEntryOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EntityAiSyncNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EntityAuthorityInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EntityClientDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EntityClientExtraInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EntityEnvironmentInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EntityFightPropChangeReasonNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EntityFightPropUpdateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EntityMoveInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EntityRendererChangedInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EquipOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EquipParamOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EquipRoguelikeRuneReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EquipRoguelikeRuneRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EvtAiSyncCombatThreatInfoNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EvtAiSyncSkillCdNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EvtAnimatorParameterInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EvtAvatarLockChairReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EvtAvatarLockChairRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EvtAvatarSitDownNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EvtAvatarStandUpNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EvtBeingHitInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EvtCreateGadgetNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EvtDestroyGadgetNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EvtDoSkillSuccNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/EvtEntityRenderersChangedNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ExecuteGadgetLuaReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ExecuteGadgetLuaRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ExhibitionDisplayInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ExitTransPointRegionNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ExpeditionActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ExpeditionChallengeInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ExpeditionPathInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ExpeditionStateOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FEEHAOJCNCGOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FeatureBlockInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FetterDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FightPropPairOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FindHilichurlAcceptQuestNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FindHilichurlDayContentInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FindHilichurlDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FindHilichurlFinishSecondQuestNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FinishedParentQuestNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FinishedParentQuestUpdateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FishPoolInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FishtankFishInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FleurFairActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FleurFairBalloonInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FleurFairChapterInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FleurFairDungeonSectionInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FleurFairFallInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FleurFairMinigameInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FleurFairMusicGameInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FleurFairMusicGameSettleReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FleurFairMusicGameSettleRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FleurFairMusicGameStartReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FleurFairMusicGameStartRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FleurFairMusicRecordOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FleurFairV2DetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FleurFairV2MusicGameInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FleurFairV2PacmanInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FleurFairV2PhotoInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FleurFairV2PhotoPosDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FleurFairV2StageDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FlightActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FlightDailyRecordOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ForceUpdateInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ForgeDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ForgeFormulaDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ForgeGetQueueDataReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ForgeGetQueueDataRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ForgeQueueDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ForgeQueueDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ForgeQueueManipulateReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ForgeQueueManipulateRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ForgeQueueManipulateTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ForgeStartReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ForgeStartRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ForwardTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FoundationInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FoundationStatusOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FriendBriefOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FriendEnterHomeOptionOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FriendOnlineStateOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FungusDetailOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FungusFighterDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FungusFighterMonsterDetailOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FungusFighterV2DetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FungusFighterV2LevelDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FungusFighterV2SettleInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FungusPlotStageDetailOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FungusTrainingDungeonDetailOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FungusTrainingMonsterPreviewDetailOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FungusTrainingPoolPreviewDetailOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FungusTrainingProgressDetailOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FurnitureCurModuleArrangeCountNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FurnitureMakeBeHelpedDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FurnitureMakeBeHelpedNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FurnitureMakeCancelReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FurnitureMakeCancelRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FurnitureMakeDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FurnitureMakeFinishNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FurnitureMakeHelpDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FurnitureMakeHelpReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FurnitureMakeHelpRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FurnitureMakeMakeInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FurnitureMakeReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FurnitureMakeRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FurnitureMakeSlotOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FurnitureMakeStartReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FurnitureMakeStartRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/FurnitureOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GCGFestivalDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GCGTCTavernChallengeDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GCGTCTavernChallengeDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GachaActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GachaInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GachaItemOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GachaOpenWishNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GachaStageDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GachaTransferItemOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GachaUpInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GachaWishReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GachaWishRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GadgetAutoPickDropInfoNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GadgetBornTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GadgetCrucibleInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GadgetGeneralRewardInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GadgetInteractReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GadgetInteractRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GadgetPlayInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GadgetStateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GalleryStopReasonOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GameplayRecommendationElementReliquaryRequestOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GameplayRecommendationElementReliquaryResponseOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GameplayRecommendationReliquaryMainPropDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GameplayRecommendationReliquaryRequestOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GameplayRecommendationReliquaryResponseOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GatherGadgetInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GearActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GearLevelDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetActivityInfoReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetActivityInfoRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetActivityShopSheetInfoReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetActivityShopSheetInfoRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetAllH5ActivityInfoReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetAllH5ActivityInfoRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetAllMailNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetAllMailReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetAllMailResultNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetAllMailRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetAllUnlockNameCardReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetAllUnlockNameCardRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetAuthkeyReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetAuthkeyRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetBlossomBriefInfoListReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetBlossomBriefInfoListRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetChatEmojiCollectionReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetChatEmojiCollectionRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetCompoundDataReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetCompoundDataRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetDailyDungeonEntryInfoReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetDailyDungeonEntryInfoRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetFriendShowAvatarInfoReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetFriendShowAvatarInfoRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetFriendShowNameCardInfoReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetFriendShowNameCardInfoRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetFurnitureCurModuleArrangeCountReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetGachaInfoReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetGachaInfoRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetHomeExchangeWoodInfoRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetHomeLevelUpRewardReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetHomeLevelUpRewardRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetInvestigationMonsterReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetInvestigationMonsterRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetMailItemReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetMailItemRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetMapAreaRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetOnlinePlayerInfoReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetOnlinePlayerInfoRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetOnlinePlayerListReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetOnlinePlayerListRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetOpActivityInfoReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetOpActivityInfoRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetParentQuestVideoKeyReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetParentQuestVideoKeyRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetPlayerAskFriendListReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetPlayerAskFriendListRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetPlayerBlacklistRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetPlayerFriendListReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetPlayerFriendListRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetPlayerHomeCompInfoReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetPlayerSocialDetailReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetPlayerSocialDetailRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetPlayerTokenReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetPlayerTokenRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetQuestLackingResourceReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetQuestLackingResourceRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetQuestTalkHistoryReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetQuestTalkHistoryRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetRegionSearchReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetSceneAreaReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetSceneAreaRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetScenePointReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetScenePointRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetShopReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetShopRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetShopmallDataReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetShopmallDataRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetUgcBriefInfoReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetUgcBriefInfoRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetUgcReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetUgcRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetUgcTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetWidgetSlotReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetWidgetSlotRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetWorldMpInfoReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GetWorldMpInfoRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GravenInnocenceCampInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GravenInnocenceCampStageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GravenInnocenceCarveInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GravenInnocenceCarveStageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GravenInnocenceDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GravenInnocencePhotoInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GravenInnocencePhotoObjectInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GravenInnocencePhotoStageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GravenInnocenceRaceInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GravenInnocenceRaceLevelInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GroupSuiteNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/GroupUnloadNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/H5ActivityIdsNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/H5ActivityInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HDOMFAKCLHGOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HOKJIFJPJLBOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HachiActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HachiStageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HideAndSeekActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HideAndSeekMapInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HitColliderTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HitCollisionOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HitTreeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeAllUnlockedBgmIdListNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeAnimalDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeBasicInfoNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeBasicInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeBlockArrangementInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeBlockDotPatternOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeBlockFieldDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeBlockSubFieldDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeChangeBgmNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeChangeBgmReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeChangeBgmRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeChangeEditModeReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeChangeEditModeRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeChangeModuleReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeChangeModuleRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeChooseModuleReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeChooseModuleRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeComfortInfoNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeCustomFurnitureInfoNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeCustomFurnitureInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeEditCustomFurnitureReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeEditCustomFurnitureRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeEnterEditModeFinishReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeEnterEditModeFinishRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeFurnitureCustomSuiteDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeFurnitureDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeFurnitureGroupDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeFurnitureSuiteDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeGetArrangementInfoReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeGetArrangementInfoRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeGetBasicInfoReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeGetOnlineStatusReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeGetOnlineStatusRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeGroupPlayerInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeLimitedShopBuyGoodsReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeLimitedShopBuyGoodsRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeLimitedShopGoodsListReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeLimitedShopGoodsListRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeLimitedShopGoodsOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeLimitedShopInfoChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeLimitedShopInfoNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeLimitedShopInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeLimitedShopInfoReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeLimitedShopInfoRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeLimitedShopOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeMarkPointFurnitureDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeMarkPointNPCDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeMarkPointNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeMarkPointSceneDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeMarkPointSuiteDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeModuleComfortInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeModuleSeenReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeModuleSeenRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeModuleUnlockNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeNewUnlockedBgmIdListNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeNpcDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomePlantFieldStatusOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomePreChangeEditModeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeResourceNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeResourceOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeResourceTakeFetterExpReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeResourceTakeFetterExpRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeResourceTakeHomeCoinReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeResourceTakeHomeCoinRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeSceneArrangementInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeSceneInitFinishReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeSceneInitFinishRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeSceneJumpReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeSceneJumpRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeSeekFurnitureAllRecordOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeSeekFurnitureGalleryScoreNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeSeekFurnitureOneRecordOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeSeekFurniturePlayerScoreOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeUpdateArrangementInfoReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HomeUpdateArrangementInfoRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/HostPlayerNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/InferencePageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/InfernceWordInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/InstableSprayAvatarInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/InstableSprayDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/InstableSprayDungeonSettleInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/InstableSprayStageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/InstableSprayTeamInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/InterOpTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/InteractTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/InvestigationMonsterOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/InvestigationMonsterUpdateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/InvestigationOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/InvestigationQuestDailyNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/InvestigationReadQuestDailyNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/InvestigationTargetOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/IrodoriActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/IrodoriChessDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/IrodoriChessEntranceDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/IrodoriChessEntranceInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/IrodoriChessEquipCardReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/IrodoriChessEquipCardRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/IrodoriChessLevelDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/IrodoriChessMapDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/IrodoriChessMonsterInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/IrodoriFlowerDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/IrodoriMasterLevelDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/IrodoriMasterLevelInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/IrodoriPoetryDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/IrodoriPoetryThemeDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/IslandPartyDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/IslandPartyStageDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ItemAddHintNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ItemCdGroupTimeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ItemGivingReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ItemGivingRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ItemHintOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ItemOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ItemParamOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ItemRenameAvatarReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ItemRenameAvatarRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/JAAACKLMLHIOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/JILBANAJEEFOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/JKFJFNMCNDNOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/JNMLLBGCBOBOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/JigsawPictureDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/LCMFDAHJIBKOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/LLBFJGELKIBOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/LanternProjectionInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/LanternProjectionLevelInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/LanternRiteActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/LanternRiteFireworksChallengeInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/LanternRiteFireworksInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/LanternRiteFireworksStageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/LevelupCityReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/LifeStateChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/LockedPersonallineDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/LuminanceStoneChallengeActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/LunaRiteAreaInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/LunaRiteDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/LunaRiteHintPointOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/LunaRiteHintPointTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/LunaRiteHintStatusTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/LunchBoxDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MPLevelEntityInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MailChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MailCollectStateOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MailDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MailItemOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MailTextContentOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MapAreaInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MapMarkFromTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MapMarkPointOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MapMarkPointTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MarkMapReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MarkMapRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MarkNewNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MarkTargetInvestigationMonsterNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MassivePropParamOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MassivePropSyncInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MaterialDeleteInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MaterialDeleteReturnNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MaterialDeleteReturnTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MaterialDeleteUpdateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MaterialInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MaterialOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MathQuaternionOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/McoinExchangeHcoinReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/McoinExchangeHcoinRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MichiaeMatsuriActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MichiaeMatsuriChallengePositionInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MichiaeMatsuriChestPositionInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MichiaeMatsuriStageOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MiracleRingDeliverItemReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MiracleRingDeliverItemRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MistTrialActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MistTrialBestAvatarOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MistTrialLevelDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ModifierActionOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ModifierDurabilityOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ModifierPropertyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MonsterAIConfigHashNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MonsterBornTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MonsterPointArrayRouteUpdateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MonsterRouteOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MoonfinTrialActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MoonfinTrialLevelInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MotionInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MotionStateOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MovingPlatformTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MpPlayRewardInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MpSettingTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MuqadasPotionActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MuqadasPotionDungeonSettleNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MuqadasPotionLevelDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MusicGameActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MusicGameRecordOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MusicGameSettleReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MusicGameSettleRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MusicGameStartReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/MusicGameStartRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/NightCrowGadgetInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/NpcTalkReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/NpcTalkRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ObstacleInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ObstacleModifyNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/OfferingInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/OfficialCustomDungeonOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/OneoffGatherPointDetectorDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/OnlinePlayerInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/OpActivityInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/OpenStateChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/OpenStateUpdateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PGHIDDKHGALOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PIHDFMDILLFOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PSPlayerApplyEnterMpReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PSPlayerApplyEnterMpRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PacmanSettleInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ParamListOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ParentQuestInferenceDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ParentQuestOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ParentQuestRandomInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ParkourLevelInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PathfindingEnterSceneReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PathfindingEnterSceneRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PersonalLineAllDataReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PersonalLineAllDataRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PersonalSceneJumpReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PersonalSceneJumpRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PhotoActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PhotoPosDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PingReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PingRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlantFlowerActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlatformChangeRouteNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlatformInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlatformStartRouteNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlatformStopRouteNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlatformTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayTeamEntityInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerApplyEnterMpNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerApplyEnterMpReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerApplyEnterMpResultNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerApplyEnterMpResultReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerApplyEnterMpResultRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerApplyEnterMpRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerChatNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerChatReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerChatRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerCompoundMaterialBoostReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerCompoundMaterialBoostRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerCompoundMaterialReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerCompoundMaterialRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerCookArgsReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerCookArgsRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerCookReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerCookRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerDieTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerEnterDungeonReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerEnterDungeonRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerEnterSceneInfoNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerEnterSceneNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerForceExitRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerGameTimeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerGetForceQuitBanInfoReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerGetForceQuitBanInfoRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerHomeCompInfoNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerHomeCompInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerInvestigationAllInfoNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerInvestigationNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerInvestigationTargetNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerLevelRewardUpdateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerLocationInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerLoginReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerLoginRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerPropChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerPropChangeReasonNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerPropNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerQuitDungeonReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerRTTInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerSetPauseReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerSetPauseRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerStoreNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerTimeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerWidgetInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerWorldLocationInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerWorldSceneInfoListNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PlayerWorldSceneInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PostEnterSceneReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PostEnterSceneRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PotionActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PotionAvatarInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PotionDungeonResultInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PotionLevelDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PotionStageDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PrivateChatNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PrivateChatReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ProfilePictureChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ProfilePictureOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PropChangeReasonOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PropPairOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PropValueOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ProtEntityTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ProudSkillChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ProudSkillExtraLevelNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PullPrivateChatReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PullPrivateChatRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PullRecentChatReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/PullRecentChatRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QueryCodexMonsterBeKilledNumReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QueryCodexMonsterBeKilledNumRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QueryCurrRegionHttpRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QueryFilterOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QueryPathReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QueryPathRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QueryRegionListHttpRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestCreateEntityReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestCreateEntityRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestDelNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestDestroyEntityReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestDestroyEntityRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestDestroyNpcReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestDestroyNpcRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestGlobalVarNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestGlobalVarOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestListNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestListUpdateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestProgressUpdateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestRenameAvatarReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestRenameAvatarRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestTransmitReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestTransmitRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestUpdateQuestTimeVarNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestUpdateQuestVarNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestUpdateQuestVarReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestUpdateQuestVarRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuestVarOpOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/QuickUseWidgetRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ReadMailNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ReadPrivateChatReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ReceivedTrialAvatarActivityRewardReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ReceivedTrialAvatarActivityRewardRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RecordUsageOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RegionInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RegionSimpleInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ReliquaryDecomposeReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ReliquaryDecomposeRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ReliquaryFilterStateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ReliquaryFilterStateSaveNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ReliquaryOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ReliquaryPromoteReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ReliquaryPromoteRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ReliquaryUpgradeReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ReliquaryUpgradeRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ResVersionConfigOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ResinChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ResinCostTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RobotPushPlayerDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RockBoardExploreDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RockBoardExploreStageDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RogueAvatarInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RogueDiaryActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RogueDiaryAvatarDisableStatusOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RogueDiaryDungeonRecordOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RogueDiaryDungeonSettleNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RogueDiaryProgressOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RogueDiaryStageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RogueShowAvatarTeamInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RogueStageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RoguelikeDungeonActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RoguelikeDungeonSettleInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RoguelikeGadgetInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RoguelikeRuneRecordOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RoguelikeSettleCoinInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RoguelikeShikigamiRecordOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RouteOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RoutePointChangeInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/RoutePointOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SalesmanActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SalesmanDeliverItemReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SalesmanDeliverItemRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SalesmanStatusTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SalvageBundleChallengeInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SalvageChallengeInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SalvageScoreChallengeInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SalvageStageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SandwormCannonDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SaveUgcReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SaveUgcRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneAreaUnlockNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneAreaWeatherNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneAudioNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneAvatarInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneAvatarStaminaStepReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneEntityAiInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneEntityAppearNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneEntityDisappearNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneEntityDrownReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneEntityDrownRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneEntityInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneEntityMoveNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneFishInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneForceLockNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneForceUnlockNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneGadgetInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneGalleryHomeSeekFurnitureInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneInitFinishRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneKickPlayerReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneKickPlayerRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneMonsterInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneNpcInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ScenePlayerInfoNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ScenePlayerInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ScenePlayerLocationNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ScenePlayerSoundNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ScenePointUnlockNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneReliquaryInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneRouteChangeInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneRouteChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneTeamAvatarOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneTeamUpdateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneTimeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneTransToPointReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneTransToPointRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SceneWeaponInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ScreenInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SeaLampActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SeaLampActivityInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SeaLampContributeItemReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SeaLampContributeItemRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SeaLampSectionInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SeaLampV3CampInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SeaLampV3CampStageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SeaLampV3DetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SeaLampV3RaceInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SeaLampV3RaceLevelInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SeaLampV3ShadowInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SeaLampV3ShadowLevelInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SeaLampV3ShadowStageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SeeMonsterReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SelectWorktopOptionReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SelectWorktopOptionRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ServantInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ServerAnnounceNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ServerAnnounceRevokeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ServerBuffChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ServerBuffOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ServerCondMeetQuestListUpdateNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ServerGlobalValueChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ServerTimeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetBattlePassViewedReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetBattlePassViewedRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetChatEmojiCollectionReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetChatEmojiCollectionRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetEntityClientDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetEquipLockStateReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetEquipLockStateRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetFriendEnterHomeOptionReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetFriendEnterHomeOptionRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetIsAutoUnlockSpecificEquipReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetIsAutoUnlockSpecificEquipRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetNameCardReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetNameCardRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetOpenStateReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetOpenStateRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetPlayerBirthdayReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetPlayerBirthdayRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetPlayerBornDataReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetPlayerBornDataRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetPlayerHeadImageReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetPlayerHeadImageRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetPlayerNameReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetPlayerNameRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetPlayerPropReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetPlayerPropRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetPlayerSignatureReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetPlayerSignatureRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetUpAvatarTeamReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetUpAvatarTeamRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetUpLunchBoxWidgetReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetUpLunchBoxWidgetRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetWidgetSlotReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SetWidgetSlotRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ShopCardProductOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ShopConcertProductOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ShopGoodsOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ShopMcoinProductOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ShopOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ShortAbilityHashPairOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ShowAvatarInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ShowClientGuideNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ShowCommonTipsNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ShowEquipOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SkipPlayerGameTimeReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SkipPlayerGameTimeRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SkyCrystalDetectorDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SkyCrystalDetectorQuickUseResultOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SocialDetailOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SocialShowAvatarInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SorushTrialDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SpiceActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SpiceStageDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/StatueGadgetInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/StopServerInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/StoreItemChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/StoreItemDelNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/StoreTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/StoreWeightLimitNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/StrengthenPointDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SummerTimeDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SummerTimeDungeonInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SummerTimeSprintBoatInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SummerTimeSprintBoatRecordOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SummerTimeStageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SummerTimeV2BoatStageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SummerTimeV2DetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SummerTimeV2DungeonSettleInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SummerTimeV2DungeonStageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SumoActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SumoAvatarInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SumoDungeonSettleNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SumoStageDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SumoTeamDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SyncScenePlayTeamEntityNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/SyncTeamEntityNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeAchievementGoalRewardReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeAchievementGoalRewardRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeAchievementRewardReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeAchievementRewardRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeBackGivingItemReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeBackGivingItemRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeBattlePassMissionPointReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeBattlePassMissionPointRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeBattlePassRewardReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeBattlePassRewardRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeCityReputationParentQuestReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeCityReputationParentQuestRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeCompoundOutputReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeCompoundOutputRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeFurnitureMakeReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeFurnitureMakeRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeInvestigationRewardReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeInvestigationRewardRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeInvestigationTargetRewardReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeInvestigationTargetRewardRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeMaterialDeleteReturnReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeMaterialDeleteReturnRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakePlayerLevelRewardReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakePlayerLevelRewardRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeoffEquipReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TakeoffEquipRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TanukiTravelActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TanukiTravelFinishGuideQuestNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TanukiTravelLevelDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TeamChainChooseAvatarInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TeamChainDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TeamChainSettleInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TeamChainStageDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TeamEnterSceneInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TeamEntityInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ToTheMoonEnterSceneReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ToTheMoonQueryPathReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/ToTheMoonQueryPathRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TowerAllDataReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TowerAllDataRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TowerBriefDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TowerCurLevelRecordChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TowerCurLevelRecordOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TowerEnterLevelReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TowerEnterLevelRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TowerFloorRecordChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TowerFloorRecordOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TowerLevelEndNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TowerLevelRecordOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TowerLevelStarCondDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TowerLevelStarCondNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TowerMiddleLevelChangeTeamNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TowerMonthlyBriefOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TowerTeamOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TowerTeamSelectReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TowerTeamSelectRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TrackingIOInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TreasureMapActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TreasureMapBonusChallengeInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TreasureMapRegionInfoNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TreasureMapRegionInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TreasureSeelieActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TreasureSeelieRegionDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TrialAvatarActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TrialAvatarActivityRewardDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TrialAvatarFirstPassDungeonNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TrialAvatarGrantRecordOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TrialAvatarInDungeonIndexNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TrialAvatarInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TriggerCreateGadgetToEquipPartNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TryEnterHomeReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/TryEnterHomeRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UgcActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UgcMusicBriefInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UgcMusicNoteOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UgcMusicRecordOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UgcMusicTrackOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UgcNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UgcTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/Uint32PairOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UnionCmdNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UnionCmdOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UnlockAvatarTalentReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UnlockAvatarTalentRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UnlockNameCardNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UnlockPersonalLineReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UnlockPersonalLineRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UnlockTransPointReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UnlockTransPointRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UnlockedFurnitureFormulaDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UnlockedFurnitureSuiteDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UpdateAbilityCreatedMovingPlatformNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UpdatePlayerShowAvatarListReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UpdatePlayerShowAvatarListRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UpdatePlayerShowNameCardListReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UpdatePlayerShowNameCardListRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UseItemReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/UseItemRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/Vector3IntOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VectorOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VectorPlaneOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VehicleInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VehicleInteractReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VehicleInteractRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VehicleInteractTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VehicleLocationInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VehicleMemberOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VehicleStaminaNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VintageActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VintageBoothUsedItemDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VintageCampChallengeLevelDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VintageCampChallengeStageDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VintageHuntingStageDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VintageMarketDealInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VintageMarketDeliverItemReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VintageMarketDeliverItemRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VintageMarketInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VintageMarketStoreInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VintageMarketTraderInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VintagePresentLevelDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VintagePresentStageDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/VisionTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WaterSpiritActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WeaponAwakenReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WeaponAwakenRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WeaponOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WeaponPromoteReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WeaponPromoteRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WeaponUpgradeReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WeaponUpgradeRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WearEquipReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WearEquipRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WeatherInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WeatherWizardDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WeekendDjinnInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WeeklyBossResinDiscountInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WidgetCoolDownDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WidgetCoolDownNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WidgetCreateLocationInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WidgetCreatorInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WidgetCreatorOpTypeOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WidgetDoBagReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WidgetDoBagRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WidgetGadgetAllDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WidgetGadgetDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WidgetGadgetDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WidgetSlotChangeNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WidgetSlotDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WidgetSlotOpOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WidgetSlotTagOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WindFieldDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WindFieldDungeonFailReasonOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WindFieldDungeonSettleInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WindFieldStageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WindSeedClientNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WindSeedType1NotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WinterCampAcceptAllGiveItemReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WinterCampAcceptAllGiveItemRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WinterCampAcceptGiveItemReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WinterCampAcceptGiveItemRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WinterCampAcceptItemResultInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WinterCampActivityDetailInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WinterCampGetCanGiveFriendItemReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WinterCampGetCanGiveFriendItemRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WinterCampGetRecvItemListReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WinterCampGetRecvItemListRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WinterCampGiveFriendItemReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WinterCampGiveFriendItemRspOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WinterCampRaceStageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WinterCampRecvItemDataOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WinterCampRecvItemNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WinterCampStageInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WorktopInfoOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WorktopOptionNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WorldChestOpenNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WorldDataNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WorldOwnerBlossomBriefInfoNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WorldOwnerDailyTaskNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WorldPlayerDieNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WorldPlayerInfoNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WorldPlayerLocationNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WorldPlayerRTTNotifyOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WorldPlayerReviveReqOuterClass.java
#	src/generated/main/java/emu/grasscutter/net/proto/WorldPlayerReviveRspOuterClass.java
#	src/main/java/emu/grasscutter/GameConstants.java
#	src/main/java/emu/grasscutter/Grasscutter.java
#	src/main/java/emu/grasscutter/command/commands/SetPropCommand.java
#	src/main/java/emu/grasscutter/config/ConfigContainer.java
#	src/main/java/emu/grasscutter/config/Configuration.java
#	src/main/java/emu/grasscutter/data/excels/ItemData.java
#	src/main/java/emu/grasscutter/data/excels/SceneData.java
#	src/main/java/emu/grasscutter/game/dungeons/DungeonSystem.java
#	src/main/java/emu/grasscutter/game/managers/ResinManager.java
#	src/main/java/emu/grasscutter/game/player/Player.java
#	src/main/java/emu/grasscutter/net/packet/PacketOpcodes.java
#	src/main/java/emu/grasscutter/server/http/dispatch/RegionHandler.java
#	src/main/java/emu/grasscutter/server/packet/recv/HandlerCombatInvocationsNotify.java
#	src/main/java/emu/grasscutter/tools/Dumpers.java
#	src/main/java/emu/grasscutter/utils/Crypto.java
#	src/main/java/emu/grasscutter/utils/FileUtils.java
#	src/main/java/emu/grasscutter/utils/Language.java
#	src/main/java/emu/grasscutter/utils/StartupArguments.java
#	src/main/java/emu/grasscutter/utils/Utils.java
This commit is contained in:
KingRainbow44
2023-05-08 01:31:06 -04:00
67 changed files with 9766 additions and 31 deletions

View File

@@ -1,10 +1,14 @@
package emu.grasscutter;
import emu.grasscutter.utils.Position;
import emu.grasscutter.utils.SparseSet;
import emu.grasscutter.utils.Utils;
import java.util.Arrays;
public final class GameConstants {
public static String VERSION = "3.6.0";
public static final boolean DEBUG = true;
public static final int DEFAULT_TEAMS = 4;
public static final int MAX_TEAMS = 10;
public static final int MAIN_CHARACTER_MALE = 10000005;
@@ -28,9 +32,19 @@ public final class GameConstants {
"Avatar_Component_Initializer",
"Avatar_FallAnthem_Achievement_Listener"
};
public static final SparseSet ILLEGAL_WEAPONS = new SparseSet("""
10000-10008, 11411, 11506-11508, 12505, 12506, 12508, 12509,
13503, 13506, 14411, 14503, 14505, 14508, 15504-15506
""");
public static final SparseSet ILLEGAL_RELICS = new SparseSet("""
20001, 23300-23340, 23383-23385, 78310-78554, 99310-99554
""");
public static final SparseSet ILLEGAL_ITEMS = new SparseSet("""
100086, 100087, 100100-101000, 101106-101110, 101306, 101500-104000,
105001, 105004, 106000-107000, 107011, 108000, 109000-110000,
115000-130000, 200200-200899, 220050, 220054
""");
public static final int[] DEFAULT_ABILITY_HASHES =
Arrays.stream(DEFAULT_ABILITY_STRINGS).mapToInt(Utils::abilityHash).toArray();
public static final int DEFAULT_ABILITY_NAME = Utils.abilityHash("Default");
public static String VERSION = "3.6.0";
public static final boolean DEBUG = true;
}

View File

@@ -21,6 +21,7 @@ import emu.grasscutter.server.http.HttpServer;
import emu.grasscutter.server.http.dispatch.DispatchHandler;
import emu.grasscutter.server.http.dispatch.RegionHandler;
import emu.grasscutter.server.http.documentation.DocumentationServerHandler;
import emu.grasscutter.server.http.documentation.HandbookHandler;
import emu.grasscutter.server.http.handlers.AnnouncementsHandler;
import emu.grasscutter.server.http.handlers.GachaHandler;
import emu.grasscutter.server.http.handlers.GenericHandler;
@@ -136,6 +137,7 @@ public final class Grasscutter {
httpServer.addRouter(DispatchHandler.class);
httpServer.addRouter(GachaHandler.class);
httpServer.addRouter(DocumentationServerHandler.class);
httpServer.addRouter(HandbookHandler.class);
// Start servers.
var runMode = Grasscutter.getRunMode();

View File

@@ -23,6 +23,7 @@ import java.util.Map;
import java.util.function.BiConsumer;
import java.util.regex.Pattern;
import static emu.grasscutter.GameConstants.*;
import static emu.grasscutter.command.CommandHelpers.*;
@Command(
@@ -42,18 +43,6 @@ public final class GiveCommand implements CommandHandler {
Map.entry(constellationRegex, GiveItemParameters::setConstellation),
Map.entry(skillLevelRegex, GiveItemParameters::setSkillLevel)
);
private static final SparseSet illegalWeaponIds = new SparseSet("""
10000-10008, 11411, 11506-11508, 12505, 12506, 12508, 12509,
13503, 13506, 14411, 14503, 14505, 14508, 15504-15506
""");
private static final SparseSet illegalRelicIds = new SparseSet("""
20001, 23300-23340, 23383-23385, 78310-78554, 99310-99554
""");
private static final SparseSet illegalItemIds = new SparseSet("""
100086, 100087, 100100-101000, 101106-101110, 101306, 101500-104000,
105001, 105004, 106000-107000, 107011, 108000, 109000-110000,
115000-130000, 200200-200899, 220050, 220054
""");
private static Avatar makeAvatar(GiveItemParameters param) {
return makeAvatar(param.avatarData, param.lvl, Avatar.getMinPromoteLevel(param.lvl), param.constellation, param.skillLevel);
@@ -231,7 +220,7 @@ public final class GiveCommand implements CommandHandler {
for (ItemData itemdata : GameData.getItemDataMap().values()) {
int id = itemdata.getId();
if (id < 100_000) continue; // Nothing meaningful below this
if (illegalItemIds.contains(id)) continue;
if (ILLEGAL_ITEMS.contains(id)) continue;
if (itemdata.isEquip()) continue;
GameItem item = new GameItem(itemdata);
@@ -251,7 +240,7 @@ public final class GiveCommand implements CommandHandler {
for (ItemData itemdata : GameData.getItemDataMap().values()) {
int id = itemdata.getId();
if (id < 11100 || id > 16000) continue; // All extant weapons are within this range
if (illegalWeaponIds.contains(id)) continue;
if (ILLEGAL_WEAPONS.contains(id)) continue;
if (!itemdata.isEquip()) continue;
if (itemdata.getItemType() != ItemType.ITEM_WEAPON) continue;
@@ -333,7 +322,7 @@ public final class GiveCommand implements CommandHandler {
if (param.lvl < 0) param.lvl = 0;
if (param.lvl > 20) param.lvl = 20;
param.lvl += 1;
if (illegalRelicIds.contains(param.id))
if (ILLEGAL_RELICS.contains(param.id))
CommandHandler.sendTranslatedMessage(sender, "commands.give.illegal_relic");
} else {
// Suitable for Avatars and Weapons

View File

@@ -10,6 +10,8 @@ import emu.grasscutter.game.dungeons.handlers.DungeonBaseHandler;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.game.props.SceneType;
import emu.grasscutter.game.world.Scene;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.server.game.BaseGameSystem;
import emu.grasscutter.server.game.GameServer;
import emu.grasscutter.server.packet.send.PacketDungeonEntryInfoRsp;
@@ -43,11 +45,11 @@ public class DungeonSystem extends BaseGameSystem {
var handlerClasses = reflections.getSubTypesOf(clazz);
for (var obj : handlerClasses) {
this.registerPacketHandler(map, obj);
this.registerHandler(map, obj);
}
}
public <T> void registerPacketHandler(Int2ObjectMap<T> map, Class<? extends T> handlerClass) {
public <T> void registerHandler(Int2ObjectMap<T> map, Class<? extends T> handlerClass) {
try {
DungeonValue opcode = handlerClass.getAnnotation(DungeonValue.class);
@@ -178,5 +180,6 @@ public class DungeonSystem extends BaseGameSystem {
// Transfer player back to world
player.getWorld().transferPlayerToScene(player, prevScene, prevPos);
player.sendPacket(new BasePacket(PacketOpcodes.PlayerQuitDungeonRsp));
}
}

View File

@@ -0,0 +1,173 @@
package emu.grasscutter.server.http.documentation;
import emu.grasscutter.Grasscutter;
import emu.grasscutter.Grasscutter.ServerRunMode;
import emu.grasscutter.data.GameData;
import emu.grasscutter.game.avatar.Avatar;
import emu.grasscutter.game.inventory.GameItem;
import emu.grasscutter.game.props.ActionReason;
import emu.grasscutter.server.http.Router;
import emu.grasscutter.utils.FileUtils;
import emu.grasscutter.utils.objects.HandbookBody;
import io.javalin.Javalin;
import io.javalin.http.Context;
import static emu.grasscutter.config.Configuration.HANDBOOK;
/** Handles requests for the new GM Handbook. */
public final class HandbookHandler implements Router {
private final byte[] handbook;
private final boolean serve;
/**
* Constructor for the handbook router.
* Enables serving the handbook if the handbook file is found.
*/
public HandbookHandler() {
this.handbook = FileUtils.readResource("/handbook.html");
this.serve = HANDBOOK.enable && this.handbook.length > 0;
}
@Override
public void applyRoutes(Javalin javalin) {
if (!this.serve) return;
// The handbook content. (built from src/handbook)
javalin.get("/handbook", this::serveHandbook);
// Handbook control routes.
javalin.post("/handbook/avatar", this::grantAvatar);
javalin.post("/handbook/item", this::giveItem);
}
/**
* @return True if the server can execute handbook commands.
*/
private boolean controlSupported() {
return HANDBOOK.enable &&
Grasscutter.getRunMode() == ServerRunMode.HYBRID;
}
/**
* Serves the handbook if it is found.
*
* @route GET /handbook
* @param ctx The Javalin request context.
*/
private void serveHandbook(Context ctx) {
if (!this.serve) {
ctx.status(500).result("Handbook not found.");
} else {
ctx.contentType("text/html").result(this.handbook);
}
}
/**
* Grants the avatar to the user.
*
* @route POST /handbook/avatar
* @param ctx The Javalin request context.
*/
private void grantAvatar(Context ctx) {
if (!this.controlSupported()) {
ctx.status(500).result("Handbook control not supported.");
return;
}
// Parse the request body into a class.
var request = ctx.bodyAsClass(HandbookBody.GrantAvatar.class);
// Validate the request.
if (request.getPlayer() == null || request.getAvatar() == null) {
ctx.status(400).result("Invalid request.");
return;
}
try {
// Parse the requested player.
var playerId = Integer.parseInt(request.getPlayer());
var player = Grasscutter.getGameServer().getPlayerByUid(playerId);
// Parse the requested avatar.
var avatarId = Integer.parseInt(request.getAvatar());
var avatarData = GameData.getAvatarDataMap().get(avatarId);
// Validate the request.
if (player == null || avatarData == null) {
ctx.status(400).result("Invalid player UID or avatar ID.");
return;
}
// Create the new avatar.
var avatar = new Avatar(avatarData);
avatar.setLevel(request.getLevel());
avatar.setPromoteLevel(Avatar.getMinPromoteLevel(avatar.getLevel()));
avatar.getSkillDepot().getSkillsAndEnergySkill().forEach(id ->
avatar.setSkillLevel(id, request.getTalentLevels()));
avatar.forceConstellationLevel(request.getConstellations());
avatar.recalcStats(true); avatar.save();
player.addAvatar(avatar); // Add the avatar.
ctx.json(HandbookBody.Response.builder()
.status(200)
.message("Avatar granted.")
.build());
} catch (NumberFormatException ignored) {
ctx.status(500).result("Invalid player UID or avatar ID.");
} catch (Exception exception) {
ctx.status(500).result("An error occurred while granting the avatar.");
Grasscutter.getLogger().debug("A handbook command error occurred.", exception);
}
}
/**
* Gives an item to the user.
*
* @route POST /handbook/item
* @param ctx The Javalin request context.
*/
private void giveItem(Context ctx) {
if (!this.controlSupported()) {
ctx.status(500).result("Handbook control not supported.");
return;
}
// Parse the request body into a class.
var request = ctx.bodyAsClass(HandbookBody.GiveItem.class);
// Validate the request.
if (request.getPlayer() == null || request.getItem() == null) {
ctx.status(400).result("Invalid request.");
return;
}
try {
// Parse the requested player.
var playerId = Integer.parseInt(request.getPlayer());
var player = Grasscutter.getGameServer().getPlayerByUid(playerId);
// Parse the requested item.
var itemId = Integer.parseInt(request.getItem());
var itemData = GameData.getItemDataMap().get(itemId);
// Validate the request.
if (player == null || itemData == null) {
ctx.status(400).result("Invalid player UID or item ID.");
return;
}
// Create the new item stack.
var itemStack = new GameItem(itemData, request.getAmount());
// Add the item to the inventory.
player.getInventory().addItem(itemStack, ActionReason.Gm);
ctx.json(HandbookBody.Response.builder()
.status(200)
.message("Item granted.")
.build());
} catch (NumberFormatException ignored) {
ctx.status(500).result("Invalid player UID or item ID.");
} catch (Exception exception) {
ctx.status(500).result("An error occurred while granting the item.");
Grasscutter.getLogger().debug("A handbook command error occurred.", exception);
}
}
}

View File

@@ -0,0 +1,18 @@
package emu.grasscutter.server.packet.send;
import com.google.protobuf.ByteString;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.WindSeedClientNotifyOuterClass.WindSeedClientNotify;
import emu.grasscutter.net.proto.WindSeedClientNotifyOuterClass.WindSeedClientNotify.AreaNotify;
public final class PacketWindSeedClientNotify extends BasePacket {
public PacketWindSeedClientNotify(byte[] compiledLua) {
super(PacketOpcodes.WindSeedClientNotify);
this.setData(WindSeedClientNotify.newBuilder()
.setAreaNotify(AreaNotify.newBuilder()
.setAreaId(1).setAreaType(1)
.setAreaCode(ByteString.copyFrom(compiledLua))));
}
}

View File

@@ -1,16 +1,325 @@
package emu.grasscutter.tools;
import emu.grasscutter.net.proto.GetGachaInfoRspOuterClass.GetGachaInfoRsp;
import emu.grasscutter.net.proto.GetShopRspOuterClass.GetShopRsp;
import emu.grasscutter.command.Command;
import emu.grasscutter.command.Command.TargetRequirement;
import emu.grasscutter.command.CommandMap;
import emu.grasscutter.data.GameData;
import emu.grasscutter.data.ResourceLoader;
import emu.grasscutter.game.inventory.ItemType;
import emu.grasscutter.game.props.SceneType;
import emu.grasscutter.utils.JsonUtils;
import emu.grasscutter.utils.Language;
import lombok.AllArgsConstructor;
public final class Dumpers {
public static void extractBanner(byte[] data) throws Exception {
GetGachaInfoRsp proto = GetGachaInfoRsp.parseFrom(data);
System.out.println(proto);
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public interface Dumpers {
// See `src/handbook/data/README.md` for attributions.
/**
* Fetches the description of a command.
*
* @param locale The locale to use.
* @param command The command to get the description of.
* @return The description of the command.
*/
private static String commandDescription(String locale, Command command) {
try {
// Get the language by the locale.
var language = Language.getLanguage(locale);
if (language == null) throw new IllegalArgumentException("Invalid language.");
return language.get("commands." + command.label() + ".description");
} catch (IllegalArgumentException ignored) {
return command.label();
}
}
public static void extractShop(byte[] data) throws Exception {
GetShopRsp proto = GetShopRsp.parseFrom(data);
System.out.println(proto);
/**
* Encodes the dump into comma separated values.
*
* @param dump The dump to encode.
* @return The encoded dump.
*/
private static String miniEncode(Map<Integer, ?> dump) {
return dump.entrySet().stream()
.map(entry -> entry.getKey() + "," + entry.getValue().toString())
.collect(Collectors.joining("\n"));
}
/**
* Dumps all commands to a JSON file.
*
* @param locale The language to dump the commands in.
*/
static void dumpCommands(String locale) {
// Check that commands are registered.
var commandMap = CommandMap.getInstance();
if (commandMap == null) commandMap = new CommandMap(true);
// Convert all registered commands to an info map.
var dump = new HashMap<String, CommandInfo>();
commandMap.getAnnotationsAsList().forEach(command -> {
var description = Dumpers.commandDescription(locale, command);
var labels = new ArrayList<String>(){{
this.add(command.label());
this.addAll(List.of(command.aliases()));
}};
// Add the command info to the list.
dump.put(command.label(), new CommandInfo(
labels, description, List.of(command.usage()), List.of(
command.permission(), command.permissionTargeted()),
command.targetRequirement()));
});
try {
// Create a file for the dump.
var file = new File("commands.json");
if (file.exists() && !file.delete())
throw new RuntimeException("Failed to delete file.");
if (!file.exists() && !file.createNewFile())
throw new RuntimeException("Failed to create file.");
// Write the dump to the file.
Files.writeString(file.toPath(), JsonUtils.encode(dump));
} catch (IOException ignored) {
throw new RuntimeException("Failed to write to file.");
}
}
/**
* Dumps all avatars to a JSON file.
*
* @param locale The language to dump the avatars in.
*/
static void dumpAvatars(String locale) {
// Reload resources.
ResourceLoader.loadAll();
Language.loadTextMaps();
// Convert all known avatars to an avatar map.
var dump = new HashMap<Integer, AvatarInfo>();
GameData.getAvatarDataMap().forEach((id, avatar) -> {
var langHash = avatar.getNameTextMapHash();
dump.put(id, new AvatarInfo(
langHash == 0 ? avatar.getName() : Language.getTextMapKey(langHash).get(locale),
avatar.getQualityType().equals("QUALITY_PURPLE") ? Quality.EPIC : Quality.LEGENDARY
));
});
try {
// Create a file for the dump.
var file = new File("avatars.csv");
if (file.exists() && !file.delete())
throw new RuntimeException("Failed to delete file.");
if (!file.exists() && !file.createNewFile())
throw new RuntimeException("Failed to create file.");
// Write the dump to the file.
Files.writeString(file.toPath(), Dumpers.miniEncode(dump));
} catch (IOException ignored) {
throw new RuntimeException("Failed to write to file.");
}
}
/**
* Dumps all items to a JSON file.
*
* @param locale The language to dump the items in.
*/
static void dumpItems(String locale) {
// Reload resources.
ResourceLoader.loadAll();
Language.loadTextMaps();
// Convert all known items to an item map.
var originalDump = new ArrayList<ItemInfo>();
GameData.getItemDataMap().forEach((id, item) -> originalDump.add(new ItemInfo(id,
Language.getTextMapKey(item.getNameTextMapHash()).get(locale),
Quality.from(item.getRankLevel()), item.getItemType(),
item.getIcon().length() > 0 ? item.getIcon().substring(3) : ""
)));
// Create a new dump with filtered duplicates.
var names = new ArrayList<String>();
var dump = new HashMap<Integer, ItemInfo>();
originalDump.forEach(item -> {
// Validate the item.
if (item.name.contains("[CHS]")) return;
if (names.contains(item.name)) return;
if (dump.containsKey(item.id)) return;
// Add the item to the dump.
names.add(item.name);
dump.put(item.id, item);
});
try {
// Create a file for the dump.
var file = new File("items.csv");
if (file.exists() && !file.delete())
throw new RuntimeException("Failed to delete file.");
if (!file.exists() && !file.createNewFile())
throw new RuntimeException("Failed to create file.");
// Write the dump to the file.
Files.writeString(file.toPath(), Dumpers.miniEncode(dump));
} catch (IOException ignored) {
throw new RuntimeException("Failed to write to file.");
}
}
/**
* Dumps all scenes to a JSON file.
*/
static void dumpScenes() {
// Reload resources.
ResourceLoader.loadAll();
Language.loadTextMaps();
// Convert all known scenes to a scene map.
var dump = new HashMap<Integer, SceneInfo>();
GameData.getSceneDataMap().forEach((id, scene) ->
dump.put(id, new SceneInfo(scene.getScriptData(), scene.getSceneType())));
try {
// Create a file for the dump.
var file = new File("scenes.csv");
if (file.exists() && !file.delete())
throw new RuntimeException("Failed to delete file.");
if (!file.exists() && !file.createNewFile())
throw new RuntimeException("Failed to create file.");
// Write the dump to the file.
Files.writeString(file.toPath(), Dumpers.miniEncode(dump));
} catch (IOException ignored) {
throw new RuntimeException("Failed to write to file.");
}
}
/**
* Dumps all entities to a JSON file.
*
* @param locale The language to dump the entities in.
*/
static void dumpEntities(String locale) {
// Reload resources.
ResourceLoader.loadAll();
Language.loadTextMaps();
// Convert all known avatars to an avatar map.
var dump = new HashMap<Integer, EntityInfo>();
GameData.getMonsterDataMap().forEach((id, monster) -> {
var langHash = monster.getNameTextMapHash();
dump.put(id, new EntityInfo(
langHash == 0 ? monster.getMonsterName() :
Language.getTextMapKey(langHash).get(locale),
monster.getMonsterName()
));
});
try {
// Create a file for the dump.
var file = new File("entities.csv");
if (file.exists() && !file.delete())
throw new RuntimeException("Failed to delete file.");
if (!file.exists() && !file.createNewFile())
throw new RuntimeException("Failed to create file.");
// Write the dump to the file.
Files.writeString(file.toPath(), Dumpers.miniEncode(dump));
} catch (IOException ignored) {
throw new RuntimeException("Failed to write to file.");
}
}
@AllArgsConstructor
class CommandInfo {
public List<String> name;
public String description;
public List<String> usage;
public List<String> permission;
public TargetRequirement target;
}
@AllArgsConstructor
class AvatarInfo {
public String name;
public Quality quality;
@Override
public String toString() {
return this.name + ","
+ this.quality;
}
}
@AllArgsConstructor
class ItemInfo {
public Integer id;
public String name;
public Quality quality;
public ItemType type;
public String icon;
@Override
public String toString() {
return this.name + ","
+ this.quality + ","
+ this.type + ","
+ this.icon;
}
}
@AllArgsConstructor
class SceneInfo {
public String identifier;
public SceneType type;
@Override
public String toString() {
return this.identifier + ","
+ this.type;
}
}
@AllArgsConstructor
class EntityInfo {
public String name;
public String internal;
@Override
public String toString() {
return this.name + ","
+ this.internal;
}
}
enum Quality {
LEGENDARY, EPIC, RARE, UNCOMMON, COMMON, UNKNOWN;
/**
* Convert a rank level to a quality.
*
* @param rankLevel The rank level to convert.
* @return The quality.
*/
static Quality from(int rankLevel) {
return switch (rankLevel) {
case 0 -> UNKNOWN;
case 1 -> COMMON;
case 2 -> UNCOMMON;
case 3 -> RARE;
case 4 -> EPIC;
default -> LEGENDARY;
};
}
}
}

View File

@@ -209,7 +209,7 @@ public final class FileUtils {
return is.readAllBytes();
} catch (Exception exception) {
Grasscutter.getLogger().warn("Failed to read resource: " + resourcePath);
exception.printStackTrace();
Grasscutter.getLogger().debug("Failed to load resource: " + resourcePath, exception);
}
return new byte[0];

View File

@@ -10,6 +10,8 @@ import emu.grasscutter.Grasscutter.ServerRunMode;
import emu.grasscutter.net.packet.PacketOpcodesUtils;
import java.util.Map;
import java.util.function.Function;
import emu.grasscutter.tools.Dumpers;
import org.slf4j.LoggerFactory;
/** A parser for start-up arguments. */
@@ -47,6 +49,7 @@ public final class StartupArguments {
SERVER.http.encryption.useEncryption = false;
return false;
},
"-dump", StartupArguments::dump,
// Aliases.
"-v", StartupArguments::printVersion,
@@ -124,4 +127,38 @@ public final class StartupArguments {
Grasscutter.getLogger().debug("The logger is now running in debug mode.");
return false;
}
/**
* Dumps the specified information.
*
* @param parameter The parameter to dump.
* @return True to exit early.
*/
private static boolean dump(String parameter) {
// Parse the parameter.
if (!parameter.contains(",")) {
Grasscutter.getLogger().error("Dumper usage: -dump=<content>,<language>");
return true;
}
var split = parameter.split(",");
var content = split[0];
var language = split[1];
try {
switch (content.toLowerCase()) {
case "commands" -> Dumpers.dumpCommands(language);
case "avatars" -> Dumpers.dumpAvatars(language);
case "items" -> Dumpers.dumpItems(language);
case "scenes" -> Dumpers.dumpScenes();
case "entities" -> Dumpers.dumpEntities(language);
}
Grasscutter.getLogger().info("Finished dumping.");
} catch (Exception exception) {
Grasscutter.getLogger().error("Unable to complete dump.", exception);
}
return true;
}
}

View File

@@ -0,0 +1,32 @@
package emu.grasscutter.utils.objects;
import lombok.Builder;
import lombok.Getter;
/** HTTP request object for handbook controls. */
@SuppressWarnings("FieldMayBeFinal")
public interface HandbookBody {
@Builder
class Response {
private int status;
private String message;
}
@Getter
class GrantAvatar {
private String player; // Parse into online player ID.
private String avatar; // Parse into avatar ID.
private int level = 90; // Range between 1 - 90.
private int constellations = 6; // Range between 0 - 6.
private int talentLevels = 10; // Range between 1 - 15.
}
@Getter
class GiveItem {
private String player; // Parse into online player ID.
private String item; // Parse into item ID.
private int amount = 1; // Range between 1 - Long.MAX_VALUE.
}
}