v0.92 - Added Permissions support
This commit is contained in:
Binary file not shown.
@@ -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>();
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|||||||
@@ -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())
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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; }
|
||||||
|
|||||||
Reference in New Issue
Block a user