Information

Canyon Core is an all purpose Minecraft server core. It includes data structures and utilities for handling Minecraft data, as well as a plugin API for ease of creating plugins.

Building

Canyon Core uses (Gradle)[https://gradle.org/] for building. Steps to build:

Usage

  • Command API: Canyon Core features a complete Bukkit command abstraction for ease of creation and command handling. Command auto-completions are completely done asynchronously

public final class ExampleCommand extends CanyonCommand {
    
    public ExampleCommand() {
        super("example", "example-alias", "infinitely-many-aliases");
        this.setPermission("example.permission"); // Don't set for no permission
    }
    
    @Override
    public void runPlayer(@NotNull Player player, String[] args) {
        player.sendMessage("Hello, " + player.getName());
    }
    
    @Override
    public void runConsole(@NotNull CommandSender sender, String[] args) {
        sender.sendMessage("Hello, Console");
    }
    
}

// Registering the command
CanyonCore.getCommandManager().register(new ExampleCommand());

class ExampleCommand : CanyonCommand("example", "example-alias", "infinitely-many-aliases") {
    
    init {
        this.permission = "example.permission" // Don't set for no permission
    }
    
    override fun runPlayer(player: Player, args: Array<String>) {
        player.sendMessage("Hello, ${player.name}")
    }
    
    override fun runConsole(sender: CommandSender, args: Array<String>) {
        sender.sendMessage("Hello, Console")
    }
    
}

// Registering the command
CanyonCore.commandManager.register(ExampleCommand())
  • Packet API Canyon Core features a complete packet abstraction utilizing PacketEvents 2.0. Canyon Core’s async packet listeners allow for handling packet outside of the netty thread on a completely separate thread . This calls for asyncronous design to be kept in mind

public final class ExamplePacketReceiveListener implements AsyncPacketReceiveListener {
    
    @Override 
    public void accept(final PacketReceiveEvent event) {
        event.getUser().sendMessage("Hello, " + event.getUser().getName());
    }
}

public final class ExamplePacketSendListener implements AsyncPacketSendListener {
    
    @Override 
    public void accept(final PacketSendEvent event) {
        event.getUser().sendMessage("Hello, " + event.getUser().getName());
    }
}

// Registering the listeners
CanyonCore.getPacketManager().addListener(new ExamplePacketReceiveListener());
CanyonCore.getPacketManager().addListener(new ExamplePacketSendListener());

class ExamplePacketReceiveListener : AsyncPacketReceiveListener {
    
    override fun accept(event: PacketReceiveEvent) {
        event.user.sendMessage("Hello, ${event.user.name}")
    }
}

class ExamplePacketSendListener : AsyncPacketSendListener {
    
    override fun accept(event: PacketSendEvent) {
        event.user.sendMessage("Hello, ${event.user.name}")
    }
}

// Registering the listeners
CanyonCore.packetManager.addListener(ExamplePacketReceiveListener())
CanyonCore.packetManager.addListener(ExamplePacketSendListener())

GitHub

View Github