чек
This commit is contained in:
parent
b5b2afaf8e
commit
bb5dbda37c
@ -106,7 +106,7 @@ pub fn sync_player_pos(
|
|||||||
flags: i32
|
flags: i32
|
||||||
) -> Result<(), ServerError> {
|
) -> Result<(), ServerError> {
|
||||||
let timestamp = (SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis() & 0xFFFFFFFF) as i32;
|
let timestamp = (SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis() & 0xFFFFFFFF) as i32;
|
||||||
|
|
||||||
let mut packet = Packet::empty(clientbound::play::SYNCHRONIZE_PLAYER_POSITION);
|
let mut packet = Packet::empty(clientbound::play::SYNCHRONIZE_PLAYER_POSITION);
|
||||||
|
|
||||||
packet.write_varint(timestamp)?;
|
packet.write_varint(timestamp)?;
|
||||||
@ -209,7 +209,12 @@ pub fn send_keep_alive(client: Arc<ClientContext>) -> Result<(), ServerError> {
|
|||||||
packet.write_long(timestamp)?;
|
packet.write_long(timestamp)?;
|
||||||
client.write_packet(&packet)?;
|
client.write_packet(&packet)?;
|
||||||
|
|
||||||
client.read_packet(serverbound::play::KEEP_ALIVE)?;
|
// let mut packet = client.read_packet(serverbound::play::KEEP_ALIVE)?;
|
||||||
|
// let timestamp2 = packet.read_long()?;
|
||||||
|
// if timestamp2 != timestamp {
|
||||||
|
// // Послать клиента нахуй
|
||||||
|
// println!("KeepAlive Error")
|
||||||
|
// }
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
@ -228,7 +233,7 @@ pub fn handle_play_state(
|
|||||||
|
|
||||||
thread::spawn({
|
thread::spawn({
|
||||||
let client = client.clone();
|
let client = client.clone();
|
||||||
|
|
||||||
move || {
|
move || {
|
||||||
let _ = client.run_read_loop();
|
let _ = client.run_read_loop();
|
||||||
client.close();
|
client.close();
|
||||||
@ -243,7 +248,7 @@ pub fn handle_play_state(
|
|||||||
|
|
||||||
thread::spawn({
|
thread::spawn({
|
||||||
let client = client.clone();
|
let client = client.clone();
|
||||||
|
|
||||||
move || -> Result<(), ServerError> {
|
move || -> Result<(), ServerError> {
|
||||||
while client.is_alive() {
|
while client.is_alive() {
|
||||||
let mut packet = client.read_any_packet()?;
|
let mut packet = client.read_any_packet()?;
|
||||||
@ -254,9 +259,9 @@ pub fn handle_play_state(
|
|||||||
let y = packet.read_double()?;
|
let y = packet.read_double()?;
|
||||||
let z = packet.read_double()?;
|
let z = packet.read_double()?;
|
||||||
let _ = packet.read_byte()?; // flags
|
let _ = packet.read_byte()?; // flags
|
||||||
|
|
||||||
client.set_position((x, y, z));
|
client.set_position((x, y, z));
|
||||||
},
|
},
|
||||||
serverbound::play::SET_PLAYER_POSITION_AND_ROTATION => {
|
serverbound::play::SET_PLAYER_POSITION_AND_ROTATION => {
|
||||||
let x = packet.read_double()?;
|
let x = packet.read_double()?;
|
||||||
let y = packet.read_double()?;
|
let y = packet.read_double()?;
|
||||||
@ -264,7 +269,7 @@ pub fn handle_play_state(
|
|||||||
let yaw = packet.read_float()?;
|
let yaw = packet.read_float()?;
|
||||||
let pitch = packet.read_float()?;
|
let pitch = packet.read_float()?;
|
||||||
let _ = packet.read_byte()?; // flags
|
let _ = packet.read_byte()?; // flags
|
||||||
|
|
||||||
client.set_position((x, y, z));
|
client.set_position((x, y, z));
|
||||||
client.set_rotation((yaw, pitch));
|
client.set_rotation((yaw, pitch));
|
||||||
},
|
},
|
||||||
@ -272,7 +277,7 @@ pub fn handle_play_state(
|
|||||||
let yaw = packet.read_float()?;
|
let yaw = packet.read_float()?;
|
||||||
let pitch = packet.read_float()?;
|
let pitch = packet.read_float()?;
|
||||||
let _ = packet.read_byte()?; // flags
|
let _ = packet.read_byte()?; // flags
|
||||||
|
|
||||||
client.set_rotation((yaw, pitch));
|
client.set_rotation((yaw, pitch));
|
||||||
},
|
},
|
||||||
_ => {}
|
_ => {}
|
||||||
@ -286,6 +291,7 @@ pub fn handle_play_state(
|
|||||||
let mut ticks_alive = 0u64;
|
let mut ticks_alive = 0u64;
|
||||||
|
|
||||||
while client.is_alive() {
|
while client.is_alive() {
|
||||||
|
println!("{ticks_alive}");
|
||||||
if ticks_alive % 200 == 0 { // 10 secs timer
|
if ticks_alive % 200 == 0 { // 10 secs timer
|
||||||
send_keep_alive(client.clone())?;
|
send_keep_alive(client.clone())?;
|
||||||
}
|
}
|
||||||
@ -293,9 +299,9 @@ pub fn handle_play_state(
|
|||||||
if ticks_alive % 20 == 0 { // 1 sec timer
|
if ticks_alive % 20 == 0 { // 1 sec timer
|
||||||
let (x, y, z) = client.position();
|
let (x, y, z) = client.position();
|
||||||
|
|
||||||
send_system_message(client.clone(),
|
send_system_message(client.clone(),
|
||||||
TextComponent::rainbow(format!(
|
TextComponent::rainbow(format!(
|
||||||
"Pos: {} {} {}", x as u64, y as u64, z as u64
|
"Pos: {} {} {}", x as i64, y as i64, z as i64
|
||||||
)), false)?;
|
)), false)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -304,6 +310,7 @@ pub fn handle_play_state(
|
|||||||
thread::sleep(Duration::from_millis(50)); // 1 tick
|
thread::sleep(Duration::from_millis(50)); // 1 tick
|
||||||
ticks_alive += 1;
|
ticks_alive += 1;
|
||||||
}
|
}
|
||||||
|
println!("Client die");
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user