JContainers
Data structures framework for Skyrim
Motivation and Overview
Papyrus is an overly simplified language, a language without convenient data structures. In some cases stock functionality in enough. In other cases in a result of this simpleness you may get a script containing more data (texts, numbers) than a code. In cases like these, JContainers makes things much easier by giving you basic data structures.
JContainers (JSON Containers or just JC) is intended to store data in a structured, convenient way. For that purpose JC implements basic data structures: arrays and associative containers (dictionaries). All data persists in a SKSE co-save file.
JContainers features:
- Data structures.
- Import and export data to and from JSON files. https://github.com/SilverIce/JContainers/blob/master/JContainers/test_data/json_loading_test/jdb.json
- https://github.com/SilverIce/JContainers/blob/master/JC.md#path-resolving - simplifies access to nested data
- https://github.com/SilverIce/JContainers/blob/master/JC.md#lua (in progress) - The main purpose is to minimize the amount of cumbersome Papyrus code needed to handle data by moving it into Lua scripts. https://github.com/SilverIce/JContainers/releases/tag/v3.2-alpha.1
- C++ API - interaction with JC via C++ interface. This mean you can invoke C++ anologue of any Papyrus function JC provides.
Links
https://github.com/SilverIce/JContainers/releases/tag/v3.1.0
https://github.com/SilverIce/JContainers/blob/master/JC.md
https://github.com/SilverIce/JContainers/issues
Special thanks
to Saerileth and Gooser, without your interest that project would be abandoned on early stages
to Skwerlman and Alex Dunn for documentation improvements
Verteiron - his Familiar Faces mod makes my framework much more noticeable on nexus
thanks to RealAntithesis for interesting ideas
Third party libraries used
skse library - it would be impossible to imagine Skyrim modding without it
boost framework - real treasure for any C++ programmer
jansson - nice json parsing library
LuaJit - Just-In-Time Compiler for Lua
Permissions
-You (as mod author) may bundle this plugin.
- It's up to you to report to the user of incompatibility of installed JC API version and the version mod has been compiled for the best user's experience. Valid condition is `JC.APIVersion() == hardcodedAPIVersion && JC.featureVersion() >= hardcodedFeatureVersion`.
- The files in this plugin are not to be modified under any circumstance as that could cause problems when a load order includes multiple mods that use the plugin and one or more mods have modified the files in this plugin.