Ir para conteúdo
  • 0

[Resolvido] World Guard API?


Dery

Pergunta

5 respostass a esta questão

Posts Recomendados

Guest LeoCheioDeWarn

É o RegionEnterEavent

@EventHandler
public void onRegionEnter(RegionEnterEvent e)
{
e.getPlayer().sendMessage("Voce entrou na area " + e.getRegion().getId());
}
Editado por LeoCheioDeWarn
Link para o comentário
Compartilhar em outros sites

 

É o RegionEnterEavent

@EventHandler
public void onRegionEnter(RegionEnterEvent e)
{
e.getPlayer().sendMessage("Voce entrou na area " + e.getRegion().getId());
}

Não existe o Evento "RegionEnterEvent", oque existe é o RegionEntry

 

@Edit: Como faço para se o player entrar em tal região ele tipo que envia uma mensagem, enviar a mensagem eu sei, mas como faço para pegar a região? Seria tipo e.getRegion("teste")?

Editado por Dery
Link para o comentário
Compartilhar em outros sites

Não existe o Evento "RegionEnterEvent", oque existe é o RegionEntry

 

@Edit: Como faço para se o player entrar em tal região ele tipo que envia uma mensagem, enviar a mensagem eu sei, mas como faço para pegar a região? Seria tipo e.getRegion("teste")?

Tenho esse metodo que verifica se o player esta dentro de uma region:

public boolean verificarrg(String nome, Player p) {
		RegionManager regionManager = getWorldGuard().getRegionManager(
				p.getWorld());
		ApplicableRegionSet set = regionManager.getApplicableRegions(p
				.getEyeLocation());
		LinkedList<String> parentNames = new LinkedList<String>();
		LinkedList<String> regions = new LinkedList<String>();
		for (ProtectedRegion region : set) {
			String id = region.getId();
			regions.add(id);
			ProtectedRegion parent = region.getParent();
			while (parent != null) {
				parentNames.add(parent.getId());
				parent = parent.getParent();
			}
		}
		
		for (String name : parentNames)
			regions.remove(name);
		for (String nomerg : regions) {
			if (nomerg.equalsIgnoreCase(nome)) {
				return true;
			}

		}

		return false;
	}
Link para o comentário
Compartilhar em outros sites

 

Tenho esse metodo que verifica se o player esta dentro de uma region:

public boolean verificarrg(String nome, Player p) {
		RegionManager regionManager = getWorldGuard().getRegionManager(
				p.getWorld());
		ApplicableRegionSet set = regionManager.getApplicableRegions(p
				.getEyeLocation());
		LinkedList<String> parentNames = new LinkedList<String>();
		LinkedList<String> regions = new LinkedList<String>();
		for (ProtectedRegion region : set) {
			String id = region.getId();
			regions.add(id);
			ProtectedRegion parent = region.getParent();
			while (parent != null) {
				parentNames.add(parent.getId());
				parent = parent.getParent();
			}
		}
		
		for (String name : parentNames)
			regions.remove(name);
		for (String nomerg : regions) {
			if (nomerg.equalsIgnoreCase(nome)) {
				return true;
			}

		}

		return false;
	}

Método grande demais, com muitos for's que podem gerar lag, é possível fazer isso em poucas linhas:

public boolean estaRegion(Player p, String r) {
		com.sk89q.worldguard.protection.ApplicableRegionSet ar = getWG().getRegionManager(p.getWorld()).getApplicableRegions(p.getLocation().clone());
		Iterator<ProtectedRegion> prs = ar.iterator();
		while (prs.hasNext()) {
			ProtectedRegion region=prs.next();
			if (region.getId().equalsIgnoreCase(r)) return true;
		}
		return false;
	}
Editado por BrineDev
Link para o comentário
Compartilhar em outros sites

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