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

Помогите Как сделать рандомную телепортацию в близи к игрокам?

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

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

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

    Баллы:
    66
    Имя в Minecraft:
    _TheKrealisYT_
    Хочу написать плагин, чтоб было 3 вида ртп, первый на 2500 блоков, второй на 5000. Это я сделал, код будет ниже. Но хочу, чтоб при вводе команды /rtp3 игрока телепортировало вблизи к другим игрокам. Как это можно сделать? Можно ли взять ближайшего игрока, получить его координаты, телепортировать игрока выполняющего команду на 125 блоков к этому игроку? Если можно, то как? Если есть свои варианты, то предложите, как можно написать.

    Вот код:
    public boolean onCommand(final CommandSender sender, final Command cmd, final String label, final String[] args) {
    if (sender instanceof Player) {
    final Player p = (Player)sender;
    if (p.hasPermission("kaddon.rtp")) {
    final int max = 2000;
    final int min = 2500;
    final int x = new Random().nextInt(max + min) + min;
    final int z = new Random().nextInt(max + min) + min;
    final Location loc = new Location(p.getWorld(), (double)x, 0.0, (double)z);
    final int y = loc.getWorld().getHighestBlockYAt(loc) + 3;
    loc.setY((double)y);
    p.teleport(loc);
    final FoodLevelChangeEvent event = new FoodLevelChangeEvent((HumanEntity)p, p.getFoodLevel() - 4);
    Bukkit.getPluginManager().callEvent((Event)event);
    p.setFoodLevel(event.getFoodLevel());
    p.sendTitle(Main.getInstance().getConfig().getString("messages.title_rtp").replace("&", "§"), (String)null);
    p.sendMessage(ChatColor.GREEN + "\u0412\u044b \u0442\u0435\u043b\u0435\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0430 " + x + " " + y + " " + z);
    p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BELL, 4.0f, 4.0f);
    p.addPotionEffect(new PotionEffect(PotionEffectType.WATER_BREATHING, 200, 1));
    }
    else {
    p.sendMessage(Main.getInstance().getConfig().getString("messages.rtp_noperm").replace("&", "§"));
    }
    }
    else if (args.length == 1) {
    final Player p = Bukkit.getPlayer(args[0]);
    if (p != null && p.isOnline()) {
    final int max = 2000;
    final int min = 2500;
    final int x = new Random().nextInt(max + min) + min;
    final int z = new Random().nextInt(max + min) + min;
    final Location loc = new Location(p.getWorld(), (double)x, 0.0, (double)z);
    final int y = loc.getWorld().getHighestBlockYAt(loc) + 3;
    loc.setY((double)y);
    p.teleport(loc);
    p.sendMessage("\u0412\u044b \u0442\u0435\u043b\u0435\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0430 " + x + " " + y + " " + z);
    }
    else {
    sender.sendMessage(ChatColor.RED + "\u0423 \u0432\u0430\u0441 \u043d\u0435\u0442 \u043f\u0440\u0430\u0432 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b!");
    }
    }
    else {
    sender.sendMessage("\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435((");
    }
    return false;
    }
    }
     
  2. PifPafich

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

    Баллы:
    66
    Имя в Minecraft:
    steklopaKet32_46
    берёшь самого близкого игрока к плейеру в радиусе а, и тепаешь его в радиусе b по отношение к игроку, которого выбрал. Радиус может быть квадратной площадью
     
  3. PifPafich

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

    Баллы:
    66
    Имя в Minecraft:
    steklopaKet32_46
    и что это?
     
  4. Автор темы
    TheKrealisYT

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

    Баллы:
    66
    Имя в Minecraft:
    _TheKrealisYT_
    Так что конкретно в коде писать? Как получить ближайшего игрока?
     
  5. PifPafich

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

    Баллы:
    66
    Имя в Minecraft:
    steklopaKet32_46
  6. alexandrage

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

    Баллы:
    173
    Сравнить дистанцию.
     

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