Task - noonmaru/psychics GitHub Wiki

๊ฐœ์š”

Psychics์˜ task๋Š” ์ง€์—ฐ ์‹คํ–‰ ํ˜น์€ ์ฃผ๊ธฐ ์‹คํ–‰์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํด๋ž˜์Šค ์ œ์ž‘ํ•˜๊ธฐ

Runnable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜์„ธ์š”

class MyAbilityTask : Runnable {
    override fun run() {
        Bukkit.broadcastMessage("ํƒœ์Šคํฌ ํ˜ธ์ถœ")
    }
}

์—ฌ๊ธฐ์„œ๋Š” ํƒœ์Šคํฌ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ํƒœ์Šคํฌ ํ˜ธ์ถœ ์ด๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์„œ๋ฒ„ ์ „์ฒด์— ๋ณด๋‚ด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋“ฑ๋กํ•˜๊ธฐ

์ œ์ž‘ํ•œ Task๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋“ฑ๋กํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

class MyAbility : Ability<AbilityConcept>() {
    override fun onEnable() {
        psychic.runTaskTimer(MyAbilityTask(), 0L, 20L) // 1์ดˆ๋งˆ๋‹ค ํ˜ธ์ถœ
    }
}

1์ดˆ๋งˆ๋‹ค ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ๋˜๋„๋ก ๋“ฑ๋กํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ

๋‹ค์‹œ ๋นŒ๋“œํ•˜์—ฌ ์„œ๋ฒ„์— ์ ์šฉํ•ด๋ด…์‹œ๋‹ค.

psychic์€ Event์—์„œ ์ œ์ž‘ํ•œ ํŒŒ์ผ๋กœ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

images/Task_1.png

๋ฉ”์‹œ์ง€๊ฐ€ 1์ดˆ๋งˆ๋‹ค ์ถœ๋ ฅ๋˜๋Š” ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

์ทจ์†Œํ•˜๊ธฐ

๋“ฑ๋กํ•œ Task๋ฅผ ๋”์ด์ƒ ํ˜ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ์ทจ์†Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

class MyAbility : Ability<AbilityConcept>() {
    override fun onEnable() {
        val task = psychic.runTaskLater(MyAbilityTask(), 100L)
        task.cancel()
    }
}

Task๋ฅผ ๋“ฑ๋กํ•˜๋Š” ํ•จ์ˆ˜๋Š” TickTask ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

TickTask.cancel() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํƒœ์Šคํฌ๊ฐ€ ์ทจ์†Œ๋ฉ๋‹ˆ๋‹ค.

Tip

psychic ์— ๋“ฑ๋ก๋œ task ๋Š” ๋Šฅ๋ ฅ์ด ๋น„ํ™œ์„ฑํ™”๋  ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.