{"mod":{"modid":4286,"assetid":25347,"name":"Purposeful Storage","text":"
Tired of stuffing everything into chests and trunks?<\/strong> With this mod you can!<\/p>\r\n If you want to contact me or see more info about the mod plans, reach out on the VS Discord<\/a> channel, or DM me - @sonzina.<\/p>\r\n Backup your world<\/span> before updating ANY mod - unintentional things can happen and you might lose your stuff!<\/strong><\/p>\r\n Compatible<\/strong> with: Combat Overhaul: Armory<\/a>. Confused? Just hover over a block in your inventory to see what kinds of items it can hold.<\/p>\r\n This mod is in very early development so feel free to suggest new storage ideas<\/span>! Known Issues:<\/strong><\/p>\r\n <\/p>\r\n Note: Parts of these examples are related to Food Shelves, but the codebase and process for adding compatibility is exactly the same.<\/strong><\/em><\/p>\r\n I've made adding compatibility an extremely easy process - it's just a JSON patch, that even ChatGPT can write if you give it an example.<\/p>\r\n There are 2 \"folders\" of interest if you want to add compatibility for your mod - foodshelves\/config\/restrictions<\/strong> and foodshelves\/config\/transformations.<\/strong><\/p>\r\n <\/p>\r\n \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Whitelisting:<\/strong><\/p>\r\n Whitelisting is allowing your item (presumably, food or some type of crock) to be place-able in my containers - let's say in the Meat Freezer. To allow this, you'll need a JSON patch to add your itemcodes to the appropriate JSON file.<\/p>\r\n The restrictions file has 3 \"options\" - most of the time only 2 are visible: \"CollectibleTypes\"<\/strong>, \"CollectibleCodes\"<\/strong>, and \"GroupingCodes\"<\/strong> (the last one is ONLY for the Vegetable Basket).<\/p>\r\n CollectibleTypes:<\/strong> These are the Block Class Names<\/em> that the item has. For example, restrictions\/barrelrack.json<\/strong> has \"game:BlockBarrel\"<\/strong> which tells the game: \"all blocks that have BlockBarrel from the game domain should be allowed to be placed in this block.\" - <\/em>meaning all vanilla containers, and modded containers (like various wood-typed barrels from Vanilla Variants mod), will automatically be whitelisted. This option is generally discouraged to be used.<\/p>\r\n CollectibleCodes:<\/strong> These are the itemcodes<\/em> of the items themselves. Usually this is what you'll be patching, and it's provided in the example below.<\/strong><\/p>\r\n GroupingCodes: <\/strong>These are also the itemcodes<\/em> of the items themselves, just grouped into separate segments. Only the Vegetable Basket restrictions file has this. It's used for the different positioning and stacksizes of items that the vegetable basket can have.<\/p>\r\n You can open the files in the restricitons folder to take a better look at them - you'll notice that only the itemcodes in that file are tied to the items place-able in the containers they're meant for, granted you don't have any other patches activated.<\/p>\r\n <\/p>\r\n Example patch: This example adds raw crabmeat, snakemeat, and fish fillet from Primitive Survival to the Meat Freezer whitelist, so you can place the modded raw meat in the Freezer. You can find more examples in foodshelves\/patches<\/strong> folder (be advised that not all patches are examples on patching the foodshelves mod itself). <\/p>\r\n <\/p>\r\n \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Modifying the position of the items:<\/strong><\/p>\r\n Your item might be misaligned, too small or too big when put in the container. That's where specific transformations<\/strong> come in play.<\/p>\r\n In the foodshelves\/config\/transformations<\/strong> folder, there are also files that add additional transformations<\/strong> for the items placed in the containers.<\/p>\r\n For example, the PieShelf needs to have all placed Cheese blocks rotated by 45 degrees, but not touch other items placeable inside (eg. the Pie should be as it was).<\/p>\r\n { This example does exactly that - it modifies all items that have *cheese-* in their itemcode (asterisk is the wildcard, meaning any number of characters may appear in the asterisk's place) to be rotated by 45 degrees, while the rest remain the same.<\/p>\r\n <\/p>\r\n Example patch:<\/em> <\/p>\r\n {<\/em> <\/p>\r\n Hopefully this helped. If you need further help, feel free to reach out to me.<\/p>\r\n<\/div>\r\n<\/div>\r\n <\/p>\r\n Enjoying my Vintage Story mods? Consider supporting me!<\/strong><\/p>\r\n <\/p>\r\n <\/p>\r\n
Wish you could organize your items in a more visual and intuitive way?<\/strong><\/p>\r\n
\r\n
This mod contains Built-in<\/strong> texture variations.<\/em><\/p>\r\n
<\/strong>If you like this mod, checkout: Food Shelves<\/strong><\/a>
Personal recommendation:<\/span> Shelf Obsessed<\/strong><\/a><\/span><\/p>\r\n
\r\n\r\n
[<\/em>
{<\/em>
\"file\": \"foodshelves:config\/restrictions\/glassware\/meatfreezer.json\", -- <\/strong><\/em>target this file<\/strong>
\"op\": \"addmerge\", \"path\": \"\/CollectibleCodes\", \"side\": \"server\", -- <\/strong><\/em>addmerge (append another value, not erasing previous ones), to the path \/CollectibleCodes, server-side patch<\/strong>
\"value\": [ -- <\/strong><\/em>these are the values that will be added<\/strong>
\"primitivesurvival:crabmeat-raw\",<\/em>
\"primitivesurvival:snakemeat-raw\",<\/em>
\"primitivesurvival:fishfillet-raw\"<\/em>
],<\/em>
\"dependsOn\": [ { \"modid\": \"primitivesurvival\" } ] -- <\/strong><\/em>the mod that will activate the patch<\/strong>
},<\/em>
{<\/em>
\"file\": \"foodshelves:config\/restrictions\/other\/buckethook.json\",<\/em>
\"op\": \"addmerge\", \"path\": \"\/CollectibleCodes\/-\", \"side\": \"server\",<\/em>
\"value\": \"primitivesurvival:metalbucket-*\",<\/em>
\"dependsOn\": [ { \"modid\": \"primitivesurvival\" } ]<\/em>
}<\/em>
]<\/em><\/p>\r\n
\"*cheese-*\": { \"origin\": { \"x\": 0.5, \"y\": 0, \"z\": 0.5 }, \"rotation\": { \"x\": 0, \"y\": 45, \"z\": 0 } }
}<\/p>\r\n
\"file\": \"purposefulstorage:config\/transformations\/weapons\/longweapons.json\",<\/em>
\"op\": \"replace\", \"path\": \"\/game:bow-recurve\", \"side\": \"server\", -- <\/strong><\/em>note that we added a value that's missing (game:bow-recurve) in the path itself, not the value.<\/strong>
\"value\": { <\/em>-- here we only modify the position of the item<\/strong>
\"origin\": { \"x\": 0.5, \"y\": 0, \"z\": 0.5 }, \"translation\": { \"x\": 0.885, \"y\": 0.035, \"z\": -0.125 }, \"scaleXYZ\": { \"x\": 1.1, \"y\": 1, \"z\": 1 }, \"rotation\": { \"x\": 20, \"y\": 0, \"z\": 0 }<\/em>
},<\/em>
\"dependsOn\": [ { \"modid\": \"armory\" } ]<\/em>
}<\/em><\/p>\r\n
<\/a>
<\/a>
<\/a><\/p>","author":"SONZINA","urlalias":"purposefulstorage","logofilename":"https:\/\/moddbcdn.vintagestory.at\/thumbnailsmall_7a419d341fd9e4894f3ffb77d541789f.png","logofile":"https:\/\/moddbcdn.vintagestory.at\/thumbnailsmall_7a419d341fd9e4894f3ffb77d541789f.png","logofiledb":"https:\/\/moddbcdn.vintagestory.at\/thumbnailsmall_7a419d341fd9e4894f3ffb77d541789f.png","homepageurl":"","sourcecodeurl":"https:\/\/github.com\/SONZ-INA\/VintageStory-PurposefulStorage","trailervideourl":"","issuetrackerurl":"https:\/\/github.com\/SONZ-INA\/VintageStory-PurposefulStorage\/issues","wikiurl":"","downloads":112645,"follows":1799,"trendingpoints":1868,"comments":192,"side":"both","type":"mod","created":"2025-06-12 10:36:30","lastreleased":"2025-11-09 12:34:55","lastmodified":"2025-12-05 04:10:15","tags":["Storage"],"releases":[{"releaseid":28957,"mainfile":"https:\/\/moddbcdn.vintagestory.at\/purposefulstorage_1._0f60164a6c247dd1ce360f6f5087174e.zip?dl=purposefulstorage_1.5.1.zip","filename":"purposefulstorage_1.5.1.zip","fileid":63943,"downloads":16388,"tags":["1.21.0","1.21.1-rc.1","1.21.1-rc.2","1.21.1","1.21.2-rc.1","1.21.2-rc.2","1.21.2-rc.3","1.21.2","1.21.3","1.21.4","1.21.5"],"modidstr":"purposefulstorage","modversion":"1.5.1","created":"2025-11-09 12:02:05","changelog":"\r\n
\r\n