MagicWE icon indicating copy to clipboard operation
MagicWE copied to clipboard

💡Modular Per-User Toggleable System

Open inxomnyaa opened this issue 1 year ago • 0 comments

Feature Request: Modular Per-User Toggleable System

I propose the implementation of a modular system in our codebase that allows users to toggle specific features on or off. This would allow users to customize the functionality of MagicWE2 to their specific needs and maybe make it easier for them to use.

The modular system should be easy for developers to implement and maintain, and it should be flexible enough to accommodate a wide range of features and functionality. It would be beneficial if the system was also easy for users to understand and use, so that they can quickly and easily toggle the features they need, and developers be able to create their own modules without much hassle.

We are already using such a modular system on our server @WolvesFortress. The code structure there currently is a bit complex, but the overall advantage of being able to toggle off i.e. a crashing, incompatible or indev module outweights the complexity, and since we already know the flaws of the system it might be easier to adjust MagicWE2 to not have those.

Overall, I believe that a modular per-user toggleable system would greatly improve the usability and functionality of MagicWE2, and I hope that it can be implemented in a future release.

💭Thoughts and concerns

  • At the current state of MagicWE2 development i am not sure if this feature can even still be implemented. The code is way too nested and complex, despite several rewrite attempts.
  • People might not actually realize that this is being implemented, nor that they can toggle modules globally. This has been an issue with new features in the past. Previously, the "solution" was simply to force a feature to be activated, i.e. the boss bar, selection outline or sidebar.
  • Similar to the previous point, the added complexity or maintenance cost might confuse people, and they might be left wondering why some features don't work for them
  • Updating modules might cause configs to not work anymore. A primitive solution would be to back up the current config and generate a new one. This might cause security risks like players suddenly being able to use specific modules or edit regions they aren't supposed to though.

📃 Features

  • [ ] Global config (heavily rely on libMarshal)
  • [ ] Per module config (might be implemented into the global config)
  • [ ] Global toggles
  • [ ] User specific toggles
  • [ ] Permission / Role specific toggles
  • [ ] Must be able to
    • [ ] register commands
    • [ ] register tools
    • [ ] register events & event listeners
    • [ ] do anything a session can do (process blocks and selections)
    • [ ] register or modify scoreboards
  • [ ] inform users about modules upon first join
  • [ ] module toggle interface and overview (form/scoreboard?)
    • [ ] Scoreboard should have multiple select-able pages (optional)
  • [ ] Module command; Syntax: //module <module_name> [global | username]
  • [ ] Beta and Dev modules

inxomnyaa avatar Dec 17 '22 03:12 inxomnyaa