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

Написал плагин но он ругается в консоль

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

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

    Tyzun Старожил

    Баллы:
    153
    Skype:
    tyzun1997
    Имя в Minecraft:
    _Tyzun_
    Вот написал такой код:
    Код:
    import org.bukkit.GameMode;
    import org.bukkit.Material;
    import org.bukkit.entity.Arrow;
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.HumanEntity;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.*********ventory.ItemStack;
    import org.bukkit.plugin.java.JavaPlugin;
     
    import com.earth2me.essentials.Essentials;
     
     
    import ru.tehkode.permissions.bukkit.PermissionsEx;
     
    public class AntiGodPvp extends JavaPlugin implements Listener {
        public Essentials ess = null;
       
        @Override
        public void onEnable() {
            getServer().getPluginManager().registerEvents(this, this);
        }
        private boolean hasPerm(Player player, String permission){ 
            return PermissionsEx.getUser(player).has(permission);
     
        }
     
        @EventHandler
          public void onPlayerDamage(EntityDamageByEntityEvent event) {
            Entity defender = event.getEntity();
            Entity attacker = event.getDamager();
            if (((defender instanceof Player)) && ((attacker instanceof Player))) {
              Player pl = (Player)event.getDamager();
              if (pl.isFlying() && (!hasPerm(pl, "agp.allowflypvp"))) {
                event.setCancelled(true);
              }
            }
          }
     
          @EventHandler
          public void onPlayerDamageArrow(EntityDamageByEntityEvent event)
          {
            Entity defender = event.getEntity();
            Entity damager = event.getDamager();
     
            if (((defender instanceof Player)) && ((damager instanceof Arrow))) {
              damager = ((Arrow)damager).getShooter();
              if (((damager instanceof Player)) && (((Player)damager).isFlying()) && (!hasPerm((Player)damager, "agp.allowflyshot"))) {
                event.setCancelled(true);
              }
            }
           
    }
       
          public boolean removeItemInHand(Player p, int item_id, int item_data, int item_amount){
              item_id = 373;
              item_amount = 1;
                if ((p.getItemInHand() != null)&&
                        (p.getItemInHand().getTypeId()==item_id)&&
                        (p.getItemInHand().getAmount()>=item_amount)&&
                        ((item_data<0)||(item_data==p.getItemInHand().getData().getData()))){
     
                    if (p.getItemInHand().getAmount()>item_amount) p.getItemInHand().setAmount(p.getItemInHand().getAmount()-item_amount);
                    else p.setItemInHand(new ItemStack (Material.AIR));
     
                    return true;
                }
                return false;
     
            }
         
         
             
     
          @EventHandler
          public void onPlayerDamage2(EntityDamageByEntityEvent event) {
            Entity defender = event.getEntity();
            Entity attacker = event.getDamager();
            if (((defender instanceof Player)) && ((attacker instanceof Player))) {
              Player pl = (Player)event.getDamager();
              if (pl.getGameMode() == GameMode.CREATIVE && (!hasPerm(pl, "agp.allowcreatpvp"))) {
                event.setCancelled(true);
              }
            }
          }
          @EventHandler
          public void onPlayerDamageArrow2(EntityDamageByEntityEvent event)
          {
            Entity defender = event.getEntity();
            Entity damager = event.getDamager();
     
            if (((defender instanceof Player)) && ((damager instanceof Arrow))) {
              damager = ((Arrow)damager).getShooter();
              if ((damager instanceof Player))
              {
                if (((HumanEntity)damager).getGameMode() == GameMode.CREATIVE && (!hasPerm((Player)damager, "agp.allowcreatshot"))) {
                  event.setCancelled(true);
                }
              }
            }
          }
         
          @EventHandler
          public void onPlayerDamage3(EntityDamageByEntityEvent event) {
            Entity defender = event.getEntity();
            Entity attacker = event.getDamager();
            if (((defender instanceof Player)) && ((attacker instanceof Player))) {
              Player pl = (Player)event.getDamager();
              if (ess.getUser(attacker).isGodModeEnabled() && (!hasPerm(pl, "agp.allowgod"))) {
                event.setCancelled(true);
              }
            }
          }
     
          @EventHandler
          public void onPlayerDamageArrow3(EntityDamageByEntityEvent ev)
          {
            Entity defender = ev.getEntity();
            Entity damager = ev.getDamager();
     
            if (((defender instanceof Player)) && ((damager instanceof Arrow))) {
              damager = ((Arrow)damager).getShooter();
              if ((damager instanceof Player))
              {
                if (ess.getUser(damager).isGodModeEnabled() && (!hasPerm((Player)damager, "agp.allowgod"))) {
                  ev.setCancelled(true);
                }
              }
            }
          }
         
          }
    
    Все работает, но когда кто-то пытается нанести урон кому-то в креативе или флае или годе то консоль загаживается разнообразными ошибками. Хоть и все пашет, но неприятно все же, в чем дело быть может?
     
    Сникерсни нравится это.
  2. ptnk

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

    Баллы:
    173
    Консоль пишет ошибки по котором можно многое сказать - да за чем их сюда пихать, лучше анализировать код полностью.
     
    DPOH-VAR и TechnicianBear нравится это.
  3. TechnicianBear

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

    Баллы:
    103
    если быть точнее это Java пишет ошибку, а точнее пишет трассировку в которой указана строка с ошибкой и класс который её вызвал.
    так что @Tyzun, без трассировки вам не помогут тут (разве что "за***ты", которые по коду могут сказать об ошибке (ну или те кто не поленился скомпилировать ваш код))
     
  4. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Ну для начала пермишены проверяются player.hasPermission(String permission)
     
  5. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Не понимаю для чего Вы обращаетесь к PEX?
     
  6. TechnicianBear

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

    Баллы:
    103
    В старом учебнике DmitriyMX написано, что обращаться надо к PEX (хотя уже давно обращаться можно к серверу). Если интересно то вот.
    P.S. Знаю об этом потому, что сам совсем не давно начал писать плагины.
     
  7. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @TechnicianBear, ну в общем уже тогда не надо было. Просто проверяя пермишены через PEX вы автоматически лишаете плагин совместимости с кучей других плагинов.
    Я к примеру предпочитаю bPermissions.
    Если нужно делать что-то специфическое, то лучше действовать через Vault.
     
  8. Автор темы
    Tyzun

    Tyzun Старожил

    Баллы:
    153
    Skype:
    tyzun1997
    Имя в Minecraft:
    _Tyzun_
    Именно по этому уроку я и делаю пермы. Ладно. буду искать другие уроки.
     
    Сникерсни нравится это.
  9. Jampire

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

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    объявляешь в plugin.yml и проверяеш в плагине через pl.hasPermission(string)

    всё

    точка

    .
     

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