Fixed //limit being overridden each time a LocalSession is fetched.

This commit is contained in:
sk89q 2012-10-22 20:27:43 -07:00
parent 5402da6c70
commit caa5fcdcdf

View File

@ -277,6 +277,7 @@ public class WorldEdit {
session = sessions.get(player.getName()); session = sessions.get(player.getName());
} else { } else {
session = new LocalSession(config); session = new LocalSession(config);
session.setBlockChangeLimit(config.defaultChangeLimit);
// Remember the session // Remember the session
sessions.put(player.getName(), session); sessions.put(player.getName(), session);
} }
@ -284,22 +285,25 @@ public class WorldEdit {
// Set the limit on the number of blocks that an operation can // Set the limit on the number of blocks that an operation can
// change at once, or don't if the player has an override or there // change at once, or don't if the player has an override or there
// is no limit. There is also a default limit // is no limit. There is also a default limit
int currentChangeLimit = session.getBlockChangeLimit();
if (!player.hasPermission("worldedit.limit.unrestricted") if (!player.hasPermission("worldedit.limit.unrestricted")
&& config.maxChangeLimit > -1) { && config.maxChangeLimit > -1) {
// If the default limit is infinite but there is a maximum // If the default limit is infinite but there is a maximum
// limit, make sure to not have it be overridden // limit, make sure to not have it be overridden
if (config.defaultChangeLimit < 0) { if (config.defaultChangeLimit < 0) {
if (currentChangeLimit < 0 || currentChangeLimit > config.maxChangeLimit) {
session.setBlockChangeLimit(config.maxChangeLimit); session.setBlockChangeLimit(config.maxChangeLimit);
} else {
// Bound the change limit
int limit = Math.min(config.defaultChangeLimit,
config.maxChangeLimit);
session.setBlockChangeLimit(limit);
} }
} else { } else {
// No change limit or override // Bound the change limit
session.setBlockChangeLimit(config.defaultChangeLimit); int maxChangeLimit = Math.min(config.defaultChangeLimit,
config.maxChangeLimit);
if (currentChangeLimit == -1 || currentChangeLimit > maxChangeLimit) {
session.setBlockChangeLimit(maxChangeLimit);
}
}
} }
// Have the session use inventory if it's enabled and the player // Have the session use inventory if it's enabled and the player