Войти или зарегистрироваться

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

  • Автор темы Автор темы 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 - Пишет "Команда не известна!".
Что делать, где ошибка? Если не сложно помогите :)
 
Первая ошибка, которую я заметил - неправильное построение команд совсем.
Вторая ошибка - нету проверки на количество аргументов (String [] args).
Третья ошибка - с заглавной буквы команды (не рекомендуется)
Исправь те две ошибки сверху, затем попробуй лучше использовать
Код:
if (cmd.getName().equalsIgnoreCase("yourcommand")){
 
+ к тому что сказано выше:
Команды с пробелом работать не будут.
Команды не зарегестрированы.
 
А самая смешная ошибка что нет пермисионса :D
Всем игрокам разрешено :D
Мне бы сначала сделать, чтобы работало :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.
-----------------------------------------------------------------------------------------------------------------
Всем спасибо :)
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх