You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Uniform/README.md

4.9 KiB

Claim Operations Library


Uniform is cross-platform wrapper for making Brigadier commands, based on BrigadierWrapper by Tofaa2, which itself was inspired by EmortalMC's command-system.

Uniform currently targets the following platforms:

Please note Uniform on Fabric requires adventure-platform-fabric and the Fabric API as dependencies.

Platform Artifact Minecraft Java
Common uniform-common - >17
Paper uniform-paper >1.20.6 >21
Velocity uniform-velocity >3.3.0 >17
Fabric 1.20.1 uniform-fabric-1.20.1 =1.20.1 >17
Fabric 1.20.6 uniform-fabric-1.20.6 =1.20.6 >21

Uniform plans to support the following platforms in the future:

Platform Version Java
Spigot >1.17.1 >17
Sponge 8 =1.19.4 >17

Setup

Uniform is available on Maven. You can browse the Javadocs here.

Gradle setup instructions

First, add the Maven repository to your build.gradle file:

repositories {
    maven { url "https://repo.william278.net/releases" }
}

Then, add the dependency itself. Replace VERSION with the latest release version. (e.g., 1.0) and PLATFORM with the platform you are targeting (e.g., paper). If you want to target pre-release "snapshot" versions (not recommended), you should use the /snapshots repository instead.

dependencies {
    implementation "net.william278.uniform:uniform-PLATFORM:VERSION"
}

Using Maven/something else? There's instructions on how to include Uniform on the repo browser.

Basic use

Uniform lets you create commands either natively per-platform, or cross-platform (by compiling against uniform-common in a common module, then implementing uniform-PLATFORM in each platform, getting the platform specific Uniform manager instance and registering your commands).

Platform-specific commands

Extend the platform-specific PlatformCommand class and add your Brigadier syntax.

public class ExampleCommand extends PaperCommand {

    public ExampleCommand() {
        super("example", "platform-specific");
        addSyntax((context) -> {
            context.getSource().getBukkitSender().sendMessage("Woah!!!!");
            String arg = context.getArgument("message", String.class);
            context.getSource().getBukkitSender().sendMessage(MiniMessage.miniMessage().deserialize(arg));
        }, stringArg("message"));
    }

}

Cross-platform commands

Target uniform-common and implement the Command class.

public class ExampleCrossPlatCommand implements Command {

    @Override
    @NotNull
    public String getNamespace() {
        return "example";
    }

    @Override
    @NotNull
    public List<String> getAliases() {
        return List.of("cross-plat");
    }

    @Override
    public <S> void provide(@NotNull BaseCommand<S> command) {
        command.setCondition(source -> true);
        command.setDefaultExecutor((ctx) -> {
            // Use command.getUser(ctx.getSource()) to get the user
            final Audience user = command.getUser(ctx.getSource()).getAudience();
            user.sendMessage(Component.text("Hello, world!"));
        });
    }

}

Registering

Then, register the command with the platform-specific Uniform instance (e.g. FabricUniform.getInstance(), PaperUniform.getInstance(), etc...)

Building

To build Uniform, run clean build in the root directory. The output JARs will be in target/.

License

Uniform is licensed under GPL v3 as it derives from BrigadierWrapper. See LICENSE for more information.