[bukkit] Нельзя тронуть

Версия Minecraft
1.7.10
344
1
47
Работаю над плагином&модом с фракциями. Как связать мод и сервер я понял и сделал, но стает другой вопрос. Как запретить наносить урон другому игроку, если тот имеет одно и то-же право?

К примеру:

Java:
if(player.hasPermission("fraction1")){}

И как проверить чужое сообщение в чате/ник над головой, если он не имеет таг fraction1, то его ник становится красным.

Если все выйдет, то специально залью на гитхаб данную часть мода, как пример другим. Мало ли, кому понадобится.
 
Последнее редактирование модератором:
Решение
а во вторых так легче вроде
По этой теме я увидел, как "легче" работается.
~~~
По теме:
Чекни эти эвенты:
Код:
EntityDamageByBlockEvent <-> Called when an entity is damaged by a block
EntityDamageByEntityEvent <-> Called when an entity is damaged by an entity
EntityDamageEvent <-> Stores data for damage events
344
1
47
Ну можно сказать условно баккит-фордж. У меня в фордже делается основное. Гуи фрак и бла-бла-бла, плеер получает таг при вступлении. Впрочем оное не важно. При наличии определенной фраки я выдаю определенный эффект, а в баките его перелавливаю (сама связь сервера и клиента так сказать) и выдаю пермишен фраки:
Java:
    if(player.hasPotionEffect(PotionEffectType.SPEED)){
        player.isPermissionSet("fraction1");
       
    }
 
344
1
47
А стоп, проглядел, если будешь делать это на бакките тогда я хз.

Допустим, если это действие не делать на баките. То как поймать пермишен в фордже и там же отменить нанесение урона?
 
344
1
47
344
1
47
3,005
192
594
Почему нельзя сделать клиент мод <-> сервер мод?
Зачем заменять сервер мод этим гомном баккитом?
 
3,005
192
594
а во вторых так легче вроде
По этой теме я увидел, как "легче" работается.
~~~
По теме:
Чекни эти эвенты:
Код:
EntityDamageByBlockEvent <-> Called when an entity is damaged by a block
EntityDamageByEntityEvent <-> Called when an entity is damaged by an entity
EntityDamageEvent <-> Stores data for damage events
 
344
1
47
Java:
    @EventHandler
    public void dagame(EntityDamageEvent event){
         Player player = event.getPlayer();
        if (event.getEntity() instanceof Player){
          event.setCancelled(true);
        }
    }

оно канеш понятно, но в данном случае проверить пермишен не предоставляется возможным )) И это просто отменяет урон.
 
344
1
47
3,005
192
594
Ну типо добавить то, что тебе нужно уже не возможно?
Берешь добавляешь свою *** как библиотеку и потом проверяешь на свои права, так нельзя?
 
344
1
47
Вроде сделал )
Java:
   @EventHandler
    public void onHit(EntityDamageEvent event){
  
        EntityDamageByEntityEvent events = (EntityDamageByEntityEvent) event;
        Player attacker = (Player) events.getDamager();
        
        Player player = (Player) event.getEntity();
        
    
        
     if(attacker.hasPermission("faction1")||player.hasPermission("faction1")){
        
            if (event.getEntity() instanceof Player){
                event.setCancelled(true);
                
            
            } else event.setCancelled(false);
            
        
     }   
    
     if(attacker.hasPermission("faction2")||player.hasPermission("faction2")){
        
         if (event.getEntity() instanceof Player){
             event.setCancelled(true);
            
        
         } else event.setCancelled(false);
        
      
  }   
        
        
    }
 
Сверху