Arkasher Postado Novembro 18, 2015 Denunciar Compartilhar Postado Novembro 18, 2015 Bem,queria saber como eu cancelaria o hit por um arco ou outro projétil,se os players estiverem com a mesma Array Ativa. Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Novembro 19, 2015 Denunciar Compartilhar Postado Novembro 19, 2015 (editado) /** Lista com os nomes dos participantes */ List<String> suaArray = new ArrayList<>(); @EventHandler public void onEntityDamageByEntityEvent( EntityDamageByEntityEvent event ) { if ( !(event.getDamager() instanceof Arrow) || !(event.getEntity() instanceof Player) ) return; Arrow arrow = (Arrow) event.getDamager(); Player shooter, victim = (Player) event.getEntity(); if ( (shooter = (Player) arrow.getShooter()) instanceof Player && suaArray.contains(shooter.getName()) && suaArray.contains(victim.getName()) ) { event.setCancelled(true); } } Se algum moderador puder juntar os posts eu agradeço, desculpe pelo double post. Vê se ta funcionando... nao testei. Editado Novembro 19, 2015 por leonardosc 1 Link para o comentário Compartilhar em outros sites More sharing options...
Viiict0r Postado Novembro 18, 2015 Denunciar Compartilhar Postado Novembro 18, 2015 tenta usar o evento: EntityDamageByEntityEvent Link para o comentário Compartilhar em outros sites More sharing options...
Arkasher Postado Novembro 18, 2015 Autor Denunciar Compartilhar Postado Novembro 18, 2015 tenta usar o evento: EntityDamageByEntityEvent Sim,eu usei,só que não foi do mesmo geito. Link para o comentário Compartilhar em outros sites More sharing options...
Viiict0r Postado Novembro 18, 2015 Denunciar Compartilhar Postado Novembro 18, 2015 Sim,eu usei,só que não foi do mesmo geito. @EventHandler public void ondamage(EntityDamageByEntityEvent e){ if (e.getEntity() instanceof Player){ Player entity = (Player) e.getEntity(); if (e.getDamager() instanceof Projectile){ Projectile projeto = (Projectile) e.getDamager(); ProjectileSource shooter = projeto.getShooter(); if (shooter instanceof Player){ if (suaLista.contains(shooter) && suaLista.contains(entity)){ e.setCancelled(true); } } } } } Testa ai, se funcionar deixa um like Link para o comentário Compartilhar em outros sites More sharing options...
Arkasher Postado Novembro 18, 2015 Autor Denunciar Compartilhar Postado Novembro 18, 2015 (editado) Viiict0r, em 18 Nov 2015 - 3:06 PM, disse: @EventHandler public void ondamage(EntityDamageByEntityEvent e){ if (e.getEntity() instanceof Player){ Player entity = (Player) e.getEntity(); if (e.getDamager() instanceof Projectile){ Projectile projeto = (Projectile) e.getDamager(); ProjectileSource shooter = projeto.getShooter(); if (shooter instanceof Player){ if (suaLista.contains(shooter) && suaLista.contains(entity)){ e.setCancelled(true); } } } } }Testa ai, se funcionar deixa um like Vou testar,vlw @Edit Nao foi ;-; Editado Novembro 18, 2015 por Arkasher197 Link para o comentário Compartilhar em outros sites More sharing options...
Viiict0r Postado Novembro 18, 2015 Denunciar Compartilhar Postado Novembro 18, 2015 Vou testar,vlw @Edit Nao foi ;-; Deu erro? Link para o comentário Compartilhar em outros sites More sharing options...
Dery Postado Novembro 18, 2015 Denunciar Compartilhar Postado Novembro 18, 2015 Está registrando os eventos em sua Main? Link para o comentário Compartilhar em outros sites More sharing options...
Arkasher Postado Novembro 18, 2015 Autor Denunciar Compartilhar Postado Novembro 18, 2015 (editado) Está registrando os eventos em sua Main? Sim,tanto que quando um player bate em outro que está com a mesma array,o hit cancela,o problema é que da para mandar flechas... Editado Novembro 18, 2015 por Arkasher197 Link para o comentário Compartilhar em outros sites More sharing options...
Dery Postado Novembro 18, 2015 Denunciar Compartilhar Postado Novembro 18, 2015 Sim,tanto que quando um player bate em outro que está com a mesma array,o hit cancela,o problema é que da para mandar flechas... @EventHandler public void ondamage(EntityDamageByEntityEvent e){ if (e.getEntity() instanceof Player){ Player entity = (Player) e.getEntity(); if (e.getDamager() instanceof Projectile){ Projectile projeto = (Projectile) e.getDamager(); Player shooter = (Player) projeto.getShooter(); if (shooter instanceof Player){ if (suaLista.contains(shooter) && suaLista.contains(entity)){ e.setCancelled(true); } } } } } Mesmo código do carinha, só que o Shooter foi convertido em player em vez de ProjectileSource Link para o comentário Compartilhar em outros sites More sharing options...
Arkasher Postado Novembro 18, 2015 Autor Denunciar Compartilhar Postado Novembro 18, 2015 @EventHandler public void ondamage(EntityDamageByEntityEvent e){ if (e.getEntity() instanceof Player){ Player entity = (Player) e.getEntity(); if (e.getDamager() instanceof Projectile){ Projectile projeto = (Projectile) e.getDamager(); Player shooter = (Player) projeto.getShooter(); if (shooter instanceof Player){ if (suaLista.contains(shooter) && suaLista.contains(entity)){ e.setCancelled(true); } } } } } Mesmo código do carinha, só que o Shooter foi convertido em player em vez de ProjectileSource Vou testar Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Novembro 19, 2015 Denunciar Compartilhar Postado Novembro 19, 2015 @EventHandler public void ondamage(EntityDamageByEntityEvent e){ if (e.getEntity() instanceof Player){ Player entity = (Player) e.getEntity(); if (e.getDamager() instanceof Projectile){ Projectile projeto = (Projectile) e.getDamager(); Player shooter = (Player) projeto.getShooter(); if (shooter instanceof Player){ if (suaLista.contains(shooter) && suaLista.contains(entity)){ e.setCancelled(true); } } } } } Mesmo código do carinha, só que o Shooter foi convertido em player em vez de ProjectileSource Tu ta fazendo cast pra player antes de verificar se é um player, isso vai dar erro caso a entidade que atirou a flecha não seja um player. 1 Link para o comentário Compartilhar em outros sites More sharing options...
Guest Lüigi.jar Postado Novembro 19, 2015 Denunciar Compartilhar Postado Novembro 19, 2015 Então né, o certo é vcs usarem o ProjectileHitEvent ProjectileLaunchEvent Porque uma flecha é um projectile... Link para o comentário Compartilhar em outros sites More sharing options...
Arkasher Postado Novembro 19, 2015 Autor Denunciar Compartilhar Postado Novembro 19, 2015 Então né, o certo é vcs usarem o ProjectileHitEvent ProjectileLaunchEvent Porque uma flecha é um projectile... ProjectileHitEvent não é cancelavel,vou testar o Launch Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Novembro 19, 2015 Denunciar Compartilhar Postado Novembro 19, 2015 Então né, o certo é vcs usarem o ProjectileHitEvent ProjectileLaunchEvent Porque uma flecha é um projectile... Pelo que eu vi na documentação nao tem como cancelar o dano, nem pegar a entidade atingida pelo projetil, entao a melhor saida seria usar o EntityDamageByEntityEvent mesmo. Link para o comentário Compartilhar em outros sites More sharing options...
Guest Rafa265 Postado Novembro 19, 2015 Denunciar Compartilhar Postado Novembro 19, 2015 /** Lista com os nomes dos participantes */ List<String> suaArray = new ArrayList<>(); @EventHandler public void onEntityDamageByEntityEvent( EntityDamageByEntityEvent event ) { if ( !(event.getDamager() instanceof Arrow) || !(event.getEntity() instanceof Player) ) return; Arrow arrow = (Arrow) event.getDamager(); Player shooter, victim = (Player) event.getEntity(); if ( (shooter = (Player) arrow.getShooter()) instanceof Player && suaArray.contains(shooter.getName()) && suaArray.contains(victim.getName()) ) { event.setCancelled(true); } } eae ia fazer mas vc ja fez.. Link para o comentário Compartilhar em outros sites More sharing options...
Arkasher Postado Novembro 19, 2015 Autor Denunciar Compartilhar Postado Novembro 19, 2015 (editado) /** Lista com os nomes dos participantes */List suaArray = new ArrayList<>();@EventHandlerpublic void onEntityDamageByEntityEvent( EntityDamageByEntityEvent event ){ if ( !(event.getDamager() instanceof Arrow) || !(event.getEntity() instanceof Player) ) return; Arrow arrow = (Arrow) event.getDamager(); Player shooter, victim = (Player) event.getEntity(); if ( (shooter = (Player) arrow.getShooter()) instanceof Player && suaArray.contains(shooter.getName()) && suaArray.contains(victim.getName()) ) { event.setCancelled(true); }}Se algum moderador puder juntar os posts eu agradeço, desculpe pelo double post. Vê se ta funcionando... nao testei. Vou testar cara,vlw @Edit Foi! Vlw Editado Novembro 19, 2015 por Arkasher197 1 Link para o comentário Compartilhar em outros sites More sharing options...
zMathi Postado Novembro 19, 2015 Denunciar Compartilhar Postado Novembro 19, 2015 Sua dúvida foi marcada como [Resolvido] e movido à área de dúvidas resolvidas. Atenciosamente, Gamer's Board Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Arkasher
Bem,queria saber como eu cancelaria o hit por um arco ou outro projétil,se os players estiverem com a mesma Array Ativa.
Link para o comentário
Compartilhar em outros sites
17 respostass a esta questão
Posts Recomendados