Сборки серверов

СливПлатные

Сейчас онлайн

  • tomii
  • thenconvulsive
  • Kenny McCormik
  • KosarMonet_
  • Sashadragon
  • Fofal21
  • isaychiki251172
  • Liltrigan
  • RichKunG
  • takopain
  • astman0
  • lrlrrlv
  • nesinamore
  • Cvasolir
  • uertyk_
  • mojzis
  • kulturni_kot
  • German_382
  • vane909087
  • _Myrmix_
  • XapBu
  • lun1ksdasda
  • Gof4ik
  • Frosmars
  • MrJohny
  • Frezleee
  • Def1x213
  • Klocker
  • sfilatov3
  • Korolevsky
  • potato6515654
  • САМУРАЙ
  • OXIS
  • MxxFoxx.
  • ChildFreak
  • z0roday
  • krqtexenon
  • madora
  • dawdawd
  • wanthh
  • kik4347
  • zootmn15
  • 3mk
  • Novikmine_YT
  • IC9
  • C3n0s1CK

как запретить писать /near с аргументами?

  • Автор темыve1gosk
  • Дата начала
ve1gosk
Игроки могут прописать /near 99999999999999 и увидеть игроков на всей карте, я попытался написать плагин, но не помогло. Особенных прав на неар тоже нет, может это можно настроить отдельно?
 
FBM
Чтобы реализовать команду /near, которая показывает игроков на всей карте, вам нужно будет изменить логику вашего плагина. Вот пример, как это можно сделать на Java с использованием Bukkit API.

Java:
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.ArrayList;
import java.util.List;

public class NearPlugin extends JavaPlugin {

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (cmd.getName().equalsIgnoreCase("near")) {
            if (sender instanceof Player) {
                Player player = (Player) sender;
                double range = Double.MAX_VALUE; // Максимальное значение для поиска

                if (args.length > 0) {
                    try {
                        range = Double.parseDouble(args[0]);
                    } catch (NumberFormatException e) {
                        player.sendMessage("Введите корректное число.");
                        return true;
                    }
                }

                List<Player> nearbyPlayers = new ArrayList<>();
                for (Player p : Bukkit.getOnlinePlayers()) {
                    if (p != player && player.getLocation().distance(p.getLocation()) <= range) {
                        nearbyPlayers.add(p);
                    }
                }

                if (nearbyPlayers.isEmpty()) {
                    player.sendMessage("Игроки не найдены в радиусе " + range);
                } else {
                    player.sendMessage("Игроки в радиусе " + range + ":");
                    for (Player p : nearbyPlayers) {
                        player.sendMessage(p.getName());
                    }
                }
            } else {
                sender.sendMessage("Эта команда доступна только игрокам.");
            }
            return true;
        }
        return false;
    }
}

Этот код позволяет игрокам использовать команду /near с аргументом, который определяет радиус поиска. Если аргумент не указан, используется максимальное значение для поиска всех игроков на карте.

Не забудьте добавить нужные права для команды в вашем файле настроек прав, если это необходимо.
 
ve1gosk
@FBM, Мне нужно не реализовать команду которая будет показывать игроков на всей карте, а наоборот запретить игрокам пользоваться этим багом, чтобы они не могли прописать /near <аргумент>, а только /near
 
E_NeLsOn
@ve1gosk, В EssentialsX устанавливается стандартный радиус /near
1733337167325
Как бы игрок не писал (/near, /near 1, /near 99999999) всегда используется число, указанное в конфигах (в данном случае 200). Обойти это ограничение можно, прописав перм:
1733337283372
(при условии, что вообще речь об Essentials)
 
ВерхНиз