v0.92 - Added Permissions support

This commit is contained in:
Garbage Mule
2011-07-03 16:20:02 +02:00
parent b5eb307513
commit eae0439e25
7 changed files with 186 additions and 79 deletions
BIN
View File
Binary file not shown.
+16 -3
View File
@@ -288,9 +288,8 @@ public class Arena
if (deadPlayers.remove(p)) clear = false; if (deadPlayers.remove(p)) clear = false;
if (specPlayers.remove(p)) clear = false; if (specPlayers.remove(p)) clear = false;
if (clear) if (clear) MAUtils.clearInventory(p);
MAUtils.clearInventory(p); if (!emptyInv) MAUtils.restoreInventory(p);
MAUtils.restoreInventory(p);
if (running && livePlayers.isEmpty()) if (running && livePlayers.isEmpty())
endArena(); endArena();
@@ -943,6 +942,12 @@ public class Arena
if (!classes.contains(className)) if (!classes.contains(className))
return; return;
if (!MobArena.hasDefTrue(p, "mobarena.classes." + className))
{
MAUtils.tellPlayer(p, MAMessages.get(Msg.LOBBY_CLASS_PERMISSION));
return;
}
// Set the player's class. // Set the player's class.
assignClass(p, className); assignClass(p, className);
MAUtils.tellPlayer(p, MAMessages.get(Msg.LOBBY_CLASS_PICKED, className)); MAUtils.tellPlayer(p, MAMessages.get(Msg.LOBBY_CLASS_PICKED, className));
@@ -1070,6 +1075,14 @@ public class Arena
return result; return result;
} }
public List<Player> getNonreadyPlayers()
{
List<Player> result = new LinkedList<Player>();
result.addAll(livePlayers);
result.removeAll(readyPlayers);
return result;
}
public List<Player> getDeadPlayers() public List<Player> getDeadPlayers()
{ {
List<Player> result = new LinkedList<Player>(); List<Player> result = new LinkedList<Player>();
+107 -64
View File
@@ -92,8 +92,8 @@ public class MACommands implements CommandExecutor
// Grab the command base and any arguments. // Grab the command base and any arguments.
String base = args[0].toLowerCase(); String base = args[0].toLowerCase();
String arg1 = (args.length >= 2) ? args[1].toLowerCase() : null; String arg1 = (args.length > 1) ? args[1].toLowerCase() : "";
String arg2 = (args.length >= 3) ? args[2].toLowerCase() : null; String arg2 = (args.length > 2) ? args[2].toLowerCase() : "";
//String arg3 = (args.length >= 4) ? args[3].toLowerCase() : null; //String arg3 = (args.length >= 4) ? args[3].toLowerCase() : null;
@@ -109,15 +109,15 @@ public class MACommands implements CommandExecutor
*/ */
if (base.equals("join") || base.equals("j")) if (base.equals("join") || base.equals("j"))
{ {
if (!player) if (!player || !MobArena.has(p, "mobarena.use.join"))
{ {
MAUtils.tellPlayer(sender, "Players only."); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true; return true;
} }
boolean error; boolean error;
if (arg1 != null) if (!arg1.isEmpty())
{ {
Arena arena = am.getArenaWithName(arg1); Arena arena = am.getArenaWithName(arg1);
@@ -152,8 +152,7 @@ public class MACommands implements CommandExecutor
MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_PLAYER_JOINED)); MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_PLAYER_JOINED));
return true; return true;
} }
else
if (arg1 == null)
{ {
if (am.arenas.size() < 1) if (am.arenas.size() < 1)
{ {
@@ -202,9 +201,9 @@ public class MACommands implements CommandExecutor
*/ */
if (base.equals("leave") || base.equals("l")) if (base.equals("leave") || base.equals("l"))
{ {
if (!player) if (!player || !MobArena.has(p, "mobarena.use.leave"))
{ {
MAUtils.tellPlayer(sender, "Players only."); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true; return true;
} }
@@ -225,16 +224,16 @@ public class MACommands implements CommandExecutor
*/ */
if (base.equals("spectate") || base.equals("spec")) if (base.equals("spectate") || base.equals("spec"))
{ {
if (!player) if (!player || !MobArena.has(p, "mobarena.use.spectate"))
{ {
MAUtils.tellPlayer(sender, "Players only."); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true; return true;
} }
boolean error; boolean error;
Arena arena = null; Arena arena = null;
if (arg1 != null) if (!arg1.isEmpty())
{ {
arena = am.getArenaWithName(arg1); arena = am.getArenaWithName(arg1);
@@ -296,7 +295,7 @@ public class MACommands implements CommandExecutor
*/ */
if (base.equals("players") || base.equals("list")) if (base.equals("players") || base.equals("list"))
{ {
if (arg1 != null) if (!arg1.isEmpty())
{ {
Arena arena = am.getArenaWithName(arg1); Arena arena = am.getArenaWithName(arg1);
if (arena == null) if (arena == null)
@@ -312,20 +311,55 @@ public class MACommands implements CommandExecutor
{ {
StringBuffer buffy = new StringBuffer(); StringBuffer buffy = new StringBuffer();
for (Arena arena : am.arenas) for (Arena arena : am.arenas)
buffy.append(MAUtils.listToString(arena.getLivingPlayers())); buffy.append(MAUtils.listToString(arena.getLivingPlayers(), false));
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_LIST_PLAYERS, buffy.toString())); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_LIST_PLAYERS, buffy.toString()));
} }
return true; return true;
} }
/*
* Prints a list of all non-ready players in current arena, or non-ready players in a specific arena.
*/
if (base.equals("notready"))
{
Arena arena;
if (!arg1.isEmpty())
{
arena = am.getArenaWithName(arg1);
if (arena == null)
{
MAUtils.tellPlayer(sender, MAMessages.get(Msg.ARENA_DOES_NOT_EXIST));
return true;
}
}
else if (player)
{
arena = am.getArenaWithPlayer(p);
if (arena == null)
{
MAUtils.tellPlayer(sender, MAMessages.get(Msg.LEAVE_NOT_PLAYING));
return true;
}
}
else
{
MAUtils.tellPlayer(sender, "Usage: /ma notready <arena name>");
return true;
}
String list = MAUtils.listToString(arena.getNonreadyPlayers());
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_LIST_PLAYERS, list));
return true;
}
/* /*
* Restore a player's inventory. * Restore a player's inventory.
*/ */
if (base.equals("restore")) if (base.equals("restore"))
{ {
if (arg1 == null && player) if (arg1.isEmpty() && player)
{ {
if (am.getArenaWithPlayer((Player) sender) != null) if (am.getArenaWithPlayer(p) != null)
{ {
MAUtils.tellPlayer(sender, "You must first leave the current arena."); MAUtils.tellPlayer(sender, "You must first leave the current arena.");
return true; return true;
@@ -335,7 +369,7 @@ public class MACommands implements CommandExecutor
MAUtils.tellPlayer(sender, "Restored your inventory!"); MAUtils.tellPlayer(sender, "Restored your inventory!");
return true; return true;
} }
if (arg1 != null && (op || console)) if (!arg1.isEmpty() && (op || console))
{ {
if (am.getArenaWithPlayer(arg1) != null) if (am.getArenaWithPlayer(arg1) != null)
{ {
@@ -362,13 +396,14 @@ public class MACommands implements CommandExecutor
*/ */
if ((base.equals("enable") || base.equals("disable"))) if ((base.equals("enable") || base.equals("disable")))
{ {
if (!(op || console)) if (!console && !(player && MobArena.has(p, "mobarena.admin.enable")) && !op)
//if (player && !MobArena.has(p, "mobarena.admin.enable"))
{ {
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true; return true;
} }
if (arg1 != null) if (!arg1.isEmpty())
{ {
Arena arena = am.getArenaWithName(arg1); Arena arena = am.getArenaWithName(arg1);
if (arena != null) if (arena != null)
@@ -396,12 +431,12 @@ public class MACommands implements CommandExecutor
*/ */
if (base.equals("protect")) if (base.equals("protect"))
{ {
if (!(op || console)) if (!console && !(player && MobArena.has(p, "mobarena.admin.protect")) && !op)
{ {
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true; return true;
} }
if (arg1 == null || !arg1.matches("^[a-zA-Z][a-zA-Z0-9_]*$") || arg2 == null || !(arg2.equals("true") || arg2.equals("false"))) if (arg1.isEmpty() || !arg1.matches("^[a-zA-Z][a-zA-Z0-9_]*$") || !(arg2.equals("true") || arg2.equals("false")))
{ {
MAUtils.tellPlayer(sender, "Usage: /ma protect <arena name> [true|false]"); MAUtils.tellPlayer(sender, "Usage: /ma protect <arena name> [true|false]");
return true; return true;
@@ -424,22 +459,17 @@ public class MACommands implements CommandExecutor
/* /*
* Force start/end arenas. * Force start/end arenas.
*/ */
if (base.equals("force")) if (base.equals("force") && arg1.equals("end"))
{ {
if (!(op || console)) if (arg1.equals("end"))
{
if (!console && !(player && MobArena.has(p, "mobarena.admin.force.end")) && !op)
{ {
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true; return true;
} }
if (arg1 == null || !arg1.matches("^[a-zA-Z][a-zA-Z0-9_]*$"))
{
MAUtils.tellPlayer(sender, "Usage: /ma force [start|end] (<arena name>)");
return true;
}
if (arg1.equals("end")) if (arg2.isEmpty())
{
if (arg2 == null)
{ {
for (Arena arena : am.arenas) for (Arena arena : am.arenas)
arena.forceEnd(); arena.forceEnd();
@@ -447,11 +477,6 @@ public class MACommands implements CommandExecutor
am.arenaMap.clear(); am.arenaMap.clear();
return true; return true;
} }
if (!arg2.matches("^[a-zA-Z][a-zA-Z0-9_]*$"))
{
MAUtils.tellPlayer(sender, "Usage: /ma force end (<arena name>)");
return true;
}
Arena arena = am.getArenaWithName(arg2); Arena arena = am.getArenaWithName(arg2);
if (arena == null) if (arena == null)
@@ -460,7 +485,6 @@ public class MACommands implements CommandExecutor
return true; return true;
} }
// The arena exists.
if (arena.livePlayers.isEmpty()) if (arena.livePlayers.isEmpty())
{ {
MAUtils.tellPlayer(sender, MAMessages.get(Msg.FORCE_END_EMPTY)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.FORCE_END_EMPTY));
@@ -471,10 +495,15 @@ public class MACommands implements CommandExecutor
MAUtils.tellPlayer(sender, MAMessages.get(Msg.FORCE_END_ENDED)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.FORCE_END_ENDED));
return true; return true;
} }
else if (arg1.equals("start"))
if (arg1.equals("start"))
{ {
if (arg2 == null || !arg2.matches("^[a-zA-Z][a-zA-Z0-9_]*$")) if (!console && !(player && MobArena.has(p, "mobarena.admin.force.start")) && !op)
{
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true;
}
if (arg2.isEmpty())
{ {
MAUtils.tellPlayer(sender, "Usage: /ma force start <arena name>"); MAUtils.tellPlayer(sender, "Usage: /ma force start <arena name>");
return true; return true;
@@ -487,7 +516,6 @@ public class MACommands implements CommandExecutor
return true; return true;
} }
// The arena exists.
if (arena.running) if (arena.running)
{ {
MAUtils.tellPlayer(sender, MAMessages.get(Msg.FORCE_START_RUNNING)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.FORCE_START_RUNNING));
@@ -503,14 +531,19 @@ public class MACommands implements CommandExecutor
MAUtils.tellPlayer(sender, MAMessages.get(Msg.FORCE_START_STARTED)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.FORCE_START_STARTED));
return true; return true;
} }
else
{
MAUtils.tellPlayer(sender, "Usage: /ma force [start|end] (<arena name>)");
return true;
}
} }
/* /*
* Reload the config-file. * Reload the config-file.
*/ */
if (base.equals("config") && arg1 != null) if (base.equals("config"))
{ {
if (!(op || console)) if (!console && !(player && MobArena.has(p, "mobarena.admin.config.reload")) && !op)
{ {
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true; return true;
@@ -532,7 +565,7 @@ public class MACommands implements CommandExecutor
*/ */
if (base.equals("arena")) if (base.equals("arena"))
{ {
if (!(op || console)) if (!console && !(player && MobArena.has(p, "mobarena.setup.arena")) && !op)
{ {
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true; return true;
@@ -558,12 +591,12 @@ public class MACommands implements CommandExecutor
*/ */
if (base.equals("setarena")) if (base.equals("setarena"))
{ {
if (!(op || console)) if (!console && !(player && MobArena.has(p, "mobarena.setup.setarena")) && !op)
{ {
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true; return true;
} }
if (arg1 == null || !arg1.matches("^[a-zA-Z][a-zA-Z0-9_]*$")) if (arg1.isEmpty())
{ {
MAUtils.tellPlayer(sender, "Usage: /ma setarena <arena name>"); MAUtils.tellPlayer(sender, "Usage: /ma setarena <arena name>");
return true; return true;
@@ -571,9 +604,14 @@ public class MACommands implements CommandExecutor
Arena arena = am.getArenaWithName(arg1); Arena arena = am.getArenaWithName(arg1);
if (arena != null) if (arena != null)
{
am.selectedArena = arena; am.selectedArena = arena;
MAUtils.tellPlayer(sender, "Currently selected arena: " + arena.configName());
}
else else
{
MAUtils.tellPlayer(sender, MAMessages.get(Msg.ARENA_DOES_NOT_EXIST)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.ARENA_DOES_NOT_EXIST));
}
return true; return true;
} }
@@ -582,12 +620,12 @@ public class MACommands implements CommandExecutor
*/ */
if (base.equals("addarena")) if (base.equals("addarena"))
{ {
if (!op) if (!(player && MobArena.has(p, "mobarena.setup.addarena")) && !op)
{ {
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true; return true;
} }
if (arg1 == null || !arg1.matches("^[a-zA-Z][a-zA-Z0-9_]*$")) if (arg1.isEmpty())
{ {
MAUtils.tellPlayer(sender, "Usage: /ma addarena <arena name>"); MAUtils.tellPlayer(sender, "Usage: /ma addarena <arena name>");
return true; return true;
@@ -610,17 +648,17 @@ public class MACommands implements CommandExecutor
if (base.equals("delarena")) if (base.equals("delarena"))
{ {
if (!(op || console)) if (!console && !(player && MobArena.has(p, "mobarena.setup.delarena")) && !op)
{ {
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true; return true;
} }
if (arg1 == null || !arg1.matches("^[a-zA-Z][a-zA-Z0-9_]*$")) if (arg1.isEmpty())
{ {
MAUtils.tellPlayer(sender, "Usage: /ma delarena <arena name>"); MAUtils.tellPlayer(sender, "Usage: /ma delarena <arena name>");
return true; return true;
} }
if (am.arenas.size() == 1) if (am.arenas.size() < 2)
{ {
MAUtils.tellPlayer(sender, "At least one arena must exist."); MAUtils.tellPlayer(sender, "At least one arena must exist.");
return true; return true;
@@ -643,12 +681,12 @@ public class MACommands implements CommandExecutor
if (base.equals("editarena")) if (base.equals("editarena"))
{ {
if (!(op || console)) if (!console && !(player && MobArena.has(p, "mobarena.setup.editarena")) && !op)
{ {
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true; return true;
} }
if (arg1 == null || !arg1.matches("^[a-zA-Z][a-zA-Z0-9_]*$") || arg2 == null || (!arg2.equals("true") && !arg2.equals("false"))) if (arg1.isEmpty() || !(arg2.equals("true") || arg2.equals("false")))
{ {
MAUtils.tellPlayer(sender, "Usage: /ma editarena <arena name> [true|false]"); MAUtils.tellPlayer(sender, "Usage: /ma editarena <arena name> [true|false]");
return true; return true;
@@ -672,13 +710,13 @@ public class MACommands implements CommandExecutor
*/ */
if (base.equals("setregion")) if (base.equals("setregion"))
{ {
if (!op) if (!(player && MobArena.has(p, "mobarena.setup.setregion")) && !op)
{ {
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true; return true;
} }
if (arg1 == null || !(arg1.equals("p1") || arg1.equals("p2"))) if (!(arg1.equals("p1") || arg1.equals("p2")))
{ {
MAUtils.tellPlayer(sender, "Usage: /ma setregion [p1|p2]"); MAUtils.tellPlayer(sender, "Usage: /ma setregion [p1|p2]");
return true; return true;
@@ -694,7 +732,7 @@ public class MACommands implements CommandExecutor
*/ */
if (base.equals("expandregion")) if (base.equals("expandregion"))
{ {
if (!(op || console)) if (!console && !(player && MobArena.has(p, "mobarena.setup.expandregion")) && !op)
{ {
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true; return true;
@@ -737,12 +775,12 @@ public class MACommands implements CommandExecutor
*/ */
if (base.equals("setwarp")) if (base.equals("setwarp"))
{ {
if (!op) if (!(player && MobArena.has(p, "mobarena.setup.setwarp")) && !op)
{ {
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true; return true;
} }
if (arg1 == null || !(arg1.equals("arena") || arg1.equals("lobby") || arg1.equals("spectator"))) if (!(arg1.equals("arena") || arg1.equals("lobby") || arg1.equals("spectator")))
{ {
MAUtils.tellPlayer(sender, "Usage: /ma setwarp [arena|lobby|spectator]"); MAUtils.tellPlayer(sender, "Usage: /ma setwarp [arena|lobby|spectator]");
return true; return true;
@@ -758,7 +796,7 @@ public class MACommands implements CommandExecutor
*/ */
if (base.equals("spawnpoints")) if (base.equals("spawnpoints"))
{ {
if (!(op || console)) if (!console && !(player && MobArena.has(p, "mobarena.setup.spawnpoints")) && !op)
{ {
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true; return true;
@@ -789,7 +827,7 @@ public class MACommands implements CommandExecutor
*/ */
if (base.equals("addspawn")) if (base.equals("addspawn"))
{ {
if (!op) if (!(player && MobArena.has(p, "mobarena.setup.addspawn")) && !op)
{ {
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true; return true;
@@ -810,7 +848,7 @@ public class MACommands implements CommandExecutor
*/ */
if (base.equals("delspawn")) if (base.equals("delspawn"))
{ {
if (!(op || console)) if (!console && !(player && MobArena.has(p, "mobarena.setup.delspawn")) && !op)
{ {
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true; return true;
@@ -830,7 +868,7 @@ public class MACommands implements CommandExecutor
if (base.equals("auto-generate")) if (base.equals("auto-generate"))
{ {
if (!op) if (!(player && MobArena.has(p, "mobarena.setup.autogenerate")) && !op)
{ {
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true; return true;
@@ -855,16 +893,21 @@ public class MACommands implements CommandExecutor
if (base.equals("auto-degenerate")) if (base.equals("auto-degenerate"))
{ {
if (!(op || console)) if (!console && !(player && MobArena.has(p, "mobarena.setup.autodegenerate")) && !op)
{ {
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true; return true;
} }
if (arg1 == null || !arg1.matches("^[a-zA-Z][a-zA-Z0-9]*$")) if (arg1.isEmpty())
{ {
MAUtils.tellPlayer(sender, "Usage: /ma auto-degenerate <arena name>"); MAUtils.tellPlayer(sender, "Usage: /ma auto-degenerate <arena name>");
return true; return true;
} }
if (am.arenas.size() < 2)
{
MAUtils.tellPlayer(sender, "At least one arena must exist!");
return true;
}
if (am.getArenaWithName(arg1) == null) if (am.getArenaWithName(arg1) == null)
{ {
MAUtils.tellPlayer(sender, MAMessages.get(Msg.ARENA_DOES_NOT_EXIST)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.ARENA_DOES_NOT_EXIST));
+2 -2
View File
@@ -36,7 +36,6 @@ public class MAMessages
SPEC_EMPTY_INV, SPEC_EMPTY_INV,
SPEC_ALREADY_PLAYING, SPEC_ALREADY_PLAYING,
NOT_READY_PLAYERS, NOT_READY_PLAYERS,
NOT_READY_RUNNING,
FORCE_START_STARTED, FORCE_START_STARTED,
FORCE_START_RUNNING, FORCE_START_RUNNING,
FORCE_START_NOT_READY, FORCE_START_NOT_READY,
@@ -45,6 +44,7 @@ public class MAMessages
FORCE_END_IDLE, FORCE_END_IDLE,
REWARDS_GIVE, REWARDS_GIVE,
LOBBY_CLASS_PICKED, LOBBY_CLASS_PICKED,
LOBBY_CLASS_PERMISSION,
LOBBY_PLAYER_READY, LOBBY_PLAYER_READY,
LOBBY_DROP_ITEM, LOBBY_DROP_ITEM,
LOBBY_PICK_CLASS, LOBBY_PICK_CLASS,
@@ -86,7 +86,6 @@ public class MAMessages
defaults.put(Msg.SPEC_ARG_NEEDED, "You must specify an arena. Type /ma arenas for a list."); defaults.put(Msg.SPEC_ARG_NEEDED, "You must specify an arena. Type /ma arenas for a list.");
defaults.put(Msg.SPEC_EMPTY_INV, "Empty your inventory first!"); defaults.put(Msg.SPEC_EMPTY_INV, "Empty your inventory first!");
defaults.put(Msg.SPEC_ALREADY_PLAYING, "Can't spectate when in the arena!"); defaults.put(Msg.SPEC_ALREADY_PLAYING, "Can't spectate when in the arena!");
defaults.put(Msg.NOT_READY_RUNNING, "The lobby is empty!");
defaults.put(Msg.NOT_READY_PLAYERS, "Not ready: %"); defaults.put(Msg.NOT_READY_PLAYERS, "Not ready: %");
defaults.put(Msg.FORCE_START_RUNNING, "Arena has already started."); defaults.put(Msg.FORCE_START_RUNNING, "Arena has already started.");
defaults.put(Msg.FORCE_START_NOT_READY, "Can't force start, no players are ready."); defaults.put(Msg.FORCE_START_NOT_READY, "Can't force start, no players are ready.");
@@ -100,6 +99,7 @@ public class MAMessages
defaults.put(Msg.LOBBY_PICK_CLASS, "You must first pick a class!"); defaults.put(Msg.LOBBY_PICK_CLASS, "You must first pick a class!");
defaults.put(Msg.LOBBY_RIGHT_CLICK, "Punch the sign. Don't right-click."); defaults.put(Msg.LOBBY_RIGHT_CLICK, "Punch the sign. Don't right-click.");
defaults.put(Msg.LOBBY_CLASS_PICKED, "You have chosen % as your class!"); defaults.put(Msg.LOBBY_CLASS_PICKED, "You have chosen % as your class!");
defaults.put(Msg.LOBBY_CLASS_PERMISSION, "You don't have permission to use this class!");
defaults.put(Msg.WARP_TO_ARENA, "Can't warp to the arena during battle!"); defaults.put(Msg.WARP_TO_ARENA, "Can't warp to the arena during battle!");
defaults.put(Msg.WARP_FROM_ARENA, "Warping not allowed in the arena!"); defaults.put(Msg.WARP_FROM_ARENA, "Warping not allowed in the arena!");
defaults.put(Msg.WAVE_DEFAULT, "Get ready for wave #%!"); defaults.put(Msg.WAVE_DEFAULT, "Get ready for wave #%!");
@@ -289,9 +289,16 @@ public class MASpawnThread implements Runnable
List<Location> result = new ArrayList<Location>(); List<Location> result = new ArrayList<Location>();
for (Location s : arena.spawnpoints.values()) for (Location s : arena.spawnpoints.values())
{
for (Player p : arena.livePlayers) for (Player p : arena.livePlayers)
if (s.distanceSquared(p.getLocation()) < MIN_DISTANCE) {
if (s.distanceSquared(p.getLocation()) > MIN_DISTANCE)
continue;
result.add(s); result.add(s);
break;
}
}
// If no players are in range, just use all the spawnpoints. // If no players are in range, just use all the spawnpoints.
if (result.isEmpty()) if (result.isEmpty())
+11 -1
View File
@@ -33,6 +33,8 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory; import org.bukkit.inventory.PlayerInventory;
import org.bukkit.util.config.Configuration; import org.bukkit.util.config.Configuration;
import com.garbagemule.MobArena.MAMessages.Msg;
public class MAUtils public class MAUtils
{ {
public static final String sep = File.separator; public static final String sep = File.separator;
@@ -827,10 +829,18 @@ public class MAUtils
} }
/** /**
* Turn a list into a space-separated list. * Turn a list into a space-separated string-representation of the list.
*/ */
public static <E> String listToString(List<E> list) public static <E> String listToString(List<E> list)
{ {
return listToString(list, true);
}
public static <E> String listToString(List<E> list, boolean none)
{
if (none && list.isEmpty())
return MAMessages.get(Msg.MISC_NONE);
StringBuffer buffy = new StringBuffer(); StringBuffer buffy = new StringBuffer();
for (E e : list) for (E e : list)
{ {
+35 -1
View File
@@ -2,26 +2,33 @@ package com.garbagemule.MobArena;
import java.io.File; import java.io.File;
import org.bukkit.entity.Player;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.Event.Priority; import org.bukkit.event.Event.Priority;
import org.bukkit.event.block.BlockListener; import org.bukkit.event.block.BlockListener;
import org.bukkit.event.player.PlayerListener; import org.bukkit.event.player.PlayerListener;
import org.bukkit.event.entity.EntityListener; import org.bukkit.event.entity.EntityListener;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
import org.bukkit.util.config.Configuration; import org.bukkit.util.config.Configuration;
import com.nijiko.permissions.PermissionHandler;
import com.nijikokun.bukkit.Permissions.Permissions;
/** /**
* MobArena * MobArena
* @author garbagemule * @author garbagemule
*/ */
public class MobArena extends JavaPlugin public class MobArena extends JavaPlugin
{ {
/* Other useful variables. */
private Configuration config; private Configuration config;
private ArenaMaster am; private ArenaMaster am;
// Permissions stuff
protected static PermissionHandler permissionHandler;
public MobArena() public MobArena()
{ {
} }
@@ -30,11 +37,15 @@ public class MobArena extends JavaPlugin
{ {
PluginDescriptionFile pdfFile = this.getDescription(); PluginDescriptionFile pdfFile = this.getDescription();
// Config, messages and ArenaMaster initialization
loadConfig(); loadConfig();
MAMessages.init(this); MAMessages.init(this);
am = new ArenaMaster(this); am = new ArenaMaster(this);
am.initialize(); am.initialize();
// Permissions
setupPermissions();
// Bind the /ma, /marena, and /mobarena commands to MACommands. // Bind the /ma, /marena, and /mobarena commands to MACommands.
MACommands commandExecutor = new MACommands(this, am); MACommands commandExecutor = new MACommands(this, am);
getCommand("ma").setExecutor(commandExecutor); getCommand("ma").setExecutor(commandExecutor);
@@ -131,6 +142,29 @@ public class MobArena extends JavaPlugin
config.save(); config.save();
} }
// Permissions stuff
public static boolean has(Player p, String s)
{
//return (permissionHandler != null && permissionHandler.has(p, s));
return (permissionHandler == null || permissionHandler.has(p, s));
}
public static boolean hasDefTrue(Player p, String s)
{
return (permissionHandler == null || permissionHandler.has(p, s));
}
private void setupPermissions()
{
if (permissionHandler != null)
return;
Plugin permissionsPlugin = this.getServer().getPluginManager().getPlugin("Permissions");
if (permissionsPlugin == null) return;
permissionHandler = ((Permissions) permissionsPlugin).getHandler();
}
public Configuration getConfig() { return config; } public Configuration getConfig() { return config; }
public ArenaMaster getAM() { return am; } // More convenient. public ArenaMaster getAM() { return am; } // More convenient.
public ArenaMaster getArenaMaster() { return am; } public ArenaMaster getArenaMaster() { return am; }