summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKHobbits <rob@khobbits.co.uk>2013-04-30 01:03:37 +0100
committerKHobbits <rob@khobbits.co.uk>2013-04-30 01:04:40 +0100
commit9d2358ed4d1f6eeb116100e438c53dd9c9aab269 (patch)
tree665d16de875ba80af65e9732c1651c551610f0e4
parent7913cfdb3ce56e7e26835670c4109511d0cd650f (diff)
downloadEssentials-9d2358ed4d1f6eeb116100e438c53dd9c9aab269.tar
Essentials-9d2358ed4d1f6eeb116100e438c53dd9c9aab269.tar.gz
Essentials-9d2358ed4d1f6eeb116100e438c53dd9c9aab269.tar.lz
Essentials-9d2358ed4d1f6eeb116100e438c53dd9c9aab269.tar.xz
Essentials-9d2358ed4d1f6eeb116100e438c53dd9c9aab269.zip
[Fix] Stacked mobs count towards spawnmob-limit count.
-rw-r--r--Essentials/src/com/earth2me/essentials/SpawnMob.java31
1 files changed, 21 insertions, 10 deletions
diff --git a/Essentials/src/com/earth2me/essentials/SpawnMob.java b/Essentials/src/com/earth2me/essentials/SpawnMob.java
index 81be125ba..393ef8693 100644
--- a/Essentials/src/com/earth2me/essentials/SpawnMob.java
+++ b/Essentials/src/com/earth2me/essentials/SpawnMob.java
@@ -82,10 +82,10 @@ public class SpawnMob
{
throw new Exception(_("unableToSpawnMob"));
}
- if (parts.size() > 1 && !user.isAuthorized("essentials.spawnmob.stack"))
- {
- throw new Exception(_("cannotStackMob"));
- }
+ if (parts.size() > 1 && !user.isAuthorized("essentials.spawnmob.stack"))
+ {
+ throw new Exception(_("cannotStackMob"));
+ }
spawnmob(ess, server, user, user, block.getLocation(), parts, data, mobCount);
}
@@ -106,16 +106,27 @@ public class SpawnMob
{
final Location sloc = Util.getSafeDestination(loc);
- for(int i = 0; i < parts.size(); i++)
+ for (int i = 0; i < parts.size(); i++)
{
Mob mob = Mob.fromName(parts.get(i));
checkSpawnable(ess, sender, mob);
}
- int serverLimit = ess.getSettings().getSpawnMobLimit();
- if (mobCount > serverLimit)
+ final int serverLimit = ess.getSettings().getSpawnMobLimit();
+ int effectiveLimit = serverLimit / parts.size();
+
+ if (effectiveLimit < 1)
+ {
+ effectiveLimit = 1;
+ while (parts.size() > serverLimit)
+ {
+ parts.remove(serverLimit);
+ }
+ }
+
+ if (mobCount > effectiveLimit)
{
- mobCount = serverLimit;
+ mobCount = effectiveLimit;
sender.sendMessage(_("mobSpawnLimit"));
}
@@ -126,7 +137,7 @@ public class SpawnMob
{
spawnMob(ess, server, sender, target, sloc, parts, data);
}
- sender.sendMessage(mobCount + " " + mob.name.toLowerCase(Locale.ENGLISH) + mob.suffix + " " + _("spawned"));
+ sender.sendMessage(mobCount * parts.size() + " " + mob.name.toLowerCase(Locale.ENGLISH) + mob.suffix + " " + _("spawned"));
}
catch (MobException e1)
{
@@ -160,7 +171,7 @@ public class SpawnMob
changeMobData(mob.getType(), spawnedMob, data.get(i), target);
}
}
-
+
int next = (i + 1);
if (next < parts.size()) //If it's the last mob in the list, don't set the mount
{