diff --git a/src/main/java/com/onarandombox/MultiverseCore/MultiverseCore.java b/src/main/java/com/onarandombox/MultiverseCore/MultiverseCore.java index 3d39e8a9..f7bf1039 100644 --- a/src/main/java/com/onarandombox/MultiverseCore/MultiverseCore.java +++ b/src/main/java/com/onarandombox/MultiverseCore/MultiverseCore.java @@ -58,6 +58,7 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core { public static boolean EnforceGameModes; public static boolean PrefixChat; public static boolean DisplayPermErrors; + public static boolean TeleportIntercept; public static Map teleportQueue = new HashMap(); private AnchorManager anchorManager = new AnchorManager(this); @@ -325,6 +326,7 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core { EnforceGameModes = this.multiverseConfig.getBoolean("enforcegamemodes", true); PrefixChat = this.multiverseConfig.getBoolean("worldnameprefix", true); DisplayPermErrors = this.multiverseConfig.getBoolean("displaypermerrors", true); + TeleportIntercept = this.multiverseConfig.getBoolean("teleportintercept", true); // Default as the server.props world. this.worldManager.setFirstSpawnWorld(this.multiverseConfig.getString("firstspawnworld", getDefaultWorldName())); DisplayPermErrors = this.multiverseConfig.getBoolean("displaypermerrors", true); diff --git a/src/main/java/com/onarandombox/MultiverseCore/commands/VersionCommand.java b/src/main/java/com/onarandombox/MultiverseCore/commands/VersionCommand.java index 14228da2..990462ef 100644 --- a/src/main/java/com/onarandombox/MultiverseCore/commands/VersionCommand.java +++ b/src/main/java/com/onarandombox/MultiverseCore/commands/VersionCommand.java @@ -56,6 +56,7 @@ public class VersionCommand extends MultiverseCommand { logAndAddToPasteBinBuffer("enforceaccess: " + MultiverseCore.EnforceAccess); logAndAddToPasteBinBuffer("enforcegamemodes: " + MultiverseCore.EnforceGameModes); logAndAddToPasteBinBuffer("displaypermerrors: " + MultiverseCore.DisplayPermErrors); + logAndAddToPasteBinBuffer("teleportintercept: " + MultiverseCore.TeleportIntercept); logAndAddToPasteBinBuffer("debug: " + MultiverseCore.GlobalDebug); logAndAddToPasteBinBuffer("Special Code: FRN002"); diff --git a/src/main/java/com/onarandombox/MultiverseCore/enums/ConfigProperty.java b/src/main/java/com/onarandombox/MultiverseCore/enums/ConfigProperty.java index f0e85aa6..1b7c7cf4 100644 --- a/src/main/java/com/onarandombox/MultiverseCore/enums/ConfigProperty.java +++ b/src/main/java/com/onarandombox/MultiverseCore/enums/ConfigProperty.java @@ -8,7 +8,7 @@ package com.onarandombox.MultiverseCore.enums; public enum ConfigProperty { - messagecooldown, teleportcooldown, worldnameprefix, enforcegamemodes, enforceaccess, displaypermerrors, debug, firstworldspawn; + messagecooldown, teleportcooldown, worldnameprefix, enforcegamemodes, enforceaccess, displaypermerrors, debug, firstworldspawn, teleportintercept; public static String getAllValues() { String buffer = ""; diff --git a/src/main/java/com/onarandombox/MultiverseCore/utils/PermissionTools.java b/src/main/java/com/onarandombox/MultiverseCore/utils/PermissionTools.java index bba4ff62..2e0f9e5b 100644 --- a/src/main/java/com/onarandombox/MultiverseCore/utils/PermissionTools.java +++ b/src/main/java/com/onarandombox/MultiverseCore/utils/PermissionTools.java @@ -83,18 +83,32 @@ public class PermissionTools { } public boolean playerHasMoneyToEnter(MultiverseWorld fromWorld, MultiverseWorld toWorld, CommandSender teleporter, Player teleportee, boolean pay) { - if (teleporter instanceof ConsoleCommandSender) { - return true; - } + Player teleporterPlayer; + if (MultiverseCore.TeleportIntercept) { + if (teleporter instanceof ConsoleCommandSender) { + return true; + } - if (teleporter == null) { - teleporter = teleportee; - } + if (teleporter == null && MultiverseCore.TeleportIntercept) { + teleporter = teleportee; + } - if (!(teleporter instanceof Player)) { - return false; + if (!(teleporter instanceof Player)) { + return false; + } + teleporterPlayer = (Player) teleporter; + } else { + if (teleporter instanceof Player) { + teleporterPlayer = (Player) teleporter; + } else { + teleporterPlayer = null; + } + + // Old-style! + if (teleporterPlayer == null) { + return true; + } } - Player teleporterPlayer = (Player) teleporter; // Only check payments if it's a different world: if (!toWorld.equals(fromWorld)) { @@ -132,21 +146,35 @@ public class PermissionTools { public boolean playerCanGoFromTo(MultiverseWorld fromWorld, MultiverseWorld toWorld, CommandSender teleporter, Player teleportee) { this.plugin.log(Level.FINEST, "Checking '" + teleporter + "' can send '" + teleportee + "' somewhere"); - // The console can send anyone anywhere - if (teleporter instanceof ConsoleCommandSender) { - return true; - } + Player teleporterPlayer; + if(MultiverseCore.TeleportIntercept) { + // The console can send anyone anywhere + if (teleporter instanceof ConsoleCommandSender) { + return true; + } - // Make sure we have a teleporter of some kind, even if it's inferred to be the teleportee - if (teleporter == null) { - teleporter = teleportee; - } + // Make sure we have a teleporter of some kind, even if it's inferred to be the teleportee + if (teleporter == null) { + teleporter = teleportee; + } - // Now make sure we can cast the teleporter to a player, 'cause I'm tired of console things now - if (!(teleporter instanceof Player)) { - return false; + // Now make sure we can cast the teleporter to a player, 'cause I'm tired of console things now + if (!(teleporter instanceof Player)) { + return false; + } + teleporterPlayer = (Player) teleporter; + } else { + if (teleporter instanceof Player) { + teleporterPlayer = (Player) teleporter; + } else { + teleporterPlayer = null; + } + + // Old-style! + if (teleporterPlayer == null) { + return true; + } } - Player teleporterPlayer = (Player) teleporter; // Actual checks if (toWorld != null) { diff --git a/src/main/resources/defaults/config.yml b/src/main/resources/defaults/config.yml index 0a74ebd6..aec58797 100644 --- a/src/main/resources/defaults/config.yml +++ b/src/main/resources/defaults/config.yml @@ -10,3 +10,4 @@ enforcegamemodes: true bedrespawn: true version: 2.4 displaypermerrors: true +teleportintercept: true