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
-
Field Summary
Fields inherited from class io.github.projectunified.craftcommand.processor.BaseCommandProcessor
resolverLookupFields inherited from class javax.annotation.processing.AbstractProcessor
processingEnv -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidanchorAdditionalHelpers(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) Phase 5: Add additional helper methods.protected voidanchorBuildEntryMethods(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model, TypeElement typeElement) Phase 4: Generate platform-specific entry methods (execute, tabComplete, getCommandNode, etc.).protected voidanchorConfigureType(com.palantir.javapoet.TypeSpec.Builder typeSpec) Phase 1: Configure the class declaration (superclass, interfaces).protected voidanchorConstructorTop(com.palantir.javapoet.MethodSpec.Builder constructorBuilder, CommandModel model) Phase 3 (top): Add platform-specific constructor statements at the beginning.protected voidgenerateUnknownSubcommandMessage(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel model) protected com.palantir.javapoet.TypeNameReturns the platform-specific command manager type.protected com.palantir.javapoet.ClassNameReturns the platform-specific command sender type name.protected StringReturns the wrapper class suffix specific to the platform.protected voidonBeforeExecute(com.palantir.javapoet.MethodSpec.Builder methodSpec, Element element, String returnStatement) protected voidregisterTypes(TypeSupport types) Override this method to register platform-specific types intoTypeSupport.Methods inherited from class io.github.projectunified.craftcommand.processor.BaseCommandProcessor
anchorAdditionalFields, anchorConstructorBottom, anchorExtraMethods, buildAdditionalHelpers, buildAliasesExpression, buildBuiltInParameter, buildExecutionRouting, buildLocalResolverParameter, buildMethodExecution, buildMethodExecution, buildParameterSuggestionHelper, buildParameterSuggestions, buildResolverParamSuggestionHelper, buildSenderResolution, buildSubcommandSuggestionRouting, buildSuggestionRouting, buildWrapperClass, createExecutionSource, findAnnotationUp, findLocalResolver, findModelForClass, findSuggestionProvider, findSuggestMethod, firstParamIsSender, firstParamIsSender, generateAssignDefaultValue, generateExecuteMethodBody, generateFieldsAndConstructorStatements, generateResolverInvocation, generateResolverResolution, generateResolveSingleArgument, generateSubcommandClassExecutors, getAssignmentValueForType, getBuiltInWidth, getDefaultPrimitiveValue, getInstanceVarExpression, getLocalResolverMaxWidth, getLocalResolverMinWidth, getParameterSuggestionMethodName, getResolverInstanceExpr, getResolverParamSuggestionMethodName, getResolverSenderExpression, getSenderExpression, getSimpleName, getSubcommandFieldName, getSubcommandNames, getUsage, i18nKey, init, isBuiltInType, isField, isI18nKey, isPlatformBuiltInType, isSenderBaseType, isSenderParam, isSenderType, isStringArray, process, resolveParameterForType, runParameterAnnotationHandlers, senderTypeRegistryMethods inherited from class javax.annotation.processing.AbstractProcessor
getCompletions, getSupportedAnnotationTypes, getSupportedOptions, getSupportedSourceVersion, isInitialized
-
Constructor Details
-
BukkitCommandProcessor
public BukkitCommandProcessor()
-
-
Method Details
-
registerTypes
Description copied from class:BaseCommandProcessorOverride this method to register platform-specific types intoTypeSupport. Called duringBaseCommandProcessor.init(javax.annotation.processing.ProcessingEnvironment)after SPI extensions are loaded.Example (Bukkit):
@Override protected void registerTypes(TypeSupport types) { types.register(TypeSupport.Entry.builder(playerClass, 1) .primitiveDefault("null") .literal(d -> CodeBlock.of("null")) .platformResolution((spec, p) -> spec.addStatement("$L = getPlayer($L)", p[0], p[1])) .platformSuggestions((spec, p) -> spec.addStatement("return suggestPlayers($L)", p[2])) .build()); }- Overrides:
registerTypesin classBaseCommandProcessor- Parameters:
types- the type support registry to populate
-
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. "$BukkitCommand" or "$StandaloneCommand")
-
anchorConfigureType
protected void anchorConfigureType(com.palantir.javapoet.TypeSpec.Builder typeSpec) Description copied from class:BaseCommandProcessorPhase 1: Configure the class declaration (superclass, interfaces).- Overrides:
anchorConfigureTypein classBaseCommandProcessor
-
getSenderTypeName
protected com.palantir.javapoet.ClassName getSenderTypeName()Description copied from class:BaseCommandProcessorReturns the platform-specific command sender type name.- 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
-
anchorConstructorTop
protected void anchorConstructorTop(com.palantir.javapoet.MethodSpec.Builder constructorBuilder, CommandModel model) Description copied from class:BaseCommandProcessorPhase 3 (top): Add platform-specific constructor statements at the beginning. Called before this.instance/this.manager assignments.- Overrides:
anchorConstructorTopin classBaseCommandProcessor
-
anchorBuildEntryMethods
protected void anchorBuildEntryMethods(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model, TypeElement typeElement) Description copied from class:BaseCommandProcessorPhase 4: Generate platform-specific entry methods (execute, tabComplete, getCommandNode, etc.).- Overrides:
anchorBuildEntryMethodsin classBaseCommandProcessor
-
anchorAdditionalHelpers
protected void anchorAdditionalHelpers(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) Description copied from class:BaseCommandProcessorPhase 5: Add additional helper methods. Default generates suggestBoolean and sender-cast helpers.- Overrides:
anchorAdditionalHelpersin classBaseCommandProcessor
-
generateUnknownSubcommandMessage
protected void generateUnknownSubcommandMessage(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel model) - Overrides:
generateUnknownSubcommandMessagein classBaseCommandProcessor
-
onBeforeExecute
protected void onBeforeExecute(com.palantir.javapoet.MethodSpec.Builder methodSpec, Element element, String returnStatement) - Overrides:
onBeforeExecutein classBaseCommandProcessor
-