-
-
Notifications
You must be signed in to change notification settings - Fork 25
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
Cloud Command System Migration #279
Merged
NotMyFault
merged 14 commits into
IntellectualSites:cloud-beta
from
Aurelien30000:feature/cloud-command-system
Oct 15, 2023
Merged
Cloud Command System Migration #279
NotMyFault
merged 14 commits into
IntellectualSites:cloud-beta
from
Aurelien30000:feature/cloud-command-system
Oct 15, 2023
Commits on Oct 15, 2023
-
Cloud Command System Migration
# Introduction **This is the first pass of the cloud command migration for FAVS.** There will be a second one to restore old-fashioned command syntax, tracked as IntellectualSites#81. _I have to highlight that this is my first experience with this, must-say wonderful, command system. I have spent a lot of time reading every available documentation and code piece. If @Citymonstret want to take a look and maybe give us tips to avoid "ugly" workarounds or handling, we would be glad!_ The whole pull request has been tested, not yet thoroughly, you can have a global overview, but it is not really ready. If you have any question or remark, do not hesitate! -- # General Command Management I have opted to use the annotations extension of the cloud command system. In my opinion, this is better suited to the current brush format handling which is all done inside brush classes. **Executors have been kept and brush & performer command are still handled inside their classes.** - ``Snipe`` class has been extended for a usage as a commander, because FAVS relies on a lot on this class. - ``CommandRegistry`` is the main place for the whole handling behind the scenes. Otherwise, commands are registered as usually done in cloud, with some specific annotations when needed. **``SniperCommander`` class is the commander to use with cloud command system. If the player exists, it returns its sniper. Otherwise, it returns a simple ``SniperSender``, similar to ``CommandSender``.** # Command Manager FAVS uses the paper command manager, when available, to enjoy some improvements. Falls back to bukkit command manager otherwise. - Async tab-completions are enabled if available. - ``Snipe``, ``PerformerSnipe`` & ``Toolkit`` classes are registered into the injector in order to be injected in command methods. - Command exceptions are adapted and customized with the FAVS message syntax. # Command Post-Processor FAVS requires the command post-processor ins order handle specific FAVS behavior. - Handles the ``@RequireToolkit`` annotation, makes sure the toolkit is available and the value stored. - Handles the ``@DynamicRange`` annotation, used to define a range from non-constant variables, using reflection. - Prepares the brush & performer when needed, their ``Snipe`` and stores them. # Annotations & Parser FAVS uses some annotations to facilitate development, based on common rules and behaviors. - Handles the ``@RequireToolkit`` annotation, modifies the command meta. - Handles the custom command execution method handler, which should differ for brush & performer. Cloud commands are designed to live in a class instance, this is not suitable to the current management of brush & performer. I have opted for a custom execution method which uses the brush & performer instance from the execution context instead of the base instance. _This avoid extra parameters for each command method._ # Arguments FAVS needs a lot of custom arguments for either factories, registries, custom types, custom needs, etc. **Suggestions & parsers are also declared via annotations in custom classes.** # Other Changes - All classes related to internal command managing from VS have been removed. - ``FastAsyncVoxelSniper`` class has been removed. As far as I know, this class was useless and is now for sure. - Some classes and methods have been added or refactored, but the overall codebase is the same to try keeping maximum compatibility. - Some translations have been reorganized or removed. - Some code format has been modified, there will be another pull request next year hopefully to unify comments format. - Improvements to brush properties loading. Previously, all aliases were loaded, subsequently loading the same brush several times. - Modern switch syntax has replaced old ones. - General improvements. # Known Problems: - There is currently one small issue with static/literal arguments and their aliases. Tab-completions are not handled for all aliases due to https://github.com/Incendo/cloud/blob/master/cloud-core/src/main/java/cloud/commandframework/arguments/StaticArgument.java#L134. - Brigadier extension is voluntarily not used due to some incompatibilities with FAVS commands syntax.
Configuration menu - View commit details
-
Copy full SHA for 2d85872 - Browse repository at this point
Copy the full SHA 2d85872View commit details -
Configuration menu - View commit details
-
Copy full SHA for f2a309f - Browse repository at this point
Copy the full SHA f2a309fView commit details -
- Fix ``/favs debugpaste`` link (format & clicking). - Move commands reloading logic via ``/favs reload`` (broken & no longer needed). - Re-add ``meteor`` as an alias of the comet brush.
Configuration menu - View commit details
-
Copy full SHA for c6e9188 - Browse repository at this point
Copy the full SHA c6e9188View commit details -
Configuration menu - View commit details
-
Copy full SHA for 40deadd - Browse repository at this point
Copy the full SHA 40deaddView commit details -
- Set max brush size to a new reasonable value (500). - Inform the sniper about any exceptions (unexpected errors).
Configuration menu - View commit details
-
Copy full SHA for bd709db - Browse repository at this point
Copy the full SHA bd709dbView commit details -
Configuration menu - View commit details
-
Copy full SHA for e71f607 - Browse repository at this point
Copy the full SHA e71f607View commit details -
Configuration menu - View commit details
-
Copy full SHA for 502b08f - Browse repository at this point
Copy the full SHA 502b08fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 1e2b07b - Browse repository at this point
Copy the full SHA 1e2b07bView commit details -
Configuration menu - View commit details
-
Copy full SHA for e8dc797 - Browse repository at this point
Copy the full SHA e8dc797View commit details -
Configuration menu - View commit details
-
Copy full SHA for b355d2e - Browse repository at this point
Copy the full SHA b355d2eView commit details -
Configuration menu - View commit details
-
Copy full SHA for be8782e - Browse repository at this point
Copy the full SHA be8782eView commit details -
Configuration menu - View commit details
-
Copy full SHA for e68ee63 - Browse repository at this point
Copy the full SHA e68ee63View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6b07d76 - Browse repository at this point
Copy the full SHA 6b07d76View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3cecd8f - Browse repository at this point
Copy the full SHA 3cecd8fView commit details
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.