Skip to content

Migrating from 0.4.0 to 0.5.0

Daniel Ennis edited this page Jun 8, 2017 · 13 revisions

Note - Still WIP

0.5.0 is still WIP and more migration needs are still being added, and things said on this page may change

Change pom/gradle file for new module name

0.5.0 introduced a module style project, where bukkit specific stuff is now in its own artifact.

You must change acf-core to acf-bukkit OR acf-paper (if you will require paper for your plugin) in your pom.xml or build.gradle file. Also ensure <scope>compile</scope> is set

Example POM:

    <dependencies>
        <dependency>
            <groupId>com.destroystokyo.paper</groupId>
            <artifactId>paper-api</artifactId>
            <version>1.11.2-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>co.aikar</groupId>
            <artifactId>acf-paper</artifactId>
            <version>0.5.0-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

Update Manager creation

First change your Manager type to be exactly what it CommandManager -> BukkitCommandManager or PaperCommandManager

Then instead of ACF.createManager(plugin) do commandManager = new BukkitCommandManager(plugin);

Add , BukkitCommandExecutionContext to method based context resolvers

If you have a method like

public ContextResolver<MyType> getResolver() {
   return c -> { };
} 

Then you need to adjust the return signature to

public ContextResolver<MyType, BukkitCommandExecutionContext> getResolver() {
   return c -> { };
} 

Add <CommandSender, BukkitCommandExecutionContext to method based completion handlers

If you have a method like

public CommandCompletions.CommandCompletionHandler getCompletionHandler() {
   return (sender, config, input, c) -> { };
} 

Then you need to adjust the return signature to

public CommandCompletions.CommandCompletionHandler<CommandSender, BukkitCommandCompletionContext> getCompletionHandler() {
   return (sender, config, input, c) -> { };
} 

Usage of @Override preCommand

Drop commandLabel (use .getExecCommandLabel()), add @PreCommand and remove @Override like so:

@PreCommand 
public boolean anything(CommandSender sender, String[] args) {

}

Same as before, return true to abort.

Usage of @Override help

Same as above, but use @UnknownHandler

@UnknownHandler
public void help(CommandSender sender, String[] args) {
}

Update local references to CommandContexts

If you copied CommandContexts to a local like so:

CommandContexts commandContexts = EmpirePlugin.commandManager.getCommandContexts();

You will need to regenerate the reference or update it like so:

CommandContexts<BukkitCommandExecutionContext> commandContexts = EmpirePlugin.commandManager.getCommandContexts();

Update local references to CommandCompletions

If you cupied CommandCompletions to a local like so:

CommandCompletions commandCompletions = EmpirePlugin.commandManager.getCommandCompletions();

You will need to update it like so:

CommandCompletions<CommandSender, BukkitCommandCompletionContext> commandCompletions = EmpirePlugin.commandManager.getCommandCompletions();

Removal of BaseSubcommand

Simply change all use of inner classes extends BaseSubcommand to BaseCommand (same as parent)