@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void onEntityPortal(EntityPortalEvent e) { if (!cm.portalDisallowEnabled) { return; } Entity entity = e.getEntity(); if (entity == null || NeverLagUtils.checkCustomNpc(entity)) { return; } if ((entity instanceof Monster && cm.portalDisallowMonster) || (entity instanceof Animals && cm.portalDisallowAnimals) || (entity instanceof Item && cm.portalDisallowItem) || (entity instanceof Projectile && cm.portalDisallowProjectile)) { e.setCancelled(true); } }
@EventHandler(priority = EventPriority.NORMAL) public void onEntityPortalTeleport(EntityPortalEvent event) { if (!(event.getEntity() instanceof Item)) return; ConsoleLogger.debug("[ENTITYPORTALEVENT] A '" + event.getEntity().getName() + "' is going through a portal!"); String worldFrom = event.getFrom().getWorld().getName(); // For some reason, event.getTo().getWorld().getName() is sometimes null if (event.getTo() == null || event.getTo().getWorld() == null) { // Not gonna bother checking name; its already a WTF that this is needed ConsoleLogger.debug("[ENTITYPORTALEVENT] event.getTo().getWorld().getName() would throw a NPE! Exiting method!"); return; } String worldTo = event.getTo().getWorld().getName(); Group from = groupManager.getGroupFromWorld(worldFrom); Group to = groupManager.getGroupFromWorld(worldTo); // If the groups are different, cancel the event if (!from.equals(to)) { ConsoleLogger.debug("[ENTITYPORTALEVENT] Group '" + from.getName() + "' and group '" + to.getName() + "' are different! Canceling event!"); event.setCancelled(true); } }
@Test public void shouldTeleportBecauseNotItem() { // given Pig entity = mock(Pig.class); World world = mock(World.class); Location from = new Location(world, 1, 2, 3); World worldNether = mock(World.class); Location to = new Location(worldNether, 1, 2, 3); EntityPortalEvent event = new EntityPortalEvent(entity, from, to, mock(TravelAgent.class)); // when listener.onEntityPortalTeleport(event); // then assertThat(event.isCancelled(), equalTo(false)); }
@Test public void shouldTeleportBecauseSameGroup() { // given Group group = mockGroup("test_group", GameMode.SURVIVAL, false); Item entity = mock(Item.class); World world = mock(World.class); given(world.getName()).willReturn("test_group"); Location from = new Location(world, 1, 2, 3); World worldNether = mock(World.class); given(worldNether.getName()).willReturn("test_group_nether"); Location to = new Location(worldNether, 1, 2, 3); given(groupManager.getGroupFromWorld("test_group")).willReturn(group); given(groupManager.getGroupFromWorld("test_group_nether")).willReturn(group); EntityPortalEvent event = new EntityPortalEvent(entity, from, to, mock(TravelAgent.class)); // when listener.onEntityPortalTeleport(event); // then assertThat(event.isCancelled(), equalTo(false)); }
@EventHandler public void onEntityPortal(EntityPortalEvent event) { Location portalLoc = null; for(BlockFace face : BlockFace.values()) { Block block = event.getFrom().getBlock().getRelative(face); if(block.getType() == Material.PORTAL || block.getType() == Material.ENDER_PORTAL) { portalLoc = block.getLocation(); } } if(portalLoc != null) { String portal = this.module.getPortalManager().getPortal(portalLoc); if(portal != null) { event.setCancelled(true); if(!(event.getEntity() instanceof Player)) { String destPortal = this.module.getPortalManager().getDestPortal(portal); if(destPortal != null && this.module.getPortalManager().isPortal(destPortal)) { Location dest = this.module.getPortalManager().getPortalPoint(destPortal); event.getEntity().teleport(dest); } } } } }
/** * This handles non-player portal use * Currently disables portal use by entities * * @param event */ @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = false) public void onEntityPortal(EntityPortalEvent event) { // If the nether is disabled then quit immediately if (!Settings.createNether) { return; } if (event.getEntity() == null) { return; } // If this is not ASkyGrid then return if (!event.getFrom().getWorld().equals(ASkyGrid.getGridWorld()) && !event.getFrom().getWorld().equals(ASkyGrid.getNetherWorld())) { return; } // Entities don't go through sky grid portals, sorry. event.setCancelled(true); }
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) public void onItemPortal(final EntityPortalEvent event) { this.plugin.entering(this.getClass(), "onItemPortal"); final Location loc = event.getEntity().getLocation(); final Altar altar = this.plugin.getAltars().get(new ChunkCoord(loc.getChunk())); if (altar != null && altar.getState() == AltarState.EGG_PROVIDED && event.getEntity().isValid()) { this.plugin.debug("Teleportation caused by an Altar."); if (event.getEntityType() == EntityType.DROPPED_ITEM) { this.plugin.debug("Teleporting entity is a Dropped Item, handling it..."); altar.getBuilder().addItem(((Item)event.getEntity()).getItemStack()); event.getEntity().remove(); this.plugin.debug("Entity handled by an Altar. Location=" + altar.getCenterLocation()); } this.plugin.debug("Entity not an item, not handled"); event.setCancelled(true); } else { this.plugin.debug("Entity not handled"); } this.plugin.exiting(this.getClass(), "onItemPortal"); }
@EventHandler public void PortalCheck(EntityPortalEvent event) { if (ConfigPatch.fixPortalInfItem) { if (event.getEntityType() == EntityType.MINECART_CHEST || event.getEntityType() == EntityType.MINECART_FURNACE || event.getEntityType() == EntityType.MINECART_HOPPER) { event.setCancelled(true); event.getEntity().remove(); AzureAPI.bc(ConfigPatch.AntiPortalInfItemWarnMessage); } } }
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void onEntityPortal(EntityPortalEvent e) { if (!cm.isAntiMinecartPortal) { return; } if (e.getEntity() instanceof Minecart) { e.setCancelled(true); } }
@Override protected Location[] get(Event event) { if (event instanceof PlayerPortalEvent) { return new Location[]{createPortal(targetLoc.getSingle(event), radius.getSingle(event).intValue(), ((PlayerPortalEvent) event).getPortalTravelAgent())}; } else if (event instanceof EntityPortalEvent) { return new Location[]{createPortal(targetLoc.getSingle(event), radius.getSingle(event).intValue(), ((EntityPortalEvent) event).getPortalTravelAgent())}; } throw new IllegalArgumentException("The event " + event + " should be a PlayerPortalEvent or EntityPortalEvent"); }
@Override public boolean init(Expression<?>[] expressions, int i, Kleenean kleenean, SkriptParser.ParseResult parseResult) { if (!ScriptLoader.isCurrentEvent(PlayerPortalEvent.class, EntityPortalEvent.class)) { Skript.error("'new nether portal' can only be used in an 'on teleport' event!"); return false; } radius = (Expression<Number>) expressions[0]; targetLoc = (Expression<Location>) expressions[1]; return false; }
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void onPortalUse(EntityPortalEvent event) { event.setCancelled(true); Entity creator = event.getEntity(); if (creator instanceof Player) { creator.sendMessage(String.format(PORTAL_MESSAGE, "use")); } }
@Test public void shouldNotTeleportBecauseDifferentGroups() { // given Group group = mockGroup("test_group", GameMode.SURVIVAL, false); Group otherGroup = mockGroup("other_group", GameMode.SURVIVAL, false); Item entity = mock(Item.class); World world = mock(World.class); given(world.getName()).willReturn("test_group"); Location from = new Location(world, 1, 2, 3); World worldNether = mock(World.class); given(worldNether.getName()).willReturn("other_group_nether"); Location to = new Location(worldNether, 1, 2, 3); given(groupManager.getGroupFromWorld("test_group")).willReturn(group); given(groupManager.getGroupFromWorld("other_group_nether")).willReturn(otherGroup); EntityPortalEvent event = new EntityPortalEvent(entity, from, to, mock(TravelAgent.class)); // when listener.onEntityPortalTeleport(event); // then assertThat(event.isCancelled(), equalTo(true)); }
public static void teleportEntity(final EntityPortalEvent event, final Location location) { checkChunkLoad(location.getBlock()); final Entity entity = event.getEntity(); if (entity.getType().isSpawnable() && !EntityUtil.isEchoPet(entity)) { entity.teleport(location); } else if (entity.getType() == EntityType.DROPPED_ITEM) { entity.remove(); location.getWorld().dropItemNaturally(location, ((Item) entity).getItemStack()); } }
@EventHandler public void onEntityPortal(final EntityPortalEvent event) { if (event.isCancelled()) { return; } if (!(event.getEntity() instanceof Player) && !(event.getEntity().getPassenger() instanceof Player)) { // Ok so an entity portal event begins // Find the nearest gate! final WorldCoord entityCoord = new WorldCoord(event.getEntity().getLocation()); final Gate nearestGate = GateUtil.nearestGate(entityCoord, true); if (nearestGate != null) { event.setCancelled(true); /* * Teleport non-living vehicles - Only when useVanillaPortals is enabled Boolean * Expression: Rtrn = VanilFlag' InstVeh InstLiv'; */ if (!Conf.useVanillaPortals && event.getEntity() instanceof Vehicle && !(event.getEntity() instanceof LivingEntity)) { return; } /* * Teleport entities (incl. living vehicles) - If they're allowed Teleport * non-living vehicles if they're allowed Boolean Expression: Tele = EntFlag * InstVeh' + EntFlag InstLiv + VehFlag InstVeh InstLiv'; */ if (nearestGate.getTeleportEntities() && !(event.getEntity() instanceof Vehicle) || nearestGate.getTeleportEntities() && event.getEntity() instanceof LivingEntity || nearestGate.getTeleportVehicles() && event.getEntity() instanceof Vehicle && !(event.getEntity() instanceof LivingEntity)) { if (nearestGate.getBungeeTo() == null) { TeleportUtil.teleportEntity(event, nearestGate.getTo()); } else { TeleportUtil.teleportEntity(event, nearestGate.getBungeeTo()); } } } } }
@EventHandler(priority = EventPriority.LOWEST) public void onPlayerPortal(PlayerPortalEvent event) { EntityPortalEvent e = new EntityPortalEvent(event.getPlayer(), event.getFrom(), event.getTo(), event.getPortalTravelAgent()); this.onEntityPortal(e); event.setFrom(e.getFrom()); event.setTo(e.getTo()); event.setPortalTravelAgent(e.getPortalTravelAgent()); event.useTravelAgent(e.useTravelAgent()); }
public void travelToDimension(int p_71027_1_) { if (!this.worldObj.isRemote && !this.isDead) { this.worldObj.theProfiler.startSection("changeDimension"); MinecraftServer minecraftserver = MinecraftServer.getServer(); // CraftBukkit start - Move logic into new function "teleportToLocation" // int j = this.dimension; // Cauldron start - Allow Forge hotloading on teleport WorldServer exitWorld = minecraftserver.worldServerForDimension(p_71027_1_); Location enter = this.getBukkitEntity().getLocation(); Location exit = exitWorld != null ? minecraftserver.getConfigurationManager().calculateTarget(enter, minecraftserver.worldServerForDimension(p_71027_1_)) : null; boolean useTravelAgent = exitWorld != null && !(this.dimension == 1 && exitWorld.dimension == 1); // don't use agent for custom worlds or return from THE_END // Cauldron start - check if teleporter is instance of TravelAgent before attempting to cast to it Teleporter teleporter = exit != null ? ((CraftWorld) exit.getWorld()).getHandle().getDefaultTeleporter() : null; TravelAgent agent = (teleporter != null && teleporter instanceof TravelAgent) ? (TravelAgent)teleporter : org.bukkit.craftbukkit.CraftTravelAgent.DEFAULT; // return arbitrary TA to compensate for implementation dependent plugins // Cauldron end EntityPortalEvent event = new EntityPortalEvent(this.getBukkitEntity(), enter, exit, agent); event.useTravelAgent(useTravelAgent); event.getEntity().getServer().getPluginManager().callEvent(event); if (event.isCancelled() || event.getTo() == null || !this.isEntityAlive()) { return; } exit = event.useTravelAgent() ? event.getPortalTravelAgent().findOrCreate(event.getTo()) : event.getTo(); this.teleportTo(exit, true); } }
@EventHandler public void onPortalEvent(EntityPortalEvent epe) { //if it's enabled if(isEnabled() && epe.getEntity() instanceof Permissible) { //if they're going into the nether cancel it if(!((Permissible) epe.getEntity()).hasPermission(ALLOW_NETHER)) { if(epe.getTo().getWorld().getEnvironment() == World.Environment.NETHER) { epe.setCancelled(true); } } } }
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void EntityPortalEvent(EntityPortalEvent event) { if (event.getEntityType() == EntityType.VILLAGER) { final Entity villager = event.getEntity(); TradeCraftVillager tcv = Villagers.getVillager(villager.getUniqueId().toString()); if(tcv != null) { Logs.debug("Portal enter " + tcv.getUUID()); tcv.setPortaling(true); } } }
@EventHandler public void handle(EntityPortalEvent event) { String type = event.getEntity().getType().name(); if (type.contains("MINECART")) { event.setCancelled(true); } }
@EventHandler public void onEntityPortal(EntityPortalEvent e) { if(e.isCancelled()) { return; } e.setCancelled(true); Block block = getPortalNearby(e.getEntity().getLocation().getBlock()); if(!(block instanceof Block)) { return; } for(Portal portal : pl.getConfiguration().getPortalConfig().getPortals().values()) { if(portal.getInnerBlocks().contains(block)) { if(e.getEntity() instanceof Item) { e.setCancelled(true); return; } e.useTravelAgent(false); if(portal.isLinked()) { Portal linked = portal.getLinkedPortal(); if(!(linked instanceof Portal)) { e.setCancelled(true); return; } e.setTo(linked.getInnerBlocks().get(linked.getInnerBlocks().size()-1).getLocation()); e.setCancelled(false); } else { e.setCancelled(true); } break; } } e.setCancelled(false); }
/** * Prevent party members from going through portals (end, nether). * @param e The portal event. */ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onEntityPortalEvent(EntityPortalEvent e) { if (isFromParty(e.getEntity())) { e.setCancelled(true); } }
@EventHandler public void onPortalTravel(EntityPortalEvent e) { if(!(e.getEntity() instanceof Player)) { e.setCancelled(true); e.getEntity().teleport(e.getEntity().getLocation().add(0,15,0)); } }
/** * This handles non-player portal use * Currently disables portal use by entities * * @param event */ @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) public void onEntityPortal(EntityPortalEvent event) { if (DEBUG) plugin.getLogger().info("DEBUG: nether portal entity " + event.getFrom().getBlock().getType()); // If the nether is disabled then quit immediately if (!Settings.netherGenerate || IslandWorld.getNetherWorld() == null) { return; } if (event.getEntity() == null) { return; } if (event.getFrom() != null && event.getFrom().getBlock().getType().equals(Material.ENDER_PORTAL)) { event.setCancelled(true); // Same action for all worlds except the end itself if (!event.getFrom().getWorld().getEnvironment().equals(Environment.THE_END)) { if (plugin.getServer().getWorld(Settings.worldName + "_the_end") != null) { // The end exists Location end_place = plugin.getServer().getWorld(Settings.worldName + "_the_end").getSpawnLocation(); event.getEntity().teleport(end_place); if (DEBUG) plugin.getLogger().info("DEBUG: Result teleported " + event.getEntityType() + " to " + end_place); return; } } return; } Location currentLocation = event.getFrom().clone(); String currentWorld = currentLocation.getWorld().getName(); // Only operate if this is Island territory if (!currentWorld.equalsIgnoreCase(Settings.worldName) && !currentWorld.equalsIgnoreCase(Settings.worldName + "_nether")) { return; } // No entities may pass with the old nether if (!Settings.netherIslands) { event.setCancelled(true); return; } // New nether // Entities can pass only if there are adjoining portals Location dest = event.getFrom().toVector().toLocation(IslandWorld.getIslandWorld()); if (event.getFrom().getWorld().getEnvironment().equals(Environment.NORMAL)) { dest = event.getFrom().toVector().toLocation(IslandWorld.getNetherWorld()); } // Vehicles if (event.getEntity() instanceof Vehicle) { Vehicle vehicle = (Vehicle)event.getEntity(); vehicle.eject(); } new SafeSpotTeleport(plugin, event.getEntity(), dest); event.setCancelled(true); }
@EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL) public void onEntityPortal(EntityPortalEvent event) { if (event.getEntity() instanceof EnderDragon) { event.setCancelled(true); } }
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH) public void onEntityPortalEnter(EntityPortalEvent event) { if (event.getEntity() instanceof EnderDragon) { event.setCancelled(true); } }
public static void teleportEntity(final EntityPortalEvent event, final Map<String, String> location) { if (Conf.bungeeCordSupport && (event.getEntityType().isSpawnable() && !EntityUtil.isEchoPet(event.getEntity()) || event.getEntityType() == EntityType.DROPPED_ITEM)) { // Send spawn command packet via BungeeCord if (!Conf.useSocketComms || Plugin.serv == null) { // Send AGBungeeSpawn packet final PluginMessage msg = new PluginMessage(event.getEntityType(), event.getEntity(), location); // Send over the AGBungeeTele BungeeCord channel if (Plugin.instance.getServer().getOnlinePlayers().size() > 0) { // Use any player to send the plugin message Iterables.getFirst(Bukkit.getOnlinePlayers(), null).sendPluginMessage(Plugin.instance, "BungeeCord", msg.toByteArray()); // Imitate teleport by removing entity event.getEntity().remove(); } // Send spawn command packet via client socket } else if (!entityCache.asMap().containsKey(event.getEntity().getEntityId())) { // Put entity in cache so we don't end up with duplicate entities entityCache.put(event.getEntity().getEntityId(), event.getEntity()); // Get server final Server server = Server.get(location.get(SERVER)); // Construct spawn entity packet final Packet packet = new Packet(event.getEntity(), event.getEntityType(), location); // Setup socket client and listener final SocketClient client = new SocketClient(server.getAddress(), server.getPort(), server.getPassword()); client.setListener(new SocketClientEventListener() { @Override public void onServerMessageRecieve(final SocketClient client1, final Packets packets) { for (final Packet packet1 : packets.packets) { if (packet1.command.toLowerCase().equals("removeentity")) { // Extract receiving packet arguments final String world = String.valueOf(packet1.args[0]); final int entityId = Integer.parseInt(packet1.args[1]); // Iterate and remove teleported entity final List<Entity> entities = Bukkit.getServer().getWorld(world).getEntities(); final Iterator<Entity> it = entities.iterator(); while (it.hasNext()) { final Entity entity = it.next(); if (entity.getEntityId() == entityId) { entityCache.invalidate(entityId); entity.remove(); break; } } } } client1.close(); } @Override public void onServerMessageError() { } }); // Connect and send packet try { client.connect(); client.send(packet); } catch (final Exception e) { Plugin.log(Level.SEVERE, "Error sending spawn packet to the server."); } } } }
/** * This handles non-player portal use * Currently disables portal use by entities * * @param event */ @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) public void onEntityPortal(EntityPortalEvent event) { if (DEBUG) plugin.getLogger().info("DEBUG: nether portal entity " + event.getFrom().getBlock().getType()); // If the nether is disabled then quit immediately if (!Settings.createNether || ASkyBlock.getNetherWorld() == null) { if (DEBUG) plugin.getLogger().info("DEBUG: Disabled nether: Settings create nether = " + Settings.createNether + " " + (ASkyBlock.getNetherWorld() == null ? "Nether world is null": "Nether world is not null")); return; } if (event.getEntity() == null) { if (DEBUG) plugin.getLogger().info("DEBUG: entity is null"); return; } if (event.getFrom() != null && event.getFrom().getBlock().getType().equals(Material.ENDER_PORTAL)) { event.setCancelled(true); // Same action for all worlds except the end itself if (!event.getFrom().getWorld().getEnvironment().equals(Environment.THE_END)) { if (plugin.getServer().getWorld(Settings.worldName + "_the_end") != null) { // The end exists Location end_place = plugin.getServer().getWorld(Settings.worldName + "_the_end").getSpawnLocation(); event.getEntity().teleport(end_place); if (DEBUG) plugin.getLogger().info("DEBUG: Result teleported " + event.getEntityType() + " to " + end_place); return; } } return; } Location currentLocation = event.getFrom().clone(); String currentWorld = currentLocation.getWorld().getName(); // Only operate if this is Island territory if (!currentWorld.equalsIgnoreCase(Settings.worldName) && !currentWorld.equalsIgnoreCase(Settings.worldName + "_nether")) { if (DEBUG) plugin.getLogger().info("DEBUG: not an island world"); return; } // No entities may pass with the old nether if (!Settings.newNether) { if (DEBUG) plugin.getLogger().info("DEBUG: no entities may pass with old nether"); event.setCancelled(true); return; } // New nether // Entities can pass only if there are adjoining portals Location dest = event.getFrom().toVector().toLocation(ASkyBlock.getIslandWorld()); if (event.getFrom().getWorld().getEnvironment().equals(Environment.NORMAL)) { dest = event.getFrom().toVector().toLocation(ASkyBlock.getNetherWorld()); } // Vehicles if (event.getEntity() instanceof Vehicle) { Vehicle vehicle = (Vehicle)event.getEntity(); vehicle.eject(); } new SafeSpotTeleport(plugin, event.getEntity(), dest); event.setCancelled(true); }
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = false) public void onEntityUsePortal(final EntityPortalEvent event) { this.plugin.entering(this.getClass(), "onEntityUsePortal", "entity=" + event.getEntityType() + ";from=" + NLocation.toString(event.getFrom()) + ";to=" + NLocation.toString(event.getTo())); if (event.getEntityType() == EntityType.ENDER_DRAGON) { this.plugin.exiting(this.getClass(), "onEntityUsePortal", "EnderDragon should really stay in the End!"); event.setCancelled(true); return; } final GeneralWorld world = this.plugin.getWorlds().get(event.getFrom().getWorld().getName()); if (GeneralWorld.WorldType.isStock(world)) { this.plugin.exiting(this.getClass(), "onEntityUsePortal", "Stock world!"); return; } // Build a fake TeleportCause based on From and To locations PlayerTeleportEvent.TeleportCause cause = null; final Block block = event.getFrom().getBlock(); switch (block.getType()) { case PORTAL: cause = PlayerTeleportEvent.TeleportCause.NETHER_PORTAL; break; case ENDER_PORTAL: cause = PlayerTeleportEvent.TeleportCause.END_PORTAL; break; default: this.plugin.debug("Strange block found: " + block.getType() + ", trying to find a portal block near the Location"); for (final BlockFace face : blockFaces) { if (block.getRelative(face).getType() == Material.PORTAL) { cause = PlayerTeleportEvent.TeleportCause.NETHER_PORTAL; this.plugin.debug("Found a Nether Portal block at " + NLocation.toString(block.getRelative(face).getLocation())); break; } else if (block.getRelative(face).getType() == Material.ENDER_PORTAL) { cause = PlayerTeleportEvent.TeleportCause.END_PORTAL; this.plugin.debug("Found an End Portal block at " + NLocation.toString(block.getRelative(face).getLocation())); break; } } if (cause == null) { cause = PlayerTeleportEvent.TeleportCause.PLUGIN; } break; } if (world.getType() == WorldType.ADDITIONAL) { final AdditionalWorld additionalWorld = (AdditionalWorld)world; if (cause == TeleportCause.NETHER_PORTAL && !additionalWorld.hasNether()) { event.setCancelled(true); this.plugin.exiting(this.getClass(), "onEntityUsePortal", "doesn't have required subworld (nether)"); return; } else if (cause == TeleportCause.END_PORTAL && !additionalWorld.hasEnd()) { event.setCancelled(true); this.plugin.exiting(this.getClass(), "onEntityUsePortal", "doesn't have required subworld (end)"); return; } } final PortalEventResult result = this.handlePortalEvent(event.getFrom(), cause, event.getPortalTravelAgent()); if (result == null) { this.plugin.exiting(this.getClass(), "onEntityUsePortal", "result is null"); return; } if (result.destination != null) { event.setTo(result.destination); } if (result.useTravelAgent) { event.useTravelAgent(true); } if (result.cancelEvent) { event.setCancelled(true); } this.plugin.exiting(this.getClass(), "onEntityUsePortal"); }
@EventHandler(ignoreCancelled = true) void onEntityPortalTeleport(EntityPortalEvent event) { if (plugin.isShopkeeper(event.getEntity())) { event.setCancelled(true); } }
@EventHandler public void onEntityPortalEvent(EntityPortalEvent evt) { }