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

Стартап Помощь новичкам и тем, кто мало писал плагины. (+ LifeHack'и)

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

  1. Blc_Dragon

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

    Баллы:
    76
    это EntityDamageByBlockEvent.
    (а теперь ты берешь удочку\лук\снежок\превращаешься в крипера)
     
  2. Slavchik2001

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

    Баллы:
    66
    Имя в Minecraft:
    Slavok2001
    Очень тебе благодарен)
     
  3. _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Раз Вы так просите: :good:
    Код:
      
        @EventHandler
        public void on(EntityDamageByEntityEvent e)
        {
            Player p = (Player) e.getDamager();
         
            if(e.getDamager() instanceof Player)
            {
                if(e.getEntityType() == EntityType.PLAYER)
                {
                    String name = e.getEntity().getName();
             
                    p.sendMessage("Вы ударили игрока " + name);
                }
            }
        }
    
     
  4. Slavchik2001

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

    Баллы:
    66
    Имя в Minecraft:
    Slavok2001
    Я смотрю, вы все отзывчивые, классные кодеры, и думаю, вам не составит труда еще мне помочь.
    Мои вопросики:
    1. Вот я сделал плагин, который оповещает о заходе игрока. Мне бы хотелось, чтобы рядом с ником отображался префикс. Подскажите, пожалуйста, как это сделать. Если можно, объясните на пальцах)
    2. Я более-менее научился работать с конфигом (Могу в нем сообщения менять :)), интересно, как сделать, чтобы в конфиге можно было включать и выключать функцию оповещения, при заходе.
    У меня еще куча вопросов, но для начала хотелось бы увидеть ответы на эти.
    Заранее спасибо)

    P.S. Я только начинающий, просьба, не обсирать.
     
  5. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    А я злой кактус, который Entity.
    И снова словишь исключение. Думай.
     
  6. _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    API PermissionsEx (если у тебя он). Добавляешь его в библиотеки и далее так:
    Код:
    public void on(PlayerJoinEvent e)
    {
        Player p = e.getPlayer();
        PermissionUser user = PermissionsEx.getUser(p);
        String prefix = user.getPrefix();
        String suffix = user.getSuffix();
    }
    

    Например, если конфиг такой:
    Код:
    enabled: true
    то:
    Код:
    public void on(PlayerJoinEvent e)
    {
        boolean enabled = getConfig().getBoolean("enabled");
        if(enabled == true)
        {
            e.setJoinMessage(null);
            //Остальное...
        }
    }
     
  7. xDark

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

    Баллы:
    96
    сначала проверяй instanceof, а уже только потом Player p = (Player) e.getDamager();
    == true можно и не писать.
     
  8. Slavchik2001

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

    Баллы:
    66
    Имя в Minecraft:
    Slavok2001
    С включение/выключением функции разобрался сам, не получалось из-за того, что потерял одно равно в условии. А за префиксы большое спасибо.
    А что за API Pex? Сам плагин?

    Все, понял, на этот вопрос можете не отвечать :)
     
    Последнее редактирование: 7 май 2017
  9. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Ну так и на префиксе заменяй, в чем проблема?
     
  10. Slavchik2001

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

    Баллы:
    66
    Имя в Minecraft:
    Slavok2001
    Спасибо за ответы. Но при решении одной проблемы, появляются другие:
    Префикс в сообщениях отображается некорректно.
    В конфиге заменены "\u00a7" на "&", но, как теперь понятно, это на префикс не влияет.
    Отсюда вопрос, как мне это поправить?
    Заранее спасибо
    upload_2017-5-7_21-50-7.png
    Извините за флуд, залагало.
    А можно поподробнее?
     
  11. _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Код:
    prefix = prefix.replace("&", "\u00a7");
     
  12. Slavchik2001

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

    Баллы:
    66
    Имя в Minecraft:
    Slavok2001
    Пробовал, ничего не получилось. Возможно, я допустил ошибку, сейчас проверю и напишу.

    А данный код надо написать до вызова префикса или после? Или не имеет значения?
     
  13. _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Если не работает, кинь сюда часть кода что отвечает за джоинер
     
  14. Slavchik2001

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

    Баллы:
    66
    Имя в Minecraft:
    Slavok2001
    Заработало! Спасибо, наверное, до этого я допустил ошибку :)
     
  15. _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    :good:
     
  16. Slavchik2001

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

    Баллы:
    66
    Имя в Minecraft:
    Slavok2001
    И снова здравствуйте. И снова у меня куча вопросов. :)
    Начал делать вывод статистики игрока.
    Вопросы:
    1.Как сделать, чтобы выводилась статистика, как игрока онлайн, так и оффлайн, но чтобы не выводилась статистика игрока, которого не было на сервере, а вместо этого какое-то сообщение?
    2.Как получить статистику убийств, смертей я догадался. Вот такой вопрос при работе с конфигом.
    Вот фрагмент кода и конфига:
    Код:
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if(!sender.hasPermission("futurestats.use")) {
                sender.sendMessage("У вас недостаточно прав");
                return true;
            }
            if(args.length == 0) {
                sender.sendMessage("Недостаточно аргументов.\n/stat [nick]");
            }
            String name = args[0];
            Player p = Bukkit.getPlayer(name);
            int death = p.getStatistic(Statistic.DEATHS);
            int kills = p.getStatistic(Statistic.PLAYER_KILLS);
            int mobkills = p.getStatistic(Statistic.MOB_KILLS);
            String format = plugin.getConfig().getString("stat-format");
            sender.sendMessage(format);
            return true;
        }
    
    Код:
    config.yml:
    
    stat-format: '
    Убиства: {kills}
    Смерти: {death}
    Убийства мобов: {mobkills}'
    
    Как это реализовать в конфиге правильно? replace не помогает, так как death, kills, mobkills - переменные типа "int"

    P.S. Я новичок, многого не знаю. Не ругайтесь, если что-то не так в коде.
     
  17. _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    {kills} - String s = getConfig().getString(kills);
    s = s.replace("{kills}", kills);
    Писал от руки на форуме, не уверен что сработает.Я это так представляю.
    Если число заменять не хочет, то valueOf(kills)
     
  18. Slavchik2001

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

    Баллы:
    66
    Имя в Minecraft:
    Slavok2001
    Первый способ не работает.
    Второй, я не понял, как оформить..
    Все, понял. Большое спасибо. Второй способ помог.
    Up
    Как сделать, чтобы при убийстве игрока выполнялось какое-то действие?
     
  19. Exception_Prototype

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

    Баллы:
    96
    Смотря какое тебе надо.
     
  20. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    У меня снова вопрос. При вводе команды /stat nick у меня выводится статистика игрока(убийства, смерти), которые записаны в файле. Вопрос такой: Как сделать вывод статуса игрока, т.е. онлайн он или оффлайн. p.isOnline - не работает, т.к. когда игрок оффлайн, выводится ошибка "An internal..."
    Пример:
    Код:
    String status = Какое-то условие ? "Онлайн" : "Оффлайн";
    

    Решил.
     

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