Add BlockFace

This commit is contained in:
Snowiiii 2024-08-17 11:14:38 +02:00
parent 91533c30df
commit 40fe40355f
8 changed files with 25 additions and 7 deletions

2
Cargo.lock generated
View File

@ -1303,6 +1303,8 @@ dependencies = [
"futures",
"itertools",
"lazy_static",
"num-derive",
"num-traits",
"rayon",
"serde",
"serde_json",

View File

@ -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"

View File

@ -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 {

View File

@ -0,0 +1,13 @@
use num_derive::FromPrimitive;
pub mod block_registry;
#[derive(FromPrimitive)]
pub enum BlockFace {
Bottom = 0,
Top,
North,
South,
West,
East,
}

View File

@ -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(),
)

View File

@ -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;

View File

@ -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,

View File

@ -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);
}