Class PaperCommandProcessor
java.lang.Object
javax.annotation.processing.AbstractProcessor
io.github.projectunified.craftcommand.processor.BaseCommandProcessor
io.github.projectunified.craftcommand.processor.paper.PaperCommandProcessor
- All Implemented Interfaces:
Processor
@AutoService(javax.annotation.processing.Processor.class)
@SupportedAnnotationTypes("io.github.projectunified.craftcommand.annotation.Command")
@SupportedSourceVersion(RELEASE_8)
public class PaperCommandProcessor
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 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 voidanchorExtraMethods(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) Phase 7: Add extra methods after CommandInfoExposer (Brigadier tree, etc.).protected voidbuildParameterSuggestions(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model, CommandModel rootModel) protected voidgenerateSubcommandClassExecutors(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model, CommandModel rootModel) protected com.palantir.javapoet.TypeNameReturns the platform-specific command manager type.protected com.palantir.javapoet.CodeBlockgetSenderExpression(String senderVar) Returns the sender expression for instanceof checks and general usage.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, anchorAdditionalHelpers, anchorConstructorBottom, anchorConstructorTop, buildAdditionalHelpers, buildAliasesExpression, buildBuiltInParameter, buildExecutionRouting, buildLocalResolverParameter, buildMethodExecution, buildMethodExecution, buildParameterSuggestionHelper, buildResolverParamSuggestionHelper, buildSenderResolution, buildSubcommandSuggestionRouting, buildSuggestionRouting, buildWrapperClass, createExecutionSource, findAnnotationUp, findLocalResolver, findModelForClass, findSuggestionProvider, findSuggestMethod, firstParamIsSender, firstParamIsSender, generateAssignDefaultValue, generateExecuteMethodBody, generateFieldsAndConstructorStatements, generateResolverInvocation, generateResolverResolution, generateResolveSingleArgument, generateUnknownSubcommandMessage, getAssignmentValueForType, getBuiltInWidth, getDefaultPrimitiveValue, getInstanceVarExpression, getLocalResolverMaxWidth, getLocalResolverMinWidth, getParameterSuggestionMethodName, getResolverInstanceExpr, getResolverParamSuggestionMethodName, getResolverSenderExpression, 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
-
PaperCommandProcessor
public PaperCommandProcessor()
-
-
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
-
getSenderExpression
Description copied from class:BaseCommandProcessorReturns the sender expression for instanceof checks and general usage. Paper: sender.getSender() (extracts CommandSender from CommandSourceStack). Base: sender (already the correct type).- Overrides:
getSenderExpressionin 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
-
anchorExtraMethods
protected void anchorExtraMethods(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) Description copied from class:BaseCommandProcessorPhase 7: Add extra methods after CommandInfoExposer (Brigadier tree, etc.).- Overrides:
anchorExtraMethodsin classBaseCommandProcessor
-
onBeforeExecute
protected void onBeforeExecute(com.palantir.javapoet.MethodSpec.Builder methodSpec, Element element, String returnStatement) - Overrides:
onBeforeExecutein classBaseCommandProcessor
-
generateSubcommandClassExecutors
protected void generateSubcommandClassExecutors(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model, CommandModel rootModel) - Overrides:
generateSubcommandClassExecutorsin classBaseCommandProcessor
-
buildParameterSuggestions
protected void buildParameterSuggestions(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model, CommandModel rootModel) - Overrides:
buildParameterSuggestionsin classBaseCommandProcessor
-