I started by setting up the basic structure of the plugin.
First, I created a way to register custom enchantments. Paper plugins allow you to actually register custom enchantments as if they were vanilla enchantments, so I set up a system to allow me to easily add more enchantments in the future (wow that’s a lot of “enchantments” in one sentence!). This did take me quite a while to figure out, as messing with registries is quite messy and a little bit confusing (who would’ve thought!).
The brunt of this 10 hours, was spent trying to replicate the vanilla enchanting table system in my plugin. This is necessary because I want to be able to add special requirements to the enchant selection process and modify the process as a whole to fit the plugin (as it is meant to be a complete revamp of the vanilla enchanting system).
I had many hardships with passing data between events, figuring out how to modify what is shown in the enchanting table and how to make those enchantments actually go on the item you enchant, and simply understanding the whole process.
The Minecraft wiki was very helpful and informative, but the whole process, from calculating the enchanting level to picking the enchants is quite complicated (though also quite interesting, I recommend reading the article if you have time) (https://minecraft.wiki/w/Enchanting_table_mechanics).
In the end, I was able to completely replicate the vanilla behavior and add my first custom enchant modifiers🎉🎉.