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

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

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

  1. Slavchik2001

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

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

    _MasterCapeXD_ Участник Пользователь

    Баллы:
    31
    Имя в 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_ Участник Пользователь

    Баллы:
    31
    Имя в 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();
    }
    
    [DOUBLEPOST=1494162411,1494162179][/DOUBLEPOST]
    Например, если конфиг такой:
    Код:
    enabled: true
    то:
    Код:
    public void on(PlayerJoinEvent e)
    {
        boolean enabled = getConfig().getBoolean("enabled");
        if(enabled == true)
        {
            e.setJoinMessage(null);
            //Остальное...
        }
    }
     
  7. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    сначала проверяй instanceof, а уже только потом Player p = (Player) e.getDamager();[DOUBLEPOST=1494169313,1494169270][/DOUBLEPOST]
    == true можно и не писать.
     
  8. Slavchik2001

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

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

    Все, понял, на этот вопрос можете не отвечать :)[DOUBLEPOST=1494179330]
     
    Последнее редактирование: 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
    Извините за флуд, залагало.[DOUBLEPOST=1494179483,1494179413][/DOUBLEPOST]
    А можно поподробнее?
     
  11. _MasterCapeXD_

    _MasterCapeXD_ Участник Пользователь

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

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

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

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

    _MasterCapeXD_ Участник Пользователь

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

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

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

    _MasterCapeXD_ Участник Пользователь

    Баллы:
    31
    Имя в 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_ Участник Пользователь

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

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

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

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

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

    Slavkaa Новичок Пользователь

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

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Если решил сам, то выкладывай в тред своё решение.
     

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