- You are free to shoot into your own foot bundle JContainers. But it's not advisable to do it, as this will inflict your users, as the plugin gets updated quite often and JContainers version downgrade, version conflicts due to mods bundling different versions WILL cause issues. This is time-proven fact. - 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.

JContainers

Dynamism



Embeded Lua





[New]

Domains

[New]

Form Observing

Links

Special thanks

Credits

Mods that use JContainers (the ones, I was informed about)

overslab

Permissions

shoot into your own foot





The main goal of the project is to extend Papyrus with JSON-based data structures (arrays and maps).If you have some programming background, you'll notice that you can not simply instantiate a class (or a script) in Papyrus. Almost everything exists in a single exemplar, except aliases and magic scripts. Papyrus arrays aren't expandable, single array can hold a values of a single type only.JContainers brings JMaps so that you can use them the same way FO4 structures are used. Considering the ability of JArray, JFormMap, JIntMap structures to reference/contain each other - and you can build large graphs of structures.Ability to filter/search/modify data structures with Lua. Ability to write your own Lua scripts. Example:int obj = JValue.objectFromPrototype("[{\"magnitude\": -9},{\"magnitude\": 11},{\"magnitude\": 3}]")int eleven = JValua.evalLuaFlt(obj, "return jc.accumulateValues(obj, math.max, '.magnitude')")int minusNine = JValua.evalLuaFlt(obj, "return jc.accumulateValues(obj, math.min, '.magnitude')")The Domain is isolated, standalone sandbox, non-global (per-save file), personal storage of JC's data, created by a modder for personal (or non-) use. The feature enables automatic removal of the data stored in a domain once a mod linked to the domain gets uninstalled.Example of the mod that use domain - https://github.com/SilverIce/PosePicker/commit/38d09404bb8db6c8e07548650bb327a445c452fd Internal improvement. Mimics the way a script references a form - a form referenced by any of JContainers' containers won't be unloaded by the game (unless force unloaded). Once a form deleted, the FormObserver will receive a notification and form references to that form will be set to zero.- to Saerileth and Gooser, without your interest that project would be abandoned on very early stages- to Skwerlman and Alexdunn for documentation improvements- to Verteiron for feedback, bugreports- to RealAntithesis for feedback, object' identifier generation idea- to Djarb, specifically for default-return-values idea SKSE team - it would be impossible to imagine Skyrim modding without it boost framework authors - real treasure for any C++ programmerAkheron, who made jansson - nice JSON parsing library Lua and LuaJIT creatorsFeel free to add more mods here Nexus mods Legacy of the Dragonborn (Dragonborn Gallery) version 15 “persistent museum ” patchmods (there should be some adult content warning):- You are free tobundle JContainers. But it's not advisable to do it, as this will inflict your users, as the plugin gets updated quite often and JContainers version downgrade, version conflicts due to mods bundling different versions WILL cause issues¹. This is time-proven fact.- 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.