Skip to content

Custom Handling System

Traqueur edited this page Jul 25, 2024 · 4 revisions

Introduction

The MessageHandler interface in CommandsAPI allows you to define custom messages for various command-related events, such as lacking permissions, missing arguments, and unrecognized arguments. This page will guide you through the process of creating your own message handling system by overriding the default messages.

Thanks to Robotv2 for the idea.

MessageHandler Interface

The MessageHandler interface provides methods to retrieve messages for different scenarios:

package fr.traqueur.commands.api.lang;

public interface MessageHandler {

    String getNoPermissionMessage();

    String getOnlyInGameMessage();

    String getMissingArgsMessage();

    String getArgNotRecognized();

    default String getMessage(Messages type) {
        return switch (type) {
            case NO_PERMISSION -> getNoPermissionMessage();
            case ONLY_IN_GAME -> getOnlyInGameMessage();
            case MISSING_ARGS -> getMissingArgsMessage();
            case ARG_NOT_RECOGNIZED -> getArgNotRecognized();
        };
    }
}

Creating a Custom MessageHandler

To override the default messages, you need to implement the MessageHandler interface and provide your own versions of the message methods.

Step-by-Step Guide

  1. Create a new class that implements MessageHandler:
public class CustomMessagehandler extends MessageHandler {

    @Override
    public String getNoPermissionMessage() {
        return /* your implementation */;
    }

    @Override
    public String getOnlyInGameMessage() {
        return /* your implementation */;
    }

    @Override
    public String getMissingArgsMessage() {
        return /* your implementation */;
    }

    @Override
    public String getArgNotRecognized() {
        return /* your implementation */;
    }
}
  1. Register the new class that implements MessageHandler:
public class MyPlugin extends JavaPlugin {

    private final CommandManager commandManager;

    @Override
    public void onEnable() {
        commandManager = new CommandManager(this);
        commandManager.setMessageHandler(new MyMessageHandler());
        //or
        Lang.setMessageHandler(new MyMessageHandler());
    }
}

Clone this wiki locally