HQService / HQFramework

A next-generation Bukkit development framework.
https://hqservice.kr
GNU General Public License v3.0
47 stars 1 forks source link

CommandArgumentProvider 직관적으로 변경, ExceptionHandler 추가 #25

Closed vjh0107 closed 1 year ago

vjh0107 commented 1 year ago

CommandArgumentProvider 가 좀 더 직관적으로 변경되었습니다.


@Qualifier("chestRow")
@Component
class ChestRowCommandArgumentProvider : CommandArgumentProvider<Int> {
    override suspend fun cast(context: CommandContext, argument: String?): Int {
        argument ?: throw ArgumentFeedback.RequireArgument
        val int = argument.toIntOrNull() ?: throw ArgumentFeedback.NotNumber
        if (int < 1 || int > 6) {
            throw ArgumentFeedback.Message("&c1과 6 사이의 수를 입력해 주세요.")
        }

        return int
    }

    override suspend fun getTabComplete(
        context: CommandContext,
        location: Location?
    ): List<String> {
        return listOf("1", "2", "3", "4", "5", "6")
    }
}
Screen Shot 2023-08-28 at 9 18 43 PM

Qualifier 을 통해 CommandArgumentProvider 를 변경할 수 있습니다.

Screen Shot 2023-08-28 at 9 21 52 PM

CommandArgumentExceptionHandler 를 통해 Argument 를 cast 하는 과정에서 throwable 을 throw 해서 유저에게 피드백 할 수 있습니다.