diff --git a/gc_needed2.json b/gc_needed2.json
index 277e0239..9bbd60d0 100644
--- a/gc_needed2.json
+++ b/gc_needed2.json
@@ -1,7 +1,4 @@
[
- {
- "name": "VisionType"
- },
{
"name": "Route"
},
@@ -50,30 +47,9 @@
{
"name": "Achievement"
},
- {
- "name": "Status"
- },
{
"name": "ActivityInfo"
},
- {
- "name": "MusicGameActivityDetailInfo"
- },
- {
- "name": "UgcMusicBriefInfo"
- },
- {
- "name": "UgcMusicNote"
- },
- {
- "name": "UgcMusicRecord"
- },
- {
- "name": "UgcMusicTrack"
- },
- {
- "name": "MusicGameRecord"
- },
{
"name": "ActivityWatcherInfo"
},
@@ -131,18 +107,12 @@
{
"name": "Retcode"
},
- {
- "name": "DailyTaskInfo"
- },
{
"name": "DungeonSettleNotify"
},
{
"name": "ParamList"
},
- {
- "name": "ItemParam"
- },
{
"name": "TowerLevelEndNotify"
},
@@ -221,6 +191,9 @@
{
"name": "InteractType"
},
+ {
+ "name": "TrifleGadget"
+ },
{
"name": "MonsterBornType"
},
@@ -246,10 +219,10 @@
"name": "InterOpType"
},
{
- "name": "ResinCostType"
+ "name": "GatherGadgetInfo"
},
{
- "name": "GatherGadgetInfo"
+ "name": "ResinCostType"
},
{
"name": "SelectWorktopOptionReq"
@@ -260,9 +233,6 @@
{
"name": "MathQuaternion"
},
- {
- "name": "MovingPlatformType"
- },
{
"name": "PlatformInfo"
},
@@ -290,6 +260,9 @@
{
"name": "DealAddFriendResultType"
},
+ {
+ "name": "FriendEnterHomeOption"
+ },
{
"name": "GachaInfo"
},
@@ -305,6 +278,9 @@
{
"name": "GetGachaInfoRsp"
},
+ {
+ "name": "ItemParam"
+ },
{
"name": "FurnitureMakeData"
},
@@ -314,15 +290,9 @@
{
"name": "HomeBlockArrangementInfo"
},
- {
- "name": "HomeFurnitureData"
- },
{
"name": "HomeMarkPointFurnitureData"
},
- {
- "name": "HomeNpcData"
- },
{
"name": "HomeSceneArrangementInfo"
},
@@ -359,9 +329,6 @@
{
"name": "MailTextContent"
},
- {
- "name": "BlossomBriefInfo"
- },
{
"name": "CompoundQueueData"
},
@@ -383,9 +350,6 @@
{
"name": "PlayerCookReq"
},
- {
- "name": "HitTreeNotify"
- },
{
"name": "AbilityIdentifier"
},
@@ -437,21 +401,12 @@
{
"name": "OnlinePlayerInfo"
},
- {
- "name": "PlayerApplyEnterMpResultNotify"
- },
{
"name": "PlayerLocationInfo"
},
- {
- "name": "PlayerWorldLocationInfo"
- },
{
"name": "SocialDetail"
},
- {
- "name": "SocialShowAvatarInfo"
- },
{
"name": "Birthday"
},
@@ -467,6 +422,12 @@
{
"name": "EnterType"
},
+ {
+ "name": "BargainResultType"
+ },
+ {
+ "name": "BargainSnapshot"
+ },
{
"name": "ChildQuest"
},
@@ -479,21 +440,27 @@
{
"name": "Quest"
},
+ {
+ "name": "GivingRecord"
+ },
{
"name": "AnnounceData"
},
{
"name": "MaterialInfo"
},
+ {
+ "name": "PlayerApplyEnterMpResultNotify"
+ },
+ {
+ "name": "VisionType"
+ },
{
"name": "InvestigationMonster"
},
{
"name": "PacketHead"
},
- {
- "name": "ForceUpdateInfo"
- },
{
"name": "QueryCurrRegionHttpRsp"
},
@@ -506,6 +473,9 @@
{
"name": "RegionSimpleInfo"
},
+ {
+ "name": "StopServerInfo"
+ },
{
"name": "AbilityInvocationsNotify"
},
@@ -551,6 +521,9 @@
{
"name": "AvatarWearFlycloakReq"
},
+ {
+ "name": "BargainOfferPriceReq"
+ },
{
"name": "BuyBattlePassLevelReq"
},
@@ -599,12 +572,6 @@
{
"name": "ClientAbilityInitFinishNotify"
},
- {
- "name": "ClientAIStateNotify"
- },
- {
- "name": "ClientLoadingCostumeVerificationNotify"
- },
{
"name": "ClientLockGameTimeNotify"
},
@@ -614,15 +581,9 @@
{
"name": "EvtAnimatorParameterInfo"
},
- {
- "name": "CombineReq"
- },
{
"name": "CreateVehicleReq"
},
- {
- "name": "DailyTaskFilterCityReq"
- },
{
"name": "DealAddFriendReq"
},
@@ -662,6 +623,12 @@
{
"name": "EntityAiSyncNotify"
},
+ {
+ "name": "EvtAvatarEnterFocusNotify"
+ },
+ {
+ "name": "EvtAvatarExitFocusNotify"
+ },
{
"name": "EvtAvatarLockChairReq"
},
@@ -671,6 +638,18 @@
{
"name": "EvtAvatarStandUpNotify"
},
+ {
+ "name": "EvtAvatarUpdateFocusNotify"
+ },
+ {
+ "name": "EvtBulletDeactiveNotify"
+ },
+ {
+ "name": "EvtBulletHitNotify"
+ },
+ {
+ "name": "EvtBulletMoveNotify"
+ },
{
"name": "EvtDestroyGadgetNotify"
},
@@ -683,12 +662,6 @@
{
"name": "ExecuteGadgetLuaReq"
},
- {
- "name": "FireWorkReq"
- },
- {
- "name": "FireworkSetReq"
- },
{
"name": "FurnitureMakeStartReq"
},
@@ -704,6 +677,9 @@
{
"name": "GetAllMailNotify"
},
+ {
+ "name": "GetBargainDataReq"
+ },
{
"name": "GetDailyDungeonEntryInfoReq"
},
@@ -737,20 +713,14 @@
{
"name": "GetShopReq"
},
- {
- "name": "GetUgcBriefInfoReq"
- },
- {
- "name": "UgcType"
- },
{
"name": "GetUgcReq"
},
{
- "name": "HomeChangeBgmReq"
+ "name": "HitTreeNotify"
},
{
- "name": "HomeChangeEditModeReq"
+ "name": "HomeChangeBgmReq"
},
{
"name": "HomeChangeModuleReq"
@@ -764,12 +734,24 @@
{
"name": "HomeModuleSeenReq"
},
+ {
+ "name": "HomeSaveArrangementNoChangeReq"
+ },
+ {
+ "name": "OtherPlayerEnterHomeNotify"
+ },
{
"name": "HomeSceneJumpReq"
},
+ {
+ "name": "HomeTransferReq"
+ },
{
"name": "HomeUpdateArrangementInfoReq"
},
+ {
+ "name": "ItemGivingReq"
+ },
{
"name": "LaunchFireworksReq"
},
@@ -777,7 +759,7 @@
"name": "LevelupCityReq"
},
{
- "name": "McoinExchangeHcoinReq"
+ "name": "MassiveEntityElementOpBatchNotify"
},
{
"name": "MonsterAlertChangeNotify"
@@ -809,6 +791,9 @@
{
"name": "PingReq"
},
+ {
+ "name": "PlayerApplyEnterHomeResultReq"
+ },
{
"name": "PlayerApplyEnterMpReq"
},
@@ -879,10 +864,10 @@
"name": "SaveUgcReq"
},
{
- "name": "SceneAudioNotify"
+ "name": "UgcType"
},
{
- "name": "SceneAvatarStaminaStepReq"
+ "name": "SceneAudioNotify"
},
{
"name": "SceneEntityDrownReq"
@@ -893,9 +878,6 @@
{
"name": "SceneTransToPointReq"
},
- {
- "name": "SeeMonsterReq"
- },
{
"name": "SetBattlePassViewedReq"
},
@@ -941,12 +923,6 @@
{
"name": "SetUpLunchBoxWidgetReq"
},
- {
- "name": "SetWidgetSlotReq"
- },
- {
- "name": "WidgetSlotOp"
- },
{
"name": "SkipPlayerGameTimeReq"
},
@@ -965,21 +941,12 @@
{
"name": "TakeFurnitureMakeReq"
},
- {
- "name": "TakeInvestigationRewardReq"
- },
- {
- "name": "TakeInvestigationTargetRewardReq"
- },
{
"name": "TakeoffEquipReq"
},
{
"name": "TakePlayerLevelRewardReq"
},
- {
- "name": "ToTheMoonEnterSceneReq"
- },
{
"name": "TowerEnterLevelReq"
},
@@ -989,12 +956,6 @@
{
"name": "TowerTeamSelectReq"
},
- {
- "name": "FriendEnterHomeOption"
- },
- {
- "name": "TryEnterHomeReq"
- },
{
"name": "UnionCmdNotify"
},
@@ -1052,15 +1013,6 @@
{
"name": "AchievementUpdateNotify"
},
- {
- "name": "ActivityInfoNotify"
- },
- {
- "name": "ActivityScheduleInfoNotify"
- },
- {
- "name": "ActivityScheduleInfo"
- },
{
"name": "ActivityTakeWatcherRewardRsp"
},
@@ -1082,18 +1034,6 @@
{
"name": "AllWidgetDataNotify"
},
- {
- "name": "LunchBoxData"
- },
- {
- "name": "WidgetSlotData"
- },
- {
- "name": "WidgetSlotTag"
- },
- {
- "name": "AntiAddictNotify"
- },
{
"name": "AskAddFriendNotify"
},
@@ -1208,6 +1148,15 @@
{
"name": "BackMyWorldRsp"
},
+ {
+ "name": "BargainOfferPriceRsp"
+ },
+ {
+ "name": "BargainStartNotify"
+ },
+ {
+ "name": "BargainTerminateNotify"
+ },
{
"name": "BattlePassAllDataNotify"
},
@@ -1217,18 +1166,9 @@
{
"name": "BattlePassMissionUpdateNotify"
},
- {
- "name": "BlossomBriefInfoNotify"
- },
{
"name": "BuyBattlePassLevelRsp"
},
- {
- "name": "BuyGoodsRsp"
- },
- {
- "name": "ShopGoods"
- },
{
"name": "BuyResinRsp"
},
@@ -1262,9 +1202,6 @@
{
"name": "ChangeTeamNameRsp"
},
- {
- "name": "ChapterStateNotify"
- },
{
"name": "CheckUgcStateRsp"
},
@@ -1292,9 +1229,6 @@
{
"name": "CombineFormulaDataNotify"
},
- {
- "name": "CombineRsp"
- },
{
"name": "CompoundDataNotify"
},
@@ -1313,18 +1247,6 @@
{
"name": "CutSceneBeginNotify"
},
- {
- "name": "DailyTaskDataNotify"
- },
- {
- "name": "DailyTaskFilterCityRsp"
- },
- {
- "name": "DailyTaskProgressNotify"
- },
- {
- "name": "DailyTaskUnlockedCitiesNotify"
- },
{
"name": "DealAddFriendRsp"
},
@@ -1379,9 +1301,6 @@
{
"name": "DungeonSlipRevivePointActivateRsp"
},
- {
- "name": "DungeonWayPointActivateRsp"
- },
{
"name": "DungeonWayPointNotify"
},
@@ -1425,16 +1344,7 @@
"name": "FinishedParentQuestUpdateNotify"
},
{
- "name": "FireWorkData"
- },
- {
- "name": "FireWorkNotify"
- },
- {
- "name": "FireworkSetData"
- },
- {
- "name": "FireworkSetNotify"
+ "name": "ReformFireworksRsp"
},
{
"name": "FireworksLaunchDataNotify"
@@ -1469,15 +1379,6 @@
{
"name": "FurnitureCurModuleArrangeCountNotify"
},
- {
- "name": "FurnitureMakeRsp"
- },
- {
- "name": "FurnitureMakeSlot"
- },
- {
- "name": "FurnitureMakeStartRsp"
- },
{
"name": "GachaWishRsp"
},
@@ -1499,6 +1400,9 @@
{
"name": "GetActivityShopSheetInfoRsp"
},
+ {
+ "name": "GetAllActivatedBargainDataRsp"
+ },
{
"name": "GetAllMailResultNotify"
},
@@ -1509,20 +1413,11 @@
"name": "GetAuthkeyRsp"
},
{
- "name": "ChatEmojiCollectionData"
- },
- {
- "name": "GetChatEmojiCollectionRsp"
+ "name": "GetBargainDataRsp"
},
{
"name": "GetCompoundDataRsp"
},
- {
- "name": "DailyDungeonEntryInfo"
- },
- {
- "name": "GetDailyDungeonEntryInfoRsp"
- },
{
"name": "GetFriendShowAvatarInfoRsp"
},
@@ -1538,12 +1433,6 @@
{
"name": "GetMailItemRsp"
},
- {
- "name": "GetMapAreaRsp"
- },
- {
- "name": "MapAreaInfo"
- },
{
"name": "GetOnlinePlayerListRsp"
},
@@ -1569,7 +1458,7 @@
"name": "GetShopmallDataRsp"
},
{
- "name": "GetShopRsp"
+ "name": "ShopGoods"
},
{
"name": "Shop"
@@ -1577,15 +1466,21 @@
{
"name": "GetUgcBriefInfoRsp"
},
+ {
+ "name": "UgcMusicBriefInfo"
+ },
{
"name": "GetUgcRsp"
},
{
- "name": "GetWidgetSlotRsp"
+ "name": "UgcMusicRecord"
},
{
"name": "GetWorldMpInfoRsp"
},
+ {
+ "name": "GivingRecordNotify"
+ },
{
"name": "GroupSuiteNotify"
},
@@ -1598,12 +1493,6 @@
{
"name": "HomeAllUnlockedBgmIdListNotify"
},
- {
- "name": "HomeBasicInfoNotify"
- },
- {
- "name": "HomeBasicInfo"
- },
{
"name": "HomeChangeBgmNotify"
},
@@ -1619,20 +1508,11 @@
{
"name": "HomeChooseModuleRsp"
},
- {
- "name": "HomeComfortInfoNotify"
- },
- {
- "name": "HomeModuleComfortInfo"
- },
{
"name": "HomeGetArrangementInfoRsp"
},
{
- "name": "HomeMarkPointNotify"
- },
- {
- "name": "HomeMarkPointSceneData"
+ "name": "HomeGetOnlineStatusRsp"
},
{
"name": "HomeModuleSeenRsp"
@@ -1658,6 +1538,9 @@
{
"name": "HomeResourceTakeHomeCoinRsp"
},
+ {
+ "name": "HomeSaveArrangementNoChangeRsp"
+ },
{
"name": "HomeSceneInitFinishReq"
},
@@ -1673,6 +1556,9 @@
{
"name": "ItemAddHintNotify"
},
+ {
+ "name": "ItemGivingRsp"
+ },
{
"name": "LevelupCityRsp"
},
@@ -1718,9 +1604,6 @@
{
"name": "MusicGameSearchBeatmapRsp"
},
- {
- "name": "MusicGameSettleRsp"
- },
{
"name": "MusicGameStartRsp"
},
@@ -1754,6 +1637,15 @@
{
"name": "PlatformStopRouteNotify"
},
+ {
+ "name": "PlayerApplyEnterHomeNotify"
+ },
+ {
+ "name": "PlayerApplyEnterHomeResultNotify"
+ },
+ {
+ "name": "PlayerApplyEnterHomeResultRsp"
+ },
{
"name": "PlayerApplyEnterMpNotify"
},
@@ -1808,33 +1700,15 @@
{
"name": "PlayerGetForceQuitBanInfoRsp"
},
- {
- "name": "PlayerHomeCompInfoNotify"
- },
- {
- "name": "PlayerHomeCompInfo"
- },
- {
- "name": "Investigation"
- },
- {
- "name": "InvestigationTarget"
- },
- {
- "name": "PlayerInvestigationAllInfoNotify"
- },
- {
- "name": "PlayerInvestigationNotify"
- },
- {
- "name": "PlayerInvestigationTargetNotify"
- },
{
"name": "PlayerLevelRewardUpdateNotify"
},
{
"name": "PlayerLoginRsp"
},
+ {
+ "name": "PlayerPreEnterMpNotify"
+ },
{
"name": "PlayerPropChangeNotify"
},
@@ -1856,6 +1730,9 @@
{
"name": "PlayerTimeNotify"
},
+ {
+ "name": "MapLayerInfo"
+ },
{
"name": "PlayerWorldSceneInfoListNotify"
},
@@ -1883,12 +1760,6 @@
{
"name": "QueryCodexMonsterBeKilledNumRsp"
},
- {
- "name": "PathStatusType"
- },
- {
- "name": "QueryPathRsp"
- },
{
"name": "QuestCreateEntityRsp"
},
@@ -1925,9 +1796,6 @@
{
"name": "ReceivedTrialAvatarActivityRewardRsp"
},
- {
- "name": "ReformFireworksRsp"
- },
{
"name": "ReliquaryDecomposeRsp"
},
@@ -2003,9 +1871,6 @@
{
"name": "SelectWorktopOptionRsp"
},
- {
- "name": "ServerAnnounceNotify"
- },
{
"name": "ServerAnnounceRevokeNotify"
},
@@ -2048,9 +1913,6 @@
{
"name": "SetUpAvatarTeamRsp"
},
- {
- "name": "SetUpLunchBoxWidgetRsp"
- },
{
"name": "SetWidgetSlotRsp"
},
@@ -2060,9 +1922,6 @@
{
"name": "ShowCommonTipsNotify"
},
- {
- "name": "SkipPlayerGameTimeRsp"
- },
{
"name": "StoreItemChangeNotify"
},
@@ -2081,24 +1940,9 @@
{
"name": "TeamEntityInfo"
},
- {
- "name": "TakeAchievementGoalRewardRsp"
- },
- {
- "name": "TakeAchievementRewardRsp"
- },
{
"name": "TakeBattlePassRewardRsp"
},
- {
- "name": "TakeFurnitureMakeRsp"
- },
- {
- "name": "TakeInvestigationRewardRsp"
- },
- {
- "name": "TakeInvestigationTargetRewardRsp"
- },
{
"name": "TakeoffEquipRsp"
},
@@ -2138,9 +1982,6 @@
{
"name": "TowerTeamSelectRsp"
},
- {
- "name": "TryEnterHomeRsp"
- },
{
"name": "UnlockAvatarTalentRsp"
},
@@ -2192,27 +2033,12 @@
{
"name": "WearEquipRsp"
},
- {
- "name": "WidgetCoolDownData"
- },
- {
- "name": "WidgetCoolDownNotify"
- },
{
"name": "WidgetDoBagRsp"
},
{
"name": "WidgetGadgetAllDataNotify"
},
- {
- "name": "WidgetGadgetDataNotify"
- },
- {
- "name": "WidgetGadgetData"
- },
- {
- "name": "WidgetSlotChangeNotify"
- },
{
"name": "WindSeedType1Notify"
},
@@ -2225,9 +2051,6 @@
{
"name": "WorldDataNotify"
},
- {
- "name": "WorldOwnerDailyTaskNotify"
- },
{
"name": "WorldPlayerDieNotify"
},
diff --git a/op.js b/op.js
index 7f2f9da2..972695c7 100644
--- a/op.js
+++ b/op.js
@@ -31,7 +31,7 @@ const read_cmdid_gc =
const folder_packet_gc =
"../GSServer-GC/src/main/java/emu/grasscutter/server/packet/";
-const folder_gc_scan = "../GSServer-GC/src/main/java/emu/grasscutter/";
+const folder_gc_scan = "../GSServer-GCOriginal/src/main/java/emu/grasscutter/";
//const read_cmdid = fs.readFileSync("cmdid.csv");
//const read_packetopcodes = fs.readFileSync("PacketOpcodes.java");
@@ -981,7 +981,7 @@ function cmdid_json_to_csv() {
console.log("CSV file written successfully");
}
-cmdid_json_to_csv();
+// cmdid_json_to_csv();
// Update GC Proto
// get_cmdid_gc(); // 1. get cmd old gc
//read_cmdid_ht_json(); // 2 or
diff --git a/proto/HomeKickPlayerReq.proto b/proto/HomeKickPlayerReq.proto
new file mode 100644
index 00000000..7de8dab4
--- /dev/null
+++ b/proto/HomeKickPlayerReq.proto
@@ -0,0 +1,24 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 24840
+// Obf: HFBBPKBDIHH
+message HomeKickPlayerReq {
+ bool is_kick_all = 14;
+ uint32 target_uid = 7;
+}
diff --git a/proto/HomeKickPlayerRsp.proto b/proto/HomeKickPlayerRsp.proto
new file mode 100644
index 00000000..47d015a7
--- /dev/null
+++ b/proto/HomeKickPlayerRsp.proto
@@ -0,0 +1,25 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 1719
+// Obf: PEDCPFBACNG
+message HomeKickPlayerRsp {
+ bool is_kick_all = 10;
+ uint32 target_uid = 9;
+ int32 retcode = 8;
+}
diff --git a/proto/HomeSaveArrangementNoChangeReq.proto b/proto/HomeSaveArrangementNoChangeReq.proto
new file mode 100644
index 00000000..97b25366
--- /dev/null
+++ b/proto/HomeSaveArrangementNoChangeReq.proto
@@ -0,0 +1,23 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 2521
+// Obf: GPHNPONJLKO
+message HomeSaveArrangementNoChangeReq {
+ uint32 scene_id = 1;
+}
diff --git a/proto/HomeSaveArrangementNoChangeRsp.proto b/proto/HomeSaveArrangementNoChangeRsp.proto
new file mode 100644
index 00000000..2bffbba0
--- /dev/null
+++ b/proto/HomeSaveArrangementNoChangeRsp.proto
@@ -0,0 +1,24 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 20696
+// Obf: BMFLMFIECOG
+message HomeSaveArrangementNoChangeRsp {
+ int32 retcode = 2;
+ uint32 scene_id = 1;
+}
diff --git a/proto/OtherPlayerEnterHomeNotify.proto b/proto/OtherPlayerEnterHomeNotify.proto
new file mode 100644
index 00000000..099a3ef8
--- /dev/null
+++ b/proto/OtherPlayerEnterHomeNotify.proto
@@ -0,0 +1,31 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 25817
+// Obf: MGNDPKIPKGO
+message OtherPlayerEnterHomeNotify {
+ // Obf: CMPPPMNICGG
+ enum Reason {
+ INVALID = 0;
+ ENTER = 1;
+ LEAVE = 2;
+ }
+
+ string nickname = 13;
+ Reason reason = 14;
+}
diff --git a/proto/PlayerApplyEnterHomeNotify.proto b/proto/PlayerApplyEnterHomeNotify.proto
new file mode 100644
index 00000000..6854696d
--- /dev/null
+++ b/proto/PlayerApplyEnterHomeNotify.proto
@@ -0,0 +1,25 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+import "OnlinePlayerInfo.proto";
+// CmdId: 26047
+// Obf: HKFIJOMFLOA
+message PlayerApplyEnterHomeNotify {
+ OnlinePlayerInfo src_player_info = 2;
+ uint32 src_app_id = 12;
+}
diff --git a/proto/PlayerApplyEnterHomeResultNotify.proto b/proto/PlayerApplyEnterHomeResultNotify.proto
new file mode 100644
index 00000000..5ff71fb3
--- /dev/null
+++ b/proto/PlayerApplyEnterHomeResultNotify.proto
@@ -0,0 +1,39 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 26518
+// Obf: BDMPJIIHGNK
+message PlayerApplyEnterHomeResultNotify {
+ // Obf: HCLKFKDJEMO
+ enum Reason {
+ PLAYER_JUDGE = 0;
+ PLAYER_ENTER_OPTION_REFUSE = 1;
+ PLAYER_ENTER_OPTION_DIRECT = 2;
+ SYSTEM_JUDGE = 3;
+ HOST_IN_MATCH = 4;
+ PS_PLAYER_NOT_ACCEPT_OTHERS = 5;
+ OPEN_STATE_NOT_OPEN = 6;
+ HOST_IN_EDIT_MODE = 7;
+ PRIOR_CHECK = 8;
+ }
+
+ bool is_agreed = 1;
+ string target_nickname = 7;
+ uint32 target_uid = 11;
+ Reason reason = 4;
+}
diff --git a/proto/PlayerApplyEnterHomeResultReq.proto b/proto/PlayerApplyEnterHomeResultReq.proto
new file mode 100644
index 00000000..4f971970
--- /dev/null
+++ b/proto/PlayerApplyEnterHomeResultReq.proto
@@ -0,0 +1,24 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 20101
+// Obf: CMPHGAMCBGN
+message PlayerApplyEnterHomeResultReq {
+ bool is_agreed = 13;
+ uint32 apply_uid = 1;
+}
diff --git a/proto/PlayerApplyEnterHomeResultRsp.proto b/proto/PlayerApplyEnterHomeResultRsp.proto
new file mode 100644
index 00000000..ea47f7ad
--- /dev/null
+++ b/proto/PlayerApplyEnterHomeResultRsp.proto
@@ -0,0 +1,26 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 5358
+// Obf: MCGEJCOHFFM
+message PlayerApplyEnterHomeResultRsp {
+ bool is_agreed = 3;
+ int32 retcode = 6;
+ uint32 param = 8;
+ uint32 apply_uid = 1;
+}
diff --git a/proto/PlayerPreEnterMpNotify.proto b/proto/PlayerPreEnterMpNotify.proto
new file mode 100644
index 00000000..dd9c3a67
--- /dev/null
+++ b/proto/PlayerPreEnterMpNotify.proto
@@ -0,0 +1,32 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 23905
+// Obf: ONELCJDDCIP
+message PlayerPreEnterMpNotify {
+ // Obf: CIAEAJLPCDG
+ enum State {
+ INVALID = 0;
+ START = 1;
+ TIMEOUT = 2;
+ }
+
+ State state = 11;
+ string nickname = 10;
+ uint32 uid = 5;
+}
diff --git a/proto/ShapeBox.proto b/proto/ShapeBox.proto
new file mode 100644
index 00000000..1bdf3e21
--- /dev/null
+++ b/proto/ShapeBox.proto
@@ -0,0 +1,27 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+import "Vector.proto";
+// Obf: BFCLKLDHKOM
+message ShapeBox {
+ Vector center = 1;
+ Vector axis0 = 2;
+ Vector axis1 = 3;
+ Vector axis2 = 4;
+ Vector extents = 5;
+}
diff --git a/proto/ShapeSphere.proto b/proto/ShapeSphere.proto
new file mode 100644
index 00000000..2a696c07
--- /dev/null
+++ b/proto/ShapeSphere.proto
@@ -0,0 +1,24 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+import "Vector.proto";
+// Obf: KJNACIDANGB
+message ShapeSphere {
+ Vector center = 1;
+ float radius = 2;
+}