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

Помогите Запрет PVP в gm/fly/creat

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

Статус темы:
Закрыта.
  1. Автор темы
    Rbiter

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

    Баллы:
    31
    Имя в Minecraft:
    Rbiter
    Решил написать первый плагин. Сразу повторюсь что java не знаю, а скрипт нашел на каком то буржуйском сайте.
    Что я делаю не так?


    Код:
    package ru;
    
    import java.util.logging.Logger;
    
    import org.bukkit.ChatColor;
    import org.bukkit.GameMode;
    import org.bukkit.craftbukkit.v1_8_R1.Overridden;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class main extends JavaPlugin implements Listener {
        public static final Logger _log = Logger.getLogger("Minecraft");
        @Overridden
        public void onEnable() {
            _log.info("StopPVP is enable");
        }
        @EventHandler
        public void onAttack(EntityDamageByEntityEvent e) {
            if(e.getDamager() instanceof Player & e.getEntity() instanceof Player) {
              Player p = (Player)e.getDamager();
              if(!p.isOp()){
                if(p.getGameMode() == GameMode.CREATIVE){
                    e.setCancelled(true);
                    p.sendMessage(ChatColor.RED + "Выключите креатив для атаки игроков.");
                  }
                  if(p.isFlying()) {
                      e.setCancelled(true);
                      p.sendMessage(ChatColor.RED + "Выключите fly для атаки игроков.");
                  }
                  if (p.hasMetadata("god")) {
                      e.setCancelled(true);
                      p.sendMessage(ChatColor.RED + "Выключите god для атаки игроков.");
                  }
            }
          }
        
        }
       }
    }
    
    Собственно из моего там только:

    Код:
        @Overridden
        public void onEnable() {
            _log.info("StopPVP is enable");
        }
    :D. При компиляции проблем никаких. При запуске плагина то же. Но он не отправляет игроку сообщение это раз. Запрещает бить только в режиме бога. Флай и гм просто игнорирует...
    Что делать?
     
  2. Хостинг MineCraft
    <
  3. aceJKE

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

    Баллы:
    123
    Ты не учишь Java. Сначала выучи язык программирования и не будет глупых вопросов.
     
  4. Автор темы
    Rbiter

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

    Баллы:
    31
    Имя в Minecraft:
    Rbiter
    язык учить начинаю. А по теме?
     
  5. aceJKE

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

    Баллы:
    123
    Еще раз повторяю. Сначала нужно выучить язык и все станет очевидным.
     
  6. MrTrojan

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

    Баллы:
    98
    Skype:
    mrtrojan.ru
    Имя в Minecraft:
    MrTrojan
     
  7. Saharo4ek

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

    Баллы:
    76
    Имя в Minecraft:
    tin
    зачем второй раз изобретать велосипед ?
    Есть же CombatLog , который выключает у тебя fly,gog,creative если ты вступаешь в пвп с другими игроками
     
  8. MrTrojan

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

    Баллы:
    98
    Skype:
    mrtrojan.ru
    Имя в Minecraft:
    MrTrojan
    Своё всегда лучше.
     
  9. Автор темы
    Rbiter

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

    Баллы:
    31
    Имя в Minecraft:
    Rbiter
    Плюсую, + простой плагин, как раз для начала)
    Тем более отличная практика ибо учу язык java[DOUBLEPOST=1451775869,1451747588][/DOUBLEPOST]А почему игроку не отправляются сообщения при нанесении урона в режиме бога?
    Сейчас переписываю потихоньку код, не оч работоспособен оказался он.
     
    Последнее редактирование: 3 янв 2016
  10. TheEfwio

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

    Баллы:
    76
    Skype:
    theefwioc
    Имя в Minecraft:
    TheEfwio
    Омг. А кто события регистрировать будет?
    В onEnable пропиши:
    Код:
    Bukkit.getPluginManager().registerEvents(this, this);
     
  11. Автор темы
    Rbiter

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

    Баллы:
    31
    Имя в Minecraft:
    Rbiter
    С работоспособностью помогли, плагин работает прекрасно. Но в режиме бог почемут не выдает сообщение об атаке. Облазил документацию по BukkitAPI и не нашел там ничего о GodMode или режиме бога.
    Режим полета есть, креатив есть а вот режима бога нету О_о. Самое интересное то что он останавливает атаку в боге но сообщение не выдает.
     
  12. kirill2011s

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

    Баллы:
    103
    Режим бога это простое отлавливание события урона и его блокировка.
     
  13. Автор темы
    Rbiter

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

    Баллы:
    31
    Имя в Minecraft:
    Rbiter
    Ээ а что тогда делать? Да и если нанесение урона игроком в режиме бога блокируется. Поч не отправляет сообщение? Ошибок в коде же нет и блокирует исправно.
     
  14. TheEfwio

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

    Баллы:
    76
    Skype:
    theefwioc
    Имя в Minecraft:
    TheEfwio
    Может проверять через Essentials API?
     
  15. kirill2011s

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

    Баллы:
    103
    Можно поставить минимальный приоритет слушателя урона и если он был отменен, то разрешать его.
    Приоритет выставляется таким образом: Там где пишите @EventHandler, припишите, чтобы получилось так
    Код:
    @EventHandler(priority=EventPriority.MONITOR)
    P.S. С телефона писал, мог опечататься в коде.
     
  16. Автор темы
    Rbiter

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

    Баллы:
    31
    Имя в Minecraft:
    Rbiter
    точняк!!! /god этож из Essentials :D.
    А я EssentialsAPI даж не подключал, тупо свое ядро Spigot подключил :) Щя нд документацию поискать)))
    Заранее спасиб!)[DOUBLEPOST=1452200069,1452200008][/DOUBLEPOST]
    Если с Essentials непрокатит, попробую.
     
  17. kirill2011s

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

    Баллы:
    103
    С ним прокатит, но если режим бога будет создавать другой плагин, то это не будет работать. А мой метод универсальный.
     
  18. TheEfwio

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

    Баллы:
    76
    Skype:
    theefwioc
    Имя в Minecraft:
    TheEfwio
    А причём тут отмена урона? Если игрок в режиме бога ударит другого, то урон пройдёт. В Essentials есть перм, отвечающий за пвп в режиме бога.
     
  19. kirill2011s

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

    Баллы:
    103
    А, ну, видимо, я не правильно понял вопрос.
     
  20. LomNar

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

    Баллы:
    78
    Skype:
    radius981
    Имя в Minecraft:
    LomNar
    Автор отпиши мне в лс, дам ИП серва своего посмотришь как у меня сделано, если по нравится то дам алгоритм
     
  21. Автор темы
    Rbiter

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

    Баллы:
    31
    Имя в Minecraft:
    Rbiter
    Я не нашел никакой документации по EssentialsAPI...
    Ток BukkitAPI а там этого нету(
    киньте хоть какую ни будь инфу...
     
Статус темы:
Закрыта.

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