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

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

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

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

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

    Баллы:
    61
    Имя в Minecraft:
    XsatorYT
    В общем пишу плагин на спавн, написал что /spawn World <player>, но из-за того что массив так сказать перевёрнут работает это так /spawn <player> World. Ноо, ладна если так но если ввести первый пример команды то выдаёт ошибку. То есть мне нада либо заблочить вывод ошибки либо поменять порядок массива.
    Вот код:
    package xultraspawns;

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.util.Arrays;
    import java.util.Scanner;
    import org.apache.logging.log4j.LogManager;
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Player;

    public class SpawnCommandExecutor implements CommandExecutor {
    private String NoArgs;
    String LanguageFile = "Ru";
    private final Main plugin;
    /*
    * Конструктор
    */
    public SpawnCommandExecutor(Main plugin) {
    this.plugin = plugin;
    FileConfiguration conf = plugin.getConfig();// Получаем конфиг
    // Получаем содержание нужной строки в конфиге и записываем его в переменную
    //Заканчиваем запись
    if(Main.LanguageFile.equals("En")) {
    try(Scanner scanner = new Scanner (new FileInputStream(Main.EnLangFile))) {
    NoArgs = scanner.nextLine();
    } catch (FileNotFoundException e) {
    throw new RuntimeException(e);
    }
    }
    }
    /*
    * Переводит имя мира
    */
    public static String localizeWorldName(String name) {
    switch(name.toLowerCase()) {
    case "end":
    case "край":
    return "world_the_end";
    case "nether":
    case "ад":
    return "world_the_nether";
    case "overworld":
    case "мир":
    return "world";
    default:
    return null;
    }
    }
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    if(Main.LanguageFile.equals("Ru")) {

    }
    LogManager.getLogger().info(Arrays.toString(args));// Выводит в консоль массив args
    //Переводим sender в player, проверяем является ли sender - player(ом)
    if(sender instanceof Player) {
    Player player = args.length > 0 ? Bukkit.getPlayerExact(args[0]) : (Player)sender;
    switch(args.length) {
    case 0:
    player.teleport(Bukkit.getWorld("world").getSpawnLocation());
    player.sendMessage(Main.PluginName + ChatColor.GREEN.toString() + ":" + "Вы были телепортированы на спавн!");
    break;
    case 1:
    player.teleport(Bukkit.getWorld("world").getSpawnLocation());
    player.sendMessage(Main.PluginName + ChatColor.GREEN.toString() + ":" + "Вы были телепортированы на спавн!");
    break;
    case 2:
    player.teleport(player.getLocation().getWorld().getSpawnLocation());
    player.sendMessage(Main.PluginName + ChatColor.GREEN.toString() + ":" + "Вы были телепортированы на спавн!");
    break;
    case 3:
    if(player.hasPermission("xus.spawn.other")) {
    player.teleport(player.getLocation().getWorld().getSpawnLocation());
    player.sendMessage(ChatColor.GREEN.toString() + "Вы телепортировали на спавн игрока:" + ChatColor.RED.toString() + player.getName());
    } else {
    player.sendMessage(cmd.getPermissionMessage());
    }
    break;
    default:
    return false;// говорим, что неверное кол-во аргументов
    }
    } else {
    //Посылаем нах, если команда не от игрока
    sender.sendMessage(ChatColor.DARK_RED.toString() + "Вы не можете выполнить эту команду из консоли!!!");
    }
    return true;
    }
    }
     
  2. alexandrage

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

    Баллы:
    173
    Код:
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if (sender instanceof Player) {
                if (args.length == 2) {
                    Player player = Bukkit.getPlayerExact(args[0]);
                    World world = Bukkit.getWorld(args[1]);
                    if (player == null) {
                        sender.sendMessage("Игрок не найден");
                        return true;
                    }
                    if (world == null) {
                        sender.sendMessage("Мир не найден");
                        return true;
                    }
                    player.teleport(world.getSpawnLocation(), TeleportCause.COMMAND);
                }
                return true;
            }
            return false;
        }
     
  3. Автор темы
    XsatorYT

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

    Баллы:
    61
    Имя в Minecraft:
    XsatorYT
    Здравствуйте, а как разрешить выполнение команды от консоли? И + не работает /spawn только /spawn world <player>
     
  4. _MRDen3000YT_

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

    Баллы:
    76
    Код:
    if(sender instanceof ConsoleCommandSender)
    Код:
    if (args.length == 0) {
    // если введена команда /spawn без аргументов
    }
     
  5. alexandrage

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

    Баллы:
    173
    Код:
    public class CommandListener implements CommandExecutor, TabCompleter {
    
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    
            if (sender instanceof Player) {
                if (args.length == 0) {
                    Player player = (Player) sender;
                    World world = player.getWorld();
                    player.teleport(world.getSpawnLocation(), TeleportCause.COMMAND);
                    return true;
                }
                if (args.length == 1) {
                    World world = Bukkit.getWorld(args[0]);
                    if (world == null) {
                        sender.sendMessage("Мир не найден");
                        return true;
                    }
                }
            }
            if (args.length == 2) {
                World world = Bukkit.getWorld(args[0]);
                Player player = Bukkit.getPlayerExact(args[1]);
                if (world == null) {
                    sender.sendMessage("Мир не найден");
                    return true;
                }
                if (player == null) {
                    sender.sendMessage("Игрок не найден");
                    return true;
                }
                player.teleport(world.getSpawnLocation(), TeleportCause.COMMAND);
                return true;
            }
            return false;
        }
    
        @Override
        public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] args) {
            List<String> list = new ArrayList<String>();
            if (args.length == 0) {
                list.add("spawn");
            }
            if (args.length == 1) {
                Bukkit.getWorlds().forEach(world -> {
                    if (world.getName().contains(args[0])) {
                        list.add(world.getName());
                    }
                });
            }
            if (args.length == 2) {
                Bukkit.getOnlinePlayers().forEach(player -> {
                    if (player.getName().contains(args[1])) {
                        list.add(player.getName());
                    }
                });
            }
            return list;
        }
    }
     

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