Помогите Выдача предмета

sasha2003

Активный участник
Пользователь
Баллы
76
Здравствуйте др. форумчане!

Мне нужно узнать, как Игроку выдать предмет с определённым имненем.
Готово:


Код:
public class Pcagive implements CommandExecutor {
  
    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
        if (cmd.getName().equalsIgnoreCase("pcagive")) {
            if (!(sender instanceof Player)) {
                sender.sendMessage(ChatColor.AQUA + "[PrisonClickAdd] " + ChatColor.RED + "Command only for players.");
                return false;
            }
            Player p = (Player) sender;

И ещё один вопрос- как сделать, чтобы вещь выдавалась игроку, которого я укажу в команде.
Например:
/pcagive LalKa2281337
Или:
/pcagive LolKekCheburek1337
 
Bukkit.getPlayer(args[0]);

Не забываем проверки на npe
 
Можно поподробнее
args. это список аргументов. тип данных String[] - массив строк.
в нем хранится все что введено после команды.

/command arg0 arg1 arg2
думаю понятно что тут что.

соответственно получаем игрока по аргументу.
если такого игрока нет, то тебе вернется null, работа с нулл отдаст NullPointerException - сокращенно npe.
 
Дополни мой код, пожалуйста:)
 
нет, при чем тут это.

я выше все написал.
я так же дал тебе ВСЮ необходимую информацию.

Если ты не знаешь жабу, то гугл в помощь.
Если ты не знаешь ведроапи - гугл в помощь.

делать за тебя такой простейший код НИКТО не будет
 
Java:
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
        if (cmd.getName().equalsIgnoreCase("pcagive")) {
            if(args.length == 0) {
                if (!(sender instanceof Player)) {
                    sender.sendMessage(ChatColor.AQUA + "[PrisonClickAdd] " + ChatColor.RED + "Command only for players.");
                    return false;
                }
              Player player = (Player) sender;
              player.getInventory().addItem(new ItemStack(Material.<Material>));
              return true;
            }
            if(args.length == 1) {
              if(Bukkit.getPlayer(args[0]) == null) {
                  sender.sendMessage("Игрок не найден");
                  return false;
              }
              Player player = Bukkit.getPlayer(args[0]);
              player.getInventory().addItem(new ItemStack(Material.<Material>));
              return true;
            }
        }
}
Как то так. Писал от руки. Надеюсь правильно.
 
Java:
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
        if (cmd.getName().equalsIgnoreCase("pcagive")) {
            if(args.length == 0) {
                if (!(sender instanceof Player)) {
                    sender.sendMessage(ChatColor.AQUA + "[PrisonClickAdd] " + ChatColor.RED + "Command only for players.");
                    return false;
                }
              Player player = (Player) sender;
              player.getInventory().addItem(new ItemStack(Material.<Material>));
              return true;
            }
            if(args.length == 1) {
              if(Bukkit.getPlayer(args[0]) == null) {
                  sender.sendMessage("Игрок не найден");
                  return false;
              }
              Player player = Bukkit.getPlayer(args[0]);
              player.getInventory().addItem(new ItemStack(Material.<Material>));
              return true;
            }
        }
}
Как то так. Писал от руки. Надеюсь правильно.
ща бы в 2017 использовать каскад if'ов когда есть switch case

жду не дождусь когда метод ничего не вернет
 
Только что прочитал что нужно выдавать предмет с Именем.
Код:
ItemStack item = new ItemStack(Material.<Material>);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("Имя предмета");
item.setItemMeta(meta);
Опять же писал от руки.
 
Всё зависит от ситуации, иногда лучше использовать if else
+1 По скорости будет одинагого. Все та же лесенка, только в другой обертке.
С одной лишь разницей switch string с жабы 7 а if с чем угодно от самых древних версий.
 
Назад
Верх