Bukkit/Bukkit — comment on commit 1a9118f8d26202ad41202e2017b3f7691dcedef8
File:  line 0
By mikeprimm:

The enchants don't exist at this point in the code: I'd have offered them if they did - the values communicated to the client are nothing but numbers, and the client creates some nonsense text to make it look cute, and limits the selectable choices based on which ones are less than or equal to the player's exp level. When the client selects one of the choices, all that comes from them is the index into this list of numbers, and the set of enchants is THEN randomly generated based on nothing but the enchant level. This is the flow of the vanilla client and server.

So, basically, all this event CAN do to alter the client is control the numbers offered (since that is the extent of what goes to the client,and what the client understands): the second event allows control of what enchants do or don't happen (as well as the exp level cost charged), so you're free to change the numbers to mean whatever you want, since the handler for the second event can then make them mean whatever you choose.