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

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

Discussion in 'Разработка плагинов для новичков' started by Den42, Jan 17, 2016.

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

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

    Trophy Points:
    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 Старожил Пользователь

    Trophy Points:
    123
  4. Автор темы
    Den42

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

    Trophy Points:
    66
  5. Rider3217

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

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

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

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

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

    Trophy Points:
    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 Активный участник Пользователь

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

Share This Page