diff --git a/Cargo.lock b/Cargo.lock index 2f856d5f9..dfcd045cc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1303,6 +1303,8 @@ dependencies = [ "futures", "itertools", "lazy_static", + "num-derive", + "num-traits", "rayon", "serde", "serde_json", diff --git a/pumpkin-world/Cargo.toml b/pumpkin-world/Cargo.toml index 7e073f6c7..2e689fbca 100644 --- a/pumpkin-world/Cargo.toml +++ b/pumpkin-world/Cargo.toml @@ -16,3 +16,6 @@ flate2 = "1.0.31" serde = { version = "1.0.205", features = ["derive"] } lazy_static = "1.5.0" serde_json = "1.0.122" + +num-traits = "0.2" +num-derive = "0.4" diff --git a/pumpkin-world/src/block_registry.rs b/pumpkin-world/src/block/block_registry.rs similarity index 95% rename from pumpkin-world/src/block_registry.rs rename to pumpkin-world/src/block/block_registry.rs index 3c1774f65..e44de5042 100644 --- a/pumpkin-world/src/block_registry.rs +++ b/pumpkin-world/src/block/block_registry.rs @@ -4,7 +4,7 @@ use lazy_static::lazy_static; use crate::world::WorldError; -const BLOCKS_JSON: &str = include_str!("../assets/blocks.json"); +const BLOCKS_JSON: &str = include_str!("../../assets/blocks.json"); #[derive(serde::Deserialize, Debug, Clone, PartialEq, Eq)] struct BlockDefinition { diff --git a/pumpkin-world/src/block/mod.rs b/pumpkin-world/src/block/mod.rs new file mode 100644 index 000000000..a641d0eee --- /dev/null +++ b/pumpkin-world/src/block/mod.rs @@ -0,0 +1,13 @@ +use num_derive::FromPrimitive; + +pub mod block_registry; + +#[derive(FromPrimitive)] +pub enum BlockFace { + Bottom = 0, + Top, + North, + South, + West, + East, +} diff --git a/pumpkin-world/src/chunk.rs b/pumpkin-world/src/chunk.rs index 459571bf5..2b07fd2c0 100644 --- a/pumpkin-world/src/chunk.rs +++ b/pumpkin-world/src/chunk.rs @@ -92,7 +92,7 @@ impl ChunkData { .palette .iter() .map(|entry| { - crate::block_registry::block_id_and_properties_to_block_state_id( + crate::block::block_registry::block_id_and_properties_to_block_state_id( &entry.name, entry.properties.as_ref(), ) diff --git a/pumpkin-world/src/lib.rs b/pumpkin-world/src/lib.rs index 6198796ed..afe948133 100644 --- a/pumpkin-world/src/lib.rs +++ b/pumpkin-world/src/lib.rs @@ -3,6 +3,6 @@ pub mod dimension; pub const WORLD_HEIGHT: usize = 384; pub const WORLD_Y_START_AT: i32 = -64; pub const DIRECT_PALETTE_BITS: u32 = 15; -mod block_registry; +mod block; pub mod radial_chunk_iterator; mod world; diff --git a/pumpkin/src/client/player_packet.rs b/pumpkin/src/client/player_packet.rs index 953f97058..ca3b50898 100644 --- a/pumpkin/src/client/player_packet.rs +++ b/pumpkin/src/client/player_packet.rs @@ -2,8 +2,8 @@ use num_traits::FromPrimitive; use pumpkin_entity::EntityId; use pumpkin_protocol::{ client::play::{ - Animation, CEntityAnimation, CEntityVelocity, CHeadRot, CHurtAnimation, - CSystemChatMessge, CUpdateEntityPos, CUpdateEntityPosRot, CUpdateEntityRot, + Animation, CEntityAnimation, CEntityVelocity, CHeadRot, CHurtAnimation, CSystemChatMessge, + CUpdateEntityPos, CUpdateEntityPosRot, CUpdateEntityRot, }, server::play::{ Action, SChatCommand, SChatMessage, SClientInformationPlay, SConfirmTeleport, SInteract, diff --git a/pumpkin/src/server.rs b/pumpkin/src/server.rs index a0ff67660..30624900e 100644 --- a/pumpkin/src/server.rs +++ b/pumpkin/src/server.rs @@ -339,7 +339,7 @@ impl Server { // TODO: do this in a world async fn spawn_test_chunk(client: &mut Client, distance: u32) { let inst = std::time::Instant::now(); - let (sender, mut chunk_receiver) = mpsc::channel(1024); + let (sender, mut chunk_receiver) = mpsc::channel(distance as usize); tokio::spawn(async move { let level = Dimension::OverWorld.into_level( // TODO: load form config @@ -375,7 +375,7 @@ impl Server { } client.send_packet(&CChunkData(&chunk_data)); } - let t = std::time::Instant::now().duration_since(inst); + let t = inst.elapsed(); dbg!("DONE", t); }