mirror of
https://github.com/garbagemule/MobArena.git
synced 2024-11-29 22:23:54 +01:00
Added a boss spawnpoints collection to make spawnpoint iteration more smooth
This commit is contained in:
parent
44cb463385
commit
f0c2031076
BIN
MobArena.jar
BIN
MobArena.jar
Binary file not shown.
@ -63,7 +63,7 @@ public class Arena
|
|||||||
|
|
||||||
protected boolean edit, waveClear, detCreepers, detDamage, lightning, hellhounds, specOnDeath, shareInArena;
|
protected boolean edit, waveClear, detCreepers, detDamage, lightning, hellhounds, specOnDeath, shareInArena;
|
||||||
protected Location p1, p2, l1, l2, arenaLoc, lobbyLoc, spectatorLoc;
|
protected Location p1, p2, l1, l2, arenaLoc, lobbyLoc, spectatorLoc;
|
||||||
protected Map<String,Location> spawnpoints, containers;
|
protected Map<String,Location> spawnpoints, spawnpointsBoss, containers;
|
||||||
protected String logging;
|
protected String logging;
|
||||||
|
|
||||||
// Wave/reward/entryfee fields
|
// Wave/reward/entryfee fields
|
||||||
@ -814,6 +814,7 @@ public class 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);
|
||||||
|
spawnpointsBoss = MAUtils.getArenaBossSpawnpoints(config, world, configName);
|
||||||
containers = MAUtils.getArenaContainers(config, world, configName);
|
containers = MAUtils.getArenaContainers(config, world, configName);
|
||||||
|
|
||||||
// NEW WAVES
|
// NEW WAVES
|
||||||
@ -853,6 +854,8 @@ public class Arena
|
|||||||
if (spectatorLoc != null) config.setProperty(coords + "spectator", MAUtils.makeCoord(spectatorLoc));
|
if (spectatorLoc != null) config.setProperty(coords + "spectator", MAUtils.makeCoord(spectatorLoc));
|
||||||
for (Map.Entry<String,Location> entry : spawnpoints.entrySet())
|
for (Map.Entry<String,Location> entry : spawnpoints.entrySet())
|
||||||
config.setProperty(coords + "spawnpoints." + entry.getKey(), MAUtils.makeCoord(entry.getValue()));
|
config.setProperty(coords + "spawnpoints." + entry.getKey(), MAUtils.makeCoord(entry.getValue()));
|
||||||
|
for (Map.Entry<String,Location> entry : spawnpointsBoss.entrySet())
|
||||||
|
config.setProperty(coords + "spawnpoints." + entry.getKey(), MAUtils.makeCoord(entry.getValue()));
|
||||||
|
|
||||||
config.save();
|
config.save();
|
||||||
}
|
}
|
||||||
@ -1035,36 +1038,23 @@ public class Arena
|
|||||||
|
|
||||||
public List<Location> getAllSpawnpoints()
|
public List<Location> getAllSpawnpoints()
|
||||||
{
|
{
|
||||||
return new ArrayList<Location>(spawnpoints.values());
|
ArrayList<Location> result = new ArrayList<Location>(spawnpoints.size() + spawnpointsBoss.size());
|
||||||
|
result.addAll(spawnpoints.values());
|
||||||
|
result.addAll(spawnpointsBoss.values());
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Location> getSpawnpoints()
|
public List<Location> getSpawnpoints()
|
||||||
{
|
{
|
||||||
List<Location> result = new ArrayList<Location>(spawnpoints.size());
|
return new ArrayList<Location>(spawnpoints.values());
|
||||||
|
|
||||||
for (Map.Entry<String,Location> entry : spawnpoints.entrySet())
|
|
||||||
if (!entry.getKey().matches("^*boss*$"))
|
|
||||||
result.add(entry.getValue());
|
|
||||||
|
|
||||||
return !result.isEmpty() ? result : new ArrayList<Location>(spawnpoints.values());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Location getBossSpawnpoint()
|
public Location getBossSpawnpoint()
|
||||||
{
|
{
|
||||||
Location result = null;
|
if (spawnpointsBoss.isEmpty())
|
||||||
|
return getSpawnpoints().get(0);
|
||||||
|
|
||||||
for (Map.Entry<String,Location> entry : spawnpoints.entrySet())
|
return new ArrayList<Location>(spawnpointsBoss.values()).get(MobArena.random.nextInt(spawnpointsBoss.size()));
|
||||||
{
|
|
||||||
if (!entry.getKey().matches("^*boss*$")) continue;
|
|
||||||
|
|
||||||
result = entry.getValue();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (result != null)
|
|
||||||
return result;
|
|
||||||
|
|
||||||
return WaveUtils.getValidSpawnpoints(this, arenaPlayers).iterator().next();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getPlayerCount()
|
public int getPlayerCount()
|
||||||
|
@ -171,6 +171,22 @@ public class MAUtils
|
|||||||
return spawnpoints;
|
return spawnpoints;
|
||||||
|
|
||||||
for (String point : config.getKeys(arenaPath))
|
for (String point : config.getKeys(arenaPath))
|
||||||
|
if (!point.matches("^(.)*boss(.)*$"))
|
||||||
|
spawnpoints.put(point, makeLocation(world, config.getString(arenaPath + "." + point)));
|
||||||
|
|
||||||
|
return spawnpoints;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<String,Location> getArenaBossSpawnpoints(Configuration config, World world, String arena)
|
||||||
|
{
|
||||||
|
Map<String,Location> spawnpoints = new HashMap<String,Location>();
|
||||||
|
String arenaPath = "arenas." + arena + ".coords.spawnpoints";
|
||||||
|
|
||||||
|
if (config.getKeys(arenaPath) == null)
|
||||||
|
return spawnpoints;
|
||||||
|
|
||||||
|
for (String point : config.getKeys(arenaPath))
|
||||||
|
if (point.matches("^(.)*boss(.)*$"))
|
||||||
spawnpoints.put(point, makeLocation(world, config.getString(arenaPath + "." + point)));
|
spawnpoints.put(point, makeLocation(world, config.getString(arenaPath + "." + point)));
|
||||||
|
|
||||||
return spawnpoints;
|
return spawnpoints;
|
||||||
|
Loading…
Reference in New Issue
Block a user