I just heard back from Development about your mods.
Main feedback: test often, don't continue adding code until you know the previous part is working, send messages with values of variables to check what information is being passed to the mod, don't use while loops unless you add a stopping condition (they will run forever and kill your server), make sure events are only triggered once (usually they go in "main" or inside functions that only run ONCE), for events that run "every x milliseconds" wrap the code in an if-statement so they don't continue forever.
Fixed version https://mod.learntomod.com/program_profiles/2528995
"masks" functions: There are multiple types of skull items, therefore when creating the "oniMasks" variable you need to add an extra 1 (for Wither Skeleton Skull) at the end of the ItemStack (there's no block for that so JS was used).
"onInteract" function: made "d" global since its needed in other functions, got rid of unused variables, changed how the "oniMask" was being removed from the inventory, instead of calling "necromance" its code was pulled into the if-statement, renamed "Garmadon" function to "Garmadon_function" (code was getting confusing it with the "Garmadon" variable).
"Garmadon_function" function: changed "Garmadon" to "oni" on set navigation block, got rid of "health" variable. It was only retrieving the value once, so the value was always 10. Instead, we need to keep checking "health", all the instances were replaced with "Garmadon's health".
"combatEmpowerment" function: edited if statement check to only run when the health is between 0 and 10, and "necromanced" is true, got rid of the "damaged" variable, replaced the while loop with a "necromance" function that runs every 2000 milliseconds (the loop makes it crash), edited else-if to run when health is 0 and "necromanced" is true.
"necromance" function: this has the code that was inside the while loop, run every 2 seconds but only if Garmadon's health is greater than zero and "necromanced" is true, changed the random values to be from 1 to 6, since it picks an integer 2.5 would never come up so it was changed to 3, navigation blocks were removed they are not needed, can't changed navigation of flying block (it's possible, but need JS).
"garmadon_death" function: got rid of if-statement and "health" variable.
"reward" function: commented out reward items since they don't exist yet.
Fixed version https://mod.learntomod.com/program_profiles/2528987
The "repeat while" block inside "IAmKai" was causing the crash. Since it was looping forever the mod could not continue, so I removed it and made the effect last longer instead.
Moved all the event blocks to the "main" function, they were being called multiple times (whenever the player typed Kai or Jay) and that was multiplying the event triggers. Once an event is called it keeps running until the server is closed, so no need to call it multiple times.
In the "elements" function the "name" variable contained an ItemStack's info. Used a couple of getters to get the actual display name and compare it.
Tip: use "send message" blocks when debugging. It helps track the code's position and where it crashes. You can also use it to print variables and make sure that they contain the information you're trying to use. (for example: http://forum.learntomod.com/t/how-to-debug-player-interact-event/2967)