From 7a698f5fbceda8fff97678ab6108f111e1974254 Mon Sep 17 00:00:00 2001 From: Brad <bbenton91@gmail.com> Date: Fri, 30 Oct 2020 17:29:58 -0400 Subject: [PATCH] Added range check to block pickup --- server/src/events/inventory_manip.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/server/src/events/inventory_manip.rs b/server/src/events/inventory_manip.rs index 5dce6f7aab..e82f292385 100644 --- a/server/src/events/inventory_manip.rs +++ b/server/src/events/inventory_manip.rs @@ -110,6 +110,16 @@ pub fn handle_inventory(server: &mut Server, entity: EcsEntity, manip: comp::Inv if let Some(block) = block { if block.is_collectible() && state.can_set_block(pos) { + // Check if the block is within pickup range + if !within_pickup_range( + state.ecs().read_storage::<comp::Pos>().get(entity), + // We convert the Vec<i32> pos into a Vec<f32>, adding 0.5 to get the + // center of the block + Some(&Pos(pos.map(|e| e as f32 + 0.5))), + ) { + return; + }; + if let Some(item) = comp::Item::try_reclaim_from_block(block) { let (event, item_was_added) = if let Some(inv) = state .ecs()