Pesquisar na Comunidade
Mostrando resultados para as tags ''ignorecancelled''.
Encontrado 1 registro
-
[Tutorial] Como usar corretamente prioridades nos eventos Bukkit!
um tópico no fórum postou RUSHyoutuber Tutoriais
Olá pessoal da Gamer'sBoard! No tutorial de hoje irei ensinar como funciona o sistema de Prioridades nos eventos do Bukkit e irei ensinar como colocar a prioridade correta no seu evento para previr bugs e fazer com que seu plugin funcione da maneira correta! INTRODUÇÃO Primeiramente irei explicar para quem não sabe oque é o sistema de Prioridades e porque é tão importante você implementa-lo de maneira correta no seu plugin. Bom pra quem não sabe o Bukkit possui um sistema onde você pode escolher a prioridade com que seu evento é chamado e pode ainda ignorar o seu evento caso ele esteja sendo cancelado por outro plugin. As prioridades são muito importantes pois são elas que possibilitam varios plugins usarem o mesmo evento, como por exemplo BlockBreakEvent. As prioridades são chamadas da seguinte maneira: 1ª - EventPriority.LOWEST 2ª - EventPriority.LOW 3ª - EventPriority.NORMAL 4ª - EventPriority.HIGH 5ª - EventPriority.HIGHEST 6ª - EventPriority.MONITOR Resumindo, se você criar 1 evento com prioridade LOWEST ele sera chamado antes que o evento com prioridade HIGH. OBS: Se você não colocar prioridade no seu evento o bukkit ira colocar prioridade NORMAL por padrão. COMEÇANDO O TRABALHO Agora que vocês já sabem o basico vamos colocar a mão na massa! Vamos criar um plugin de teste basico com o evento BlockBreakEvent para testar as prioridades! Dentro do jogo: Como vocês puderam notar a ordem é essa! Então você me pergunta: Mas RUSH como vou saber que prioridade devo colocar no meu evento? Simples! Se o seu evento estiver cancelando outros (e.setCanelled(true)) você deve usar prioridades baixas! LOW ou LOWEST! Se o seu evento não deve ser executado caso for cancelado então você deve usar HIGHEST ou Monitor... Vamos parar com a teoria e vamos para a pratica novamente! Imagine que você tem um plugin que bloqueia os blocos de serem colocados no SPAWN e imagine que você possui um plugin de spawners que envia uma mensagem no CHAT quando um spawner é colocado no chão... Caso você não coloque prioridade nos eventos você tera problemas porque o evento sera cancelado mas mesmo assim a mensagem sera exibida! Veja: Dentro do jogo: Para corrigirmos este erro nós temos 2 soluções possíveis! Nós podemos: 1- Verificar se o evento é cancelado usando isCancelled(); 2- Adicionando a anotação @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) Agora que vocês já sabem como corrigir vamos por a mão na massa novamente! Dentro do jogo: Como vocês puderam ver tudo ocorreu perfeitamente! Sempre que nós colocarmos ignoreCancelled = true na anotação @EventHandler o evento não sera chamado se ele for canelado! Ou seja, se você cancelar o evento no LOWEST e colocar ignoreCancelled = true nos eventos com maiores prioridades os eventos não serão chamados! Ou seja, isto otimiza o desempenho e previne BUGS, então alem de você definir prioridade você deve sempre verificar se é necessário colocar o ignoreCancelled. RESUMO Se você quer cancelar um evento sempr e use prioridades baixas como LOWEST E LOW. Se você esta trabalho com um evento não que que ele seja executado caso cancelado, ou não quer que ele seja chamado caso cancelado você deve usar prioridades altas como HIGH, HIGHEST ou MONITOR e necessario ou se possivel usar 'ignoreCancelled = true' CONCLUSÃO Tanto a 'priority' quanto o 'ignoreCancelled' são muito importantes na construção de plugins de qualidade, então é muito recomendado que você não um seja retardado como o BaconCodes e implemente o sistema de prioridades nos seus eventos.- 22 respostas
-
7
-
- priority
- eventpriority
- (e %d mais)