Ir para conteúdo
  • 0

[Resolvido] WorldGuard API...


zMathi

Pergunta

15 respostass a esta questão

Posts Recomendados

Se for cancelar o PlayerMoveEvent, acho que eu vou saber né? rs...

 

 

Funcionou, modifiquei um pouco oque você fez, mas tem mais uma coisa, como posso setar uma Flag? Não entendi direito .setFlag(<>) ...

<INSTANCIA DA REGION>.setFlag(DefaultFlag.<ALGUMA FLAG>, DefaultFlag.<ALGUMA FLAG>.parseInput(<INSTANCIA DO WORLDGUARDPLUGIN>, <INSTANCIA DO PLAYER>, "deny" ou "allow"));
Editado por leonardosc
Link para o comentário
Compartilhar em outros sites

Guest zCouDray

Primeiro faça o método de buscar a região do jogador:

for (ProtectedRegion rg : wg.getRegionManager(e.getPlayer().getWorld()).getApplicableRegions(e.getPlayer().getLocation()))
		{
			String id = rg.getId();
		}

Depois faça o evento para reconhecer quando ele entrar:

@EventHandler
public void andou(PlayerMoveEvent e){
Player p = e.getPlayer():
if(rg.equals("Nome da regiao"){
//Executar x coisa
//Exemplo:
p.sendMessage("Você entrou na região: " + rg):

Espero ter ajudado ;)

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

private static WorldGuardPlugin worldguard;

no onEnable

Plugin worldGuardPl = Bukkit.getServer().getPluginManager().getPlugin("WorldGuard");
		
if (worldGuardPl != null)
{
	worldguard = (WorldGuardPlugin) worldGuardPl;
}

Pra pegar o id da region usa esse método.

	private String getId(Location loc)
	{
		ApplicableRegionSet rgs = CWDisableFly.getWorldguard().getRegionManager(loc.getWorld()).getApplicableRegions(loc);
		for (ProtectedRegion rg  : rgs)
		{
			return rg.getId();
		}
		return null;
	}

Exemplo de uso

	@EventHandler
	private void onPlayerMove2(PlayerMoveEvent e)
	{
		Player player = e.getPlayer();
		String regionId = getId(player.getLocation());
		
		Location from = e.getFrom();
		Location to = e.getTo();
		
		if (from.getBlockX() != to.getBlockX() || from.getBlockY() != to.getBlockY() || from.getBlockZ() != to.getBlockZ())
		{
			if (regionId != null)
			{
				if (regionId.equalsIgnoreCase("spawn"))
				{
					player.sendMessage("Voce entrou no spawn.");
				}
				
			}
		}
	}

Isso seria só quando o player move, mas da pra você fazer também quando ele teleporta e pa...

Link para o comentário
Compartilhar em outros sites

private static WorldGuardPlugin worldguard;

no onEnable

Plugin worldGuardPl = Bukkit.getServer().getPluginManager().getPlugin("WorldGuard");
		
if (worldGuardPl != null)
{
	worldguard = (WorldGuardPlugin) worldGuardPl;
}

Pra pegar o id da region usa esse método.

	private String getId(Location loc)
	{
		ApplicableRegionSet rgs = CWDisableFly.getWorldguard().getRegionManager(loc.getWorld()).getApplicableRegions(loc);
		for (ProtectedRegion rg  : rgs)
		{
			return rg.getId();
		}
		return null;
	}

Exemplo de uso

	@EventHandler
	private void onPlayerMove2(PlayerMoveEvent e)
	{
		Player player = e.getPlayer();
		String regionId = getId(player.getLocation());
		
		Location from = e.getFrom();
		Location to = e.getTo();
		
		if (from.getBlockX() != to.getBlockX() || from.getBlockY() != to.getBlockY() || from.getBlockZ() != to.getBlockZ())
		{
			if (regionId != null)
			{
				if (regionId.equalsIgnoreCase("spawn"))
				{
					player.sendMessage("Voce entrou no spawn.");
				}
				
			}
		}
	}

Isso seria só quando o player move, mas da pra você fazer também quando ele teleporta e pa...

 

Não funcionou, não deu erro, mas quando ando na região não dá nd

Link para o comentário
Compartilhar em outros sites

 

Não funcionou, não deu erro, mas quando ando na região não dá nd

Se registro os eventos fera?

 

Aki ta funcionando de boas.

 

Lembrando que ele só detecta quando o jogador muda de bloco, não detecta o yaw/pitch

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

O evento pode estar cancelado, logo a localização do player não é atualizada para 'e.getTo();'

Mas não está, portanto não faz muita diferença.

 

 

Não funcionou, não deu erro, mas quando ando na região não dá nd

Iai?

Link para o comentário
Compartilhar em outros sites

Não da pra saber se está cancelado ou não, apenas verificando com 'isCanceled()', vários plugins podem cancelar o mesmo evento.

Se for cancelar o PlayerMoveEvent, acho que eu vou saber né? rs...

 

 

Mas não está, portanto não faz muita diferença.

 

 

Iai?

Funcionou, modifiquei um pouco oque você fez, mas tem mais uma coisa, como posso setar uma Flag? Não entendi direito .setFlag(<>) ...

Link para o comentário
Compartilhar em outros sites

Se for cancelar o PlayerMoveEvent, acho que eu vou saber né? rs...

 

 

Funcionou, modifiquei um pouco oque você fez, mas tem mais uma coisa, como posso setar uma Flag? Não entendi direito .setFlag(<>) ...

O mesmo PlayerMoveEvent que você está tratando pode ser cancelado por outro plugin, que não seja o seu. Mas você já conseguiu, então não era isso.

Link para o comentário
Compartilhar em outros sites

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