Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

💡Modular Per-User Toggleable System #256

Open
16 tasks
inxomnyaa opened this issue Dec 17, 2022 · 0 comments
Open
16 tasks

💡Modular Per-User Toggleable System #256

inxomnyaa opened this issue Dec 17, 2022 · 0 comments
Assignees
Labels
Feature Request Request a feature

Comments

@inxomnyaa
Copy link
Owner

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 inxomnyaa added the Feature Request Request a feature label Dec 17, 2022
@inxomnyaa inxomnyaa self-assigned this Dec 17, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature Request Request a feature
Projects
None yet
Development

No branches or pull requests

1 participant