Last update

This commit is contained in:
Garbage Mule
2011-07-04 17:09:03 +02:00
parent eae0439e25
commit 1498359add
9 changed files with 187 additions and 143 deletions
BIN
View File
Binary file not shown.
+85 -40
View File
@@ -62,7 +62,7 @@ public class Arena
// Setup fields // Setup fields
protected String name; protected String name;
protected World world; protected World world;
protected boolean enabled, running, setup, protect, autoEquip, forceRestore, softRestore, emptyInv, pvp, monsterInfight; protected boolean enabled, running, setup, protect, autoEquip, forceRestore, softRestore, softRestoreDrops, emptyInvJoin, emptyInvSpec, pvp, monsterInfight, allowWarp;
protected boolean edit, waveClear, detCreepers, detDamage, lightning, hellhounds; protected boolean edit, waveClear, detCreepers, detDamage, lightning, hellhounds;
protected Location p1, p2, arenaLoc, lobbyLoc, spectatorLoc; protected Location p1, p2, arenaLoc, lobbyLoc, spectatorLoc;
protected Map<String,Location> spawnpoints; protected Map<String,Location> spawnpoints;
@@ -170,11 +170,15 @@ public class Arena
} }
// Start the spawnThread. // Start the spawnThread.
spawnThread = new MASpawnThread(this); spawnThread = new MASpawnThread(plugin, this);
spawnTaskId = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, spawnThread, waveDelay, waveInterval); spawnTaskId = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, spawnThread, waveDelay, waveInterval);
readyPlayers.clear(); readyPlayers.clear();
MAUtils.tellAll(this, MAMessages.get(Msg.ARENA_START)); MAUtils.tellAll(this, MAMessages.get(Msg.ARENA_START));
// Notify listeners.
for (MobArenaListener listener : plugin.getAM().listeners)
listener.onArenaStart();
} }
/** /**
@@ -191,7 +195,7 @@ public class Arena
Bukkit.getServer().getScheduler().cancelTask(spawnTaskId); Bukkit.getServer().getScheduler().cancelTask(spawnTaskId);
} }
if (!emptyInv) if (!emptyInvJoin)
for (Player p : deadPlayers) for (Player p : deadPlayers)
MAUtils.restoreInventory(p); MAUtils.restoreInventory(p);
@@ -202,7 +206,6 @@ public class Arena
// Clear all the sets and maps. // Clear all the sets and maps.
livePlayers.clear(); livePlayers.clear();
deadPlayers.clear(); deadPlayers.clear();
//specPlayers.clear();
pets.clear(); pets.clear();
classMap.clear(); classMap.clear();
rewardMap.clear(); rewardMap.clear();
@@ -216,6 +219,10 @@ public class Arena
// Set the spawn flags to restore monster spawning. // Set the spawn flags to restore monster spawning.
MAUtils.setSpawnFlags(plugin, world, spawnMonsters, allowMonsters, allowAnimals); MAUtils.setSpawnFlags(plugin, world, spawnMonsters, allowMonsters, allowAnimals);
MAUtils.tellAll(this, MAMessages.get(Msg.ARENA_END)); MAUtils.tellAll(this, MAMessages.get(Msg.ARENA_END));
// Notify listeners.
for (MobArenaListener listener : plugin.getAM().listeners)
listener.onArenaEnd();
} }
/** /**
@@ -256,6 +263,10 @@ public class Arena
MAUtils.sitPets(p); MAUtils.sitPets(p);
livePlayers.add(p); livePlayers.add(p);
p.teleport(lobbyLoc); p.teleport(lobbyLoc);
// Notify listeners.
for (MobArenaListener listener : plugin.getAM().listeners)
listener.onPlayerJoin(p);
} }
/** /**
@@ -287,14 +298,19 @@ public class Arena
if (livePlayers.remove(p)) clear = true; if (livePlayers.remove(p)) clear = true;
if (deadPlayers.remove(p)) clear = false; if (deadPlayers.remove(p)) clear = false;
if (specPlayers.remove(p)) clear = false; if (specPlayers.remove(p)) clear = false;
removePets(p);
if (clear) MAUtils.clearInventory(p); if (clear) MAUtils.clearInventory(p);
if (!emptyInv) MAUtils.restoreInventory(p); if (!emptyInvJoin) MAUtils.restoreInventory(p);
if (running && livePlayers.isEmpty()) if (running && livePlayers.isEmpty())
endArena(); endArena();
else if (!readyPlayers.isEmpty() && readyPlayers.equals(livePlayers)) else if (!readyPlayers.isEmpty() && readyPlayers.equals(livePlayers))
startArena(); startArena();
// Notify listeners.
for (MobArenaListener listener : plugin.getAM().listeners)
listener.onPlayerLeave(p);
} }
public void playerQuit(Player p) public void playerQuit(Player p)
@@ -304,6 +320,7 @@ public class Arena
livePlayers.remove(p); livePlayers.remove(p);
deadPlayers.remove(p); deadPlayers.remove(p);
specPlayers.remove(p); specPlayers.remove(p);
removePets(p);
if (running && livePlayers.isEmpty()) if (running && livePlayers.isEmpty())
endArena(); endArena();
@@ -320,6 +337,7 @@ public class Arena
// Add to the list of dead players. // Add to the list of dead players.
livePlayers.remove(p); livePlayers.remove(p);
deadPlayers.add(p); deadPlayers.add(p);
removePets(p);
// Has to be delayed for TombStone not to fuck shit up. // Has to be delayed for TombStone not to fuck shit up.
if (running && livePlayers.isEmpty()) if (running && livePlayers.isEmpty())
@@ -332,6 +350,10 @@ public class Arena
endArena(); endArena();
} }
}, 10); }, 10);
// Notify listeners.
for (MobArenaListener listener : plugin.getAM().listeners)
listener.onPlayerDeath(p);
} }
public void playerSpec(Player p, Location loc) public void playerSpec(Player p, Location loc)
@@ -407,6 +429,13 @@ public class Arena
w.remove(); w.remove();
} }
private void removePets(Player p)
{
for (Wolf w : pets)
if (w.getOwner().equals(p))
w.remove();
}
private void removeEntities() private void removeEntities()
{ {
Chunk c1 = world.getChunkAt(p1); Chunk c1 = world.getChunkAt(p1);
@@ -434,43 +463,46 @@ public class Arena
String arenaPath = "arenas." + MAUtils.nameArenaToConfig(name) + ".settings."; String arenaPath = "arenas." + MAUtils.nameArenaToConfig(name) + ".settings.";
String configName = MAUtils.nameArenaToConfig(name); String configName = MAUtils.nameArenaToConfig(name);
enabled = config.getBoolean(arenaPath + "enabled", true); enabled = config.getBoolean(arenaPath + "enabled", true);
protect = config.getBoolean(arenaPath + "protect", true); protect = config.getBoolean(arenaPath + "protect", true);
autoEquip = config.getBoolean(arenaPath + "auto-equip-armor", true); autoEquip = config.getBoolean(arenaPath + "auto-equip-armor", true);
waveClear = config.getBoolean(arenaPath + "wave-clear", false); waveClear = config.getBoolean(arenaPath + "clear-wave-before-next", false);
detCreepers = config.getBoolean(arenaPath + "detonate-creepers", false); detCreepers = config.getBoolean(arenaPath + "detonate-creepers", false);
detDamage = config.getBoolean(arenaPath + "detonate-damage", false); detDamage = config.getBoolean(arenaPath + "detonate-damage", false);
lightning = config.getBoolean(arenaPath + "lightning", true); lightning = config.getBoolean(arenaPath + "lightning", true);
forceRestore = config.getBoolean(arenaPath + "force-restore", false); forceRestore = config.getBoolean(arenaPath + "force-restore", false);
softRestore = config.getBoolean(arenaPath + "soft-restore", false); softRestore = config.getBoolean(arenaPath + "soft-restore", false);
emptyInv = config.getBoolean(arenaPath + "require-empty-inventory", false); softRestoreDrops = config.getBoolean(arenaPath + "soft-restore-drops", false);
hellhounds = config.getBoolean(arenaPath + "hellhounds", false); emptyInvJoin = config.getBoolean(arenaPath + "require-empty-inv-join", false);
pvp = config.getBoolean(arenaPath + "pvp-enabled", false); emptyInvSpec = config.getBoolean(arenaPath + "require-empty-inv-spec", false);
monsterInfight = config.getBoolean(arenaPath + "monster-infight", false); hellhounds = config.getBoolean(arenaPath + "hellhounds", false);
waveDelay = config.getInt(arenaPath + "first-wave-delay", 5) * 20; pvp = config.getBoolean(arenaPath + "pvp-enabled", false);
waveInterval = config.getInt(arenaPath + "wave-interval", 20) * 20; monsterInfight = config.getBoolean(arenaPath + "monster-infight", false);
specialModulo = config.getInt(arenaPath + "special-modulo", 4); allowWarp = config.getBoolean(arenaPath + "allow-teleporting", false);
maxIdleTime = config.getInt(arenaPath + "max-idle-time", 0); repairDelay = config.getInt(arenaPath + "repair-delay", 5);
waveDelay = config.getInt(arenaPath + "first-wave-delay", 5) * 20;
waveInterval = config.getInt(arenaPath + "wave-interval", 20) * 20;
specialModulo = config.getInt(arenaPath + "special-modulo", 4);
maxIdleTime = config.getInt(arenaPath + "max-idle-time", 0) * 20;
distDefault = MAUtils.getArenaDistributions(config, configName, "default"); distDefault = MAUtils.getArenaDistributions(config, configName, "default");
distSpecial = MAUtils.getArenaDistributions(config, configName, "special"); distSpecial = MAUtils.getArenaDistributions(config, configName, "special");
everyWaveMap = MAUtils.getArenaRewardMap(config, configName, "every"); everyWaveMap = MAUtils.getArenaRewardMap(config, configName, "every");
afterWaveMap = MAUtils.getArenaRewardMap(config, configName, "after"); afterWaveMap = MAUtils.getArenaRewardMap(config, configName, "after");
p1 = MAUtils.getArenaCoord(config, world, configName, "p1"); p1 = MAUtils.getArenaCoord(config, world, configName, "p1");
p2 = MAUtils.getArenaCoord(config, world, configName, "p2"); p2 = MAUtils.getArenaCoord(config, world, configName, "p2");
arenaLoc = MAUtils.getArenaCoord(config, world, configName, "arena"); arenaLoc = MAUtils.getArenaCoord(config, world, configName, "arena");
lobbyLoc = MAUtils.getArenaCoord(config, world, configName, "lobby"); lobbyLoc = MAUtils.getArenaCoord(config, world, configName, "lobby");
spectatorLoc = MAUtils.getArenaCoord(config, world, configName, "spectator"); spectatorLoc = MAUtils.getArenaCoord(config, world, configName, "spectator");
spawnpoints = MAUtils.getArenaSpawnpoints(config, world, configName); spawnpoints = MAUtils.getArenaSpawnpoints(config, world, configName);
classes = plugin.getAM().classes; classes = plugin.getAM().classes;
classItems = plugin.getAM().classItems; classItems = plugin.getAM().classItems;
classArmor = plugin.getAM().classArmor; classArmor = plugin.getAM().classArmor;
repairDelay = plugin.getAM().repairDelay;
// Determine if the arena is properly set up. Then add the to arena list. // Determine if the arena is properly set up. Then add the to arena list.
setup = MAUtils.verifyData(this); setup = MAUtils.verifyData(this);
} }
public void serializeConfig() public void serializeConfig()
@@ -624,6 +656,19 @@ public class Arena
if (blocks.remove(b) || b.getType() == Material.TNT) if (blocks.remove(b) || b.getType() == Material.TNT)
return; return;
if (softRestore)
{
int[] buffer = new int[5];
buffer[0] = b.getX();
buffer[1] = b.getY();
buffer[2] = b.getZ();
buffer[3] = b.getTypeId();
buffer[4] = (int) b.getData();
repairList.add(buffer);
if (!softRestoreDrops) event.getBlock().setTypeId(0);
return;
}
event.setCancelled(true); event.setCancelled(true);
} }
@@ -979,7 +1024,7 @@ public class Arena
// Teleport Listener // Teleport Listener
public void onPlayerTeleport(PlayerTeleportEvent event) public void onPlayerTeleport(PlayerTeleportEvent event)
{ {
if (edit || !enabled || !setup) if (edit || !enabled || !setup || allowWarp)
return; return;
if (!inRegion(event.getTo()) && !inRegion(event.getFrom())) if (!inRegion(event.getTo()) && !inRegion(event.getFrom()))
@@ -1110,7 +1155,7 @@ public class Arena
monsters.remove(e); monsters.remove(e);
// Compare the current size with the previous size. // Compare the current size with the previous size.
if (monsters.size() != spawnThread.previousSize || spawnThread.previousSize == 0) if (monsters.size() < spawnThread.previousSize || spawnThread.previousSize == 0)
return; return;
// Clear all player inventories, and "kill" all players. // Clear all player inventories, and "kill" all players.
+43 -11
View File
@@ -24,7 +24,6 @@ public class ArenaMaster
// Settings // Settings
protected boolean enabled, updateNotify, autoEquip, emptyInvs, hellhounds; protected boolean enabled, updateNotify, autoEquip, emptyInvs, hellhounds;
protected int repairDelay;
// Classes // Classes
protected List<String> classes; protected List<String> classes;
@@ -76,17 +75,50 @@ public class ArenaMaster
return result; return result;
} }
public List<Player> getAllPlayers()
{
List<Player> result = new LinkedList<Player>();
for (Arena arena : arenas)
result.addAll(arena.getAllPlayers());
return result;
}
public List<Player> getAllPlayersInArena(String arenaName)
{
Arena arena = getArenaWithName(arenaName);
return (arena != null) ? arena.getLivingPlayers() : new LinkedList<Player>();
}
public List<Player> getAllLivingPlayers()
{
List<Player> result = new LinkedList<Player>();
for (Arena arena : arenas)
result.addAll(arena.getLivingPlayers());
return result;
}
public List<Player> getLivingPlayersInArena(String arenaName)
{
Arena arena = getArenaWithName(arenaName);
return (arena != null) ? arena.getLivingPlayers() : new LinkedList<Player>();
}
public Arena getArenaWithPlayer(Player p) public Arena getArenaWithPlayer(Player p)
{ {
return arenaMap.get(p); return arenaMap.get(p);
} }
public Arena getArenaWithPlayer(String s) public Arena getArenaWithPlayer(String playerName)
{ {
for (Map.Entry<Player,Arena> entry : arenaMap.entrySet()) return arenaMap.get(Bukkit.getServer().getPlayer(playerName));
}
public Arena getArenaWithSpectator(Player p)
{
for (Arena arena : arenas)
{ {
if (entry.getKey().getName().equals(s)) if (arena.specPlayers.contains(p))
return entry.getValue(); return arena;
} }
return null; return null;
} }
@@ -141,12 +173,10 @@ public class ArenaMaster
{ {
config.setProperty("global-settings.enabled", true); config.setProperty("global-settings.enabled", true);
config.setProperty("global-settings.update-notification", true); config.setProperty("global-settings.update-notification", true);
config.setProperty("global-settings.repair-delay", 5);
} }
enabled = config.getBoolean("global-settings.enabled", true); enabled = config.getBoolean("global-settings.enabled", true);
updateNotify = config.getBoolean("global-settings.update-notification", true); updateNotify = config.getBoolean("global-settings.update-notification", true);
repairDelay = config.getInt("global-settings.repair-delay", 5);
} }
/** /**
@@ -217,19 +247,23 @@ public class ArenaMaster
config.setProperty("arenas." + configName + ".settings.protect", true); config.setProperty("arenas." + configName + ".settings.protect", true);
config.save(); config.save();
config.load(); config.load();
config.setProperty("arenas." + configName + ".settings.wave-clear", false); config.setProperty("arenas." + configName + ".settings.clear-wave-before-next", false);
config.setProperty("arenas." + configName + ".settings.detonate-creepers", false); config.setProperty("arenas." + configName + ".settings.detonate-creepers", false);
config.setProperty("arenas." + configName + ".settings.detonate-damage", false); config.setProperty("arenas." + configName + ".settings.detonate-damage", false);
config.setProperty("arenas." + configName + ".settings.lightning", true); config.setProperty("arenas." + configName + ".settings.lightning", true);
config.setProperty("arenas." + configName + ".settings.auto-equip-armor", true); config.setProperty("arenas." + configName + ".settings.auto-equip-armor", true);
config.setProperty("arenas." + configName + ".settings.force-restore", false); config.setProperty("arenas." + configName + ".settings.force-restore", false);
config.setProperty("arenas." + configName + ".settings.soft-restore", false); config.setProperty("arenas." + configName + ".settings.soft-restore", false);
config.setProperty("arenas." + configName + ".settings.require-empty-inventory", false); config.setProperty("arenas." + configName + ".settings.soft-restore-drops", false);
config.setProperty("arenas." + configName + ".settings.require-empty-inv-join", false);
config.setProperty("arenas." + configName + ".settings.require-empty-inv-spec", false);
config.setProperty("arenas." + configName + ".settings.hellhounds", false); config.setProperty("arenas." + configName + ".settings.hellhounds", false);
config.setProperty("arenas." + configName + ".settings.pvp-enabled", false); config.setProperty("arenas." + configName + ".settings.pvp-enabled", false);
config.setProperty("arenas." + configName + ".settings.monster-infight", false); config.setProperty("arenas." + configName + ".settings.monster-infight", false);
config.setProperty("arenas." + configName + ".settings.allow-teleporting", false);
config.save(); config.save();
config.load(); config.load();
config.setProperty("arenas." + configName + ".settings.repair-delay", 5);
config.setProperty("arenas." + configName + ".settings.first-wave-delay", 5); config.setProperty("arenas." + configName + ".settings.first-wave-delay", 5);
config.setProperty("arenas." + configName + ".settings.wave-interval", 20); config.setProperty("arenas." + configName + ".settings.wave-interval", 20);
config.setProperty("arenas." + configName + ".settings.special-modulo", 4); config.setProperty("arenas." + configName + ".settings.special-modulo", 4);
@@ -316,8 +350,6 @@ public class ArenaMaster
// Remove all Arenas no longer in the config. // Remove all Arenas no longer in the config.
arenas.retainAll(configArenas); arenas.retainAll(configArenas);
//for (Arena arena : arenas)
// arena.serializeConfig();
for (Arena arena : arenas) for (Arena arena : arenas)
arena.deserializeConfig(); arena.deserializeConfig();
+41 -46
View File
@@ -94,7 +94,6 @@ public class MACommands implements CommandExecutor
String base = args[0].toLowerCase(); String base = args[0].toLowerCase();
String arg1 = (args.length > 1) ? args[1].toLowerCase() : ""; String arg1 = (args.length > 1) ? args[1].toLowerCase() : "";
String arg2 = (args.length > 2) ? args[2].toLowerCase() : ""; String arg2 = (args.length > 2) ? args[2].toLowerCase() : "";
//String arg3 = (args.length >= 4) ? args[3].toLowerCase() : null;
@@ -136,9 +135,9 @@ public class MACommands implements CommandExecutor
error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_ARENA_IS_RUNNING)); error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_ARENA_IS_RUNNING));
else if (arena.livePlayers.contains(p)) else if (arena.livePlayers.contains(p))
error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_ALREADY_PLAYING)); error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_ALREADY_PLAYING));
else if (arena.emptyInv && !MAUtils.hasEmptyInventory(p)) else if (arena.emptyInvJoin && !MAUtils.hasEmptyInventory(p))
error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_EMPTY_INV)); error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_EMPTY_INV));
else if (!arena.emptyInv && !MAUtils.storeInventory(p)) else if (!arena.emptyInvJoin && !MAUtils.storeInventory(p))
error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_STORE_INV_FAIL)); error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_STORE_INV_FAIL));
else error = false; else error = false;
@@ -178,9 +177,9 @@ public class MACommands implements CommandExecutor
error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_ARENA_IS_RUNNING)); error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_ARENA_IS_RUNNING));
else if (arena.livePlayers.contains(p)) else if (arena.livePlayers.contains(p))
error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_ALREADY_PLAYING)); error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_ALREADY_PLAYING));
else if (arena.emptyInv && !MAUtils.hasEmptyInventory(p)) else if (arena.emptyInvJoin && !MAUtils.hasEmptyInventory(p))
error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_EMPTY_INV)); error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_EMPTY_INV));
else if (!arena.emptyInv && !MAUtils.storeInventory(p)) else if (!arena.emptyInvJoin && !MAUtils.storeInventory(p))
error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_STORE_INV_FAIL)); error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_STORE_INV_FAIL));
else error = false; else error = false;
@@ -209,6 +208,14 @@ public class MACommands implements CommandExecutor
if (!am.arenaMap.containsKey(p)) if (!am.arenaMap.containsKey(p))
{ {
Arena arena = am.getArenaWithSpectator(p);
if (arena != null)
{
arena.playerLeave(p);
MAUtils.tellPlayer(p, MAMessages.get(Msg.LEAVE_PLAYER_LEFT));
return true;
}
MAUtils.tellPlayer(p, MAMessages.get(Msg.LEAVE_NOT_PLAYING)); MAUtils.tellPlayer(p, MAMessages.get(Msg.LEAVE_NOT_PLAYING));
return true; return true;
} }
@@ -243,10 +250,8 @@ public class MACommands implements CommandExecutor
error = MAUtils.tellPlayer(p, MAMessages.get(Msg.SPEC_ALREADY_PLAYING)); error = MAUtils.tellPlayer(p, MAMessages.get(Msg.SPEC_ALREADY_PLAYING));
else if (arena == null) else if (arena == null)
error = MAUtils.tellPlayer(p, MAMessages.get(Msg.ARENA_DOES_NOT_EXIST)); error = MAUtils.tellPlayer(p, MAMessages.get(Msg.ARENA_DOES_NOT_EXIST));
/*else if (!arena.running) else if (arena.emptyInvSpec && !MAUtils.hasEmptyInventory(p))
error = MAUtils.tellPlayer(p, MAMessages.get(Msg.SPEC_NOT_RUNNING)); error = MAUtils.tellPlayer(p, MAMessages.get(Msg.SPEC_EMPTY_INV));
else if (!MAUtils.hasEmptyInventory(p))
error = MAUtils.tellPlayer(p, MAMessages.get(Msg.SPEC_EMPTY_INV));*/
else error = false; else error = false;
if (error) if (error)
@@ -264,17 +269,14 @@ public class MACommands implements CommandExecutor
error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_ARG_NEEDED)); error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_ARG_NEEDED));
else if (arena == null) else if (arena == null)
error = MAUtils.tellPlayer(p, MAMessages.get(Msg.ARENA_DOES_NOT_EXIST)); error = MAUtils.tellPlayer(p, MAMessages.get(Msg.ARENA_DOES_NOT_EXIST));
/*else if (!arena.running) else if (arena.emptyInvSpec && !MAUtils.hasEmptyInventory(p))
error = MAUtils.tellPlayer(p, MAMessages.get(Msg.SPEC_NOT_RUNNING)); error = MAUtils.tellPlayer(p, MAMessages.get(Msg.SPEC_EMPTY_INV));
else if (!MAUtils.hasEmptyInventory(p))
error = MAUtils.tellPlayer(p, MAMessages.get(Msg.SPEC_EMPTY_INV));*/
else error = false; else error = false;
if (error) if (error)
return true; return true;
} }
am.arenaMap.put(p,arena);
arena.playerSpec(p, p.getLocation()); arena.playerSpec(p, p.getLocation());
MAUtils.tellPlayer(p, MAMessages.get(Msg.SPEC_PLAYER_SPECTATE)); MAUtils.tellPlayer(p, MAMessages.get(Msg.SPEC_PLAYER_SPECTATE));
return true; return true;
@@ -352,37 +354,6 @@ public class MACommands implements CommandExecutor
return true; return true;
} }
/*
* Restore a player's inventory.
*/
if (base.equals("restore"))
{
if (arg1.isEmpty() && player)
{
if (am.getArenaWithPlayer(p) != null)
{
MAUtils.tellPlayer(sender, "You must first leave the current arena.");
return true;
}
if (MAUtils.restoreInventory(p))
MAUtils.tellPlayer(sender, "Restored your inventory!");
return true;
}
if (!arg1.isEmpty() && (op || console))
{
if (am.getArenaWithPlayer(arg1) != null)
{
MAUtils.tellPlayer(sender, "Player is currently in an arena.");
return true;
}
if (MAUtils.restoreInventory(Bukkit.getServer().getPlayer(arg1)));
MAUtils.tellPlayer(sender, "Restored " + arg1 + "'s inventory!");
return true;
}
}
/*//////////////////////////////////////////////////////////////// /*////////////////////////////////////////////////////////////////
@@ -397,7 +368,6 @@ public class MACommands implements CommandExecutor
if ((base.equals("enable") || base.equals("disable"))) if ((base.equals("enable") || base.equals("disable")))
{ {
if (!console && !(player && MobArena.has(p, "mobarena.admin.enable")) && !op) 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;
@@ -456,6 +426,31 @@ public class MACommands implements CommandExecutor
return true; return true;
} }
/*
* Restore a player's inventory.
*/
if (base.equals("restore"))
{
if (!console && !(player && MobArena.has(p, "mobarena.admin.restore")) && !op)
{
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
return true;
}
if (!arg1.isEmpty())
{
if (am.getArenaWithPlayer(arg1) != null)
{
MAUtils.tellPlayer(sender, "Player is currently in an arena.");
return true;
}
if (MAUtils.restoreInventory(Bukkit.getServer().getPlayer(arg1)));
MAUtils.tellPlayer(sender, "Restored " + arg1 + "'s inventory!");
return true;
}
}
/* /*
* Force start/end arenas. * Force start/end arenas.
*/ */
+2 -2
View File
@@ -209,7 +209,7 @@ public class MAMessages
String[] split = s.split("="); String[] split = s.split("=");
if (split.length != 2) if (split.length != 2)
{ {
System.out.println("[MobArena] ERROR: Couldn't parse \"" + s + "\"."); System.out.println("[MobArena] ERROR: Couldn't parse \"" + s + "\". Check announcements-file.");
return; return;
} }
@@ -225,7 +225,7 @@ public class MAMessages
} }
catch (Exception e) catch (Exception e)
{ {
System.out.println("[MobArena] ERROR: " + key + " is not a valid key!"); System.out.println("[MobArena] ERROR: " + key + " is not a valid key. Check announcements-file.");
return; return;
} }
} }
@@ -38,11 +38,13 @@ public class MASpawnThread implements Runnable
private int dZombies, dSkeletons, dSpiders, dCreepers, dWolves; private int dZombies, dSkeletons, dSpiders, dCreepers, dWolves;
private int dPoweredCreepers, dPigZombies, dSlimes, dMonsters, dAngryWolves, dGiants, dGhasts; private int dPoweredCreepers, dPigZombies, dSlimes, dMonsters, dAngryWolves, dGiants, dGhasts;
private Random random; private Random random;
private MobArena plugin;
private Arena arena; private Arena arena;
private final double MIN_DISTANCE = 256; private final double MIN_DISTANCE = 256;
public MASpawnThread(Arena arena) public MASpawnThread(MobArena plugin, Arena arena)
{ {
this.plugin = plugin;
this.arena = arena; this.arena = arena;
modulo = arena.specialModulo; modulo = arena.specialModulo;
if (modulo <= 0) modulo = -32768; if (modulo <= 0) modulo = -32768;
@@ -94,20 +96,22 @@ public class MASpawnThread implements Runnable
if (wave % modulo == 0) if (wave % modulo == 0)
{ {
MAUtils.tellAll(arena, MAMessages.get(Msg.WAVE_SPECIAL, ""+wave)); MAUtils.tellAll(arena, MAMessages.get(Msg.WAVE_SPECIAL, ""+wave));
/*for (MobArenaListener m : ArenaManager.listeners) TODO: Get API back up to speed.
m.onSpecialWave(wave, wave/modulo);*/
detonateCreepers(arena.detCreepers); detonateCreepers(arena.detCreepers);
specialWave(); specialWave();
// Notify listeners.
for (MobArenaListener listener : plugin.getAM().listeners)
listener.onSpecialWave(wave, wave/modulo);
} }
else else
{ {
MAUtils.tellAll(arena, MAMessages.get(Msg.WAVE_DEFAULT, ""+wave)); MAUtils.tellAll(arena, MAMessages.get(Msg.WAVE_DEFAULT, ""+wave));
/*for (MobArenaListener m : ArenaManager.listeners) TODO: More API
m.onDefaultWave(wave);*/
detonateCreepers(arena.detCreepers); detonateCreepers(arena.detCreepers);
defaultWave(); defaultWave();
// Notify listeners.
for (MobArenaListener listener : plugin.getAM().listeners)
listener.onDefaultWave(wave);
} }
wave++; wave++;
+1 -1
View File
@@ -296,7 +296,7 @@ public class MAUtils
String commands = config.getString("global-settings.allowed-commands"); String commands = config.getString("global-settings.allowed-commands");
if (commands == null) if (commands == null)
{ {
config.setProperty("global-settings.allowed-commands", "/list"); config.setProperty("global-settings.allowed-commands", "/list, /pl");
config.save(); config.save();
commands = config.getString("global-settings.allowed-commands"); commands = config.getString("global-settings.allowed-commands");
} }
@@ -191,9 +191,6 @@ public class MobArena extends JavaPlugin
config.setProperty("global-settings.update-notification", true); config.setProperty("global-settings.update-notification", true);
config.save(); config.save();
config.load(); config.load();
config.setProperty("global-settings.repair-delay", 5);
config.save();
config.load();
// Copy classes // Copy classes
for (String s : oldConfig.getKeys("classes")) for (String s : oldConfig.getKeys("classes"))
@@ -211,17 +208,6 @@ public class MobArena extends JavaPlugin
config.save(); config.save();
config.load(); config.load();
// Copy the waves and rewards to the new default arena.
for (String s : oldConfig.getKeys("waves.default"))
config.setProperty("arenas.default.waves.default." + s, oldConfig.getString("waves.default." + s));
config.save();
for (String s : oldConfig.getKeys("rewards.waves.every"))
config.setProperty("arenas.default.rewards.waves.every." + s, oldConfig.getString("rewards.waves.every." + s));
for (String s : oldConfig.getKeys("rewards.waves.after"))
config.setProperty("arenas.default.rewards.waves.after." + s, oldConfig.getString("rewards.waves.after." + s));
config.save();
config.load();
// Copy the coords. // Copy the coords.
for (String s : oldConfig.getKeys("coords")) for (String s : oldConfig.getKeys("coords"))
{ {
@@ -1,7 +1,6 @@
package com.garbagemule.MobArena; package com.garbagemule.MobArena;
import java.util.List; import java.util.List;
import java.util.LinkedList;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
@@ -33,32 +32,15 @@ public class MobArenaHandler
// Arena getters // Arena getters
public Arena getArenaWithName(String arenaName) { return plugin.getAM().getArenaWithName(arenaName); } public Arena getArenaWithName(String arenaName) { return plugin.getAM().getArenaWithName(arenaName); }
public Arena getArenaWithPlayer(Player p) { return plugin.getAM().getArenaWithPlayer(p); } public Arena getArenaWithPlayer(Player p) { return plugin.getAM().getArenaWithPlayer(p); }
public Arena getArenaWithPlayer(String player) { return plugin.getAM().getArenaWithPlayer(player); }
public Arena getArenaWithPet(Entity wolf) { return plugin.getAM().getArenaWithPet(wolf); } public Arena getArenaWithPet(Entity wolf) { return plugin.getAM().getArenaWithPet(wolf); }
public Arena getArenaWithMonster(Entity monster) { return plugin.getAM().getArenaWithMonster(monster); } public Arena getArenaWithMonster(Entity monster) { return plugin.getAM().getArenaWithMonster(monster); }
public Arena getArenaInLocation(Location l) { return plugin.getAM().getArenaInLocation(l); } public Arena getArenaInLocation(Location l) { return plugin.getAM().getArenaInLocation(l); }
// Player lists // Player lists
public List<Player> getAllPlayers() { return new LinkedList<Player>(plugin.getAM().arenaMap.keySet()); } public List<Player> getAllPlayers() { return plugin.getAM().getAllPlayers(); }
public List<Player> getAllPlayers(Arena arena) { return arena.getAllPlayers(); } public List<Player> getAllLivingPlayers() { return plugin.getAM().getAllLivingPlayers(); }
public List<Player> getAllPlayers(String arenaName) { return getAllPlayers(plugin.getAM().getArenaWithName(arenaName)); } public List<Player> getAllPlayersInArena(String arenaName) { return plugin.getAM().getAllPlayersInArena(arenaName); }
public List<Player> getLivingPlayersInArena(String arenaName) { return plugin.getAM().getLivingPlayersInArena(arenaName); }
public List<Player> getLivingPlayers()
{
List<Player> result = new LinkedList<Player>();
for (Arena arena : plugin.getAM().arenas)
result.addAll(arena.getLivingPlayers());
return result;
}
public List<Player> getLivingPlayers(String arenaName)
{
Arena arena = plugin.getAM().getArenaWithName(arenaName);
if (arena == null)
throw new NullPointerException("Arena with name '" + arenaName + "' does not exist!");
return new LinkedList<Player>(arena.livePlayers);
}
// Warp locations. // Warp locations.
public Location getArenaLocation(String arenaName) public Location getArenaLocation(String arenaName)