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

СливПлатные

Новые сообщения

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

  • zeltrix1
  • Jonifax2006
  • CubePlay00
  • _Myrmix_
  • писькагриз
  • sh1zaaExE
  • crash253egf
  • roboting
  • Tanri
  • andreu12
  • nightynight
  • fr3zium
  • Ivmay333
  • nemmem
  • wermitist21
  • makksgam
  • Jek
  • efffff
  • gondon74737
  • fnhjjjjujj
  • hryak3
  • Headus
  • Mladzman
  • Aleksei2012
  • itselloy
  • Rewayzzerkaa
  • GideonWhite1029
  • no1c
  • DonLorenzo52
  • Tazinakiy
  • MaskLe
  • Kepych1337
  • MrNoobkin
  • fleger22
  • Lord1k_Xx
  • eznn
  • anton27255
  • NeyTM
  • AdilDemon
  • Gorev777
  • ak1ra
  • Rertyty
  • viopxp
  • Foksiz
  • AhmetKaya
  • LiSnow
  • RZ_
  • Gaynegrovich12321
  • SeaCore
  • Billarta
  • RichKunG
  • dakeoffic
  • Gensta11142
  • DimaViper
  • Absolutely
  • SelfDistruct
  • waedsdawzsdfwca
  • Tikard
  • BellSton
  • jadgar363

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