SKYRIM
JContainers by silvericed
Skyrim » Modders resources and tutorials
Added: 10/01/2014 - 10:23PM
Updated: 08/04/2015 - 12:03PM

9,672 Endorsements

3.2.3 Latest version

156,332 Unique D/Ls

192,540 Total D/Ls

384,038 Total Views

Uploaded by silvericed

Description

Last updated at 12:03, 8 Apr 2015 Uploaded at 22:23, 10 Jan 2014

- 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 config files, 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 consumption system
AH Hotkeys - Skyrim Hotkey Manager
HooKmmerse - summarizes node scale values that various mods applying on PC/NPCs. Explanation
KeyInput - text input framework
Proper Potion Names - dynamically renames potions, so a potion name reveals its effects
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 issues in case when a complex mod being bundled. It may freeze 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

to Saerileth and Gooser, without your interest that project would be abandoned
to Skwerlman and Alexdunn for documentation improvements
to Verteiron for feedback, bugreports
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.