pub struct RestrictedSlot {
base: NormalSlot,
rules: Arc<RestrictedRules>,
}Expand description
A NormalSlot with custom place and pickup rules.
Fields§
§base: NormalSlot§rules: Arc<RestrictedRules>Implementations§
Source§impl RestrictedSlot
impl RestrictedSlot
Sourcepub fn new(
container: impl Into<ContainerRef>,
index: usize,
may_place: impl Fn(usize, &ItemStack) -> bool + Send + Sync + 'static,
) -> Self
pub fn new( container: impl Into<ContainerRef>, index: usize, may_place: impl Fn(usize, &ItemStack) -> bool + Send + Sync + 'static, ) -> Self
Placement gated by may_place, which receives the container-local slot
index; pickup stays allowed.
Sourcepub fn guarded(
container: impl Into<ContainerRef>,
index: usize,
may_place: impl Fn(usize, &ItemStack) -> bool + Send + Sync + 'static,
may_pickup: impl Fn(usize, &ItemStack, &ContainerLockGuard, &Player) -> bool + Send + Sync + 'static,
) -> Self
pub fn guarded( container: impl Into<ContainerRef>, index: usize, may_place: impl Fn(usize, &ItemStack) -> bool + Send + Sync + 'static, may_pickup: impl Fn(usize, &ItemStack, &ContainerLockGuard, &Player) -> bool + Send + Sync + 'static, ) -> Self
Like new, but pickup is gated too.
Sourcepub(crate) fn with_rules(
container: impl Into<ContainerRef>,
index: usize,
rules: Arc<RestrictedRules>,
) -> Self
pub(crate) fn with_rules( container: impl Into<ContainerRef>, index: usize, rules: Arc<RestrictedRules>, ) -> Self
Shares one rules object across a whole section’s slots.
Trait Implementations§
Source§impl DowncastType for RestrictedSlot
impl DowncastType for RestrictedSlot
Source§const TYPE_KEY: DowncastTypeKey
const TYPE_KEY: DowncastTypeKey
The process-wide key for this concrete type.
Source§impl Slot for RestrictedSlot
impl Slot for RestrictedSlot
Source§fn storage(&self) -> &SlotStorage
fn storage(&self) -> &SlotStorage
Returns this slot’s physical storage and auxiliary dependencies.
Source§fn get_item<'a>(&self, guard: &'a ContainerLockGuard) -> &'a ItemStack
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
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)
fn set_item(&self, guard: &mut ContainerLockGuard, stack: ItemStack)
Sets the item in this slot.
Source§fn may_place(&self, stack: &ItemStack) -> bool
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
fn may_pickup(&self, guard: &ContainerLockGuard, player: &Player) -> bool
Returns true if items can be picked up from this slot.
Source§fn get_max_stack_size(&self, guard: &ContainerLockGuard) -> i32
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)
fn set_changed(&self, guard: &mut ContainerLockGuard)
Marks the slot’s container as changed.
Source§fn get_container_slot(&self) -> usize
fn get_container_slot(&self) -> usize
Returns the container slot index.
Source§fn set_by_player(
&self,
guard: &mut ContainerLockGuard,
stack: ItemStack,
_previous: &ItemStack,
)
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
fn has_item(&self, guard: &ContainerLockGuard) -> bool
Returns true if this slot has an item.
Source§fn allow_modification(
&self,
guard: &ContainerLockGuard,
player: &Player,
) -> bool
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
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
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>
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>
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
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
fn safe_insert( &self, guard: &mut ContainerLockGuard, input: ItemStack, amount: i32, ) -> ItemStack
Inserts up to
amount items, firing set callbacks.Auto Trait Implementations§
impl !RefUnwindSafe for RestrictedSlot
impl !UnwindSafe for RestrictedSlot
impl Freeze for RestrictedSlot
impl Send for RestrictedSlot
impl Sync for RestrictedSlot
impl Unpin for RestrictedSlot
impl UnsafeUnpin for RestrictedSlot
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Downcast for Twhere
T: ErasedType + ?Sized,
impl<T> Downcast for Twhere
T: ErasedType + ?Sized,
Source§fn is<T>(&self) -> boolwhere
T: DowncastType,
fn is<T>(&self) -> boolwhere
T: DowncastType,
Returns whether the erased value has concrete type
T.Source§fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastType,
fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastType,
Returns the erased value as
T when its key matches.Source§fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: DowncastType,
fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: DowncastType,
Returns the erased value as mutable
T when its key matches.Source§impl<T> ErasedType for Twhere
T: DowncastType,
impl<T> ErasedType for Twhere
T: DowncastType,
fn downcast_type_key(&self) -> DowncastTypeKey
fn downcast_data(&self) -> *const ()
fn downcast_data_mut(&mut self) -> *mut ()
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreWraps this value in an
Arc<SyncMutex<>>