/** * This method is called when a player actually portals via a vanilla style portal. * * @param event The Event that was fired. */ @EventHandler(priority = EventPriority.HIGH) public void playerPortal(PlayerPortalEvent event) { if (event.isCancelled() || (event.getFrom() == null)) { return; } // The adjust should have happened much earlier. if (event.getTo() == null) { return; } MultiverseWorld fromWorld = this.worldManager.getMVWorld(event.getFrom().getWorld().getName()); MultiverseWorld toWorld = this.worldManager.getMVWorld(event.getTo().getWorld().getName()); if (event.getFrom().getWorld().equals(event.getTo().getWorld())) { // The player is Portaling to the same world. this.plugin.log( Level.FINER, "Player '" + event.getPlayer().getName() + "' is portaling to the same world."); return; } event.setCancelled( !pt.playerHasMoneyToEnter(fromWorld, toWorld, event.getPlayer(), event.getPlayer(), true)); if (event.isCancelled()) { this.plugin.log( Level.FINE, "Player '" + event.getPlayer().getName() + "' was DENIED ACCESS to '" + event.getTo().getWorld().getName() + "' because they don't have the FUNDS required to enter."); return; } if (plugin.getMVConfig().getEnforceAccess()) { event.setCancelled( !pt.playerCanGoFromTo(fromWorld, toWorld, event.getPlayer(), event.getPlayer())); if (event.isCancelled()) { this.plugin.log( Level.FINE, "Player '" + event.getPlayer().getName() + "' was DENIED ACCESS to '" + event.getTo().getWorld().getName() + "' because they don't have: multiverse.access." + event.getTo().getWorld().getName()); } } else { this.plugin.log( Level.FINE, "Player '" + event.getPlayer().getName() + "' was allowed to go to '" + event.getTo().getWorld().getName() + "' because enforceaccess is off."); } if (!plugin.getMVConfig().isUsingDefaultPortalSearch() && event.getPortalTravelAgent() != null) { event.getPortalTravelAgent().setSearchRadius(plugin.getMVConfig().getPortalSearchRadius()); } }
/** * Called when the portal is ready to take the player to the destination. * * @param event The Portal event. */ @EventHandler public void playerPortal(PlayerPortalEvent event) { if (event.isCancelled()) { return; } PortalDetector detector = new PortalDetector(this.plugin); try { String destString = detector.getNotchPortalDestination(event.getPlayer(), event.getFrom()); if (destString != null) { this.plugin.log(Level.FINER, "Found a Multiverse Sign"); DestinationFactory df = this.plugin.getCore().getDestFactory(); event.useTravelAgent(true); MVDestination dest = df.getDestination(destString); event.setPortalTravelAgent( new MVTravelAgent(this.plugin.getCore(), dest, event.getPlayer())); event.setTo(dest.getLocation(event.getPlayer())); } } catch (NoMultiverseSignFoundException e) { // This will simply act as a notch portal. this.plugin.log(Level.FINER, "Did NOT find a Multiverse Sign"); } catch (MoreThanOneSignFoundException e) { this.plugin .getCore() .getMessaging() .sendMessage( event.getPlayer(), String.format( "%sSorry %sbut more than 1 sign was found where the second line was [mv] or [multiverse]. Please remove one of the signs.", ChatColor.RED, ChatColor.WHITE), false); event.setCancelled(true); } }
@EventHandler(priority = EventPriority.HIGHEST) public void onPlayerPortal(PlayerPortalEvent event) { if (event.isCancelled()) return; final Player player = event.getPlayer(); if (player.getWorld() != plugin.getIslandWorld()) return; if (player.isOp()) return; if (player.hasPermission("islandworld.bypass.island")) return; if (!(plugin.getConfig().getBoolean("flags.use-portal", false) || plugin.canBuildOnLocation(player, event.getFrom()))) event.setCancelled(true); plugin.debug("Event :" + event.getEventName() + ", cancelled:" + event.isCancelled()); }