{"body":"package uk.co.haxyshideout.noflyzone.events;\n\nimport com.pixelmonmod.pixelmon.api.events.PixelmonSendOutEvent;\nimport com.pixelmonmod.pixelmon.api.events.PixelmonSpawnEvent;\nimport com.pixelmonmod.pixelmon.api.events.RidePokemonEvent;\nimport com.pixelmonmod.pixelmon.api.events.ThrowPokeballEvent;\nimport com.sk89q.worldguard.bukkit.RegionQuery;\nimport com.sk89q.worldguard.bukkit.WGBukkit;\nimport com.sk89q.worldguard.protection.flags.StateFlag;\nimport cpw.mods.fml.common.eventhandler.SubscribeEvent;\nimport cpw.mods.fml.common.gameevent.PlayerEvent;\nimport net.minecraft.entity.player.EntityPlayer;\nimport org.bukkit.Location;\nimport org.bukkit.entity.Player;\nimport uk.co.haxyshideout.noflyzone.NoFlyZone;\n\n/**\n * Created by clienthax on 30/1/2015.\n */\npublic class EventListener {//Registered under bukkitplugin classloader - has full access to worldguard\n\n\tpublic static final StateFlag flagFlying = new StateFlag(\"pixelmon:flying\", true);// StateFlag - allow flying by default\n\tpublic static final StateFlag flagSpawning = new StateFlag(\"pixelmon:spawning\", true);// StateFlag - allow spawning by default\n\tpublic static final StateFlag flagSendOut = new StateFlag(\"pixelmon:sendout\", true);// StateFlag - allow sending out pokemon by default\n\n\t//These should be a string or something, so we can enum through the listed pokeballs\n\tpublic static final StateFlag flagThrowPokeBallBattle = new StateFlag(\"pixelmon:useballinbattle\", true);// StateFlag - allow use by default\n\tpublic static final StateFlag flagThrowPokeball = new StateFlag(\"pixelmon:useball\", true);// StateFlag - allow use by default\n\n\n\t@SubscribeEvent\n\tpublic void onThrowPokeball(ThrowPokeballEvent event) {//TODO make possible to stop individual balls\n\t\tRegionQuery query = WGBukkit.getPlugin().getRegionContainer().createQuery();\n\t\tPlayer bukkitPlayer = null;\n\n\t\ttry {\n\t\t\tEntityPlayer forgePlayer = event.player;\n\t\t\tbukkitPlayer = (Player) NoFlyZone.getCraftPlayerMethod.invoke(forgePlayer);\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\n\t\tif(event.usedInBattle) {\n\t\t\tif(!query.testState(bukkitPlayer.getLocation(), bukkitPlayer, flagThrowPokeBallBattle))\n\t\t\t\tevent.setCanceled(true);\n\t\t} else {\n\t\t\tif(!query.testState(bukkitPlayer.getLocation(), bukkitPlayer, flagThrowPokeball))\n\t\t\t\tevent.setCanceled(true);\n\t\t}\n\t}\n\n\t@SubscribeEvent\n\tpublic void onSendOut(PixelmonSendOutEvent event) {\n\t\tRegionQuery query = WGBukkit.getPlugin().getRegionContainer().createQuery();\n\t\ttry {\n\t\t\tEntityPlayer forgePlayer = event.player;\n\t\t\tPlayer bukkitPlayer = (Player) NoFlyZone.getCraftPlayerMethod.invoke(forgePlayer);\n\t\t\tLocation playerLocation = bukkitPlayer.getLocation();\n\t\t\tif(!query.testState(playerLocation, bukkitPlayer, flagSendOut)) {\n\t\t\t\tSystem.out.println(\"sendout cancelled\");\n\t\t\t\tevent.setCanceled(true);\n\t\t\t}\n\t\t}catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t}\n\n\t@SubscribeEvent\n\tpublic void onPixelmonSpawn(PixelmonSpawnEvent event) {\n\t\tRegionQuery query = WGBukkit.getPlugin().getRegionContainer().createQuery();\n\t\tLocation spawnLocation = new Location((org.bukkit.World) event.world, event.x, event.y, event.z);\n\t\tif(!query.testState(spawnLocation, (Player)null, flagSpawning)) {\n\t\t\tSystem.out.println(\"spawn cancelled\");\n\t\t\tevent.setCanceled(true);\n\t\t}\n\t}\n\n\t@SubscribeEvent\n\tpublic void onFlyEvent(RidePokemonEvent event) throws Exception {\n\n\t\tRegionQuery query = WGBukkit.getPlugin().getRegionContainer().createQuery();\n\t\ttry {\n\t\t\tEntityPlayer forgePlayer = event.player;\n\t\t\tPlayer bukkitPlayer = (Player) NoFlyZone.getCraftPlayerMethod.invoke(forgePlayer);\n\t\t\tLocation playerLocation = bukkitPlayer.getLocation();\n\t\t\tLocation pixelmonLocation = new Location(bukkitPlayer.getWorld(), event.pixelmon.posX, event.pixelmon.posY, event.pixelmon.posZ);\n\t\t\tif(!query.testState(playerLocation, bukkitPlayer, flagFlying) ||\n\t\t\t   !query.testState(pixelmonLocation, bukkitPlayer, flagFlying)) {\n\t\t\t\tevent.setCanceled(true);\n\t\t\t}\n\n\t\t}catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t}\n\n\n\t@SubscribeEvent\n\tpublic void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent event) {\n\t\t//Add another session to worldguard for stuff like on entry / leave\n\t\ttry {\n\t\t\t/*System.out.println(\"adding handler to session\");\n\t\t\tSession session = WGBukkit.getPlugin().getSessionManager().get((Player) NoFlyZone.getCraftPlayerMethod.invoke(event.player));\n\t\t\tMethod registerHandlerMethod = session.getClass().getMethod(\"register\", Handler.class);\n\t\t\tPixelmonHandler handler = new PixelmonHandler(session);\n\t\t\tregisterHandlerMethod.invoke(session, handler);\n\t\t\tSystem.out.println(\"added handler to session\");\n*/\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t}\n}\n","name":"","extension":"txt","url":"https://www.irccloud.com/pastebin/Eh5kvive","modified":1423054424,"id":"Eh5kvive","size":4631,"lines":112,"own_paste":false,"theme":"","date":1423054424}