a43cc4108b | 5 months ago | |
---|---|---|
.github | 5 months ago | |
common | 5 months ago | |
example-plugin | 5 months ago | |
fabric-1.20.1 | 5 months ago | |
fabric-1.20.6 | 5 months ago | |
gradle/wrapper | 5 months ago | |
images | 5 months ago | |
paper | 5 months ago | |
velocity | 5 months ago | |
.gitignore | 5 months ago | |
HEADER | 5 months ago | |
LICENSE | 7 months ago | |
README.md | 5 months ago | |
build.gradle | 5 months ago | |
gradle.properties | 5 months ago | |
gradlew | 5 months ago | |
gradlew.bat | 5 months ago | |
settings.gradle | 5 months ago |
README.md
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.4 |
>17 |
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.