Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Получение отправленного игроком сообщения

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

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

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

    Баллы:
    66
    Здравствуйте, форумчане! Никак не могу понять, мне нужно, чтобы когда игрок написал команду /report <сообщение>, оно дошло до игроков с разрешением forever.view. Прошу помощи!

    Вот код плагина:

    package foreverreports;

    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.plugin.java.JavaPlugin;

    public class ForeverReports extends JavaPlugin implements Listener {
    public String p1 = (Object)ChatColor.DARK_GRAY + "[ ";
    public String p2 = (Object)ChatColor.DARK_GRAY + " ] ";
    public static String prefix = (Object)ChatColor.AQUA + "FreshWorld";
    private String help = (Object)ChatColor.RED + "Ошибка! Правильное использование: /report <сообщение>";
    private String offline_player = (Object)ChatColor.RED + "Ошибка! Данный игрок не в сети";
    private String no_perm = (Object)ChatColor.RED + "Ошибка! У вас нет прав!";
    @Override
    public void onEnable(){
    Bukkit.getServer().getPluginManager().registerEvents(this, this);
    getLogger().info("ForeverReports by Den42 was Enabled!");
    }
    public void onDisabe(){
    getLogger().info("ForeverReports by Den42 was Disabled!");
    }
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String Commandlabel, String[] args) {
    if (cmd.getName().equalsIgnoreCase("report")) {
    if (sender instanceof Player) {
    Player p = (Player)sender;
    if (p.hasPermission("forever.user")) {
    if (args.length == 0) {
    p.sendMessage(p1 + prefix + p2 + (Object)ChatColor.RED + help);
    return true;
    }
    if (args.length == 1) {
    Player target = Bukkit.getPlayer((String)args[1]);
    Player online = (Player)sender;
    if (target != null)
    {
    p.sendMessage(p1 + prefix + p2 + (Object)ChatColor.WHITE + "Ваше сообщение отправлено!");
    if (online.hasPermission("forever.view")) {
    online.sendMessage(p1 + prefix + p2 + ChatColor.GREEN + p.getName() + ChatColor.WHITE +
    " просит помощи: " + ChatColor.WHITE + args[1] + ".");
    }
    }
    }
    }
    }
    }
    return false;
    }
    }
     
  2. Хостинг MineCraft
    <
  3. aceJKE

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

    Баллы:
    123
  4. Автор темы
    Den42

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

    Баллы:
    66
  5. Rider3217

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

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    5 минут, сейчас сделаю пример.
     
  6. dnebik

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

    Баллы:
    66
    Имя в Minecraft:
    dnebik
    Код:
            for (Player player : getServer().getOnlinePlayers())
                if (player.hasPermission("forever.view"))
                    p.sendMessage(....);
     
  7. Автор темы
    Den42

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

    Баллы:
    66
    А что мне писать в p.sendMessage? Мне нужно получить args[1] команды, насколько я понял.
    Нужно, чтобы сообщение, написанное игроком через /reporter сообщение, отправлялось игрокам с разрешением, как мне получить само сообщение, и отправить конкретно то, что написал игрок через /reporter?[DOUBLEPOST=1453039520,1453038713][/DOUBLEPOST]Так не работает. Пишет сообщение из usage: в plugin yml


    if (args.length == 1) {
    String message = StringUtils.join(args, ' ', 0, args.length);
    Player online = (Player)sender;
    p.sendMessage(p1 + prefix + p2 + (Object)ChatColor.WHITE + "Ваше сообщение отправлено!");
    for (Player player : getServer().getOnlinePlayers())
    if (online.hasPermission("forever.view")) {
    online.sendMessage(p1 + prefix + p2 + ChatColor.GREEN + p.getName() + ChatColor.GREEN +
    ": " + ChatColor.WHITE + message);
    }
    }
     
  8. dnebik

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

    Баллы:
    66
    Имя в Minecraft:
    dnebik
    так просто соедини все агруметы начиная с первого через цыкл
    for(int i = 1; i < args.length; i++)
    {
    message = message + " " + args[1];
    }
     
    Последнее редактирование: 17 янв 2016

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