Идея Выполнение игроком команды от имени консоли

Статус
Закрыто для дальнейших ответов.

Devel

Участник
Пользователь
Баллы
31
Имя в Minecraft
TBOYA_MAMKA
Категория плагина: Администрирование

Предлагаемое название: AdminConsole

Версия сервера: 1.8 - 1.12.x

Что я хочу: Надо чтобы когда игрок писал обычную команду, то она выполнялась как обычкая команда, а если вместо "/" писал "> ", то команда выполнялась бы от имени консоли. Но если у игрока нет прав на это, тогда то, что игрок без прав "писал" от имени консоли, выводилось в чат как просто сообщение. Обращаю внимание, что правильно будет не ">", а "> " (>пробел).

Идеи пермишенов: adminconsole.admin

Когда мне это нужно? Не раньше, чем вчера.
 
Все это можно сделать с помощью reactions, не знаю насчет "> " но явно можно сделать "/console команда"
 
Не раньше, чем вчера.
Не смешно.

1.Можно взломать сервер по самые гланды
2.Лучше всего добавить BlackList команд
3.Если игрок пишет команду /console то у него символ "/" будет заменяться ">"
4.Оплата?
p.s Возможно реализую в FCore.
 
Последнее редактирование:
Не смешно.

1.Можно взломать сервер по самые гланды
2.Лучше всего добавить BlackList команд
3.Если игрок пишет команду /console то у него символ "/" будет заменяться ">"
4.Оплата?
Оплата за это?
PHP:
@EventHandler
public void onChat(AsyncPlayerChatEvent e) {
    if(e.getMessage().startsWith(">")) {
         Bukkit.dispatchCommand(Bukkit.getConsoleSender(), e.getMessage().replaceFirst(">", ""));
         e.setCancelled(true);
    }
}
 
Оплата за это?
PHP:
@EventHandler
public void onChat(AsyncPlayerChatEvent e) {
    if(e.getMessage().startsWith(">")) {
         Bukkit.dispatchCommand(Bukkit.getConsoleSender(), e.getMessage().replaceFirst(">", ""));
         e.setCancelled(true);
    }
}
Это самый простой в мире пример. Я лишь предложил улучшить плагин, добавить еще фишек(по мимо того что я предложил), и тогда оплата.
 
Оплата за это?
PHP:
@EventHandler
public void onChat(AsyncPlayerChatEvent e) {
    if(e.getMessage().startsWith(">")) {
         Bukkit.dispatchCommand(Bukkit.getConsoleSender(), e.getMessage().replaceFirst(">", ""));
         e.setCancelled(true);
    }
}
Я добавил проверку на права. У меня чувство мы что сейчас полный плагин напишем.

PHP:
@EventHandler
public void onChat(AsyncPlayerChatEvent e) {
    if(e.getMessage().startsWith(">")) {
        if(e.getPlayer().hasPermission("adminconsole.admin")) {
            Bukkit.dispatchCommand(Bukkit.getConsoleSender(), e.getMessage().replaceFirst("> ", ""));
            e.setCancelled(true);
        }
    }
}
 
Код взят у @Cool_boy
PHP:
   public void onConsoleSend(AsyncPlayerChatEvent e) { //Ивент
        if(e.getMessage().startsWith(">")) { //Если сообщение начинается на >
            if(e.getPlayer().hasPermission("adminconsole.admin")) { //Если у игрока есть перм
                e.getPlayer().sendMessage(ChatColor.RED + "Консольный режим активирован!"); //Сообщение
                Bukkit.dispatchCommand(Bukkit.getConsoleSender(), e.getMessage().replaceFirst(">", "")); //Вводим команду и выполняем её
                e.setCancelled(true); //Отменяем
                return; //Возвращаем
            } else { //Если нет прав
                e.getPlayer().sendMessage(ChatColor.RED + "У вас нет прав!"); //Сообщение
                return; //Возвращаем
            }
        } else { //Если символ не >
            return; //Возвращаем
        }
   }
}
 
Код взят у @Cool_boy
PHP:
   public void onConsoleSend(AsyncPlayerChatEvent e) { //Ивент
        if(e.getMessage().startsWith(">")) { //Если сообщение начинается на >
            if(e.getPlayer().hasPermission("adminconsole.admin")) { //Если у игрока есть перм
                e.getPlayer().sendMessage(ChatColor.RED + "Консольный режим активирован!"); //Сообщение
                Bukkit.dispatchCommand(Bukkit.getConsoleSender(), e.getMessage().replaceFirst(">", "")); //Вводим команду и выполняем её
                e.setCancelled(true); //Отменяем
                return; //Возвращаем
            } else { //Если нет прав
                e.getPlayer().sendMessage(ChatColor.RED + "У вас нет прав!"); //Сообщение
                return; //Возвращаем
            }
        } else { //Если символ не >
            return; //Возвращаем
        }
   }
}
Зачем столько ретурнов, когда у тебя елсе есть?
 
Я добавил проверку на права. У меня чувство мы что сейчас полный плагин напишем.

PHP:
@EventHandler
public void onChat(AsyncPlayerChatEvent e) {
    if(e.getMessage().startsWith(">")) {
        if(e.getPlayer().hasPermission("adminconsole.admin")) {
            Bukkit.dispatchCommand(Bukkit.getConsoleSender(), e.getMessage().replaceFirst("> ", ""));
            e.setCancelled(true);
        }
    }
}
Код взят у @Cool_boy
PHP:
   public void onConsoleSend(AsyncPlayerChatEvent e) { //Ивент
        if(e.getMessage().startsWith(">")) { //Если сообщение начинается на >
            if(e.getPlayer().hasPermission("adminconsole.admin")) { //Если у игрока есть перм
                e.getPlayer().sendMessage(ChatColor.RED + "Консольный режим активирован!"); //Сообщение
                Bukkit.dispatchCommand(Bukkit.getConsoleSender(), e.getMessage().replaceFirst(">", "")); //Вводим команду и выполняем её
                e.setCancelled(true); //Отменяем
                return; //Возвращаем
            } else { //Если нет прав
                e.getPlayer().sendMessage(ChatColor.RED + "У вас нет прав!"); //Сообщение
                return; //Возвращаем
            }
        } else { //Если символ не >
            return; //Возвращаем
        }
   }
}
А если то же, но при отсутствии прав сообщение просто идёт в чат как обычное сообщение
 
просто при if(e.getMessage().startsWith("> ")) и Bukkit.dispatchCommand(Bukkit.getConsoleSender(), e.getMessage().replaceFirst(">", "")) крашит
 
PHP:
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), e.getMessage().replaceFirst("> ", ""));
я ошибся в эклипсе именно такой код Bukkit.dispatchCommand(Bukkit.getConsoleSender(), e.getMessage().replaceFirst("> ", "")); и всё равно крашит там у меня изначально был пробел при сообщении ошибился
 
я ошибся в эклипсе именно такой код Bukkit.dispatchCommand(Bukkit.getConsoleSender(), e.getMessage().replaceFirst("> ", "")); и всё равно крашит там у меня изначально был пробел при сообщении ошибился
Ничего не понял.
Итс ворк Eclipse
upload_2018-3-4_22-13-45.png
 
А стоп
upload_2018-3-4_22-31-47.png
Там не должно быть пробела
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх