mirror of
https://github.com/Minestom/Minestom.git
synced 2024-09-26 05:32:50 +02:00
Fixed command range argument
This commit is contained in:
parent
17d638d460
commit
e8cd68bc3b
@ -1,13 +1,10 @@
|
||||
package net.minestom.server.command.builder.arguments.minecraft;
|
||||
|
||||
import net.minestom.server.command.builder.arguments.Argument;
|
||||
import net.minestom.server.utils.math.FloatRange;
|
||||
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class ArgumentFloatRange extends Argument<FloatRange> {
|
||||
|
||||
public static final int FORMAT_ERROR = -1;
|
||||
public class ArgumentFloatRange extends ArgumentRange<FloatRange> {
|
||||
|
||||
public ArgumentFloatRange(String id) {
|
||||
super(id);
|
||||
@ -20,7 +17,14 @@ public class ArgumentFloatRange extends Argument<FloatRange> {
|
||||
return SUCCESS; // Is a single number
|
||||
} catch (NumberFormatException e) {
|
||||
String[] split = value.split(Pattern.quote(".."));
|
||||
if (split.length == 2) {
|
||||
if (split.length == 1) {
|
||||
try {
|
||||
Float.valueOf(split[0]); // min
|
||||
return SUCCESS;
|
||||
} catch (NumberFormatException e2) {
|
||||
return FORMAT_ERROR;
|
||||
}
|
||||
} else if (split.length == 2) {
|
||||
try {
|
||||
Float.valueOf(split[0]); // min
|
||||
Float.valueOf(split[1]); // max
|
||||
@ -37,18 +41,31 @@ public class ArgumentFloatRange extends Argument<FloatRange> {
|
||||
@Override
|
||||
public FloatRange parse(String value) {
|
||||
if (value.contains("..")) {
|
||||
final int index = value.indexOf('.');
|
||||
String[] split = value.split(Pattern.quote(".."));
|
||||
final float min = Float.valueOf(split[0]);
|
||||
final float max = Float.valueOf(split[1]);
|
||||
|
||||
final float min;
|
||||
final float max;
|
||||
if (index == 0) {
|
||||
// Format ..NUMBER
|
||||
min = Float.MIN_VALUE;
|
||||
max = Float.valueOf(split[0]);
|
||||
} else {
|
||||
if (split.length == 2) {
|
||||
// Format NUMBER..NUMBER
|
||||
min = Float.valueOf(split[0]);
|
||||
max = Float.valueOf(split[1]);
|
||||
} else {
|
||||
// Format NUMBER..
|
||||
min = Float.valueOf(split[0]);
|
||||
max = Float.MAX_VALUE;
|
||||
}
|
||||
}
|
||||
|
||||
return new FloatRange(min, max);
|
||||
} else {
|
||||
final float number = Float.valueOf(value);
|
||||
return new FloatRange(number, number);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getConditionResult(FloatRange value) {
|
||||
return SUCCESS;
|
||||
}
|
||||
}
|
||||
|
@ -1,13 +1,10 @@
|
||||
package net.minestom.server.command.builder.arguments.minecraft;
|
||||
|
||||
import net.minestom.server.command.builder.arguments.Argument;
|
||||
import net.minestom.server.utils.math.IntRange;
|
||||
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class ArgumentIntRange extends Argument<IntRange> {
|
||||
|
||||
public static final int FORMAT_ERROR = -1;
|
||||
public class ArgumentIntRange extends ArgumentRange<IntRange> {
|
||||
|
||||
public ArgumentIntRange(String id) {
|
||||
super(id);
|
||||
@ -20,7 +17,14 @@ public class ArgumentIntRange extends Argument<IntRange> {
|
||||
return SUCCESS; // Is a single number
|
||||
} catch (NumberFormatException e) {
|
||||
String[] split = value.split(Pattern.quote(".."));
|
||||
if (split.length == 2) {
|
||||
if (split.length == 1) {
|
||||
try {
|
||||
Integer.valueOf(split[0]); // min
|
||||
return SUCCESS;
|
||||
} catch (NumberFormatException e2) {
|
||||
return FORMAT_ERROR;
|
||||
}
|
||||
} else if (split.length == 2) {
|
||||
try {
|
||||
Integer.valueOf(split[0]); // min
|
||||
Integer.valueOf(split[1]); // max
|
||||
@ -37,18 +41,31 @@ public class ArgumentIntRange extends Argument<IntRange> {
|
||||
@Override
|
||||
public IntRange parse(String value) {
|
||||
if (value.contains("..")) {
|
||||
final int index = value.indexOf('.');
|
||||
String[] split = value.split(Pattern.quote(".."));
|
||||
final int min = Integer.valueOf(split[0]);
|
||||
final int max = Integer.valueOf(split[1]);
|
||||
|
||||
final int min;
|
||||
final int max;
|
||||
if (index == 0) {
|
||||
// Format ..NUMBER
|
||||
min = Integer.MIN_VALUE;
|
||||
max = Integer.valueOf(split[0]);
|
||||
} else {
|
||||
if (split.length == 2) {
|
||||
// Format NUMBER..NUMBER
|
||||
min = Integer.valueOf(split[0]);
|
||||
max = Integer.valueOf(split[1]);
|
||||
} else {
|
||||
// Format NUMBER..
|
||||
min = Integer.valueOf(split[0]);
|
||||
max = Integer.MAX_VALUE;
|
||||
}
|
||||
}
|
||||
|
||||
return new IntRange(min, max);
|
||||
} else {
|
||||
final int number = Integer.valueOf(value);
|
||||
return new IntRange(number, number);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getConditionResult(IntRange value) {
|
||||
return SUCCESS;
|
||||
}
|
||||
}
|
||||
|
@ -2,25 +2,16 @@ package net.minestom.server.command.builder.arguments.minecraft;
|
||||
|
||||
import net.minestom.server.command.builder.arguments.Argument;
|
||||
|
||||
// FIXME: cannot make the minecraft:range identifier working
|
||||
public class ArgumentRange extends Argument<Float> {
|
||||
public abstract class ArgumentRange<T> extends Argument<T> {
|
||||
|
||||
public ArgumentRange(String id, boolean allowSpace, boolean useRemaining) {
|
||||
super(id, allowSpace, useRemaining);
|
||||
public static final int FORMAT_ERROR = -1;
|
||||
|
||||
public ArgumentRange(String id) {
|
||||
super(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCorrectionResult(String value) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Float parse(String value) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getConditionResult(Float value) {
|
||||
return 0;
|
||||
public int getConditionResult(T value) {
|
||||
return SUCCESS;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user