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

Помогите Настройка plugin.yml и метод onCommand()

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

Статус темы:
Закрыта.
  1. Автор темы
    Necit36

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

    Баллы:
    63
    Имя в Minecraft:
    Necit36
    Нужна помощь! В разработке плагинов я полный нуб :D Пытаюсь написать плагин для смены GM режима.
    Код:
    package ru.necit36.plugin;
    
    import java.util.logging.Logger;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.GameMode;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.event.entity.PlayerDeathEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class TestPlugin extends JavaPlugin implements Listener {
          public static final Logger _log = Logger.getLogger("Minecraft");
         
          @Override
          public void onEnable() {
              _log.info("[NECIT36 PLG] started");
              Bukkit.getPluginManager().registerEvents(this, this);
             
          }
         
          public boolean onCommand(CommandSender sender, Command cmd, String lbl, String[] args){
              Player player = (Player) sender;
              if(lbl.equalsIgnoreCase("Gm Survival")){
                  player.sendMessage("Режим изменен!");
                  player.setGameMode(GameMode.SURVIVAL);
                  return true;
              }else if(lbl.equalsIgnoreCase("Gm Creative")){
                  player.sendMessage("Режим изменен!");
                  player.setGameMode(GameMode.CREATIVE);
                  return true;
              }
              return false;
          }
    }
    --------------------------------------------------------------------------------------------------------------
    Вот код plugin.yml

    name: TestPlugin
    main: ru.necit36.plugin.TestPlugin
    version: 0.1

    commands:
    Gm Creative:
    description: Change player gamemode 1.
    Gm Survival:
    description: Change player gamemode 0.
    --------------------------------------------------------------------------------------------------------------
    пытаюсь написать команду /gm creative или /gm survival - Пишет "Команда не известна!".
    Что делать, где ошибка? Если не сложно помогите :)
     
  2. StealerSlain

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

    Баллы:
    88
    Имя в Minecraft:
    StealerSlain
    Первая ошибка, которую я заметил - неправильное построение команд совсем.
    Вторая ошибка - нету проверки на количество аргументов (String [] args).
    Третья ошибка - с заглавной буквы команды (не рекомендуется)
    Исправь те две ошибки сверху, затем попробуй лучше использовать
    Код:
    if (cmd.getName().equalsIgnoreCase("yourcommand")){
     
  3. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    + к тому что сказано выше:
    Команды с пробелом работать не будут.
    Команды не зарегестрированы.
     
    ПриветОтЛайки и 0bsid1 нравится это.
  4. Автор темы
    Necit36

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

    Баллы:
    63
    Имя в Minecraft:
    Necit36
    А как правильно мне записать, чтобы работали?
     
  5. 0bsid1

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

    Баллы:
    123
    Имя в Minecraft:
    Artarious
    А самая смешная ошибка что нет пермисионса :D
    Всем игрокам разрешено :D
     
  6. Автор темы
    Necit36

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

    Баллы:
    63
    Имя в Minecraft:
    Necit36
    Мне бы сначала сделать, чтобы работало :D
    Лучше скажите как сделать)
    Например, я сделал 2 команды, но мне надо сделать из одной две. Чтобы писали /gm creative и режим менялся.
    Сейчас я сделал только так /creative и /survival.
    Код:
    public boolean onCommand(CommandSender sender, Command cmd, String lbl, String[] args){
              Player player = (Player) sender;
              if (cmd.getName().equalsIgnoreCase("survival")){
                  player.sendMessage("Режим изменен!");
                  player.setGameMode(GameMode.SURVIVAL);
                  return true;
              }else if(cmd.getName().equalsIgnoreCase("creative")){
                  player.sendMessage("Режим изменен!");
                  player.setGameMode(GameMode.CREATIVE);
                  return true;
              }
              return false;
          }
    

    Нашел как решить эту проблему.
    Код:
    public boolean onCommand(CommandSender sender, Command cmd, String lbl, String[] args){
              Player player = (Player) sender;
              if (cmd.getName().equalsIgnoreCase("gm")){
                  if(args[0].equalsIgnoreCase("survival")){
                  player.sendMessage("Режим изменен!");
                  player.setGameMode(GameMode.SURVIVAL);
                  }else if(args[0].equalsIgnoreCase("creative")){
                  player.sendMessage("Режим изменен!");
                  player.setGameMode(GameMode.CREATIVE);
                  }
                  return true;
              }
              return false;
          }
    -----------------------------------------------------------------------------------------------------------------
    А в plugin.yml записать так.
    commands:
    gm:
    description: Change player gamemode.
    -----------------------------------------------------------------------------------------------------------------
    Всем спасибо :)
     
Статус темы:
Закрыта.

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