package net.scapeemulator.game.dispatcher.command;
import java.util.HashMap;
import java.util.Map;
import net.scapeemulator.game.GameServer;
import net.scapeemulator.game.model.player.Player;
public final class CommandDispatcher {
private final Map<String, CommandHandler> handlers = new HashMap<>();
public void bind(CommandHandler handler) {
handlers.put(handler.getName(), handler);
}
public void unbindAll() {
handlers.clear();
}
public void handle(Player player, String command) {
if (player.actionsBlocked()) {
return;
}
String[] parts = command.split(" ");
String name = parts[0].toLowerCase();
String[] arguments = new String[parts.length - 1];
System.arraycopy(parts, 1, arguments, 0, arguments.length);
CommandHandler handler = handlers.get(name);
if (handler != null) {
handler.handle(player, arguments);
}
}
public static CommandDispatcher getInstance() {
return GameServer.getInstance().getMessageDispatcher().getCommandDispatcher();
}
}