DEVKEWI Postado Março 14, 2016 Denunciar Compartilhar Postado Março 14, 2016 Opa abuiguinhos do gaymersboirds Quero verificar se o local é pvp on, se for on o evento funciona, se não, não. Eu fiz isso: public static WorldGuardPlugin verificar = null; public static void getHookWorldGuard() { RegisteredServiceProvider<WorldGuardPlugin> pvp = Bukkit.getServer().getServicesManager() .getRegistration(WorldGuardPlugin.class); if (pvp != null) { verificar = pvp.getProvider(); KwMetodos.getConsole("WorlGuard encontrado! Hook com a §b<WorldGuardPlugin>"); } } public static boolean semPvP(Player p) { ApplicableRegionSet regiao = verificar.getRegionManager(p.getWorld()).getApplicableRegions(p.getLocation()); if (regiao.allows(DefaultFlag.PVP)) { return true; } return false; } Já registrei no onEnable o método: getHookWorldGuard(); E agora estou com dúvida, como coloco para verificiar se o local é pvp on/off ? Tipo eu não sei se tem que colocar alguma coisa em um determinado lugar, exemplo: o semPvP, creio que tinha que colocar no EntilyDamageByEvent ... http://prntscr.com/af81iv Link para o comentário Compartilhar em outros sites More sharing options...
??? Postado Março 14, 2016 Denunciar Compartilhar Postado Março 14, 2016 (editado) private WorldGuardPlugin worldGuard; public WorldGuardPlugin getWorldGuard(){ if (worldGuard == null) { Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("WorldGuard"); if ((plugin == null) || (!(plugin instanceof WorldGuardPlugin))) { return null; } worldGuard = (WorldGuardPlugin)plugin; } return worldGuard; } //Se retornar true == pvp on //Se retornar false == pvp off public static boolean PvP(Player p) { WorldGuardPlugin wgp = getWorldGuard(); Location loc = p.getLocation(); RegionManager rm = wgp.getRegionManager(loc.getWorld()); ApplicableRegionSet app = rm.getApplicableRegions(loc); if(!app.iterator().hasNext()){ return true; } State state = app.getFlag(DefaultFlag.PVP); if(state != null && state == State.ALLOW){ return true; } return false; } Editado Março 14, 2016 por ??? 1 Link para o comentário Compartilhar em outros sites More sharing options...
DEVKEWI Postado Março 14, 2016 Autor Denunciar Compartilhar Postado Março 14, 2016 private WorldGuardPlugin worldGuard; public WorldGuardPlugin getWorldGuard(){ if (worldGuard == null) { Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("WorldGuard"); if ((plugin == null) || (!(plugin instanceof WorldGuardPlugin))) { return null; } worldGuard = (WorldGuardPlugin)plugin; } return worldGuard; } //Se retornar true == pvp on //Se retornar false == pvp off public static boolean PvP(Player p) { WorldGuardPlugin wgp = getWorldGuard(); Location loc = p.getLocation(); RegionManager rm = wgp.getRegionManager(loc.getWorld()); ApplicableRegionSet app = rm.getApplicableRegions(loc); if(!app.iterator().hasNext()){ return true; } State state = app.getFlag(DefaultFlag.PVP); if(state != null && state == State.ALLOW){ return true; } return false; } Ainda da para se hitar mesmo em lugar pvp off ¬¬ Link para o comentário Compartilhar em outros sites More sharing options...
Dery Postado Março 14, 2016 Denunciar Compartilhar Postado Março 14, 2016 (editado) Ainda da para se hitar mesmo em lugar pvp off ¬¬ RegionManager regionManager = wg.getRegionManager(p.getWorld()); ApplicableRegionSet set = regionManager.getApplicableRegions(p.getLocation()); if(set.size() != 0){ String id = ((ProtectedRegion)set.iterator().next()).getId(); ProtectedRegion region = regionManager.getRegion(id); State pvp = region.getFlag(DefaultFlag.PVP); if(pvp == State.DENY){ e.setCancelled(true); return; } } Editado Março 14, 2016 por Dery 1 Link para o comentário Compartilhar em outros sites More sharing options...
zDubsCrazy Banido Postado Março 14, 2016 Denunciar Compartilhar Postado Março 14, 2016 Você também pode usar (mais fácil): public boolean canPvP(Player p) { return getWorldGuard().getRegionManager(p.getWorld()).getApplicableRegions(p.getLocation()).allows(DefaultFlag.PVP); } Mas se ta dando pra hitar em local com PvP Off, é bug do WG. 1 Link para o comentário Compartilhar em outros sites More sharing options...
DEVKEWI Postado Março 14, 2016 Autor Denunciar Compartilhar Postado Março 14, 2016 Você também pode usar (mais fácil): public boolean canPvP(Player p) { return getWorldGuard().getRegionManager(p.getWorld()).getApplicableRegions(p.getLocation()).allows(DefaultFlag.PVP); } Mas se ta dando pra hitar em local com PvP Off, é bug do WG. Na verdade não da para hitar em pvp off, é que ele em pvp em local que não tem pvp... aí quando da dc em pvp mesmo em lugar sem pvp o lek morre =/ Link para o comentário Compartilhar em outros sites More sharing options...
zDubsCrazy Banido Postado Março 14, 2016 Denunciar Compartilhar Postado Março 14, 2016 Na verdade não da para hitar em pvp off, é que ele em pvp em local que não tem pvp... aí quando da dc em pvp mesmo em lugar sem pvp o lek morre =/ @EventHandler public void onQuit(PlayerQuitEvent e) { Player p = e.getPlayer(); if (canPvP(p)) { p.setHealth(0); } } Tenta isso, combinado com o que te passei ali em cima, e com o getWorldGuard() que o outro passou. 1 Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Março 14, 2016 Denunciar Compartilhar Postado Março 14, 2016 Conseguiu? Link para o comentário Compartilhar em outros sites More sharing options...
DEVKEWI Postado Março 14, 2016 Autor Denunciar Compartilhar Postado Março 14, 2016 (editado) Conseguiu? Não =/ Agora eu não morro quando dou "dc" ¬¬ @Edit: Eu não morro mais mesmo assim aparece a msg ¬¬ Deixa eu explicar melhor: Eu quero saber como fazer para cancelar o evento caso esteja pvp off Editado Março 14, 2016 por Kewilleen G. Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Março 14, 2016 Denunciar Compartilhar Postado Março 14, 2016 Não =/Agora eu não morro quando dou "dc" ¬¬ @Edit: Eu não morro mais mesmo assim aparece a msg ¬¬ Deixa eu explicar melhor: Eu quero saber como fazer para cancelar o evento caso esteja pvp off Tu ja viu como verifica se ta pvp off? Link para o comentário Compartilhar em outros sites More sharing options...
DEVKEWI Postado Março 14, 2016 Autor Denunciar Compartilhar Postado Março 14, 2016 (editado) Tu ja viu como verifica se ta pvp off? Não, mas é algo relacionado a isso: set.allows(DefaultFlag.PVP); @edit: (acho) Editado Março 14, 2016 por Kewilleen G. Link para o comentário Compartilhar em outros sites More sharing options...
DEVKEWI Postado Março 15, 2016 Autor Denunciar Compartilhar Postado Março 15, 2016 UP Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Março 16, 2016 Denunciar Compartilhar Postado Março 16, 2016 (editado) Não, mas é algo relacionado a isso: set.allows(DefaultFlag.PVP); @edit: (acho) Tenta ai... Poste resultados. https://github.com/sk89q/WorldGuard/blob/master/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/regions/ProtectedRegion.java#L441 Editado Março 16, 2016 por leonardosc 1 Link para o comentário Compartilhar em outros sites More sharing options...
DEVKEWI Postado Março 16, 2016 Autor Denunciar Compartilhar Postado Março 16, 2016 Resolvido! Bom como não tem como dar resolvido em mais de um comentário, eu mandei o "like" ;p Link para o comentário Compartilhar em outros sites More sharing options...
??? Postado Março 16, 2016 Denunciar Compartilhar Postado Março 16, 2016 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
DEVKEWI
Opa abuiguinhos do gaymersboirds
Quero verificar se o local é pvp on, se for on o evento funciona, se não, não.
Eu fiz isso:
public static WorldGuardPlugin verificar = null;
public static void getHookWorldGuard() {
RegisteredServiceProvider<WorldGuardPlugin> pvp = Bukkit.getServer().getServicesManager()
.getRegistration(WorldGuardPlugin.class);
if (pvp != null) {
verificar = pvp.getProvider();
KwMetodos.getConsole("WorlGuard encontrado! Hook com a §b<WorldGuardPlugin>");
}
}
public static boolean semPvP(Player p) {
ApplicableRegionSet regiao = verificar.getRegionManager(p.getWorld()).getApplicableRegions(p.getLocation());
if (regiao.allows(DefaultFlag.PVP)) {
return true;
}
return false;
}
Já registrei no onEnable o método: getHookWorldGuard();
E agora estou com dúvida, como coloco para verificiar se o local é pvp on/off ?
Tipo eu não sei se tem que colocar alguma coisa em um determinado lugar, exemplo:
o semPvP, creio que tinha que colocar no EntilyDamageByEvent ...
http://prntscr.com/af81iv
Link para o comentário
Compartilhar em outros sites
14 respostass a esta questão
Posts Recomendados