Check if item is a block, Because Not every item can be placed
This commit is contained in:
Snowiiii 2024-11-01 16:18:01 +01:00
parent 460e9d3cae
commit 1b510eaa21

View File

@ -615,21 +615,23 @@ impl Player {
if let Some(face) = BlockFace::from_i32(use_item_on.face.0) { if let Some(face) = BlockFace::from_i32(use_item_on.face.0) {
if let Some(item) = self.inventory.lock().await.held_item() { if let Some(item) = self.inventory.lock().await.held_item() {
let block = get_block_by_item(item.item_id) let block = get_block_by_item(item.item_id);
.expect("No item found, TODO Better error handling"); // check if item is a block, Because Not every item can be placed :D
let entity = &self.living_entity.entity; if let Some(block) = block {
let world = &entity.world; let entity = &self.living_entity.entity;
let world = &entity.world;
world world
.set_block( .set_block(
WorldPosition(location.0 + face.to_offset()), WorldPosition(location.0 + face.to_offset()),
block.default_state_id, block.default_state_id,
) )
.await;
}
self.client
.send_packet(&CAcknowledgeBlockChange::new(use_item_on.sequence))
.await; .await;
} }
self.client
.send_packet(&CAcknowledgeBlockChange::new(use_item_on.sequence))
.await;
} else { } else {
self.kick(TextComponent::text("Invalid block face")).await; self.kick(TextComponent::text("Invalid block face")).await;
} }