Revxrsal / Lamp

A powerful, extendable, flexible yet simple to use commands annotation framework.
MIT License
172 stars 33 forks source link

Lamp v4: Outline #101

Open Revxrsal opened 1 month ago

Revxrsal commented 1 month ago

Helle everyone o/ It has been a long and exciting journey, and I'm really happy to see the growth Lamp has been experiencing lately. As a natural consequence, we have learned what works well in Lamp, as well as what areas could use a bit of improvement.

Many features have been repeatedly requested by lots of users but were unfulfilled simply because the current design of Lamp could not bear it. Some parts in Lamp are a bit too simple to accommodate more sophisticated use cases, while others are far too complicated that they became too rigid.

To help the project move forward, I would like to introduce a few fundamental changes to the core areas of Lamp. Such changes should preserve the current set of features in Lamp, and also give space for newer additions.

In summary: Expect breaking changes in the upcoming period.

As a side note, I may be unable to streamline new features to the current version. I would like to give my full attention to refactoring Lamp and fixing its fundamental flaws that have been bugging me and others for a long while.

This refactor, while exciting, may take a good while.

This refactor should allow us to introduce the following:

  1. Arguments between subcommands: /foo <argument> bar
  2. Events that allow intercepting the creation process of commands and command parameters
  3. Easier identification of command aliases, giving significance to the order of strings provided in @Command and @Subcommand.
  4. Allow arguments that consume more than 1 string, for example, a Location that takes x y z
  5. Introduction of more utility classes that provide small, modular, and reusable blocks of functionality
  6. Make it easier to specify functionality for generic types of arguments
  7. Better messaging and localizing system
  8. Overall design improvements to the system, including:
    1. Arbitrariness of priorities in value resolvers, suggestions, etc.
    2. Make CommandHandler misuse-resistant, and make sure you can't invoke methods in the wrong order.
    3. Fix @Cooldown's funny quirks

So, while we are at it, I would like to hear your thoughts on what features you think Lamp is missing.

This will be a long process, and because this is a side project, I'll work on it when the chance allows.

This issue should track these changes, which will take place in the v4 branch. Contributions are welcome, but please pass them by me beforehand to make sure we're on the same page.

SwloBr commented 1 month ago

i'm very excited about this announcement