diff --git a/src/main/java/net/knarcraft/stargatecommand/command/CommandConfig.java b/src/main/java/net/knarcraft/stargatecommand/command/CommandConfig.java index 6adb8db..b69e3ad 100644 --- a/src/main/java/net/knarcraft/stargatecommand/command/CommandConfig.java +++ b/src/main/java/net/knarcraft/stargatecommand/command/CommandConfig.java @@ -88,19 +88,28 @@ public class CommandConfig implements CommandExecutor { } } OptionDataType optionDataType = selectedOption.getDataType(); + Object typeCastedValue; //Validate the input based on the data type switch (optionDataType) { case INTEGER -> { - if (getInteger(commandSender, selectedOption, value) == null) { + Integer intValue = getInteger(commandSender, selectedOption, value); + if (intValue == null) { return; + } else { + typeCastedValue = intValue; } } case DOUBLE -> { - if (getDouble(commandSender, selectedOption, value) == null) { + Double doubleValue = getDouble(commandSender, selectedOption, value); + if (doubleValue == null) { return; + } else { + typeCastedValue = doubleValue; } } + case BOOLEAN -> typeCastedValue = Boolean.parseBoolean(value); + default -> typeCastedValue = value; } /* Test any option data type with a defined set of values. @@ -112,7 +121,7 @@ public class CommandConfig implements CommandExecutor { } } - configurationAPI.setConfigurationOptionValue(selectedOption, value); + configurationAPI.setConfigurationOptionValue(selectedOption, typeCastedValue); saveAndReload(commandSender); } diff --git a/src/main/java/net/knarcraft/stargatecommand/command/ConfigTabCompleter.java b/src/main/java/net/knarcraft/stargatecommand/command/ConfigTabCompleter.java index 1efe482..0e94ece 100644 --- a/src/main/java/net/knarcraft/stargatecommand/command/ConfigTabCompleter.java +++ b/src/main/java/net/knarcraft/stargatecommand/command/ConfigTabCompleter.java @@ -85,17 +85,18 @@ public class ConfigTabCompleter implements TabCompleter { * @return

Some or all of the valid values for the option

*/ private List getPossibleOptionValues(ConfigurationOption selectedOption, String typedText) { - switch (selectedOption) { - case LANGUAGE: - //Return available languages - return filterMatching(List.of(OptionDataType.LANGUAGE.getValues()), typedText); - case DEFAULT_NETWORK: - //Just return the default value as most values should be possible - if (typedText.trim().isEmpty()) { - return putStringInList((String) selectedOption.getDefaultValue()); - } else { - return new ArrayList<>(); - } + String[] availableValues = selectedOption.getDataType().getValues(); + if (availableValues != null && availableValues.length > 0) { + return filterMatching(List.of(availableValues), typedText); + } + + //Just return the default value as most values should be possible + if (selectedOption == ConfigurationOption.DEFAULT_NETWORK) { + if (typedText.trim().isEmpty()) { + return putStringInList((String) selectedOption.getDefaultValue()); + } else { + return new ArrayList<>(); + } } if (selectedOption.getDataType() == OptionDataType.COLOR) {