turn multiple scripts into addon
Enabling an addon calls register
The issue in new code posted is the lack of
if __name__ == &quot;__main__&quot;:
     register() 

(pretty much ubiquitous in all blender addons and UI code etc etc, or for python command line scripts) Without this conditional register() will be run on import (Worth noting on import __name__ is the module name, ie not matching &quot;__main__&quot;).
When an addon is enabled it is imported and calls its module.register() Henceforth your code is registering a second time and throws the error on the first class registered in register method.
The conditional code is there so scripts can be tested in the text editor.
Note: another thing to look for:  for registered classes the bl_idname property is how they are known to blender.