Ir para conteúdo
  • 0

PlayerIntercatEvent duvida.


RUSHyoutuber

Pergunta

Eu tenho uma duvida que esta me matando e até agora não achei solução espero que me ajudem!
 
Quando eu uso PlayerInteractEvent, sempre que o player interagir com algo o plugin ira verificar se ele esta usando uma nametag? 
 
Tipo sempre que alguem interagir com algo o plugin vai verificar se foi com o botão direito e se foi com uma nametag?
 
Isso vai gerar lag? A partir de quantos players dentro do servidor isso começaria a gerar lag?
 
Eu posso usar isso normalmente para coisas simples ou não?
 
 
	@EventHandler
	public void Interagir(PlayerInteractEvent event) {
		if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
			if (event.getClickedBlock().getType() == Material.NAME_TAG) {
				event.setCancelled(true);
			}
		}
	}

 

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

Primeiro que uma nametag não pode ser um bloco pro jogador clicar nele, se você quiser cancelar o evento de algum plugin sempre tente colocar um priority menor no evento, fazer essa checagem não irá gerar lag, a não ser que você faça alguma coisa muito "pesada" dentro desse evento.

 

Se você quiser bloquear de o jogador clicar com nametag em blocos, entidades, resumindo a @%$#~&I toda.

	@EventHandler(priority = EventPriority.LOW)
	public void onInteract(PlayerInteractEvent event) {
		if (event.getAction().name().contains("RIGHT")) {
			ItemStack itemStack = event.getPlayer().getItemInHand();
			if(itemStack == null) return;
			if (itemStack.getType().equals(Material.NAME_TAG)) {
				event.setCancelled(true);
			}
		}
	}

Agora se for só em entidades

	@EventHandler(priority = EventPriority.LOW)
	public void onInteract(PlayerInteractAtEntityEvent event) {
		ItemStack itemStack = event.getPlayer().getItemInHand();
		if(itemStack == null) return;
		if (itemStack.getType().equals(Material.NAME_TAG)) {
			event.setCancelled(true);
		}
	}
Link para o comentário
Compartilhar em outros sites

 

Primeiro que uma nametag não pode ser um bloco pro jogador clicar nele, se você quiser cancelar o evento de algum plugin sempre tente colocar um priority menor no evento, fazer essa checagem não irá gerar lag, a não ser que você faça alguma coisa muito "pesada" dentro desse evento.

 

Se você quiser bloquear de o jogador clicar com nametag em blocos, entidades, resumindo a @%$#~&I toda.

	@EventHandler(priority = EventPriority.LOW)
	public void onInteract(PlayerInteractEvent event) {
		if (event.getAction().name().contains("RIGHT")) {
			ItemStack itemStack = event.getPlayer().getItemInHand();
			if(itemStack == null) return;
			if (itemStack.getType().equals(Material.NAME_TAG)) {
				event.setCancelled(true);
			}
		}
	}

Agora se for só em entidades

	@EventHandler(priority = EventPriority.LOW)
	public void onInteract(PlayerInteractAtEntityEvent event) {
		ItemStack itemStack = event.getPlayer().getItemInHand();
		if(itemStack == null) return;
		if (itemStack.getType().equals(Material.NAME_TAG)) {
			event.setCancelled(true);
		}
	}

 

O código não era meu e eu já estava ciente que o código estava errado, usei ele apenas como exemplo. A minha duvida era se, ao fazer essa checagem ia gerar lag ou ao usar este código ia gerar lag.

Link para o comentário
Compartilhar em outros sites

Só que coloque no HIGHEST, para ter prioridade sobre os outros...

O bukkit primeiro executa o LOW, NORMAL, HIGH, HIGHEST... Se você cancelar o plugin no low, e algum outro plugin "descancelar" no highest, o evento não vai ser cancelado...

 

 

Isso é usado para tipo, no simpleclans, ele tem o evento de desativar o ataque dos membros do mesmo clan no normal, se você coloca no HIGH, para então "descancelar" o evento, o ataque a membros do mesmo clan será ativado...

 

E não é qualquer movimento, é qualquer interação que o jogador faz...

(Qualquer movimento é o PlayerMoveEvent)...

 

E não vai causar lag... Se você ver o código fonte do bukkit vai ficar pensando como aquilo funciona? :0

Link para o comentário
Compartilhar em outros sites

Só que coloque no HIGHEST, para ter prioridade sobre os outros...

O bukkit primeiro executa o LOW, NORMAL, HIGH, HIGHEST... Se você cancelar o plugin no low, e algum outro plugin "descancelar" no highest, o evento não vai ser cancelado...

 

 

Isso é usado para tipo, no simpleclans, ele tem o evento de desativar o ataque dos membros do mesmo clan no normal, se você coloca no HIGH, para então "descancelar" o evento, o ataque a membros do mesmo clan será ativado...

 

E não é qualquer movimento, é qualquer interação que o jogador faz...

(Qualquer movimento é o PlayerMoveEvent)...

 

E não vai causar lag... Se você ver o código fonte do bukkit vai ficar pensando como aquilo funciona? :0

 

 

Nope 0% de lag nesse evento.. mas tbm depende do que voce colocar a seguir, tipo colocar uns loop doido ai, dai vai dar lag 

 

 

 

Ok. Pelo que eu entendi fazer as verificações não gera tanto lag, o que gera lag é ooque vai acontecer depois da verificação ou seja dentro do código em si.

 

Sobre a questão das prioridades. É mais recomendado colocar HIGH ou LOW? ou depende o evento? Pelo que eu entendi é sempre recomendando colocar HIGHEST ou MONITOR

Link para o comentário
Compartilhar em outros sites

HIGHEST é quando você quer que seu plugin tenha prioridade sobre todos os outros plugins

 

MONITOR é quando você quer que o seu plugin sejá o que menos tenha prioridade

 

1 - MONITOR

2 - LOW

3 - NORMAL

4 - HIGH

5 - HIGHEST

 

Segue a ordem:

Plugin com monitor: Cancela o evento.

Plugin com HIGHEST: reativa o evento.

Final: O evento ocorre normalmente.

 

Plugin com monitor: Cancela o evento.

Plugin com normal: ativa o evento.

Plugin com high: cancela o evento.

Final: O evento é cancelado.

 

Plugin com monitor: Define a mensagem de boas vindas para "Eai mlk"

Plugin com normal: Define a mensagem de boas vindas para "Doidão"

Plugin com high: Define a mensagem de boas vidas para "haha cancelei vocês"

Plugin com highest: Define a mensagem de boas vindas para "hahaha, quem ri por último ri melhor... uehueh"

 

Entendeu?

Link para o comentário
Compartilhar em outros sites

HIGHEST é quando você quer que seu plugin tenha prioridade sobre todos os outros plugins

 

MONITOR é quando você quer que o seu plugin sejá o que menos tenha prioridade

 

1 - MONITOR

2 - LOW

3 - NORMAL

4 - HIGH

5 - HIGHEST

 

Segue a ordem:

Plugin com monitor: Cancela o evento.

Plugin com HIGHEST: reativa o evento.

Final: O evento ocorre normalmente.

 

Plugin com monitor: Cancela o evento.

Plugin com normal: ativa o evento.

Plugin com high: cancela o evento.

Final: O evento é cancelado.

 

Plugin com monitor: Define a mensagem de boas vindas para "Eai mlk"

Plugin com normal: Define a mensagem de boas vindas para "Doidão"

Plugin com high: Define a mensagem de boas vidas para "haha cancelei vocês"

Plugin com highest: Define a mensagem de boas vindas para "hahaha, quem ri por último ri melhor... uehueh"

 

Entendeu?

 

Entendi!

Sempre que eu quero fazer um evento como Enviar mensagem ao clicar no bloco eu uso Monitor. 

Sempre que eu quero cancelar a mensagem de morte eu uso highest? 

acho que é mais ou menos isso ^^ vlw pela explicação

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...