You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When using an implementation of IStringController where input validation is used, the user is unable to enter an invalid value.
This is an issue for certain kinds of input validation, for example:
validating if the input is a valid element of a registry
validating if the input can be properly parsed
etc.
Here is a concrete example:
classModifierExpressionController(
privatevaloption:Option<BeaconModifierExpression>,
) : IStringController<BeaconModifierExpression> {
overridefunisInputValid(input:String): Boolean {
returntry {
val expression =BeaconModifierExpression(input)
expression.evaluate(0.0) // try evaluating it to make sure it gets parsed (we parse it lazily)true
} catch (e:ParseException) {
false
}
}
overridefunoption() = option
overridefungetString() = option.pendingValue().expressionString
overridefunsetFromString(value:String) {
option.requestSet(BeaconModifierExpression(value))
}
}
The input is expected to be an equation which can use various functions such as min, cos, log, etc., as well as standard math operations such as +, -, *, etc.
The issue is, if you wanted to input an expression such as 1 + 1. you will begin typing the expression by doing 1. This is a valid expression. But then you'll attempt to input + resulting in 1+. This is not a valid expression. However, the invalid expression is an intermediary step on the way to a valid one, as next 1 will be typed, resulting in 1+1.
The same thing might happen if you're, for example, required to input a valid registry entry, such as a valid mob id.
the mob id m is not a valid mob id, however it is required when attempting to type out the full id of minecraft:creeper.
I think a better alternative rather than not allowing the character to be typed would be to simply make the box red and make it the config unable to be saved, indicating that the input is invalid.
The text was updated successfully, but these errors were encountered:
When using an implementation of
IStringController
where input validation is used, the user is unable to enter an invalid value.This is an issue for certain kinds of input validation, for example:
Here is a concrete example:
The input is expected to be an equation which can use various functions such as
min
,cos
,log
, etc., as well as standard math operations such as+
,-
,*
, etc.The issue is, if you wanted to input an expression such as
1 + 1
. you will begin typing the expression by doing1
. This is a valid expression. But then you'll attempt to input+
resulting in1+
. This is not a valid expression. However, the invalid expression is an intermediary step on the way to a valid one, as next1
will be typed, resulting in1+1
.The same thing might happen if you're, for example, required to input a valid registry entry, such as a valid mob id.
the mob id
m
is not a valid mob id, however it is required when attempting to type out the full id ofminecraft:creeper
.I think a better alternative rather than not allowing the character to be typed would be to simply make the box red and make it the config unable to be saved, indicating that the input is invalid.
The text was updated successfully, but these errors were encountered: