개인 자료란 (JE)

  서버 커뮤니티

Profile ENCE 대표칭호 없음

I3396 83afcc84f84f44ed811e268863d53eb3

Profile

Java

버킷 스케쥴러 (레서님 작성)

2020.09.14 조회 수 682 추천 수 0
Spigot-API 1.15.2-R0.1-SNAPSHOT 기준으로 설명됩니다.

이 강좌는 버킷 스케쥴러에 대해서 설명하는 강좌입니다. 스케쥴러는 Event 에 응답으로 실행되는 Listener 와는 다릅니다. 스케쥴러로는 태스크를 반복적으로 실행하도록 예약할수도 있습니다. 스케쥴러는 완료되거나 취소되거나 플러그인이 비활성화 될 때까지 계속 실행됩니다.



버킷 스케쥴러 사용법:


버킷 스케쥴러 사용법: Bukkit.getScheduler() 로 BukkitScheduler 객체를 받아와서 사용할 수 있습니다.
BukkitScheduler 객체의 자주 사용되는 메소드에는 - void cancelTask(int taskId) : taskId 에 해당되는 태스크를 스케쥴러에서 뺍니다.
- void cancelTasks(Plugin plugin) : plugin 이 추가한 모든 태스크를 스케쥴러에서 뺍니다.
- BukkitTask runTask(Plugin plugin, Runnable task) : 다음틱에 task 를 실행하며, 그 태스크를 반환합니다.
- BukkitTask runTaskAsynchronously(Plugin plugin, Runnable task) : task 를 비동기로 실행하며, 그 태스크를 반환합니다.
이때 task 는 버킷API 를 사용해서는 안됩니다.
- BukkitTask runTaskLater(Plugin plugin, Runnable task, long delay) : delay 틱 후에 task 를 실행하며, 그 태스크를 반환합니다.
- BukkitTask runTaskLaterAsynchronously(Plugin plugin, Runnable task, long delay) : delay 틱 후에 task 를 비동기로 실행하며, 그 태스크를 반환합니다.
이때 task 는 버킷API 를 사용해서는 안됩니다.
- BukkitTask runTaskTimer(Plugin plugin, Runnable task, long delay, long period) : delay 틱 후에 task 를 실행하고 period 틱 마다 task 를 실행하며, 그 태스크를 반환합니다.
- BukkitTask runTaskTimerAsynchronously(Plugin plugin, Runnable task, long delay, long period) : delay 틱 후에 task 를 비동기로 실행하고 period 틱 마다 task 를 실행하며, 그 태스크를 반환합니다.
이때 task 는 버킷API 를 사용해서는 안됩니다.

위의 방법 말고 스케쥴러에 태스크를 추가할 수 있는 방법이 있습니다. BukkitRunnable를 사용하면 됩니다. 해당 클래스는 abstract class 이며, 해당 클래스는 Runnable 인터페이스를 구현하고, void run() 을 오버라이드 하여 사용해야합니다. 익명 클래스로 사용해도 됩니다.



자주 사용되는 메소드에는
- BukkitTask runTask(Plugin plugin) : BukkitScheduler.runTask 메소드와 같습니다.
- BukkitTask runTaskAsynchronously(Plugin plugin) : BukkitScheduler.runTaskAsynchronously 메소드와 같습니다.
- BukkitTask runTaskLater(Plugin plugin, long delay) : BukkitScheduler.runTaskLater 메소드와 같습니다.
- BukkitTask runTaskLaterAsynchronously(Plugin plugin, long delay) : BukkitScheduler.runTaskLaterAsynchronously 메소드와 같습니다.
- BukkitTask runTaskTimer(Plugin plugin, long delay, long period) : BukkitScheduler.runTaskTimer 메소드와 같습니다. - BukkitTask runTaskTimerAsynchronously(Plugin plugin, long delay, long period) : BukkitScheduler.runTaskTimerAsynchronously 메소드와 같습니다.
BukkitTask 객체는 해당 태스크의 정보를 담고 있는 객체입니다. 메소드에는
- void cancel() : 해당 태스크를 스케쥴러에서 뺍니다.
- Plugin getOwner() : 이 태스크를 스케쥴러에 추가한 Plugin 을 반환합니다. -
int getTaskId() : 해당 태스크의 id 를 반환합니다.
- boolean isCancelled() : 해당 태스크가 스케쥴러에서 빠져있는지를 반환합니다.
- boolean isSync() : 해당 태스크가 동기인지를 반환합니다.
예를 들어 runTaskAsynchronously 메소드로 추가된 태스크는 false 를 반환합니다.

Warning
댓글이 없습니다.

새로운 댓글을 등록해 주세요!

뉴스 및 창작물
/files/thumbnails/268/789/003/262x150.crop.jpg?20240515192032

레드스톤

벌레먹은 돌 빠르게 제거하는 법

GlassesFilm

2024-05-15

0

/files/thumbnails/797/788/003/262x150.crop.jpg?20240515090924

건축

마인크래프트로 구현한 카르카손 보드게임

Warak

2024-05-15

1

/files/thumbnails/487/784/003/262x150.crop.jpg?20240508233607

모드

Windows Borderless 모드에서 악성코드 발견

학교가기싫다

2024-05-08

1

/files/thumbnails/384/778/003/262x150.crop.jpg?20240512002324

업데이트

마인크래프트 자바 에디션 스냅샷 24w18a

학교가기싫다

2024-05-06

0

/files/thumbnails/855/781/003/262x150.crop.jpg?20240505141129

레드스톤

레이저 클리너

GlassesFilm

2024-05-05

1