zMathi Postado Maio 11, 2015 Denunciar Compartilhar Postado Maio 11, 2015 Como faço pra fazer X coisa quando o jogador entrar na região X? È só isso mesmo ;p Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Maio 11, 2015 Denunciar Compartilhar Postado Maio 11, 2015 (editado) 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 Maio 11, 2015 por leonardosc Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Maio 11, 2015 Denunciar Compartilhar Postado Maio 11, 2015 Vo toma banho, quando voltar eu edito ;=; Link para o comentário Compartilhar em outros sites More sharing options...
Guest zCouDray Postado Maio 11, 2015 Denunciar Compartilhar Postado Maio 11, 2015 (editado) 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 Maio 11, 2015 por zCouDray Link para o comentário Compartilhar em outros sites More sharing options...
zMathi Postado Maio 11, 2015 Autor Denunciar Compartilhar Postado Maio 11, 2015 (editado) E para Setar uma Flag? ,-, Editado Maio 11, 2015 por zMathi Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Maio 11, 2015 Denunciar Compartilhar Postado Maio 11, 2015 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 More sharing options...
zMathi Postado Maio 11, 2015 Autor Denunciar Compartilhar Postado Maio 11, 2015 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 More sharing options...
leonardosc Postado Maio 11, 2015 Denunciar Compartilhar Postado Maio 11, 2015 (editado) 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 Maio 11, 2015 por leonardosc Link para o comentário Compartilhar em outros sites More sharing options...
zDubsCrazy Banido Postado Maio 11, 2015 Denunciar Compartilhar Postado Maio 11, 2015 (editado) Tenta trocar de: regionId = getId(player.getLocation()); para: regionId = getId(e.getTo()); (Código que o leonardosc postou acima) Editado Maio 11, 2015 por zDubsCrazy Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Maio 11, 2015 Denunciar Compartilhar Postado Maio 11, 2015 Tenta trocar de: regionId = getId(player.getLocation()); para: regionId = getId(e.getTo()); (Código que o leonardosc postou acima) Não faz muita diferença Link para o comentário Compartilhar em outros sites More sharing options...
zDubsCrazy Banido Postado Maio 11, 2015 Denunciar Compartilhar Postado Maio 11, 2015 Não faz muita diferença O evento pode estar cancelado, logo a localização do player não é atualizada para 'e.getTo();' Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Maio 11, 2015 Denunciar Compartilhar Postado Maio 11, 2015 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 More sharing options...
zDubsCrazy Banido Postado Maio 11, 2015 Denunciar Compartilhar Postado Maio 11, 2015 (editado) Não da pra saber se está cancelado ou não, apenas verificando com 'isCanceled()', vários plugins podem cancelar o mesmo evento. Editado Maio 11, 2015 por zDubsCrazy Link para o comentário Compartilhar em outros sites More sharing options...
zMathi Postado Maio 11, 2015 Autor Denunciar Compartilhar Postado Maio 11, 2015 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 More sharing options...
zDubsCrazy Banido Postado Maio 11, 2015 Denunciar Compartilhar Postado Maio 11, 2015 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 More sharing options...
leonardosc Postado Maio 11, 2015 Denunciar Compartilhar Postado Maio 11, 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
zMathi
Como faço pra fazer X coisa quando o jogador entrar na região X?
È só isso mesmo ;p
Link para o comentário
Compartilhar em outros sites
15 respostass a esta questão
Posts Recomendados