Since battling gives exp, I find that after a while of playing I end up with a ton of exp that doesn't get used by much thanks to the lack of enchanting necessity.
So... this would be a suggestion to increase immersion/integration with the exp system from vanilla Minecraft, and less about being something from the Pokemon series. If that kind of suggestion isn't welcome, I apologize in advance.
What if there were some enchants you could put on Pokeballs(or a stack of the same kind at once, if you have them), to alter how the given ball functions in small ways?
The enchanted balls would have no special properties on a Pokemon caught with them. The enchant would basically disappear as soon as a Pokemon is caught, and the ball itself disappears as per normal if the catch fails.
For example, here are some ideas for enchants:
Moonlight Catcher I-III : Gives a small percentile-based increase per level to the Poke Ball's catch rate when used at night(basically adding a rate like a Dusk Ball would, but the enchant would be much weaker by default; it could stack with the catch rate of a Dusk Ball at night, but putting a level III Dusk enchantment on say... a normal Poke Ball would not increase its catch rate enough to match a normal Dusk Ball. On the other hand, if you used a Love Ball while it was night and the other specific requirements for capture odds increase are in effect - in this case, same species opposite gender - the catch rate could stack in some way, or be modified to include both increases). Possibly, using a ball with this enchant during the daytime or in bright light levels(perhaps a light level of 10 or greater) would have a normal catch rate; basically the darker it is where you throw the ball, the better the catch rate increase.
Daylight Catcher I-III : Pretty much the opposite of the Moonlight Catcher, with the caveat that it only functions better if you have direct line of sight to the sky(not hampered by glass, leaves, or liquid like water), and it's also NOT dusk/dawn/nighttime. The increase could scale with the time of day, building up to being most potent at noon and waning back to an ordinary catch rate afterwards.
Dawndusk Catcher I-III : Similar to the Moonlight Catcher or Daylight Catcher enchants in that they're time-based, perhaps with a higher increase than either of those. However, there's a reason for this - the enchant ONLY adds to the catch rate when used at dawn or dusk - the same timeframes at which Dawndusk Ore naturally becomes mineable for its ore instead of stone. This enchant does nothing for you if it isn't dawn or dusk when you throw the ball.
Sky Catcher I-III : This one functions based on the elevation of the Pokemon before the ball hits it. If it's at or above a certain Y level(which would be pretty high up, possibly y 70-100 or higher, I don't know) the catch rate increases to its peak, but if it's below that level the catch rate gradually gets lower until you hit sea level, at which point the enchant does absolutely nothing for you.
Depths Catcher I-III : When below sea level, the catch rate increases incrementally as you go downwards in elevation until you're at Y 10, which is where the greatest increase in catch rate occurs. Essentially a thematic opposite to Sky Catcher.
Aquatic Catcher I-III : If the Pokemon is swimming/in water when the ball hits it, the catch rate is increased by a very small amount. Does nothing if the Pokemon hit is not in water.
Those are some examples of what I could come up with based on a whim, I'm sure there are other cool ideas that would fit. If it would be an issue with implementation, you could maybe make it so that the enchants don't do anything unless you're out of battle when the ball is thrown. This would lock people who turn that off in the config out of the enchanting, though, so I don't really know. If this kind of thing is too difficult or unwieldy to implement, I understand, I just thought it was an interesting thought that I should share.