분야 | 플러그인 |
---|---|
장르 | 개발자 툴 |
게임버전 | 모든버전 |
API | 스피곳, 페이퍼 |
이 글은 개인 블로그에 작성한 내용을 공유하는 글 입니다.
(공유 하는 과정에서 누락된 이미지나 글이 있을 수 있습니다. )
( 해당 블로그에서 원본을 보실 수 있습니다. https://cchplugin.tistory.com/ )
블로그글을 복사해서 붙혀넣기 시 이미지 첨부가 정상적으로 되지 않네요.
블로그 글을 참고하시는 것을 추천드립니다.
링크 : https://cchplugin.tistory.com/11
안녕하세요.
오늘은 java로 플러그인을 만들 때 사용될 만한 용어들에 대해서 정리하여 알려드리겠습니다.
프로젝트, 패키지, 클래스, 매서드(함수), 어노테이션, 이벤트, api, 라이브러리, import, git
프로젝트 : 프로젝트는 패키지와 클래스를 포함해 프로그램 구성요소를 모아놓은 것입니다.
패키지 : java에서는 보통 기능별로 package를 나눕니다. 사람마다 기준이 다르겠지만 저는 command, event, file, gui 정도로 나누었고 패키지 분리하는 방법에 대해서는 차후에 설명해드리겠습니다.
클래스 : 전체 프로그램이 레고라고 한다면 클래스는 레고 부품 하나하나를 의미한다고 이해하시면 됩니다.
프로젝트/패키지/클래스를 나누는 이유는 코드를 수정해야 할 필요가 생겼을 때 수정이 용이하도록 하기 위함입니다.
하나의 패키지, 하나의 클래스로만 프로그램을 작성할 수도 있지만, 만약 코드가 1000줄 이상, 엄청 길다면 자신이 쓴 코드라도 수정할 위치를 바로 찾는 것은 힘들 것입니다.
매서드(함수) : 아래 사진과 같이 매머드이름() { 로 시작해서 }로 끝나는 부분이 하나의 매서드입니다.
매서드는 클래스보다 작은 단위이며, 클래스보다 더 세세하게 나눴다고 생각하면 됩니다.
(ex : 아래 사진에서 onEnable() 함수는 bukkit서버가 on 됐을 때 수행되는 기능들에 대한 내용이고,
onDisable() 함수는 bukkit서버가 off 됐을 때 수행되는 기능들에 대한 내용 합니다.)
어노테이션 : 어노테이션은 함수 또는 변수 앞에 @와 같은 표시로 나타냅니다.
이 함수가 어떤 종류인지, 무엇을 위한 것인지... 등등을 java 프로그램에게 알려주기 위해 붙이는 표지판이라고 생각하면 됩니다.
@Override : 함수가 오버라이드(override) 되었다는 것을 알려주는 어노테이션입니다.
오버라이드는 이미 정의된 함수를 재정의 한다는 의미입니다.
쉽게 말해, 마인크래프트 개발자들이 만들어놓은 onEnable() 함수를 사용할 것이라는 걸 알리기 위해 사용됩니다.
@EventHandler : 이벤트가 발생했을 때 실행될 함수라는 것을 알려주기 사용됩니다.
이벤트 : 이벤트는 특정한 사건이 일어났을 때 발생되는 일종의 신호입니다.
마인크래프트 개발자들은 플레이어들의 특정 행동들에 이벤트가 발생되도록 만들어 놓았습니다.
(예를 들면, 인벤토리를 닫을 때, 서버에 접속했을 때, 블록을 부셨을 때, 플레이어가 죽었을 때, 식물이 자랐을 때 ~~ 등등의 다양한 이벤트들이 있습니다.)
(ex : PlayerJoinEvent는 플레이어가 서버에 접속했을 때 신호가 발생되며,
신호가 발생되면 EventHandler가 붙어 있는 함수 중 PlayerJoinEvent를 사용하고 있는 것을 실행시킵니다.)
라이브러리, API : 엄밀히 말하면 api와 라이브러리는 다른 내용이지만 플러그인을 개발하는 단계에 있어 정확히 구분할 필요하는 없다고 생각하기 때문에 같은 개념으로 설명하겠습니다.
우리는 마인크래프트 개발자가 만들어 놓은 기능들을 재정의하고(override), 가져와서(import)하여 사용하고 있습니다.
라이브러리란, 누군가가 이미 만들어 놓은 코드, 함수, 클래스, 등을 말합니다.
라이브러리를 이용하면 모든 기능들을 직접 제작할 필요 없이, 쉽게 구현할 수 있습니다.
(ex : Vault플러그인을 라이브러리로 사용하게 되면 Vault 플러그인 개발자가 정의해놓은 기능들을 (마인크래프트의 경제와 관련된 것들) 그대로 가지고와 사용할 수 있습니다.)
import : import는 프로젝트에서 라이브러리를 사용하기 위해 거쳐야 하는 과정 중 하나입니다.
import 하기 위해서는 라이브러리 등록을 완료한 상태여야 합니다.
(라이브러리 등록 참고 https://cchplugin.tistory.com/7)
아래와 같이 import 가져 올 클래스 경로로 사용됩니다.
다행히도 우리는 경로를 일일이 타이핑할 필요는 없습니다.
아래와 같이 org.bukkit.plugin.java.JavaPlugin라는 Class 경로를 가진 것을 import 내용을 주석으로 사용하면,
JavaPlugin 클래스 안에 정의되어 있는 것들에 빨간 줄이 생기며 에러가 발생합니다.
( 주석은, java 프로그램이 읽지 못하는 문장이며, 없는 것과 똑같이 동작합니다. )
다시 import 하기 위해서는 2가지 방법이 있습니다. 빨간 줄이 생긴 곳에 마우스를 올려놓고 클릭하거나,
빨간 줄이 뜬 곳 맨 오른쪽에 커서를 옮겨두고 Ctrl + Space를 누르는 방법이 있습니다.
둘 중 하나를 하게 되면 아래와 같이 정상적으로 import 될 것입니다.
Git : git(깃)은 개발자들이 주로 사용하는 버전 관리 시스템입니다. 많은 개발자들이 github를 통해 버전을 관리하고, 소스코드를 공개하고 있습니다.
제 github 주소는 https://github.com/ckdgus08 아래와 같습니다.
제 github는 플러그인에 관련된 내용은 비공개로 되어있어 보실 수 없습니다. (주문제작을 받기 때문에 공개할 수 없습니다 ㅠ.)
차후에 git 사용법에 대해 포스팅하며 강의로 사용되는 플러그인 소스코드를 공개하겠습니다.
https://ckdgus.tistory.com/ 이 블로그는 제가 공부한 내용을 정리하는 블로그입니다.
주로 코딩에 관련된 내용을 다루니 관심 있으신 분들을 참고하시길 바랍니다!
댓글이 없습니다.
새로운 댓글을 등록해 주세요!