Помогите Подарки

sasha2003

Активный участник
Пользователь
Баллы
76
Здравствуйте! У меня есть команда /gift.
Мне нужно чтобы при вводе /gift <PLAYER>, считывался данный игрок.
Он должен находится не дальше, чем на 5 блоков от игрока который вводит.
Если всё же он рядом (в 5 блоков от сендера), то у сендера берётся вещь, удаляется у него, и переводится к игроку которого он ввёл в команде (Допустим: /gift _ASdasdi_).
Какие нужны проверки?
 
Можно придумать что нибудь с getNearbyEntities
А вот эта тема тебе еще может помочь.
 
Можно придумать что нибудь с getNearbyEntities
А вот эта тема тебе еще может помочь.

Можно так???
Код:
public static boolean isInRadius(Location center, Location loc, double radius)
{
    if (!loc.getWorld().equals(center.getWorld()))
    {
        return false;
    }
    return center.distanceSquared(loc) <= (radius * radius);
}

Код:
Location tloc = target.getLocation();
                  Location ploc = p.getLocation();
                  if (isInRadius(ploc, tloc, 5)) {....
 
Какой смысл такое спрашивать? Просто скомпилируй и проверь.
 
Что я делаю не так?

Код:
public class Gift implements Listener {
   
   
   
    @SuppressWarnings("deprecation")
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
          Player p = (Player) sender;
          if (command.getName().equalsIgnoreCase("gift")) {
              if (p.hasPermission("prison.gift")) {
                  if (args.length != 1) {
                      return false;
                  }
                  Player target = Bukkit.getPlayerExact(args[0]);
                  if (!target.hasPlayedBefore()) {
                      p.sendMessage(ChatColor.RED + target.getDisplayName() + " §6не заходил на сервер!");
                      return true;
                  }
                  Location tloc = target.getLocation();
                  Location ploc = p.getLocation();
                  if (isInRadius(ploc, tloc, 5)) {
                      if (target.isOnline()) {
                          p.setItemInHand(new ItemStack (Material.AIR));
                          target.getInventory().addItem(p.getItemInHand());
                          p.sendMessage("§6Вы успешно отправили игроку §c" + target.getDisplayName() + "§6подарок!");
                          target.sendMessage("§aВы получили подарок от игрока §c" + p.getDisplayName());
                          target.playSound(target.getLocation(), Sound.LEVEL_UP, 2, 2);
                          return true;
                      } else {
                          p.sendMessage("§cДанный игрок сейчас не онлайн!");
                      }
                  } else {
                      p.sendMessage("§cДля того, чтобы подарить §6" + target.getDisplayName() + " §cподарок, нужно находиться рядом с ним!");
                      return true;
                  }
              } else {
                  p.sendMessage("§cУ Вас ещё нет прав на это!");
                  return true;
              }
          }
        return true;
    }
   
    public static boolean isEntityInRadius(Location center, double radius, Entity entity) {
        return isInRadius(center, entity.getLocation(), radius);
    }
   
    public static boolean isInRadius(Location center, Location loc, double radius) {
        if (!loc.getWorld().equals(center.getWorld())) {
            return false;
        }
        return center.distanceSquared(loc) <= (radius * radius);
    }
   
    public static Set<Entity> getEntitiesNearLocation(Location center, int radius)
    {
        Set<Entity> entities = new HashSet<> ();
    
        for (Entity entity : center.getWorld().getEntities())
        {
            if (isEntityInRadius(center, radius, entity))
            {
                entities.add(entity);
            }
        }
    
        return entities;
    }
}
 
А логи есть из консоли? Или он у тебя не работает, но и не крашит..?
Начал читать код, а тут оп Prison. Что же вам всем тут так призон написать не терпится? Не суть. Логи будут?
 
А логи есть из консоли? Или он у тебя не работает, но и не крашит..?
Начал читать код, а тут оп Prison. Что же вам всем тут так призон написать не терпится? Не суть. Логи будут?
нету логов

я правильно вообще использую getNearbyEntities?
 
С чего вывод, что ты делаешь что то не так? Может тогда объяснишь ситуацию? .-.
Код:
if(isEntityInRadius(p.getLocation(), 5, target)) {
    // татата
    return true;
}
p.sendMessage("Игрок " + target.getName() + " находится слишком далеко от вас!");
Короче говоря, что то такое должно получиться.
 
С чего вывод, что ты делаешь что то не так? Может тогда объяснишь ситуацию? .-.
Код:
if(isEntityInRadius(p.getLocation(), 5, target)) {
    // татата
    return true;
}
p.sendMessage("Игрок " + target.getName() + " находится слишком далеко от вас!");
Короче говоря, что то такое должно получиться.
Это работает, НО появляются ошибки при воде команды без ника, и с ником, но нсли этот игрок не онлайн!
Код:
public class Gift implements Listener, CommandExecutor {
   
    @SuppressWarnings("deprecation")
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
          Player p = (Player) sender;
          if (command.getName().equalsIgnoreCase("gift")) {
              Player target = Bukkit.getPlayerExact(args[0]);
              if(args.length == 1) {
                  if(target.isOnline()) {
                      if(isEntityInRadius(p.getLocation(), 5, target)) {
                          if (!p.getItemInHand().getType().equals(Material.AIR)) {
                              if (!(p == target)) {
                                  String dispp = p.getItemInHand().getItemMeta().getDisplayName();
                                  target.getInventory().addItem(p.getItemInHand());
                                  p.setItemInHand(new ItemStack (Material.AIR));
                                  p.sendMessage("§6Вы успешно отправили игроку §c" + target.getDisplayName() + "§6 подарок!");
                                  p.sendMessage("§a(" + dispp + "§a)");
                                  target.sendMessage("§aВы получили подарок от игрока §c" + p.getDisplayName());
                                  target.playSound(target.getLocation(), Sound.LEVEL_UP, 2, 2);
                                  return true;
                              } else {
                                  p.sendMessage("§7[§6Taselix§7] §cВы не можете отправить себе подарок");
                                  return true;
                              }
                          } else {
                              p.sendMessage("§7[§6Taselix§7] §cВы должны взять предмет в руку!");
                              return true;
                          }
                      } else {
                          p.sendMessage("§7[§6Taselix§7] §cИгрок, который получает подарок должен находиться в пяти блоках от тебя!");
                          return true;
                      }
                  } else {
                      p.sendMessage("Данного игрока нет на сервере");
                      return true;
                  }
              } else {
                  p.sendMessage("§7[§6Taselix§7] §c/gift <§6Получатель§c>");
                  return true;
              }
          } else {
              p.sendMessage("§7[§6Taselix§7] §c/gift <§6Получатель§c>");
              return true;
          }
    }
    public static boolean isEntityInRadius(Location center, double radius, Entity entity) {
        return isInRadius(center, entity.getLocation(), radius);
    }
   
    public static boolean isInRadius(Location center, Location loc, double radius) {
        if (!loc.getWorld().equals(center.getWorld())) {
            return false;
        }
        return center.distanceSquared(loc) <= (radius * radius);
    }
   
    public static Set<Entity> getEntitiesNearLocation(Location center, int radius)
    {
        Set<Entity> entities = new HashSet<> ();
    
        for (Entity entity : center.getWorld().getEntities())
        {
            if (isEntityInRadius(center, radius, entity))
            {
                entities.add(entity);
            }
        }
    
        return entities;
    }
}

Ошибки:
Код:
[17:52:01] [Server thread/INFO]: YivePro issued server command: /gift
[17:52:01] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'gift' in plugin TaselixPrison v0.2
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot.jar:git-Spigot-5f38d38-18fbb24]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot.jar:git-Spigot-5f38d38-18fbb24]
    at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) ~[spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_121]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_121]
    at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_121]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
    at ru.yivepro.prison.Gift.onCommand(Gift.java:24) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot.jar:git-Spigot-5f38d38-18fbb24]
    ... 15 more
[17:52:18] [Server thread/INFO]: YivePro issued server command: /gift YiveProsad
[17:52:18] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'gift' in plugin TaselixPrison v0.2
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot.jar:git-Spigot-5f38d38-18fbb24]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot.jar:git-Spigot-5f38d38-18fbb24]
    at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) ~[spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_121]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_121]
    at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_121]
Caused by: java.lang.NullPointerException
    at ru.yivepro.prison.Gift.onCommand(Gift.java:26) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot.jar:git-Spigot-5f38d38-18fbb24]
    ... 15 more
[17:52:45] [Server thread/INFO]: YivePro lost connection: Internal Exception: java.io.IOException: Удаленный хост принудительно разорвал существующее подключение
 
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0 - что-то с массивом, походу он пуст.
 
Я читал код полностью, и это такое говнецо... Я сразу видел, что у тебя не будет работать проверка на онлайн. А проверять сам ник.. Ну думаю сам справишься)
Не проверял, но вроде как должно теперь работать
Код:
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.Sound;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.*********ventory.ItemStack;

public class Gift implements Listener, CommandExecutor {

    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        Player p = (Player) sender;
        if(command.getName().equalsIgnoreCase("gift")) {
            Player target = Bukkit.getPlayer(args[0]);
            if(args.length != 1) {
                p.sendMessage("§7[§6Taselix§7] §c/gift <§6Получатель§c>");
                return true;
            }
            if(args.length == 1) {
                if(target == p) {
                    p.sendMessage("§7[§6Taselix§7] §cВы не можете отправить себе подарок");
                    return true;
                }
                if(target == null) {
                    p.sendMessage("Данного игрока нет на сервере");
                    return true;
                }
                if(p.getItemInHand().getType() == Material.AIR) {
                    p.sendMessage("§7[§6Taselix§7] §cВы должны взять предмет в руку!");
                    return true;
                }
                if(!isInRadius(p, target, 5)) {
                    p.sendMessage("§7[§6Taselix§7] §cИгрок, который получает подарок должен находиться в пяти блоках от тебя!");
                    return true;
                }
                String dispp = p.getItemInHand().getItemMeta().getDisplayName();
                target.getInventory().addItem(p.getItemInHand());
                p.setItemInHand(new ItemStack(Material.AIR));
                p.sendMessage("§6Вы успешно отправили игроку §c" + target.getDisplayName() + "§6 подарок!");
                p.sendMessage("§a(" + dispp + "§a)");
                target.sendMessage("§aВы получили подарок от игрока §c" + p.getDisplayName());
                target.playSound(target.getLocation(), Sound.LEVEL_UP, 2, 2);
                return true;
            }
        }
        return false;
    }

    public static boolean isInRadius(Player player, Player target, double radius) {
        if(!target.getLocation().getWorld().equals(player.getLocation().getWorld())) {
            return false;
        }
        return player.getLocation().distanceSquared(target.getLocation()) <= (radius * radius);
    }

}
Лично на себе замечал, что "else" губит все и вся. Запутаться при его использование очень легко)
 
Согласен
[/QUOTE]
Лично на себе замечал, что "else" губит все и вся. Запутаться при его использование очень легко)[/QUOTE]
Всё= ошибка!
Когда просто пишу /gift, вместо
p.sendMessage("§7[§6Taselix§7] §c/gift <§6Получатель§c>");
Выскакивает из ниоткуда ошибка!
 
А ошибку то скинешь? Я не могу понять, в чем она..
 
Код:
[19:50:46] [Server thread/INFO]: YivePro issued server command: /gift
[19:50:46] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'gift' in plugin TaselixPrison v0.2
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot.jar:git-Spigot-5f38d38-18fbb24]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot.jar:git-Spigot-5f38d38-18fbb24]
    at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) ~[spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_121]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_121]
    at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot.jar:git-Spigot-5f38d38-18fbb24]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_121]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
    at ru.yivepro.prison.Gift.onCommand(Gift.java:24) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot.jar:git-Spigot-5f38d38-18fbb24]
    ... 15 more
 
Все. Я решил сам все скомпилировать. Долго оповещения не замечал, разбирался с делами)
Java:
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.*********ventory.ItemStack;

public class Gift implements Listener, CommandExecutor {

    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        Player p = (Player) sender;
        if(command.getName().equalsIgnoreCase("gift")) {
            if(args.length != 1) {
                p.sendMessage("§7[§6Taselix§7] §c/gift <§6Получатель§c>");
                return true;
            }
            if(args.length == 1) {
                if(Bukkit.getPlayer(args[0]) == null) {
                    p.sendMessage("Данного игрока нет на сервере");
                    return true;
                }
                if(Bukkit.getPlayer(args[0]) == p) {
                    p.sendMessage("§7[§6Taselix§7] §cВы не можете отправить себе подарок");
                    return true;
                }
                Player target = Bukkit.getPlayer(args[0]);
                if(p.getItemInHand().getType() == Material.AIR) {
                    p.sendMessage("§7[§6Taselix§7] §cВы должны взять предмет в руку!");
                    return true;
                }
                if(!isInRadius(p, target, 5)) {
                    p.sendMessage("§7[§6Taselix§7] §cИгрок, который получает подарок должен находиться в пяти блоках от тебя!");
                    return true;
                }
                String dispp = p.getItemInHand().getItemMeta().getDisplayName();
                target.getInventory().addItem(p.getItemInHand());
                p.setItemInHand(new ItemStack(Material.AIR));
                p.sendMessage("§6Вы успешно отправили игроку §c" + target.getDisplayName() + "§6 подарок!");
                p.sendMessage("§a(" + dispp + "§a)");
                target.sendMessage("§aВы получили подарок от игрока §c" + p.getDisplayName());
                target.playSound(target.getLocation(), Sound.LEVEL_UP, 2, 2);
                return true;
            }
        }
        return false;
    }

    public static boolean isInRadius(Player player, Player target, double radius) {
        if(!target.getLocation().getWorld().equals(player.getLocation().getWorld())) {
            return false;
        }
        return player.getLocation().distanceSquared(target.getLocation()) <= (radius * radius);
    }

}
У меня все работает.
(Более х**** подобранных цветов для текста я не видел...)
 
Все. Я решил сам все скомпилировать. Долго оповещения не замечал, разбирался с делами)
Java:
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.*********ventory.ItemStack;

public class Gift implements Listener, CommandExecutor {

    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        Player p = (Player) sender;
        if(command.getName().equalsIgnoreCase("gift")) {
            if(args.length != 1) {
                p.sendMessage("§7[§6Taselix§7] §c/gift <§6Получатель§c>");
                return true;
            }
            if(args.length == 1) {
                if(Bukkit.getPlayer(args[0]) == null) {
                    p.sendMessage("Данного игрока нет на сервере");
                    return true;
                }
                if(Bukkit.getPlayer(args[0]) == p) {
                    p.sendMessage("§7[§6Taselix§7] §cВы не можете отправить себе подарок");
                    return true;
                }
                Player target = Bukkit.getPlayer(args[0]);
                if(p.getItemInHand().getType() == Material.AIR) {
                    p.sendMessage("§7[§6Taselix§7] §cВы должны взять предмет в руку!");
                    return true;
                }
                if(!isInRadius(p, target, 5)) {
                    p.sendMessage("§7[§6Taselix§7] §cИгрок, который получает подарок должен находиться в пяти блоках от тебя!");
                    return true;
                }
                String dispp = p.getItemInHand().getItemMeta().getDisplayName();
                target.getInventory().addItem(p.getItemInHand());
                p.setItemInHand(new ItemStack(Material.AIR));
                p.sendMessage("§6Вы успешно отправили игроку §c" + target.getDisplayName() + "§6 подарок!");
                p.sendMessage("§a(" + dispp + "§a)");
                target.sendMessage("§aВы получили подарок от игрока §c" + p.getDisplayName());
                target.playSound(target.getLocation(), Sound.LEVEL_UP, 2, 2);
                return true;
            }
        }
        return false;
    }

    public static boolean isInRadius(Player player, Player target, double radius) {
        if(!target.getLocation().getWorld().equals(player.getLocation().getWorld())) {
            return false;
        }
        return player.getLocation().distanceSquared(target.getLocation()) <= (radius * radius);
    }

}
У меня все работает.
(Более х**** подобранных цветов для текста я не видел...)

Заработало!!!
У меня вопрос:
Можно ли удалять строчку из конфига?
 
Все. Я решил сам все скомпилировать. Долго оповещения не замечал, разбирался с делами)
Java:
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.*********ventory.ItemStack;

public class Gift implements Listener, CommandExecutor {

    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        Player p = (Player) sender;
        if(command.getName().equalsIgnoreCase("gift")) {
            if(args.length != 1) {
                p.sendMessage("§7[§6Taselix§7] §c/gift <§6Получатель§c>");
                return true;
            }
            if(args.length == 1) {
                if(Bukkit.getPlayer(args[0]) == null) {
                    p.sendMessage("Данного игрока нет на сервере");
                    return true;
                }
                if(Bukkit.getPlayer(args[0]) == p) {
                    p.sendMessage("§7[§6Taselix§7] §cВы не можете отправить себе подарок");
                    return true;
                }
                Player target = Bukkit.getPlayer(args[0]);
                if(p.getItemInHand().getType() == Material.AIR) {
                    p.sendMessage("§7[§6Taselix§7] §cВы должны взять предмет в руку!");
                    return true;
                }
                if(!isInRadius(p, target, 5)) {
                    p.sendMessage("§7[§6Taselix§7] §cИгрок, который получает подарок должен находиться в пяти блоках от тебя!");
                    return true;
                }
                String dispp = p.getItemInHand().getItemMeta().getDisplayName();
                target.getInventory().addItem(p.getItemInHand());
                p.setItemInHand(new ItemStack(Material.AIR));
                p.sendMessage("§6Вы успешно отправили игроку §c" + target.getDisplayName() + "§6 подарок!");
                p.sendMessage("§a(" + dispp + "§a)");
                target.sendMessage("§aВы получили подарок от игрока §c" + p.getDisplayName());
                target.playSound(target.getLocation(), Sound.LEVEL_UP, 2, 2);
                return true;
            }
        }
        return false;
    }

    public static boolean isInRadius(Player player, Player target, double radius) {
        if(!target.getLocation().getWorld().equals(player.getLocation().getWorld())) {
            return false;
        }
        return player.getLocation().distanceSquared(target.getLocation()) <= (radius * radius);
    }

}
У меня все работает.
(Более х**** подобранных цветов для текста я не видел...)
Сейчас бы дергать getOnlinePlayer каждый раз. Переменную создать? Не, не слышали
 
Назад
Верх