Skip to main content

Slot

Trait Slot 

Source
pub trait Slot:
    ErasedType
    + Send
    + Sync {
Show 19 methods // Required methods fn storage(&self) -> &SlotStorage; fn get_item<'a>(&self, guard: &'a ContainerLockGuard) -> &'a ItemStack; fn get_item_mut<'a>( &self, guard: &'a mut ContainerLockGuard, ) -> &'a mut ItemStack; fn set_item(&self, guard: &mut ContainerLockGuard, stack: ItemStack); fn get_max_stack_size(&self, guard: &ContainerLockGuard) -> i32; fn set_changed(&self, guard: &mut ContainerLockGuard); fn get_container_slot(&self) -> usize; // Provided methods fn set_by_player( &self, guard: &mut ContainerLockGuard, stack: ItemStack, _previous: &ItemStack, ) { ... } fn has_item(&self, guard: &ContainerLockGuard) -> bool { ... } fn may_place(&self, _stack: &ItemStack) -> bool { ... } fn may_pickup(&self, _guard: &ContainerLockGuard, _player: &Player) -> bool { ... } fn allow_modification( &self, guard: &ContainerLockGuard, player: &Player, ) -> bool { ... } fn get_max_stack_size_for_item( &self, guard: &ContainerLockGuard, stack: &ItemStack, ) -> i32 { ... } fn remove(&self, guard: &mut ContainerLockGuard, amount: i32) -> ItemStack { ... } fn try_remove( &self, guard: &mut ContainerLockGuard, amount: i32, max_amount: i32, player: &Player, ) -> Option<ItemStack> { ... } fn on_take( &self, guard: &mut ContainerLockGuard, _stack: &ItemStack, _player: &Player, ) -> Option<ItemStack> { ... } fn safe_take( &self, guard: &mut ContainerLockGuard, amount: i32, max_amount: i32, player: &Player, ) -> ItemStack { ... } fn safe_insert( &self, guard: &mut ContainerLockGuard, input: ItemStack, amount: i32, ) -> ItemStack { ... } fn is_fake(&self) -> bool { ... }
}
Expand description

A view into a single position in a container, accessed via a ContainerLockGuard.

Concrete implementations must implement steel_utils::DowncastType with a unique, stable key so erased slot references can recover their type, and retain one SlotStorage descriptor for their full container dependency set.

Required Methods§

Source

fn storage(&self) -> &SlotStorage

Returns this slot’s physical storage and auxiliary dependencies.

Source

fn get_item<'a>(&self, guard: &'a ContainerLockGuard) -> &'a ItemStack

Returns a reference to the item in this slot.

Source

fn get_item_mut<'a>( &self, guard: &'a mut ContainerLockGuard, ) -> &'a mut ItemStack

Returns a mutable reference to the item in this slot.

Source

fn set_item(&self, guard: &mut ContainerLockGuard, stack: ItemStack)

Sets the item in this slot.

Source

fn get_max_stack_size(&self, guard: &ContainerLockGuard) -> i32

Returns the maximum stack size for this slot.

Source

fn set_changed(&self, guard: &mut ContainerLockGuard)

Marks the slot’s container as changed.

Source

fn get_container_slot(&self) -> usize

Returns the container slot index.

Provided Methods§

Source

fn set_by_player( &self, guard: &mut ContainerLockGuard, stack: ItemStack, _previous: &ItemStack, )

Sets the item, triggered by a player action. previous is the prior item.

Source

fn has_item(&self, guard: &ContainerLockGuard) -> bool

Returns true if this slot has an item.

Source

fn may_place(&self, _stack: &ItemStack) -> bool

Returns true if the given item can be placed in this slot.

Source

fn may_pickup(&self, _guard: &ContainerLockGuard, _player: &Player) -> bool

Returns true if items can be picked up from this slot.

Source

fn allow_modification( &self, guard: &ContainerLockGuard, player: &Player, ) -> bool

Returns true if partial removal is allowed from this slot.

Source

fn get_max_stack_size_for_item( &self, guard: &ContainerLockGuard, stack: &ItemStack, ) -> i32

Returns the max stack size for stack here (min of slot and item limits).

Source

fn remove(&self, guard: &mut ContainerLockGuard, amount: i32) -> ItemStack

Removes up to amount items from this slot and returns them.

Source

fn try_remove( &self, guard: &mut ContainerLockGuard, amount: i32, max_amount: i32, player: &Player, ) -> Option<ItemStack>

Tries to remove items from this slot with validation.

Source

fn on_take( &self, guard: &mut ContainerLockGuard, _stack: &ItemStack, _player: &Player, ) -> Option<ItemStack>

Called when an item is taken. Returns any remainder that couldn’t be placed back.

Source

fn safe_take( &self, guard: &mut ContainerLockGuard, amount: i32, max_amount: i32, player: &Player, ) -> ItemStack

Takes items with all checks and callbacks. Returns the items taken.

Source

fn safe_insert( &self, guard: &mut ContainerLockGuard, input: ItemStack, amount: i32, ) -> ItemStack

Inserts up to amount items, firing set callbacks.

Source

fn is_fake(&self) -> bool

Returns true if normal menu persistence and transfer rules must not be applied to this slot.

A container-backed fake slot must be the menu’s only view of its physical SlotStorage::physical_key.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§