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

View File

@ -1,7 +1,7 @@
name: MobArena
author: garbagemule
main: com.garbagemule.MobArena.MobArena
version: 0.95.5.5
version: 0.95.5.8
softdepend: [Spout,Towny,Heroes,MagicSpells,Vault]
commands:
ma:

View File

@ -826,6 +826,7 @@ public class ArenaImpl implements Arena
// If there's no player stored, create a new one!
if (mp == null) {
if (region.getExitWarp() != null) loc = region.getExitWarp();
mp = new PlayerData(p, loc);
playerData.put(p, mp);
}

View File

@ -9,15 +9,20 @@ import com.garbagemule.MobArena.*;
import com.garbagemule.MobArena.commands.*;
import com.garbagemule.MobArena.framework.ArenaMaster;
import java.util.Arrays;
import java.util.List;
@CommandInfo(
name = "setwarp",
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",
permission = "mobarena.setup.setwarp"
)
public class SetWarpCommand implements Command
{
private static final List<String> WARPS = Arrays.asList("arena", "lobby", "spectator", "exit");
@Override
public boolean execute(ArenaMaster am, CommandSender sender, String... args) {
if (!Commands.isPlayer(sender)) {
@ -30,8 +35,11 @@ public class SetWarpCommand implements Command
// Cast the 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");
return true;
}

View File

@ -29,7 +29,7 @@ public class ArenaRegion
private World world;
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 boolean setup, lobbySetup;
@ -77,6 +77,7 @@ public class ArenaRegion
arenaWarp = coords.getLocation("arena", world);
lobbyWarp = coords.getLocation("lobby", world);
specWarp = coords.getLocation("spectator", world);
exitWarp = coords.getLocation("exit", world);
leaderboard = coords.getLocation("leaderboard", world);
}
@ -177,7 +178,8 @@ public class ArenaRegion
public boolean isWarp(Location l) {
return (l.equals(arenaWarp) ||
l.equals(lobbyWarp) ||
l.equals(specWarp));
l.equals(specWarp) ||
l.equals(exitWarp));
}
public boolean contains(Location l) {
@ -363,6 +365,10 @@ public class ArenaRegion
public Location getSpecWarp() {
return specWarp;
}
public Location getExitWarp() {
return exitWarp;
}
public Location getSpawnpoint(String name) {
return spawnpoints.get(name);
@ -393,6 +399,7 @@ public class ArenaRegion
case L2: setPoint(point, loc); return;
case ARENA:
case LOBBY:
case EXIT:
case SPECTATOR: setWarp(point, loc); return;
case LEADERBOARD: setLeaderboard(loc); return;
}

View File

@ -8,6 +8,7 @@ public enum RegionPoint {
ARENA,
LOBBY,
SPECTATOR,
EXIT,
LEADERBOARD;
@Override