@@ -8,9 +8,8 @@ use ferrumc_net::packets::incoming::login_acknowledged::LoginAcknowledgedEvent;
8
8
use ferrumc_net:: packets:: incoming:: login_start:: LoginStartEvent ;
9
9
use ferrumc_net:: packets:: incoming:: server_bound_known_packs:: ServerBoundKnownPacksEvent ;
10
10
use ferrumc_net:: packets:: outgoing:: client_bound_known_packs:: ClientBoundKnownPacksPacket ;
11
- use ferrumc_net:: packets:: outgoing:: finish_configuration:: FinishConfigurationPacket ;
12
11
use ferrumc_net:: packets:: outgoing:: game_event:: GameEventPacket ;
13
- use ferrumc_net:: packets:: outgoing:: keep_alive:: OutgoingKeepAlivePacket ;
12
+ use ferrumc_net:: packets:: outgoing:: keep_alive:: { KeepAlive , KeepAlivePacket } ;
14
13
use ferrumc_net:: packets:: outgoing:: login_play:: LoginPlayPacket ;
15
14
use ferrumc_net:: packets:: outgoing:: login_success:: LoginSuccessPacket ;
16
15
use ferrumc_net:: packets:: outgoing:: registry_data:: get_registry_packets;
@@ -19,6 +18,7 @@ use ferrumc_net::packets::outgoing::synchronize_player_position::SynchronizePlay
19
18
use ferrumc_net:: GlobalState ;
20
19
use ferrumc_net_codec:: encode:: NetEncodeOpts ;
21
20
use tracing:: { debug, trace} ;
21
+ use ferrumc_net:: packets:: outgoing:: finish_configuration:: FinishConfigurationPacket ;
22
22
23
23
#[ event_handler]
24
24
async fn handle_login_start (
@@ -31,23 +31,19 @@ async fn handle_login_start(
31
31
let username = login_start_event. login_start_packet . username . as_str ( ) ;
32
32
debug ! ( "Received login start from user with username {}" , username) ;
33
33
34
+
34
35
// Add the player identity component to the ECS for the entity.
35
36
state. universe . add_component :: < PlayerIdentity > (
36
37
login_start_event. conn_id ,
37
38
PlayerIdentity :: new ( username. to_string ( ) , uuid) ,
38
39
) ?;
39
-
40
+
40
41
//Send a Login Success Response to further the login sequence
41
42
let mut writer = state
42
43
. universe
43
44
. get_mut :: < StreamWriter > ( login_start_event. conn_id ) ?;
44
45
45
- writer
46
- . send_packet (
47
- & LoginSuccessPacket :: new ( uuid, username) ,
48
- & NetEncodeOpts :: WithLength ,
49
- )
50
- . await ?;
46
+ writer. send_packet ( & LoginSuccessPacket :: new ( uuid, username) , & NetEncodeOpts :: WithLength ) . await ?;
51
47
52
48
Ok ( login_start_event)
53
49
}
@@ -66,16 +62,15 @@ async fn handle_login_acknowledged(
66
62
67
63
* connection_state = ConnectionState :: Configuration ;
68
64
65
+
69
66
// Send packets packet
70
67
let client_bound_known_packs = ClientBoundKnownPacksPacket :: new ( ) ;
71
68
72
69
let mut writer = state
73
70
. universe
74
71
. get_mut :: < StreamWriter > ( login_acknowledged_event. conn_id ) ?;
75
72
76
- writer
77
- . send_packet ( & client_bound_known_packs, & NetEncodeOpts :: WithLength )
78
- . await ?;
73
+ writer. send_packet ( & client_bound_known_packs, & NetEncodeOpts :: WithLength ) . await ?;
79
74
80
75
Ok ( login_acknowledged_event)
81
76
}
@@ -92,17 +87,10 @@ async fn handle_server_bound_known_packs(
92
87
. get_mut :: < StreamWriter > ( server_bound_known_packs_event. conn_id ) ?;
93
88
94
89
let registry_packets = get_registry_packets ( ) ;
95
- writer
96
- . send_packet ( & registry_packets, & NetEncodeOpts :: None )
97
- . await ?;
98
-
99
- writer
100
- . send_packet (
101
- & FinishConfigurationPacket :: new ( ) ,
102
- & NetEncodeOpts :: WithLength ,
103
- )
104
- . await ?;
105
-
90
+ writer. send_packet ( & registry_packets, & NetEncodeOpts :: None ) . await ?;
91
+
92
+ writer. send_packet ( & FinishConfigurationPacket :: new ( ) , & NetEncodeOpts :: WithLength ) . await ?;
93
+
106
94
Ok ( server_bound_known_packs_event)
107
95
}
108
96
@@ -115,51 +103,34 @@ async fn handle_ack_finish_configuration(
115
103
116
104
let conn_id = ack_finish_configuration_event. conn_id ;
117
105
118
- let mut conn_state = state. universe . get_mut :: < ConnectionState > ( conn_id) ?;
106
+ let mut conn_state = state
107
+ . universe
108
+ . get_mut :: < ConnectionState > ( conn_id) ?;
119
109
120
110
* conn_state = ConnectionState :: Play ;
121
111
122
- let mut writer = state. universe . get_mut :: < StreamWriter > ( conn_id) ?;
123
-
124
- writer
125
- . send_packet ( & LoginPlayPacket :: new ( conn_id) , & NetEncodeOpts :: WithLength )
126
- . await ?;
127
- writer
128
- . send_packet (
129
- & SetDefaultSpawnPositionPacket :: default ( ) ,
130
- & NetEncodeOpts :: WithLength ,
131
- )
132
- . await ?;
133
- writer
134
- . send_packet (
135
- & SynchronizePlayerPositionPacket :: default ( ) ,
136
- & NetEncodeOpts :: WithLength ,
137
- )
138
- . await ?;
139
- writer
140
- . send_packet (
141
- & GameEventPacket :: start_waiting_for_level_chunks ( ) ,
142
- & NetEncodeOpts :: WithLength ,
143
- )
144
- . await ?;
112
+ let mut writer = state
113
+ . universe
114
+ . get_mut :: < StreamWriter > ( conn_id) ?;
115
+
116
+ writer. send_packet ( & LoginPlayPacket :: new ( conn_id) , & NetEncodeOpts :: WithLength ) . await ?;
117
+ writer. send_packet ( & SetDefaultSpawnPositionPacket :: default ( ) , & NetEncodeOpts :: WithLength ) . await ?;
118
+ writer. send_packet ( & SynchronizePlayerPositionPacket :: default ( ) , & NetEncodeOpts :: WithLength ) . await ?;
119
+ writer. send_packet ( & GameEventPacket :: start_waiting_for_level_chunks ( ) , & NetEncodeOpts :: WithLength ) . await ?;
145
120
146
121
send_keep_alive ( conn_id, state, & mut writer) . await ?;
147
122
123
+
148
124
Ok ( ack_finish_configuration_event)
149
125
}
150
- async fn send_keep_alive (
151
- conn_id : usize ,
152
- state : GlobalState ,
153
- writer : & mut ComponentRefMut < ' _ , StreamWriter > ,
154
- ) -> Result < ( ) , NetError > {
155
- let keep_alive_packet = OutgoingKeepAlivePacket :: default ( ) ;
156
- writer
157
- . send_packet ( & keep_alive_packet, & NetEncodeOpts :: WithLength )
158
- . await ?;
159
-
160
- state
161
- . universe
162
- . add_component :: < OutgoingKeepAlivePacket > ( conn_id, keep_alive_packet) ?;
126
+ async fn send_keep_alive ( conn_id : usize , state : GlobalState , writer : & mut ComponentRefMut < ' _ , StreamWriter > ) -> Result < ( ) , NetError > {
127
+ let keep_alive_packet = KeepAlivePacket :: default ( ) ;
128
+ writer. send_packet ( & keep_alive_packet, & NetEncodeOpts :: WithLength ) . await ?;
129
+
130
+ let id = keep_alive_packet. id ;
131
+
132
+ state. universe . add_component :: < KeepAlive > ( conn_id, id) ?;
133
+
163
134
164
135
Ok ( ( ) )
165
- }
136
+ }
0 commit comments