Вопрос Перехват команд и выполнение своего кода

Alex-Novosiber

Пользователь
Всем привет. Мне необходимо отследить ввод команды игроком
( в данном случае момент привата региона) и добавить в конфиг данные :
PlayerName: regionClaimTime
Пробую этот код - не работает. Расставил вывод в консоль. В консоли вообще тишина.
Вопрос: как перехватить команду и добавить свой код для выполнения ?
Java:
@EventHandler

public void onPlayerCommand(PlayerCommandPreprocessEvent event) {

Player player = event.getPlayer();

String[] cmd = event.getMessage().split(" ");

if (cmd.length >= 2) {

if (cmd[0].replaceAll("/", "").equalsIgnoreCase("rg")) {

if (cmd[1].equalsIgnoreCase("claim") {

String playerName = player.toString();

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy");

LocalDate localDate = LocalDate.now();

System.out.println("+++ localDate " + localDate);

String rgClaimDate = (dtf.format(localDate));

System.out.println("+++ rgClaimDate " + rgClaimDate);

this.configFile = this.getConfig();

configFile.addDefault(playerName, cmd[1]);

configFile.addDefault(playerName, rgClaimDate);

// this.save(playerName, rgClaimDate);

saveConfig();

System.out.println("+++ config saved ");

}

}

}

}

public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {

if (cmd.getName().equalsIgnoreCase("rg")) {

System.out.println(" +++ RG command");

if (args[0].equalsIgnoreCase("claim") && args.length == 2) {

System.out.println(" +++ RG CLAIM command");

System.out.println("+++ RG claim command " + sender + " , " + args[1]);

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy");

LocalDate localDate = LocalDate.now();

System.out.println("+++ localDate " + localDate);

String rgClaimDate = (dtf.format(localDate));

System.out.println("+++ rgClaimDate " + rgClaimDate);

this.save(sender, args[1]);

this.save(sender, rgClaimDate);

saveConfig();

System.out.println("+++ config saved ");

}

}
 
Последнее редактирование:

q20w26a

Разработчик
Во первых, есть тег [CODE=java][/CODE], туда и нужно вставлять код
Во вторых, ты точно зарегистрировал листенер?
 

Alex-Novosiber

Пользователь
Код поправил, спасибо за совет, буду знать на будущее. А обработчик не зарегистрирован. Не знаю как. Код собираю кусками из сети. Подскажи пожалуйста как листенер зарегистрировать.
 

BuseSo

Разработчик
Bukkit.getPluginManager().registerListeners(this, new Класс);
Если всё пишешь в одном классе, то в обоих случаях this.

Phantomchik перенеси в правильный раздел тему

offtop
 

Alex-Novosiber

Пользователь
Bukkit.getPluginManager().registerListeners(this, new Класс);
Если всё пишешь в одном классе, то в обоих случаях this.

Phantomchik перенеси в правильный раздел тему

offtop
Спасибо, перепишу код
Авто объединение сообщений:

IntellijIdea ругается,
Screenshot_1.png

в getPluginManager нет registerListeners
 
Последнее редактирование:

Alex-Novosiber

Пользователь
Урррааа !! Заработало !!! Спасибо большое !!!
Теперь в конфиг пишет Имя игрока, имя региона и дату )

tester:
regionName: test666
regionClaim Time: 20-08-2020
 

Комнаты в чате

Верх Низ