Mods / Window Storage Lib
- Tags:
- Author:
- Calminaion
- Side:
- Both
- Created:
- Feb 21st at 9:24 PM
- Last modified:
- May 25th at 1:18 AM
- Downloads:
- 15803
- Follow Unfollow 266
-
Latest release (for Vintage Story 1.22.0 - 1.22.2, potentially outdated):
WindowStorageLib_1.2.5.zip 1-click install
I have seperated this from my Window Storage and Vanilla Pane Storage Mods, have configured it so it can be used by other modders aswell. Let me know if any issues arise
Now requires Attribute Rendering Library (Had to change the code so it works with ARL JSON's)
Recommend Config Lib and Auto Config Lib to allow mod settings to be changed in game
Changes have been made to the config file, please remove the old one from the modconfig folder to fix any errors
Features
Animations
- Animations can be called anything (New 1.2.0)
- uses animationShapePath to determine the animations - separate shape file - can contain numerous animations in that file
- isWindow can be used so the state (open/closed) doesn't change but still animates (New 1.2.0)
slotGroups
- slotGroups now have their own section in the JSON (New 1.2.0)
- 21 Slots - 3 Groups - Max 7 per group - (Group 0,1,2) - Can now have separate amounts, example: 3,5,4 (New 1.1.0)
- Transforms can be changed per group - spacing, startOffset, zCenter, yOffset, rotateY (New 1.1.0)
- The selectionBoxes at the end of a JSON will be used to determine the size and positions of the item slots
frameBoxGroups
- frameBoxGroups now have their own section in the JSON (New 1.2.0)
- animOpen and animClose (uses animation code not name) with openFrameBox and closedFrameBox to tie the animation and the box together for interactions (New 1.2.0)
- can now have multiple independent animations (New 1.2.0)
- can use isWindow : false to disable the changing of the open/closed state (New 1.2.0)
- staticFrameBoxes not tied to animations for static elements in an array (New 1.2.0)
collisionBoxGroups
- collisionBoxGroups now have their own section in the JSON (New 1.2.0)
- openCollisionBox, closedCollisionBox which can be used for animated parts (New 1.2.0)
- staticCollisionBoxes not tied to animations for static elements in an array (New 1.2.0)
Opening & Closing
- canOpen attribute - styles can be made non-opening
- frameBoxGroups handle open/close interactions via selection boxes (New 1.2.0)
- Open and Closed toggle is Server Side only - allows linkedOpen to sync (New 1.1.1)
- linkedOpen attribute - syncs vertical windows to open together (New 1.1.0)
- Open/close works independently when stacked without linkedOpen
- Swoosh sound plays on window pane toggle (New 1.1.4)
- Will drop the closed version when an open window is broken (New 1.1.1)
Display & Stagger
- Tooltip shows current display mode per group
- Player facing block placement
- Per slot item interactions
- Four stagger modes: Straight, Alternating, Random and Fine Tune (New 1.2.0)
- Snaps to pixels for a cleaner look (New 1.1.3)
- Per slotGroup display mode interactions (New 1.2.0)
- Item placement fine-tuning via in-game TFEdit menu (onWindowStorageTransform)
Stacking
- Detects BEWindowStorageLib block directly below - hides slot selection boxes and blocks item placement when stacked
- Can manually choose which slot groups are hidden when stacked via stackingHideGroups (New 1.1.0)
- Display mode info hidden when fully stacked
- Can use placeWith: followed by shape path and pairedWith : "below" to JSON to place down a a stacked block, used with linkedOpen to sync animations.
- For a 2 high block can pair 2 shapes together and will be placed and broken together in the correct positions. Can chain as many as you want but ideally should be for 2 and 3 high - detects blocks above and will give warning and cannot place them.
Food Storage
- Vanilla style perish rate
- Perish rate changes when window opened/closed
- Per-slot freshness info in block tooltip
- Ripening spot detection
Lighting
- Items with LightHsv emit light and show their light level and colour
- Light only updates when brightest value changes - may flicker
- Ghost block lighting bug fixed
Rain Sound
- Rain on window sound
- disableRainSound attribute to disable per style
- Single shared rain sound instance across all windows
- Volume based on rainfall intensity
- Fades when conditions no longer apply
- When open uses ambient weather sound, changes Side Solid by state
Misc
- Contains transform patches for various items to fit on the display area
Controls
- Right click on frameBox to use interactions
- Right click slot with item to place in the slot
- Right click with Empty Hand on item to pick it up from slot
- Sneak + Sprint + Right Click with Empty Hand on any slot to cycle display modes for that group (New 1.2.0)
- Sprint + Right Click with Empty Hand on any slot when in Random Mode to Shuffle Depth (New 1.2.0)
- Sprint + Right Click with Empty Hand on slot with item when in Fine Tune Mode - Move Item Forward (New 1.2.0)
- Sneak + Right Click with Empty Hand on slot with item when in Fine Tune Mode Only - Move Item Backwards (New 1.2.0)
- Wrench + Right Click on a slot with an item to rotate anti-clockwise
- Wrench + Sprint + Right Click on a slot with an item to rotate clockwise
Config
- Can use the config lib menu to change any configs in game
- Universal Rain on Window Volume — 0 (Off) to 10 (Loud)
- Universal Rain Sound Range — 1 to 64 blocks
- Universal Animation Speed — 1 (Very Slow) to 5 (Very Fast)
- Universal Slot Rotation Degrees — 5 to 90
- Universal Slot Stagger Strength — 1 (Subtle) to 5 (Strong)
- See JSON example below.
-
"dependencies": { "windowstoragelib": "1.0.0" (Whatever version it is) } }required for my mod to work with your mod
Desk Picture Frame : Compatible with Desk Landscape/Portrait Single and Grouped Landscape/Portrait
Figurines : All Figurines - Compatible
Bookends - Compatible
| Mod Version | Mod Identifier | For Game version | Downloads | Released | Changelog | Download | 1-click mod install* |
|---|---|---|---|---|---|---|---|
| 1.2.5 | windowstoragelib | 3168 | May 25th at 1:18 AM | WindowStorageLib_1.2.5.zip | 1-click install | ||
| |||||||
| 1.2.4 | windowstoragelib | 2008 | May 17th at 9:39 AM | WindowStorageLib_1.2.4.zip | 1-click install | ||
|
New functions added
| |||||||
| 1.2.3 | windowstoragelib | 1901 | May 8th at 6:49 AM | WindowStorageLib_1.2.3.zip | 1-click install | ||
|
Fixed the issues with Linux - Thanks to Toyota for helping me with testing | |||||||
| 1.2.2 | windowstoragelib | 245 | May 7th at 7:46 PM | WindowStorageLib_1.2.2.zip | 1-click install | ||
|
Potential fix for Linux users | |||||||
| 1.2.1 | windowstoragelib | 2041 | May 4th at 2:49 PM | WindowStorageLib_1.2.1.zip | 1-click install | ||
|
Re-added missing wrench rotation | |||||||
| 1.2.0 | windowstoragelib | 1364 | May 3rd at 11:03 AM | WindowStorageLib_1.2.0.zip | 1-click install | ||
| |||||||
| 1.1.3 | windowstoragelib | 2698 | Apr 19th at 4:55 PM | WindowStorageLib_1.1.3.zip | 1-click install | ||
|
Stagger modes will snap to pixels when changed to give a cleaner look - used vanilla candles to test - modded items and odd shaped items may still look off but should still look better than before Updated the config so that it now uses the pixels values - "StaggerForwardOffset": 0.09375 counts as max 3 pixels when in random/alternate mode Changed info pixel as the voxels are 16 and textures are 32 so it snaps to that instead | |||||||
| 1.1.2 | windowstoragelib | 402 | Apr 18th at 8:05 PM | WindowStorageLib_1.1.2.zip | 1-click install | ||
|
Should now fix the memory leak that was caused by not disposing properly. | |||||||
| 1.1.1 | windowstoragelib | 948 | Mar 21st at 11:33 AM | WindowStorageLib_1.1.1.zip | 1-click install | ||
|
Will now drop the correct materials and closed state when an open state variant is broken Disabled slot opening/closing so now only the Frame Selection Boxes do it | |||||||
| 1.1.0 | windowstoragelib | 327 | Mar 14th at 11:24 AM | WindowStorageLib_1.1.0.zip | 1-click install | ||
|
New features added, see the main page for changes | |||||||
| 1.0.5 | windowstoragelib | 367 | Feb 28th at 2:37 PM | WindowStorageLib_1.0.5.zip | 1-click install | ||
|
Changes in code so now requires Attribute Rendering Library latest version to function, due to rotation issues when used with ARL JSON but without the code changes | |||||||
| 1.0.3 | windowstoragelib | 128 | Feb 25th at 7:51 PM | WindowStorageLib_1.0.3.zip | 1-click install | ||
|
Added tfedit so can see and edit the transforms in game (Thanks to Dana for pointing me to the code) When windows are stacked, they will detect any other windows that have BEWindowStorageLib below and will hide the slots, display mode and perish rate - still opens/closes Patches for items that had transform changes are now in this instead of the Window Storage and Vanilla Pane Storage mods | |||||||
| 1.0.2 | windowstoragelib | 133 | Feb 23rd at 6:58 AM | WindowStorageLib_1.0.2.zip | 1-click install | ||
|
Added some new functions, frame selection boxes amd collision boxes added to attributesByType Fixed the large flickering issue when placing items on a window that has a light emitting item in a slot (Still slight flickers but is barely noticable now) | |||||||
| 1.0.1 | windowstoragelib | 70 | Feb 22nd at 12:41 PM | WindowStorageLib_1.0.1.zip | 1-click install | ||
|
Lighting should now work on reload (When a light source is placed the light will flicker as the block needs to be rebuilt, this will cause a flash when something is added to the slots) Perish info should now match the vanilla shelves, and will change when opened/closed - responds to weather etc. (Doesn't update when block is broken or door open) | |||||||
| 1.0.0 | windowstoragelib | Feb 21st at 9:54 PM | 1-click install | ||||
|
Used for my Window Storage and Vanilla Pane Storage mod (Not yet implemented) Initial release - shouldn't be any errors Can be used by other modders for their window mods | |||||||
Hello, I've also an error.
I've just creat this world
14.5.2026 14:20:42 [Error] [WindowStorageLib] Failed to load config. using defaukts. Error: Input string '1.0' is not a valid integer. Path 'RainSoundVolume', line 5, position 24.
You need to remove the old config file from the mod config folder. It will then generate a new one on load.
Ok great, it work well now 😊
Couple of Errors in my logs for you. They don't cause problems because I haven't actually used any of the items yet, but did test things on creative world. Thought I'd let you know.
[Error] [WindowStorageLib] Failed to load config, using defaults. Error: Input string '1.0' is not a valid integer. Path 'RainSoundVolume', line 5, position 24.
[Error] Patch 5 in windowstoragelib:patches/cullinary-artillery.json: File aculinaryartillery:blocktypes/mixingbowlmini.json not found
4.5.2026 17:04:05 [Error] Patch 6 in windowstoragelib:patches/cullinary-artillery.json: File aculinaryartillery:blocktypes/mixingbowlmini.json not found
4.5.2026 17:04:05 [Error] Patch 11 in windowstoragelib:patches/cullinary-artillery.json: File aculinaryartillery:itemtypes/fryingpan.json not found
4.5.2026 17:04:05 [Error] Patch 12 in windowstoragelib:patches/cullinary-artillery.json: File aculinaryartillery:itemtypes/fryingpan.json not found
4.5.2026 17:04:05 [Error] Patch 3 in windowstoragelib:patches/pipeleaf.json: File pipeleaf:itemtypes/matches.json not found
4.5.2026 17:04:05 [Error] Patch 1 in windowstoragelib:patches/tailorsdelight.json: File tailorsdelight:itemtypes/tool/brush.json not found
4.5.2026 17:04:05 [Error] Patch 3 in windowstoragelib:patches/tailorsdelight.json: File tailorsdelight:itemtypes/tool/patternset.json not found
You need to remove the config file in mod config folder to clear the first one, it will generate a new one with the updated settings. Use configlib and auto config to change them while in game.
The rest are likely changes to the files in those mods, haven't looked at the patches lately. The only thing would be the transforms for the windows won't apply so the items may not fit properly.
Thanks for letting me know
Just updated to 1.2.0
Getting this minor error when loading the game:
3.5.2026 15:18:23 [Error] [WindowStorageLib] Failed to load config, using defaults. Error: Input string '1.0' is not a valid integer. Path 'RainSoundVolume', line 5, position 24.
3.5.2026 15:18:23 [Notification] [WindowStorageLib] Mod loaded successfully
I have made changes to the config file, and how the mod changes those settings, you will have to delete the old one in modconfig folder and that will fix it, I will add that info to the main page
Cthugha No problem. Thanks for letting me know I will remove it on the next update, I can triple check what I have done but always miss something.lol
Thanks for that response btw. I noticed an issue while working on one of my mods (pencil), that is you've got a patch for it (which is very cool btw), but there's a typo. It's "itemtype" when it should be "itemtypes". That said, I'm adding the attribute in on my side, so you can feel free to remove that patch and not worry about it.
Cthugha The slot amount can be changed in the json attributesByType, so you can do 7 front and 3 back, just make sure you have that amount of selection boxes at the bottom. You can move the slots where you want so if you want 7 on the bottom and 7 above that can also be done using json - the slots are in groups of 7 so you can't have for example 2 front and 3 back. The front row will always be 7 if you go higher (Max 14)
"frontSpacing": 0.120, (Space Between slots)
Back slots
I have done a test a little while ago with the new system and I couldn't get animations to work as it would not rotate with the shape and was restriced to using the cabinet JSON. Main downside to using it is not having exclusive control over the scale of items as I think the new system would be universal so the depth of the window shelf is an issue and having things being too big, like buckets and lanterns. I may come back to it when 1.22 is closer to release.
Thinking about making a mod using this. Correct me if I'm wrong, but it sounds like this uses a fixed number of storage slots, right? Any reason why it doesn't hook into the new shelf displayable system in 1.22? I'd love to see that (or a similar) system here.