1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Рандомные команды

Тема в разделе "Разработка плагинов для новичков", создана пользователем EugeneRu, 15 дек 2018.

  1. Автор темы
    EugeneRu

    EugeneRu Новичок Пользователь

    Баллы:
    11
    Мне нужно сделать так, чтобы при написание команды /test выполнялись рандомные команды которые будут указаны в конфиге. Как это сделать ?
     
  2. NyanGuyMF

    NyanGuyMF Активный участник Пользователь

    Баллы:
    76
    PHP:
    String command "help" ;// TODO: получить команду

    // Исполнить команду от имени игрока
    player.performCommand(command); // Возможно, нужен слэш :D

    // Исполнить команду от имени консоли
    Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command);
     
  3. NyanGuyMF

    NyanGuyMF Активный участник Пользователь

    Баллы:
    76
    В каком формате указаны команды в конфиге?
     
  4. Автор темы
    EugeneRu

    EugeneRu Новичок Пользователь

    Баллы:
    11
    Это я знаю, мне нужно из конфига брать рандомную команду и выполнять её.
     
  5. Автор темы
    EugeneRu

    EugeneRu Новичок Пользователь

    Баллы:
    11
    Что-то вроде этого https://pastebin.com/U6YueAE7 ну или аналогичный этому из которого так же брать команды и выполнять их рандомно.
     
  6. NyanGuyMF

    NyanGuyMF Активный участник Пользователь

    Баллы:
    76
    Этот код возьмет случайную команду:
    PHP:
    List<Stringcommands getConfig().getStringList("commands");
    Random       r        = new Random();

    int low         0,
        
    high        commands.size(),
        
    randNumber  r.nextInt(high-low) + low;

    String command commands.get(randNumber);
     
  7. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    java.util.Random
     
  8. HunterGaming

    HunterGaming Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Не вижу смысла в строчках int low... и r.nextInt(high - low) + low, если можно сделать проще r.nextInt(high)
     
  9. NyanGuyMF

    NyanGuyMF Активный участник Пользователь

    Баллы:
    76
    Ну ВДРУГ понадобится использовать нижнюю границу :D
     
  10. Автор темы
    EugeneRu

    EugeneRu Новичок Пользователь

    Баллы:
    11
    А как теперь выполнить командой /test , рандомную команду из конфига.
     
  11. NyanGuyMF

    NyanGuyMF Активный участник Пользователь

    Баллы:
    76
    Зарегистрируй команду в plugin.yml:
    PHP:
    commands:
      
    test:
        
    description'test command'
    Зарегистрируй исполнитель команды в главном классе плагина в методе onEnable():
    PHP:
    getServer().getPluginCommand("test").setExecutor(new TestCommand());
    PHP:
    /**
     * TestCommand.java 2018-12-15

     * @author nyanguymf

     * @version 1.0
     */
    package me.nyanguymf.commands;

    import org.bukkit.Bukkit;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;

    /**
     * @author nyanguymf
     */
    public class TestCommand implements CommandExecutor {

        
    /**
         *
         */
        
    public TestCommand() {
            
    // TODO Auto-generated constructor stub
        
    }

        
    /* (non-Javadoc)
         * @see org.bukkit.command.CommandExecutor#onCommand(org.bukkit.command.CommandSender, org.bukkit.command.Command, java.lang.String, java.lang.String[])
         */
        
    @Override
        
    public boolean onCommand(CommandSender senderCommand cmdString labelString[] args) {
            
    // TODO: необходимые проверки
            
    Player player = (Playersender;
         
            
    String toExecute ""// TODO: получить рандомную команду

            // Исполнить команду от имени игрока
            
    player.performCommand(toExecute); // Возможно, нужен слэш :D

            // Исполнить команду от имени консоли
            
    Bukkit.dispatchCommand(Bukkit.getConsoleSender(), toExecute);
            return 
    true;
        }
    }
    UPD: не копируй весь код - он с символами табуляций :D (ну или замени)
    UPD2: теперь пробелы :D
     
    Последнее редактирование: 15 дек 2018
  12. LilClick

    LilClick Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    Lil_Click
    Код:
    
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    Player p = (Player) sender;
    Random r = new Random() {
              if(label.equalsIgnoreCase("test") {
                 if(r.nextFloat() > 0.5) {
                     p.teleport(loc);
                 }else if(r.nextfloat() > 0.5) {
                      p.sendmessage("lol");
                 }else {
                       p.sendmessage("Если все выше не выдало");
                 }
             }
        }
        return false;
     }
    }
     
    Последнее редактирование: 19 дек 2018
  13. Slavkaa

    Slavkaa Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    PHP:
    Random random = new Random();
    List<
    Stringcommands config.getStringList("commands");
    player.performCommand(commands.get(random.nextInt(commands.size())));
     

Поделиться этой страницей