Ir para conteúdo
  • 0

[Resolvido] WorldGuard - Checar flag de build - Duvida


Boladexziinho

Pergunta

Estou tentando checar se a flag da localização do bloco que é quebrado pelo jogador está em true, ou seja, se ele consegue quebrar esse bloco..

 

Tentei esse código:

Player p = e.getPlayer();
ApplicableRegionSet rg = WGBukkit.getPlugin().getRegionManager(p.getWorld()).getApplicableRegions(e.getBlock().getLocation());
if (rg.getFlag(DefaultFlag.BUILD) != null) {
	if(rg.queryState(null, DefaultFlag.BUILD) == State.ALLOW){

Porem quando quebro da esse erro:

[19:22:01] [Server thread/ERROR]: Could not pass event BlockBreakEvent to MineTeckPVP v1.0
org.bukkit.event.EventException
	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[custom.jar:git-Spigot-e000104-4cb3258]
	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[custom.jar:git-Spigot-e000104-4cb3258]
	at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [custom.jar:git-Spigot-e000104-4cb3258]
	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [custom.jar:git-Spigot-e000104-4cb3258]
	at net.minecraft.server.v1_9_R1.PlayerInteractManager.breakBlock(PlayerInteractManager.java:292) [custom.jar:git-Spigot-e000104-4cb3258]
	at net.minecraft.server.v1_9_R1.PlayerInteractManager.a(PlayerInteractManager.java:218) [custom.jar:git-Spigot-e000104-4cb3258]
	at net.minecraft.server.v1_9_R1.PlayerConnection.a(PlayerConnection.java:846) [custom.jar:git-Spigot-e000104-4cb3258]
	at net.minecraft.server.v1_9_R1.PacketPlayInBlockDig.a(SourceFile:40) [custom.jar:git-Spigot-e000104-4cb3258]
	at net.minecraft.server.v1_9_R1.PacketPlayInBlockDig.a(SourceFile:10) [custom.jar:git-Spigot-e000104-4cb3258]
	at net.minecraft.server.v1_9_R1.PlayerConnectionUtils$1.run(SourceFile:13) [custom.jar:git-Spigot-e000104-4cb3258]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_91]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_91]
	at net.minecraft.server.v1_9_R1.SystemUtils.a(SourceFile:45) [custom.jar:git-Spigot-e000104-4cb3258]
	at net.minecraft.server.v1_9_R1.MinecraftServer.D(MinecraftServer.java:721) [custom.jar:git-Spigot-e000104-4cb3258]
	at net.minecraft.server.v1_9_R1.DedicatedServer.D(DedicatedServer.java:400) [custom.jar:git-Spigot-e000104-4cb3258]
	at net.minecraft.server.v1_9_R1.MinecraftServer.C(MinecraftServer.java:660) [custom.jar:git-Spigot-e000104-4cb3258]
	at net.minecraft.server.v1_9_R1.MinecraftServer.run(MinecraftServer.java:559) [custom.jar:git-Spigot-e000104-4cb3258]
	at java.lang.Thread.run(Thread.java:745) [?:1.8.0_91]
Caused by: java.lang.NullPointerException: The build flag is handled in a special fashion and requires a non-null subject parameter
	at com.sk89q.worldguard.protection.FlagValueCalculator.queryAllValues(FlagValueCalculator.java:274) ~[?:?]
	at com.sk89q.worldguard.protection.FlagValueCalculator.queryValue(FlagValueCalculator.java:220) ~[?:?]
	at com.sk89q.worldguard.protection.RegionResultSet.queryValue(RegionResultSet.java:103) ~[?:?]
	at com.sk89q.worldguard.protection.AbstractRegionSet.getFlag(AbstractRegionSet.java:101) ~[?:?]
	at com.sk89q.worldguard.protection.AbstractRegionSet.getFlag(AbstractRegionSet.java:108) ~[?:?]
	at boladex.pvp.toinv.Eventos.quebrou(Eventos.java:204) ~[?:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_91]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_91]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_91]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_91]
	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[custom.jar:git-Spigot-e000104-4cb3258]
	... 17 more

Já procurei soluções, mas sem sucesso..

Versão 1.9

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

o getFlag ta depreciado, troca pro queryValue, e o queryValue precisa de uma associação. Exemplo

 

rg.queryValue(Associables.constant(Association.NON_MEMBER)DefaultFlag.BUILD) // pega o valor para não membros

rg.queryValue(Associables.constant(Association.OWNER)DefaultFlag.BUILD) // pega o valor para o dono

 

Exemplo

ApplicableRegionSet rg = WGBukkit.getPlugin().getRegionManager(p.getWorld()).getApplicableRegions(p.getLocation());

StateFlag.State state = rg.queryValue(Associables.constant(Association.NOT_MEMBER), DefaultFlag.BUILD);

System.out.println(state);

if (state == null || state == StateFlag.State.DENY) {
  p.sendMessage("vc nao pode construir aki");
}

https://github.com/sk89q/WorldGuard/blob/master/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/ApplicableRegionSet.java#L110-L133


logo-forum.png




Sua dúvida foi marcada como [Resolvido] e movido à área de dúvidas resolvidas.


Atenciosamente,
Gamer's Board Editado por leonardosc
Link para o comentário
Compartilhar em outros sites

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