SKYRIM
JContainers by silvericed
Skyrim » Modders resources and tutorials
Added: 10/01/2014 - 10:23PM
Updated: 25/03/2015 - 07:42PM

8,970 Endorsements

3.2.3 Latest version

145,644 Unique D/Ls

178,289 Total D/Ls

355,886 Total Views

Uploaded by silvericed

Description

Last updated at 19:42, 25 Mar 2015 Uploaded at 22:23, 10 Jan 2014

13th Mar - Uploaded an optional Skyrim plugin which sole purpose is to be a safeguard - to warn via message box if JContainers was not installed properly, warn in case of other user mistakes (downgrade, missing dependencies and etc).

Created an open jcontainers-users group - a location to unite a people from various sites who use this plugin in their projects

3th Mar - v3.2.3 released. See change log for more info.


JContainers

Data structures framework for Skyrim


Description

JContainers is a modding framework that extends Papyrus by implemented basic data structures. It features:

- Data structures (arrays, dictionaries)
- Import and export data to and from JSON files (for ex. read configs, backup data and etc)
- Path resolving - simplifies access to nested data structures
- Lua - the main purpose is to minimize the amount of cumbersome Papyrus code needed to handle data by moving it into Lua scripts
- C++ API - interaction with JC via C++ interface. This mean you can invoke C++ analogue of any Papyrus function JC provides. See developer resources archive for usage example.

Links

Latest documentation
Watch project news and updates on GitHub

Installation

Use NMM/MO/anything.
For manual installation open you Skyrim Data folder, place the scripts, SKSE etc in that folder. When ask to merge folders hit yes.

Mods using this plugin

Swift Potion Reborn - configurable auto-potion system
AH Hotkeys - Skyrim Hotkey Manager
HooKmmerse - auto resolves cross-mod jump-height, skeleton scale value conflicts. Explanation
KeyInput - text input framework
Proper Potion Names - a potion name reveals effects of the potion
Familiar Faces - meet your characters from past play-throughs in-game
Druids Den - Collectors Edition - nature-themed player home for magpies & treasure hunters

Versioning note

JContainers uses semantic versioning scheme - API.FEATURE.PATCH. Essence:

- API version increases when API changes in backward-incompatible way. Note that it's possible to run different plugins with different API versions in parallel. E.g. JC 3.x can be installed alongside with 4.x
- FEATURE version increases when functionality added in a backwards-compatible manner. Mod requiring JC 3.1 will perform well with JC 3.2 and above
- PATCH version increases when tiny bug fixes added.

Bundle or not?

Bundling a resource simplifies installation for end users, and it is harmless for resources like 3D resources, ESP files, it may cause an issues in case when a complex mod being bundled. It may freeze a bugs in time (a mod X bundles an older version of Y causing issues, fixed long ago), may cause downgrade issue (A mod X bundles an older version of Y, overrides newer version of Y. The Y capable to upgrade itself from an older version, but not vice versa). And the more mods dependent on a shared resource the more noticeable issues may become.

Special thanks

thanks to Saerileth and Gooser, without your interest that project would be abandoned
thanks to Skwerlman and Alexdunn for documentation improvements
thanks to Verteiron for feedback, bugreports
thanks to RealAntithesis for ideas he contributed, feedback

Credits

SKSE team - it would be impossible to imagine Skyrim modding without it
boost framework authors - real treasure for any C++ programmer
Akheron, who made jansson - nice JSON parsing library
Lua and LuaJIT creators


Permissions

- You (as mod author) are free to bundle this plugin. Note that this may lead to downgrade issue, when your mod bundles older version, overrides new version (bundled by another mod or installed manually), which may lead to JC data loss, JC-dependent mods may stop work. I warned you.
- It's up to you to report to a 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.