Add optional per-arena exit warp.

This commit is contained in:
garbagemule
2013-08-01 16:13:24 +02:00
parent f43293a376
commit dbe5f4d20f
5 changed files with 23 additions and 6 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
name: MobArena name: MobArena
author: garbagemule author: garbagemule
main: com.garbagemule.MobArena.MobArena main: com.garbagemule.MobArena.MobArena
version: 0.95.5.5 version: 0.95.5.8
softdepend: [Spout,Towny,Heroes,MagicSpells,Vault] softdepend: [Spout,Towny,Heroes,MagicSpells,Vault]
commands: commands:
ma: ma:
@@ -826,6 +826,7 @@ public class ArenaImpl implements Arena
// If there's no player stored, create a new one! // If there's no player stored, create a new one!
if (mp == null) { if (mp == null) {
if (region.getExitWarp() != null) loc = region.getExitWarp();
mp = new PlayerData(p, loc); mp = new PlayerData(p, loc);
playerData.put(p, mp); playerData.put(p, mp);
} }
@@ -9,15 +9,20 @@ import com.garbagemule.MobArena.*;
import com.garbagemule.MobArena.commands.*; import com.garbagemule.MobArena.commands.*;
import com.garbagemule.MobArena.framework.ArenaMaster; import com.garbagemule.MobArena.framework.ArenaMaster;
import java.util.Arrays;
import java.util.List;
@CommandInfo( @CommandInfo(
name = "setwarp", name = "setwarp",
pattern = "set(warp|point)", pattern = "set(warp|point)",
usage = "/ma setwarp arena|lobby|spectator", usage = "/ma setwarp arena|lobby|spectator|exit",
desc = "set a warp point for an arena", desc = "set a warp point for an arena",
permission = "mobarena.setup.setwarp" permission = "mobarena.setup.setwarp"
) )
public class SetWarpCommand implements Command public class SetWarpCommand implements Command
{ {
private static final List<String> WARPS = Arrays.asList("arena", "lobby", "spectator", "exit");
@Override @Override
public boolean execute(ArenaMaster am, CommandSender sender, String... args) { public boolean execute(ArenaMaster am, CommandSender sender, String... args) {
if (!Commands.isPlayer(sender)) { if (!Commands.isPlayer(sender)) {
@@ -31,7 +36,10 @@ public class SetWarpCommand implements Command
// Cast the sender. // Cast the sender.
Player p = (Player) sender; Player p = (Player) sender;
if (!(arg1.equals("arena") || arg1.equals("lobby") || arg1.equals("spectator"))) { // spec -> spectator
if (arg1.equals("spec")) arg1 = "spectator";
if (!WARPS.contains(arg1)) {
Messenger.tellPlayer(sender, "Usage: /ma setwarp arena|lobby|spectator"); Messenger.tellPlayer(sender, "Usage: /ma setwarp arena|lobby|spectator");
return true; return true;
} }
@@ -29,7 +29,7 @@ public class ArenaRegion
private World world; private World world;
private Location lastP1, lastP2, lastL1, lastL2; private Location lastP1, lastP2, lastL1, lastL2;
private Location p1, p2, l1, l2, arenaWarp, lobbyWarp, specWarp, leaderboard; private Location p1, p2, l1, l2, arenaWarp, lobbyWarp, specWarp, exitWarp, leaderboard;
private Map<String,Location> spawnpoints, containers; private Map<String,Location> spawnpoints, containers;
private boolean setup, lobbySetup; private boolean setup, lobbySetup;
@@ -77,6 +77,7 @@ public class ArenaRegion
arenaWarp = coords.getLocation("arena", world); arenaWarp = coords.getLocation("arena", world);
lobbyWarp = coords.getLocation("lobby", world); lobbyWarp = coords.getLocation("lobby", world);
specWarp = coords.getLocation("spectator", world); specWarp = coords.getLocation("spectator", world);
exitWarp = coords.getLocation("exit", world);
leaderboard = coords.getLocation("leaderboard", world); leaderboard = coords.getLocation("leaderboard", world);
} }
@@ -177,7 +178,8 @@ public class ArenaRegion
public boolean isWarp(Location l) { public boolean isWarp(Location l) {
return (l.equals(arenaWarp) || return (l.equals(arenaWarp) ||
l.equals(lobbyWarp) || l.equals(lobbyWarp) ||
l.equals(specWarp)); l.equals(specWarp) ||
l.equals(exitWarp));
} }
public boolean contains(Location l) { public boolean contains(Location l) {
@@ -364,6 +366,10 @@ public class ArenaRegion
return specWarp; return specWarp;
} }
public Location getExitWarp() {
return exitWarp;
}
public Location getSpawnpoint(String name) { public Location getSpawnpoint(String name) {
return spawnpoints.get(name); return spawnpoints.get(name);
} }
@@ -393,6 +399,7 @@ public class ArenaRegion
case L2: setPoint(point, loc); return; case L2: setPoint(point, loc); return;
case ARENA: case ARENA:
case LOBBY: case LOBBY:
case EXIT:
case SPECTATOR: setWarp(point, loc); return; case SPECTATOR: setWarp(point, loc); return;
case LEADERBOARD: setLeaderboard(loc); return; case LEADERBOARD: setLeaderboard(loc); return;
} }
@@ -8,6 +8,7 @@ public enum RegionPoint {
ARENA, ARENA,
LOBBY, LOBBY,
SPECTATOR, SPECTATOR,
EXIT,
LEADERBOARD; LEADERBOARD;
@Override @Override