# Pastebin Eh5kvive package uk.co.haxyshideout.noflyzone.events; import com.pixelmonmod.pixelmon.api.events.PixelmonSendOutEvent; import com.pixelmonmod.pixelmon.api.events.PixelmonSpawnEvent; import com.pixelmonmod.pixelmon.api.events.RidePokemonEvent; import com.pixelmonmod.pixelmon.api.events.ThrowPokeballEvent; import com.sk89q.worldguard.bukkit.RegionQuery; import com.sk89q.worldguard.bukkit.WGBukkit; import com.sk89q.worldguard.protection.flags.StateFlag; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent; import net.minecraft.entity.player.EntityPlayer; import org.bukkit.Location; import org.bukkit.entity.Player; import uk.co.haxyshideout.noflyzone.NoFlyZone; /** * Created by clienthax on 30/1/2015. */ public class EventListener {//Registered under bukkitplugin classloader - has full access to worldguard public static final StateFlag flagFlying = new StateFlag("pixelmon:flying", true);// StateFlag - allow flying by default public static final StateFlag flagSpawning = new StateFlag("pixelmon:spawning", true);// StateFlag - allow spawning by default public static final StateFlag flagSendOut = new StateFlag("pixelmon:sendout", true);// StateFlag - allow sending out pokemon by default //These should be a string or something, so we can enum through the listed pokeballs public static final StateFlag flagThrowPokeBallBattle = new StateFlag("pixelmon:useballinbattle", true);// StateFlag - allow use by default public static final StateFlag flagThrowPokeball = new StateFlag("pixelmon:useball", true);// StateFlag - allow use by default @SubscribeEvent public void onThrowPokeball(ThrowPokeballEvent event) {//TODO make possible to stop individual balls RegionQuery query = WGBukkit.getPlugin().getRegionContainer().createQuery(); Player bukkitPlayer = null; try { EntityPlayer forgePlayer = event.player; bukkitPlayer = (Player) NoFlyZone.getCraftPlayerMethod.invoke(forgePlayer); } catch (Exception e) { e.printStackTrace(); } if(event.usedInBattle) { if(!query.testState(bukkitPlayer.getLocation(), bukkitPlayer, flagThrowPokeBallBattle)) event.setCanceled(true); } else { if(!query.testState(bukkitPlayer.getLocation(), bukkitPlayer, flagThrowPokeball)) event.setCanceled(true); } } @SubscribeEvent public void onSendOut(PixelmonSendOutEvent event) { RegionQuery query = WGBukkit.getPlugin().getRegionContainer().createQuery(); try { EntityPlayer forgePlayer = event.player; Player bukkitPlayer = (Player) NoFlyZone.getCraftPlayerMethod.invoke(forgePlayer); Location playerLocation = bukkitPlayer.getLocation(); if(!query.testState(playerLocation, bukkitPlayer, flagSendOut)) { System.out.println("sendout cancelled"); event.setCanceled(true); } }catch (Exception e) { e.printStackTrace(); } } @SubscribeEvent public void onPixelmonSpawn(PixelmonSpawnEvent event) { RegionQuery query = WGBukkit.getPlugin().getRegionContainer().createQuery(); Location spawnLocation = new Location((org.bukkit.World) event.world, event.x, event.y, event.z); if(!query.testState(spawnLocation, (Player)null, flagSpawning)) { System.out.println("spawn cancelled"); event.setCanceled(true); } } @SubscribeEvent public void onFlyEvent(RidePokemonEvent event) throws Exception { RegionQuery query = WGBukkit.getPlugin().getRegionContainer().createQuery(); try { EntityPlayer forgePlayer = event.player; Player bukkitPlayer = (Player) NoFlyZone.getCraftPlayerMethod.invoke(forgePlayer); Location playerLocation = bukkitPlayer.getLocation(); Location pixelmonLocation = new Location(bukkitPlayer.getWorld(), event.pixelmon.posX, event.pixelmon.posY, event.pixelmon.posZ); if(!query.testState(playerLocation, bukkitPlayer, flagFlying) || !query.testState(pixelmonLocation, bukkitPlayer, flagFlying)) { event.setCanceled(true); } }catch (Exception e) { e.printStackTrace(); } } @SubscribeEvent public void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent event) { //Add another session to worldguard for stuff like on entry / leave try { /*System.out.println("adding handler to session"); Session session = WGBukkit.getPlugin().getSessionManager().get((Player) NoFlyZone.getCraftPlayerMethod.invoke(event.player)); Method registerHandlerMethod = session.getClass().getMethod("register", Handler.class); PixelmonHandler handler = new PixelmonHandler(session); registerHandlerMethod.invoke(session, handler); System.out.println("added handler to session"); */ } catch (Exception e) { e.printStackTrace(); } } }