개인 자료란 (JE)

  서버 커뮤니티

Profile ENCE 대표칭호 없음

I3396 83afcc84f84f44ed811e268863d53eb3

Profile

Java

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

2020.09.14 조회 수 681 추천 수 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/576/775/003/262x150.crop.jpg?20240426232553

아티클

이달의 블록: 단단한 진흙

학교가기싫다

2024-04-26

0

/files/thumbnails/115/774/003/262x150.crop.jpg?20240428135129

업데이트

마인크래프트 1.20.5 정식 업데이트

학교가기싫다

2024-04-24

0

/files/thumbnails/762/770/003/262x150.crop.jpg?20240418073724

레드스톤

T.B.H (고민중독) | 노트블럭 버전 | NoteBlock Cover [한국어 영어 중국어 가사 추가]

노트블럭전문가

2024-04-18

0

/files/thumbnails/218/767/003/262x150.crop.jpg?20240412130213

레드스톤

우리의 꿈 - 원피스 오프닝

노트블럭전문가

2024-04-12

0

/files/thumbnails/505/766/003/262x150.crop.jpg?20240411122306

레드스톤

기동전사 건담 수성의 마녀 | 노트블럭 커버 1

노트블럭전문가

2024-04-11

1