diff --git a/proto/EvtAvatarEnterFocusNotify.proto b/proto/EvtAvatarEnterFocusNotify.proto
new file mode 100644
index 00000000..ca461dfe
--- /dev/null
+++ b/proto/EvtAvatarEnterFocusNotify.proto
@@ -0,0 +1,37 @@
+// 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";
+import "ForwardType.proto";
+// CmdId: 20643
+// Obf: CMOGIHEMPNF
+message EvtAvatarEnterFocusNotify {
+ Vector focus_forward = 13;
+ ForwardType forward_type = 3;
+ bool CCKKABKJJGP = 12;
+ bool MDMOIMDCOPF = 7;
+ uint32 entity_id = 11;
+ bool MCNECDNCLCJ = 1;
+ bool GMLEBIHPOKD = 5;
+ bool OGOLKMLFFHE = 2;
+ bool OEMKCENFMIM = 10;
+ bool DBPHFOKBNCP = 9;
+ bool PBHFFGHHPMA = 15;
+ bool EGBLCMOLOMC = 8;
+ bool NACMCGNGDLN = 6;
+}
diff --git a/proto/EvtAvatarExitFocusNotify.proto b/proto/EvtAvatarExitFocusNotify.proto
new file mode 100644
index 00000000..ec7a6895
--- /dev/null
+++ b/proto/EvtAvatarExitFocusNotify.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";
+import "ForwardType.proto";
+// CmdId: 24354
+// Obf: BDJMGLMLENA
+message EvtAvatarExitFocusNotify {
+ Vector finish_forward = 13;
+ ForwardType forward_type = 12;
+ uint32 entity_id = 11;
+}
diff --git a/proto/EvtAvatarUpdateFocusNotify.proto b/proto/EvtAvatarUpdateFocusNotify.proto
new file mode 100644
index 00000000..65753bbe
--- /dev/null
+++ b/proto/EvtAvatarUpdateFocusNotify.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";
+import "ForwardType.proto";
+// CmdId: 8305
+// Obf: LHFNDLOOJKJ
+message EvtAvatarUpdateFocusNotify {
+ uint32 entity_id = 8;
+ Vector focus_forward = 14;
+ ForwardType forward_type = 9;
+}
diff --git a/proto/EvtBulletDeactiveNotify.proto b/proto/EvtBulletDeactiveNotify.proto
new file mode 100644
index 00000000..868d4eff
--- /dev/null
+++ b/proto/EvtBulletDeactiveNotify.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 "ForwardType.proto";
+import "Vector.proto";
+// CmdId: 26348
+// Obf: FJJAANMLOOB
+message EvtBulletDeactiveNotify {
+ ForwardType forward_type = 1;
+ uint32 entity_id = 14;
+ Vector disappear_pos = 8;
+}
diff --git a/proto/EvtBulletHitNotify.proto b/proto/EvtBulletHitNotify.proto
new file mode 100644
index 00000000..4b6ee106
--- /dev/null
+++ b/proto/EvtBulletHitNotify.proto
@@ -0,0 +1,34 @@
+// 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 "ForwardType.proto";
+import "HitColliderType.proto";
+import "Vector.proto";
+// CmdId: 23746
+// Obf: LAFKEDKPKIM
+message EvtBulletHitNotify {
+ ForwardType forward_type = 3;
+ HitColliderType hit_collider_type = 5;
+ uint32 KDBDDHAOOME = 6;
+ Vector hit_point = 1;
+ uint32 HNMABCLIAMB = 7;
+ Vector hit_normal = 4;
+ uint32 entity_id = 9;
+ int32 hit_box_index = 12;
+ uint32 forward_peer = 8;
+}
diff --git a/proto/EvtBulletMoveNotify.proto b/proto/EvtBulletMoveNotify.proto
new file mode 100644
index 00000000..7b612cb1
--- /dev/null
+++ b/proto/EvtBulletMoveNotify.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";
+import "ForwardType.proto";
+// CmdId: 8672
+// Obf: PJHHOALDCDN
+message EvtBulletMoveNotify {
+ uint32 entity_id = 6;
+ Vector cur_pos = 13;
+ ForwardType forward_type = 15;
+}
diff --git a/proto/MassiveEntityElementOpBatchNotify.proto b/proto/MassiveEntityElementOpBatchNotify.proto
new file mode 100644
index 00000000..965233a9
--- /dev/null
+++ b/proto/MassiveEntityElementOpBatchNotify.proto
@@ -0,0 +1,35 @@
+// 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 "ShapeSphere.proto";
+import "ShapeBox.proto";
+// CmdId: 699
+// Obf: FLIFJJHNFJO
+message MassiveEntityElementOpBatchNotify {
+ int32 PIGDAOBDKBB = 7;
+ uint32 op_idx = 4;
+ uint32 user_id = 13;
+ uint32 attacker_id = 1;
+ int32 entity_type = 10;
+ int32 IOJOIDKOIBH = 9;
+ oneof check_shape {
+ ShapeSphere shape_sphere = 12;
+ ShapeBox shape_box = 11;
+ }
+ float attack_element_durability = 14;
+}