steel_core/behavior/
item_utils.rs1use steel_registry::item_stack::ItemStack;
4
5use crate::behavior::UseItemContext;
6use crate::inventory::lock::ContainerId;
7use crate::player::player_inventory::PlayerInventory;
8
9pub(crate) fn create_filled_result(
11 context: &UseItemContext,
12 result_stack: ItemStack,
13 limit_creative_stack_size: bool,
14) {
15 let player = context.player;
16 let overflow = context.inv.with_guard(|guard| {
17 let inv_id = ContainerId::from_arc(&player.inventory);
18 let Some(inv) = guard.get_typed_mut::<PlayerInventory>(inv_id) else {
19 return result_stack;
20 };
21
22 inv.apply_filled_result(
23 context.hand,
24 result_stack,
25 player.has_infinite_materials(),
26 limit_creative_stack_size,
27 )
28 });
29
30 if !overflow.is_empty() {
31 let _ = player.drop_item(overflow, false, false);
32 }
33}