FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Allow developers to control Arguments' CommandSyntaxExceptions by willkroboth · Pull Request #370 · CommandAPI/CommandAPI · GitHub

Allow developers to control Arguments' CommandSyntaxExceptions - #370

Closed
willkroboth wants to merge 86 commits into
dev/devfrom
dev/argument-exceptions
Closed

Allow developers to control Arguments' CommandSyntaxExceptions#370
willkroboth wants to merge 86 commits into
dev/devfrom
dev/argument-exceptions

Conversation

willkroboth commented Nov 27, 2022
edited
Loading

Copy link
Copy Markdown
Collaborator

When a raw command gets parsed into an Object array, there are two parts: Brigadier's initial parse from a raw command String to Minecraft objects, and the CommandAPI's parse from those Minecraft objects to Bukkit objects. Both of these steps may throw CommandSyntaxExceptions, and this PR intercepts those exceptions and adds API methods that allow developers to do something when this happens. You can read the following comments for details about each of the parts of this system.

Todo List

Things that should be done before this PR is ready to merge:

  • Test the implementation of registerCustomArgumentType for each Minecraft version (at least 1.16.5+)
    • Need to test implementation for 1.19.3
    • Merge update and test for 1.19.4
  • Expand the ArgumentParseExceptionContext and InitialParseExcpetionContext records
  • Make sure it works with CommandTrees
  • Test with optional arguments
  • Make sure it works outside of the CommandAPI project (without Brigadier dependency)
  • Make sure it works when shading
  • Make it easier to recognize what caused an exception
    • Something here could add more information about the reason why the exception was thrown?
  • Documentation
  • Basic tests for the feature
    • InitialParseExceptionHandler
    • ArgumentParseExceptionHandler
      • Changing exceptions
      • Returning replacement value
  • Address any code review
  • Remove test command from CommandAPIMain

Things that could be done before this PR is merged:

  • Make it work on Velocity
  • Make tests for intercepting every possible error for every argument?
  • Document all the possible errors for every argument?

willkroboth and others added 30 commits November 19, 2022 10:11
Add option to add custom error handling when Argument parse fails
# Conflicts:
#	commandapi-nms/commandapi-1.17-common/src/main/java/dev/jorel/commandapi/nms/NMS_1_17_Common.java
#	commandapi-nms/commandapi-1.18.2/src/main/java/dev/jorel/commandapi/nms/NMS_1_18_R2.java
#	commandapi-nms/commandapi-1.19-common/src/main/java/dev/jorel/commandapi/nms/NMS_1_19_Common.java
# Conflicts:
#	commandapi-core/src/main/java/dev/jorel/commandapi/arguments/SoundArgument.java
#	commandapi-nms/commandapi-1.16.2/src/main/java/dev/jorel/commandapi/nms/NMS_1_16_R2.java
#	commandapi-nms/commandapi-1.16.4/src/main/java/dev/jorel/commandapi/nms/NMS_1_16_4_R3.java
#	commandapi-nms/commandapi-1.17-common/src/main/java/dev/jorel/commandapi/nms/NMS_1_17_Common.java
#	commandapi-nms/commandapi-1.18.2/src/main/java/dev/jorel/commandapi/nms/NMS_1_18_R2.java
#	commandapi-nms/commandapi-1.18/src/main/java/dev/jorel/commandapi/nms/NMS_1_18_R1.java
#	commandapi-nms/commandapi-1.19-common/src/main/java/dev/jorel/commandapi/nms/NMS_1_19_Common.java
willkroboth and others added 11 commits February 20, 2023 10:14
# Conflicts:
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.15/src/main/java/dev/jorel/commandapi/nms/NMS_1_15.java
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.17-common/src/main/java/dev/jorel/commandapi/nms/NMS_1_17_Common.java
# Conflicts:
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/nms/NMS.java
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.15/src/main/java/dev/jorel/commandapi/nms/NMS_1_15.java
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.16.1/src/main/java/dev/jorel/commandapi/nms/NMS_1_16_R1.java
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.16.2/src/main/java/dev/jorel/commandapi/nms/NMS_1_16_R2.java
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.16.4/src/main/java/dev/jorel/commandapi/nms/NMS_1_16_4_R3.java
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.17-common/src/main/java/dev/jorel/commandapi/nms/NMS_1_17_Common.java
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.18.2/src/main/java/dev/jorel/commandapi/nms/NMS_1_18_R2.java
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.18/src/main/java/dev/jorel/commandapi/nms/NMS_1_18_R1.java
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.19-common/src/main/java/dev/jorel/commandapi/nms/NMS_1_19_Common.java
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.19.3/src/main/java/dev/jorel/commandapi/nms/NMS_1_19_3_R2.java
CommandAPI deleted a comment from sonarqubecloud Bot Feb 23, 2023
willkroboth and others added 12 commits March 9, 2023 16:07
# Conflicts:
#	commandapi-core/src/main/java/dev/jorel/commandapi/arguments/AbstractArgument.java
# Conflicts:
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-nms-common/src/main/java/dev/jorel/commandapi/nms/NMS_Common.java
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-test/commandapi-bukkit-test-impl-1.19.2/src/main/java/dev/jorel/commandapi/test/MockNMS.java
# Conflicts:
#	commandapi-core/src/main/java/dev/jorel/commandapi/CommandAPIHandler.java
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.15/src/main/java/dev/jorel/commandapi/nms/NMS_1_15.java
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.16.1/src/main/java/dev/jorel/commandapi/nms/NMS_1_16_R1.java
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.16.2/src/main/java/dev/jorel/commandapi/nms/NMS_1_16_R2.java
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.16.4/src/main/java/dev/jorel/commandapi/nms/NMS_1_16_4_R3.java
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.17-common/src/main/java/dev/jorel/commandapi/nms/NMS_1_17_Common.java
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.18.2/src/main/java/dev/jorel/commandapi/nms/NMS_1_18_R2.java
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.18/src/main/java/dev/jorel/commandapi/nms/NMS_1_18_R1.java
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-test/commandapi-bukkit-test-impl-1.16.5/src/main/java/dev/jorel/commandapi/test/MockNMS.java
#	commandapi-platforms/commandapi-bukkit/commandapi-bukkit-test/commandapi-bukkit-test-impl-1.19.2/src/main/java/dev/jorel/commandapi/test/MockNMS.java
willkroboth added a commit that referenced this pull request Jul 30, 2023
Add API to use custom error handling when Argument parsing fails

See #370 for the basis of these changes

New changes here:

- Arguments can only have an ArgumentParseExceptionHandler attached if they implement ArgumentParseExceptionArgument
- The substitute value from ArgumentParseExceptionHandler doesn't have to be returned directly
- ExceptionInformation can be provided by arguments
- New NMS method to extract translation keys from CommandSyntaxExceptions
willkroboth mentioned this pull request Aug 2, 2023
23 tasks

Copy link
Copy Markdown
Collaborator Author

Closed in favor of #476

willkroboth closed this Aug 2, 2023
willkroboth added a commit that referenced this pull request Aug 12, 2023
Add API to use custom error handling when Argument parsing fails

See #370 for the basis of these changes

New changes here:

- Arguments can only have an ArgumentParseExceptionHandler attached if they implement ArgumentParseExceptionArgument
- The substitute value from ArgumentParseExceptionHandler doesn't have to be returned directly
- ExceptionInformation can be provided by arguments
- New NMS method to extract translation keys from CommandSyntaxExceptions
willkroboth added a commit that referenced this pull request Aug 17, 2023
Add API to use custom error handling when Argument parsing fails

See #370 for the basis of these changes

New changes here:

- Arguments can only have an ArgumentParseExceptionHandler attached if they implement ArgumentParseExceptionArgument
- The substitute value from ArgumentParseExceptionHandler doesn't have to be returned directly
- ExceptionInformation can be provided by arguments
- New NMS method to extract translation keys from CommandSyntaxExceptions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants


Back | FazBrowse Home | New Git URL