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

СливПлатные

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

  • bobobo
  • FanTomaZer_Dev
  • timverhovniy
  • euj3ne
  • MrYArg1cH
  • Texkon
  • Bombalelo
  • kawasaki234432
  • Suilte
  • Nelit
  • skipperscabin
  • Fergust
  • Vlas05
  • LLlypblMypbl
  • Metaworfoz
  • Akela
  • kurumaq
  • thienlaox
  • Carl666
  • roggy_games
  • HapiXLAPI
  • lqxnio
  • VORON229
  • peha
  • AHTOH_FANTOM
  • AlphaKun0042
  • kyotoagony
  • GreenViich
  • E1ast
  • cuhkca
  • mako_
  • ThoSanTreEm
  • LACIO
  • HonzasikCZ

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