Artisan
A general-purpose quality of life mod, highlights include inventory extension support, the addition of a health bar and damage indicators that work in multiplayer, and added damage to the Aero and Teleblast spells.Changelog
1.1.1
Changed
- Reworked backpack upgrade availability checks so remote clients can use the upgrade station while purchase validation, gold deduction, and save writes remain server-authoritative.
- Updated inventory upgrade networking to synchronize the unlocked extra-slot count instead of sending only a purchase confirmation.
- Limited the inventory capacity transpiler to runtime slot-capacity methods. Vanilla inventory serialization and restoration are now left untouched and extended slots continue to be handled by the dedicated persistence patch.
Fixed
- Fixed remote clients being unable to hold-interact with the backpack upgrade station.
- Fixed purchased backpack slots appearing locked after a remote client reconnected, including stale lock overlays and disabled extra-slot hotkeys.
- Fixed inventory upgrade state being synchronized before the server had a valid player ID and loaded save context.
- Fixed lock overlays not refreshing when the inventory UI finished initializing after the synchronized state arrived.
- Fixed the upgrade station remaining interactable when the synchronized gold balance was lower than the next upgrade price. The unavailable prompt is now displayed correctly.
- Fixed multiplayer level-entry crashes caused by the capacity transpiler replacing the
PropState.InInventoryenum value during saved inventory restoration.
Technical
- Added an owner-targeted state request and RPC payload containing the unlocked slot count and purchase result.
- Added delayed state synchronization after inventory restoration and when the local player gains view authority.
- Added client-side caching and cleanup of synchronized unlock state for the active
PawnInventory. - Added connection ownership validation for inventory upgrade commands.
- Added deferred overlay refreshes so synchronized state is applied after the inventory UI becomes available.
1.1.0
Added
- Added support for adaptive inventory grid positioning.
- Added support for configurable inventory grid columns.
- Added support for configurable slot spacing.
- Added support for optional inventory background hiding.
- Added support for configurable inventory position offsets.
- Added support for extra slot key bindings.
Changed
- Refactored inventory UI layout system to support dynamic grid configurations.
- Reworked slot positioning to use relative offsets based on configurable grid settings.
- Improved offhand slot alignment and scaling to maintain consistency with dynamic grid layouts.
- Reorganized mod configuration into dedicated configuration groups.
:warning: Its recommended to reset your mod configuration after updating to this version to ensure all new settings are properly initialized.
Fixed
- Fixed issue where items could become permanently inaccessible when inventory slot upgrades were enabled after a save already contained items in higher slots. Such items are now automatically removed from invalid slots and dropped into the world as recoverable items.
- Fixed issue where reducing
MaxSlotscould permanently delete items stored in higher inventory slots. Items from overflow slots are now automatically dropped into the world during inventory restoration instead of being lost. - Fixed race condition between:
ServerTryRestoreFromKvpandServerSerializeToKvp, which could cause inventory data to be overwritten during restoration. Now added restore state tracking through:RestoringInventoriesand prevented slot serialization while a restore operation is in progress.
What comes next on the roadmap?
- Implementing support for synchronizing host configurations to clients in multiplayer sessions, so that settings are consistent across all players without requiring manual configuration.
If you have any suggestions or feedback on the mod, please feel free to reach out to me on the mod's GitHub repository or through the modding community discord. Your input is invaluable in helping me improve and expand the mod's features!
1.0.2
Added
- Added configurable backpack inventory slot upgrades.
- Added per-player inventory progression system.
- Added lobby upgrade chest for purchasing additional inventory slots.
- Added support for shared gold economy when purchasing inventory upgrades.
- Added locked slot visual overlays with tele-lock mesh rendering.
- Added automatic slot locking/unlocking synchronization.
- Added multiplayer-safe inventory upgrade networking.
- Added localized upgrade text support.
- Added English and Brazilian Portuguese localization support.
- Added shopkeeper purchase feedback integration.
- Added purchase sound effects and NPC reactions after successful upgrades.
- Added configurable upgrade pricing:
- Base slot upgrade price
- Upgrade price multiplier
- Added support for disabling the upgrade system entirely while keeping all slots unlocked.
- Added inventory full handling for potion ingredients and custom interactables.
- Added runtime UI refresh for slot overlays and upgrade states.
Changed
- Completely refactored extended inventory UI layout system.
- Reworked slot positioning to use deterministic absolute positioning.
- Improved inventory frame alignment and spacing.
- Improved offhand slot alignment and scaling.
- Improved locked slot visuals and overlay rendering.
- Improved inventory interaction validation.
- Improved multiplayer synchronization for inventory upgrades.
- Improved tooltip behavior for locked/full inventory states.
Fixed
- Fixed players being able to store items in locked inventory slots.
- Fixed mouse scroll selecting locked slots.
- Fixed locked slots accepting drag/drop interactions.
- Fixed inventory pickup validation when extra slots are locked.
- Fixed inventory full tooltip inconsistencies.
- Fixed potion ingredient tooltip not displaying "Inventory Full".
- Fixed upgrade chest not respawning after returning to the title screen.
- Fixed locked slot overlays not refreshing immediately after upgrades.
- Fixed several inventory UI alignment issues.
- Fixed frame positioning inconsistencies between regular slots and offhand slot.
- Fixed purchase SFX playing when upgrades failed.
- Fixed multiplayer purchase confirmation behavior.
- Fixed several UI layering and overlay positioning issues.
Technical
- Added runtime mesh-to-sprite rendering for tele-lock slot icons.
- Added server-authoritative inventory upgrade purchases.
- Added custom Mirror networking handlers for upgrade synchronization.
- Added helper utilities for locked slot validation and inventory state checks.
- Added automatic UI rebuild and refresh logic for inventory overlays.
