How much Java do you know? It is a pretty simple concept if you're already solid at programming. Basically you just need to associate a field to each player/user that represents the level and then when things happen that should advance the level you adjust it. But it really depends on the details of what you want to do. Do you want experience to build up and then level, or you just want levels based on completing certain "quests"? Do you want separate leveling for several different skills or do you just mean a general level for the player?
For attaching fields to players I would suggest capabilities. For example if you had a skill called "crafting" you could create a capability that had the level as well as the experience as fields.
When a player advances a level, you probably also want to trigger an advancement although it isn't that hard to make a similar thing like a "toast message".
Then it depends on what type of things are supposed to increase the experience. Like if you wanted the person to get "building" experience every time they place a block, you could handle the block placed event. If you wanted the person to get "melee" experience you could handle the LivingAttackEvent and check if it is a player attacking and if they are using a hand-held weapon and then advance the experience.
That's pretty much it. Use a capability to keep track, use events to check for things that add experience, and optionally use advancements to help user understand when they achieve new levels.
The Meaning of Life, the Universe, and Everything.
This is gonna be for Avatar Mod 2, Out of the Iceberg, so there'll be different levels for each element. Firebending, waterbending, e.t.c. However, those levels will encompass all of that element- moves, sub elements, e.t.c. Another thing- this is also gonna be used by mobs; they may not explicitly level up, but mobs will probably have a bending level that determines their loot, what they can trade, and tells the player how strong they are. The player will gain exp on unlocking an ability/using an ability, among other things. The exp will build, then level the player. I should be fine with adding experience- I just need to create the level classes and the set, add, and get methods for experience+level. There might be advancements, but I have no plan for them as of now.
Apparently IExtendedEntityProperties is useful.
In terms of Java, I'm pretty basic. I've got basic methods and casting down, but I have no idea about reflection, can't remember recursive functions or loops, and my maths is 9th grade level (cause I'm in 9th grade). My OpenGl is also non-existent.
Actually scratch that part on IExtendedEntityProperties.
Do you know a helpful tutorial on Capabilities?