pub struct InventoryDef {
pub id: String,
pub slot_count: usize,
pub layout: Vec<SlotLayout>,
pub include_player_inventory: bool,
pub player_inv_offset: (f32, f32),
pub background_texture: Option<String>,
pub title: String,
pub background_size: Option<(f32, f32)>,
pub machine: Option<Machine>,
}Expand description
Describes one inventory-backed screen: how many slots a mod block has, where they sit, whether the player’s own inventory is appended below, and which background texture to draw (vanilla default, or a mod’s own).
Fields§
§id: String§slot_count: usize§layout: Vec<SlotLayout>Per-slot pixel positions. Empty = auto-generate a default grid (see
InventoryDef::default_grid).
include_player_inventory: boolAppends the player’s main inventory (3×9) + hotbar (9) below the custom slots — no armor, no offhand. Native vanilla slot rendering.
player_inv_offset: (f32, f32)§background_texture: Option<String>None = default vanilla-style panel texture.
title: String§background_size: Option<(f32, f32)>Screen size to center the container on — None uses the vanilla
default (176×166). Set this when a custom on_ui_render overlay
draws decoration at a different size, so the real vanilla Slots
(positioned by layout/player_inv_offset relative to the
container’s top-left corner) land under that decoration instead of
the two disagreeing about where the top-left corner even is.
machine: Option<Machine>A machine’s part of it (.yui <RecipeArea kind="…">): its slots
make recipes of a kind, like a crafting table.
Implementations§
Source§impl InventoryDef
impl InventoryDef
pub fn new(id: impl Into<String>, slot_count: usize) -> InventoryDef
Sourcepub fn machine(self, machine: Machine) -> InventoryDef
pub fn machine(self, machine: Machine) -> InventoryDef
Makes part of it a machine (see Machine).
Sourcepub fn layout(self, layout: Vec<SlotLayout>) -> InventoryDef
pub fn layout(self, layout: Vec<SlotLayout>) -> InventoryDef
Explicit per-slot pixel positions, overriding the default grid.
Sourcepub fn layout_from_text(self, text: &str) -> InventoryDef
pub fn layout_from_text(self, text: &str) -> InventoryDef
Remap the slot grid from Yog Data text (JSON too): a list of
{x, y} — one entry per slot, in slot-index order. Lets users/mod-packs
override the layout without recompiling. Text that doesn’t read is
ignored (falls back to whatever layout was set before, or the default grid).
Sourcepub fn include_player_inventory(self, v: bool) -> InventoryDef
pub fn include_player_inventory(self, v: bool) -> InventoryDef
Whether the player’s main inventory + hotbar (no armor/offhand) is
appended below the custom slots. Default: true.
pub fn player_inv_offset(self, x: f32, y: f32) -> InventoryDef
Sourcepub fn background_texture(self, path: impl Into<String>) -> InventoryDef
pub fn background_texture(self, path: impl Into<String>) -> InventoryDef
Custom background texture (resource path); None keeps the default
vanilla-style panel.
Sourcepub fn background_size(self, w: f32, h: f32) -> InventoryDef
pub fn background_size(self, w: f32, h: f32) -> InventoryDef
Size (in GUI pixels) a custom on_ui_render overlay draws its
decoration at — used to center the real vanilla container on the
same footprint so its Slots land under that decoration. Leave
unset to keep the vanilla default 176×166 centering.
pub fn title(self, title: impl Into<String>) -> InventoryDef
Sourcepub fn resolved_layout(&self) -> Vec<SlotLayout>
pub fn resolved_layout(&self) -> Vec<SlotLayout>
Resolve the effective slot layout: the explicit one if set, otherwise
InventoryDef::default_grid.
Sourcepub fn default_grid(slot_count: usize) -> Vec<SlotLayout>
pub fn default_grid(slot_count: usize) -> Vec<SlotLayout>
Default vanilla-style grid: up to 9 columns, 18px spacing, starting at (8, 18) — leaves room for a title above, matches vanilla containers.
Trait Implementations§
Source§impl Clone for InventoryDef
impl Clone for InventoryDef
Source§fn clone(&self) -> InventoryDef
fn clone(&self) -> InventoryDef
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for InventoryDef
impl Debug for InventoryDef
Source§impl Schema for InventoryDef
impl Schema for InventoryDef
Source§fn encode(&self, __yog_w: &mut Writer)
fn encode(&self, __yog_w: &mut Writer)
Schema::write’s
value encoded, unless the type knows better (derived ones do).Source§fn decode(__yog_d: &mut Decoder<'_>) -> Option<InventoryDef>
fn decode(__yog_d: &mut Decoder<'_>) -> Option<InventoryDef>
None when it isn’t
what Schema::encode writes — then read_bytes reads the slow
way, which says what’s wrong. Through a value unless the type knows
better (derived ones do).Source§fn pack(&self, __yog_p: &mut Packer)
fn pack(&self, __yog_p: &mut Packer)
crate::frame): its binary form as
bytes, unless the type packs itself (derived ones and plain types do).Source§fn unpack(__yog_u: &mut Unpacker<'_>) -> Option<InventoryDef>
fn unpack(__yog_u: &mut Unpacker<'_>) -> Option<InventoryDef>
None if the bytes aren’t what
Schema::pack writes.Source§fn read(v: &ValueRef<'_>, cx: &mut Reader<'_>) -> Option<InventoryDef>
fn read(v: &ValueRef<'_>, cx: &mut Reader<'_>) -> Option<InventoryDef>
v. Problems go to cx at its current path; None when the
value couldn’t be read (the problem is in cx).Source§fn absent() -> Option<Self>
fn absent() -> Option<Self>
None: the field is required.Source§fn pack_list(items: &[Self], p: &mut Packer)
fn pack_list(items: &[Self], p: &mut Packer)
Source§fn encode_list(items: &[Self], w: &mut Writer)
fn encode_list(items: &[Self], w: &mut Writer)
Auto Trait Implementations§
impl Freeze for InventoryDef
impl RefUnwindSafe for InventoryDef
impl Send for InventoryDef
impl Sync for InventoryDef
impl Unpin for InventoryDef
impl UnsafeUnpin for InventoryDef
impl UnwindSafe for InventoryDef
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Message for Twhere
T: Schema,
impl<T> Message for Twhere
T: Schema,
Source§fn from_bytes(bytes: &[u8]) -> Option<Self>
fn from_bytes(bytes: &[u8]) -> Option<Self>
None if it isn’t one.Source§fn with_bytes<R>(&self, f: impl FnOnce(&[u8]) -> R) -> R
fn with_bytes<R>(&self, f: impl FnOnce(&[u8]) -> R) -> R
f on the payload, packed in this thread’s reused buffers: nothing
allocated once they’ve grown to the thread’s messages.