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

СливПлатные

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

  • vcllebiwfsdg
  • JustVovka
  • fcPlugins
  • prosto_cheliik2
  • Estor
  • wbdaAA
  • Belkiz11032
  • daneyeul
  • MrDrag0nXYT
  • Shnadow12111
  • Kiril2431
  • LiSnow
  • Heller123
  • payfqy
  • Volk12
  • dhruvyadav897
  • mokil
  • Rimurochca
  • Vance12355
  • minemeow
  • iMeeTake
  • _datura
  • z0roday
  • lqxnio
  • КуньЛунь
  • sh1zaaExE
  • hazx
  • deferNon
  • unfix
  • rseg23
  • ebantyai17323
  • gdufy
  • Cobi
  • FoxySSoksy
  • notikj
  • _Nixx_
  • SanDex
  • Kto_ya___
  • VetNein
  • Artiom_Blo
  • 熙柠520
  • qwerottt
  • Darklol36
  • Wicsur22800
  • justpremadeaccount
  • Kenny McCormik
  • itselloy
  • lytkin
  • y9olek
  • Albetik
  • neyX
  • n1ghTW0lf
  • Mona Lisa
  • gfdgigdg
  • N1A1
  • ппрпсс
  • RamzST
  • estereomance
  • azharifarid
  • wanthh
  • fastusers
  • valerchik123333
  • gaspid
  • neydeen123
  • zimbago
  • DimaViper

как запретить писать /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)
 
ВерхНиз