Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

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;
}
}
 
Код:
    @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;
    }
 
Код:
    @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;
    }
Здравствуйте, а как разрешить выполнение команды от консоли? И + не работает /spawn только /spawn world <player>
 
Здравствуйте, а как разрешить выполнение команды от консоли? И + не работает /spawn только /spawn world <player>
Код:
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;
    }
}
 

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

Назад
Верх