Class BukkitCommandProcessor
java.lang.Object
javax.annotation.processing.AbstractProcessor
io.github.projectunified.craftcommand.processor.BaseCommandProcessor
io.github.projectunified.craftcommand.processor.bukkit.BukkitCommandProcessor
- All Implemented Interfaces:
Processor
@AutoService(javax.annotation.processing.Processor.class)
@SupportedAnnotationTypes("io.github.projectunified.craftcommand.annotation.Command")
@SupportedSourceVersion(RELEASE_8)
public class BukkitCommandProcessor
extends BaseCommandProcessor
Annotation processor for Bukkit platforms.
Generates custom Bukkit wrapper command executors extending
org.bukkit.command.Command.-
Field Summary
Fields inherited from class javax.annotation.processing.AbstractProcessor
processingEnv -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidbuildAdditionalHelpers(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) Generates additional platform-independent helper methods (like suggestBoolean and sender casting helpers).protected voidbuildEntryMethods(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model, TypeElement typeElement) Generates Bukkit-specific wrapper entry methods.protected voidconfigureConstructor(com.palantir.javapoet.MethodSpec.Builder constructorBuilder, CommandModel model) Configures the constructor for platform-specific statements (e.g., registering command).protected voidconfigureSuperType(com.palantir.javapoet.TypeSpec.Builder typeSpec) Configures the super interfaces/classes that the generated wrapper should implement/extend.protected voidgeneratePlatformParamSuggestions(com.palantir.javapoet.MethodSpec.Builder methodSpec, com.palantir.javapoet.TypeName typeName, String senderCastVar, String argsVar, String currentVar, int tempIdx) protected voidgenerateUnknownSubcommandMessage(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel model) Generates statements to handle cases where an unknown subcommand is typed.protected com.palantir.javapoet.TypeNameReturns the platform-specific command manager type.protected intgetPlatformBuiltInWidth(com.palantir.javapoet.TypeName typeName) protected com.palantir.javapoet.ClassNameReturns the platform-specific command sender type name (e.g.protected StringReturns the wrapper class suffix specific to the platform.protected booleanisPlatformBuiltInType(com.palantir.javapoet.TypeName typeName) protected booleanisSenderBaseType(com.palantir.javapoet.TypeName typeName) protected booleanisSenderType(com.palantir.javapoet.TypeName typeName) Checks if the sender type is supportedprotected voidonBeforeExecute(com.palantir.javapoet.MethodSpec.Builder methodSpec, Element element, String returnStatement) Hook run prior to execution routing of a subcommand or command method.protected voidonBeforeSuggest(com.palantir.javapoet.MethodSpec.Builder methodSpec, Element element) Hook run before tab-completion routing of a subcommand or method.protected voidonSuggestionAdd(com.palantir.javapoet.MethodSpec.Builder methodSpec, Element element, Runnable addSuggestions) Hook to decide if a subcommand/method should be suggested during tab-completion.protected voidresolvePlatformMultiParameter(com.palantir.javapoet.MethodSpec.Builder methodSpec, com.palantir.javapoet.TypeName typeName, String varName, String argsVar, String argIdxVar, String senderVar, int i) protected voidresolvePlatformParameter(com.palantir.javapoet.MethodSpec.Builder methodSpec, com.palantir.javapoet.TypeName typeName, String varName, String argStrVar) Methods inherited from class io.github.projectunified.craftcommand.processor.BaseCommandProcessor
buildAliasesExpression, buildBuiltInParameter, buildExecutionRouting, buildLocalResolverParameter, buildMethodExecution, buildMethodExecution, buildParameterSuggestionHelper, buildParameterSuggestions, buildSenderResolution, buildSubcommandSuggestionRouting, buildSuggestionRouting, buildWrapperClass, findLocalResolver, findModelForClass, findSuggestMethod, firstParamIsSender, generateDefaultSenderCastForSuggestion, generateExecuteMethodBody, generateFieldsAndConstructorStatements, generateLocalResolverInvocation, generateSubcommandClassExecutors, getAssignmentValueForType, getDefaultPrimitiveValue, getDynamicResolverTypes, getInstanceVarExpression, getLocalResolverMaxWidth, getLocalResolverMinWidth, getParameterSuggestionMethodName, getResolverMethodName, getSenderExpression, getSimpleName, getSubcommandFieldName, getSubcommandNames, getUsage, init, isBuiltInType, isField, processMethods inherited from class javax.annotation.processing.AbstractProcessor
getCompletions, getSupportedAnnotationTypes, getSupportedOptions, getSupportedSourceVersion, isInitialized
-
Constructor Details
-
BukkitCommandProcessor
public BukkitCommandProcessor()
-
-
Method Details
-
getWrapperClassSuffix
Description copied from class:BaseCommandProcessorReturns the wrapper class suffix specific to the platform.- Specified by:
getWrapperClassSuffixin classBaseCommandProcessor- Returns:
- the class name suffix (e.g. "_Executor" or "_Standalone")
-
configureSuperType
protected void configureSuperType(com.palantir.javapoet.TypeSpec.Builder typeSpec) Description copied from class:BaseCommandProcessorConfigures the super interfaces/classes that the generated wrapper should implement/extend.- Specified by:
configureSuperTypein classBaseCommandProcessor- Parameters:
typeSpec- the class definition builder
-
getSenderTypeName
protected com.palantir.javapoet.ClassName getSenderTypeName()Description copied from class:BaseCommandProcessorReturns the platform-specific command sender type name (e.g. Bukkit CommandSender or Object).- Specified by:
getSenderTypeNamein classBaseCommandProcessor
-
getManagerType
protected com.palantir.javapoet.TypeName getManagerType()Description copied from class:BaseCommandProcessorReturns the platform-specific command manager type.- Specified by:
getManagerTypein classBaseCommandProcessor
-
isSenderType
protected boolean isSenderType(com.palantir.javapoet.TypeName typeName) Description copied from class:BaseCommandProcessorChecks if the sender type is supported- Overrides:
isSenderTypein classBaseCommandProcessor
-
isSenderBaseType
protected boolean isSenderBaseType(com.palantir.javapoet.TypeName typeName) - Overrides:
isSenderBaseTypein classBaseCommandProcessor
-
configureConstructor
protected void configureConstructor(com.palantir.javapoet.MethodSpec.Builder constructorBuilder, CommandModel model) Description copied from class:BaseCommandProcessorConfigures the constructor for platform-specific statements (e.g., registering command).- Overrides:
configureConstructorin classBaseCommandProcessor
-
buildEntryMethods
protected void buildEntryMethods(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model, TypeElement typeElement) Generates Bukkit-specific wrapper entry methods. This overrides org.bukkit.command.Command's execute and tabComplete methods.- Specified by:
buildEntryMethodsin classBaseCommandProcessor
-
generateUnknownSubcommandMessage
protected void generateUnknownSubcommandMessage(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel model) Description copied from class:BaseCommandProcessorGenerates statements to handle cases where an unknown subcommand is typed.- Overrides:
generateUnknownSubcommandMessagein classBaseCommandProcessor
-
onBeforeExecute
protected void onBeforeExecute(com.palantir.javapoet.MethodSpec.Builder methodSpec, Element element, String returnStatement) Description copied from class:BaseCommandProcessorHook run prior to execution routing of a subcommand or command method.- Overrides:
onBeforeExecutein classBaseCommandProcessor
-
onSuggestionAdd
protected void onSuggestionAdd(com.palantir.javapoet.MethodSpec.Builder methodSpec, Element element, Runnable addSuggestions) Description copied from class:BaseCommandProcessorHook to decide if a subcommand/method should be suggested during tab-completion.- Overrides:
onSuggestionAddin classBaseCommandProcessor
-
onBeforeSuggest
protected void onBeforeSuggest(com.palantir.javapoet.MethodSpec.Builder methodSpec, Element element) Description copied from class:BaseCommandProcessorHook run before tab-completion routing of a subcommand or method.- Overrides:
onBeforeSuggestin classBaseCommandProcessor
-
isPlatformBuiltInType
protected boolean isPlatformBuiltInType(com.palantir.javapoet.TypeName typeName) - Overrides:
isPlatformBuiltInTypein classBaseCommandProcessor
-
getPlatformBuiltInWidth
protected int getPlatformBuiltInWidth(com.palantir.javapoet.TypeName typeName) - Overrides:
getPlatformBuiltInWidthin classBaseCommandProcessor
-
resolvePlatformParameter
protected void resolvePlatformParameter(com.palantir.javapoet.MethodSpec.Builder methodSpec, com.palantir.javapoet.TypeName typeName, String varName, String argStrVar) - Overrides:
resolvePlatformParameterin classBaseCommandProcessor
-
resolvePlatformMultiParameter
protected void resolvePlatformMultiParameter(com.palantir.javapoet.MethodSpec.Builder methodSpec, com.palantir.javapoet.TypeName typeName, String varName, String argsVar, String argIdxVar, String senderVar, int i) - Overrides:
resolvePlatformMultiParameterin classBaseCommandProcessor
-
generatePlatformParamSuggestions
protected void generatePlatformParamSuggestions(com.palantir.javapoet.MethodSpec.Builder methodSpec, com.palantir.javapoet.TypeName typeName, String senderCastVar, String argsVar, String currentVar, int tempIdx) - Overrides:
generatePlatformParamSuggestionsin classBaseCommandProcessor
-
buildAdditionalHelpers
protected void buildAdditionalHelpers(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) Description copied from class:BaseCommandProcessorGenerates additional platform-independent helper methods (like suggestBoolean and sender casting helpers).- Overrides:
buildAdditionalHelpersin classBaseCommandProcessor
-