summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorfeildmaster <admin@feildmaster.com>2013-01-26 13:45:09 -0600
committerfeildmaster <admin@feildmaster.com>2013-01-26 13:54:00 -0600
commitf349e7a0ad9f674e3b402270c1763abd57556ecf (patch)
treee336ac2d83e32fc124fe3c35dd0ddd08a8137b41 /src
parent49d50e7b5fd3aaa52b566581319769a06588920b (diff)
downloadbukkit-f349e7a0ad9f674e3b402270c1763abd57556ecf.tar
bukkit-f349e7a0ad9f674e3b402270c1763abd57556ecf.tar.gz
bukkit-f349e7a0ad9f674e3b402270c1763abd57556ecf.tar.lz
bukkit-f349e7a0ad9f674e3b402270c1763abd57556ecf.tar.xz
bukkit-f349e7a0ad9f674e3b402270c1763abd57556ecf.zip
Fix invalid integers in spawnpoint command. Fixes BUKKIT-3509
getInteger returns min value on illegal number formats, so we change behavior to throw an exception when requested.
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/bukkit/command/defaults/SpawnpointCommand.java12
-rw-r--r--src/main/java/org/bukkit/command/defaults/VanillaCommand.java12
2 files changed, 19 insertions, 5 deletions
diff --git a/src/main/java/org/bukkit/command/defaults/SpawnpointCommand.java b/src/main/java/org/bukkit/command/defaults/SpawnpointCommand.java
index d58054dd..4214bee0 100644
--- a/src/main/java/org/bukkit/command/defaults/SpawnpointCommand.java
+++ b/src/main/java/org/bukkit/command/defaults/SpawnpointCommand.java
@@ -47,9 +47,15 @@ public class SpawnpointCommand extends VanillaCommand {
if (args.length == 4) {
if (world != null) {
int pos = 1;
- int x = getInteger(sender, args[pos++], MIN_COORD, MAX_COORD);
- int y = getInteger(sender, args[pos++], 0, world.getMaxHeight());
- int z = getInteger(sender, args[pos], MIN_COORD, MAX_COORD);
+ final int x, y, z;
+ try {
+ x = getInteger(sender, args[pos++], MIN_COORD, MAX_COORD, true);
+ y = getInteger(sender, args[pos++], 0, world.getMaxHeight());
+ z = getInteger(sender, args[pos], MIN_COORD, MAX_COORD, true);
+ } catch(NumberFormatException ex) {
+ sender.sendMessage(ex.getMessage());
+ return true;
+ }
player.setBedSpawnLocation(new Location(world, x, y, z), true);
Command.broadcastCommandMessage(sender, "Set " + player.getDisplayName() + "'s spawnpoint to " + x + ", " + y + ", " + z);
diff --git a/src/main/java/org/bukkit/command/defaults/VanillaCommand.java b/src/main/java/org/bukkit/command/defaults/VanillaCommand.java
index 79088363..997cb39c 100644
--- a/src/main/java/org/bukkit/command/defaults/VanillaCommand.java
+++ b/src/main/java/org/bukkit/command/defaults/VanillaCommand.java
@@ -26,12 +26,20 @@ public abstract class VanillaCommand extends Command {
return getInteger(sender, value, min, Integer.MAX_VALUE);
}
- protected int getInteger(CommandSender sender, String value, int min, int max) {
+ int getInteger(CommandSender sender, String value, int min, int max) {
+ return getInteger(sender, value, min, max, false);
+ }
+
+ int getInteger(CommandSender sender, String value, int min, int max, boolean Throws) {
int i = min;
try {
i = Integer.valueOf(value);
- } catch (NumberFormatException ex) {}
+ } catch (NumberFormatException ex) {
+ if (Throws) {
+ throw new NumberFormatException(String.format("%s is not a valid number", value));
+ }
+ }
if (i < min) {
i = min;