개인 자료란 (JE)

  서버 커뮤니티

Profile ENCE 대표칭호 없음

I3396 83afcc84f84f44ed811e268863d53eb3

Profile

Java

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

2020.09.14 조회 수 711 추천 수 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/483/916/003/262x150.crop.jpg?20241127115329

레드스톤

[노트블럭 커버] 뉴진스 - ETA 1

노트블럭전문가

2024-11-27

0

/files/thumbnails/150/925/003/262x150.crop.jpg?20241123005717

건축

응답하라 1988 ?

팀뉴일리시

2024-11-23

4

/files/thumbnails/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 6

KHC

2024-10-25

2

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

2

/files/thumbnails/219/899/003/262x150.crop.jpg?20241009200950

건축

송전탑+도시 2

dbasd12

2024-10-09

2