본격적으로 mod를 만들기 전에 앞서 필요한 기본적인 지식들을 알아보자.
이 글을 읽는 사람이 얼마나 될지는 모르겠지만, 읽기 전 주의해야 할 사항이 있다. 필자는 모드를 배우기 시작한지 별로 안되어 알게 된 사항을 기록하는 글이라 모든 내용이 완벽하지는 않으며 이 글에는 정보가 계속 추가 될 예정이다. 또한 공식문서를 읽고 직접 번역한 것이라 오역이나 잘못된 정보가 생길 수도 있으니 적당히 걸러 듣기를 바란다.
또한 이 글은 자바 언어에 능숙하거나 적어도 간단한 프로젝트 하나는 할수있는 사람들을 대상으로 작성되었다. 만약 자바언어에 대해 잘 모른다면 유튜브나 책으로라도 독학해보고 이 글을 보는 것을 추천한다.
첫 글에서 neoforge mdk 압축을 풀고 인텔리제이에서 파일을 불러오기까지는 했을 것이다.
왼쪽에 파일 목록을보면 src파일 안에 소스가 있고 먼저 모드의 정보를 작성해보겠다
모드정보작성
src/main/java/resource/META-INF 안에 mods.toml 에 작성된다 여기에
[[mods]] #mandatory
# The modid of the mod
modId="${mod_id}" #mandatory
# The version number of the mod
version="${mod_version}" #mandatory
# A display name for the mod
displayName="${mod_name}" #mandatory
이렇게 변수로 모드의 아이디, 버전 이름 등등이 나와있는데 이러한 정보들은 gradle.properties 파일에서 수정할수 있다.
모드를 만들기 위해서는 먼저 중요한 5가지 개념을 알아야한다
등록
forge에는 Registry 라는 기능이 있다. 이 기능은 모드에 추가된 블럭이나 아이템들을 게임에서 사용할 수 있도록 도와주는 과정이고 핵심적인 기능이다.
만약 이 과정을 통해 블럭이나 아이템들이 등록이 되지 않는다면 크래시나 오류가 뜰 수도 있다. Block과 Item은 각각 레지스트리라고 하고 각각의 레지스트리 안에는 같은 이름이 있어도 된다.
예를 들어 Block 안에 A라는 이름을 가진 블럭과 Item 안에 A라는 이름을 가진 아이템은 서로 충돌하지 않는다. 하지만 Block 안에 A라는 이름을 가진 블럭이 두개가 있다면 충돌하게 되고 두번째 블럭이 첫번째 블럭을 덮어쓰게 된다.
나는 화폐시스템을 먼저 만들것인데 이때 필요한 블럭이나 아이템은 돈을 뽑는 Atm기능을 가진 블럭, 지폐같은 아이템등이 있는데 이런것들을 등록하는 것이다. 이 외에도 몹,엔티티, 구조물 등의 레지스트리도 있는데 이 글에서는 아이템과 블럭을 위주로 설명할 것이다.
사이드
사이드에는 두가지가 있다. 클라이언트와 서버이다. 클라이언트는 사람들이 상호작용하는 것이고, 서버는 멀티플레이에서 사람들이 연결되는 공간이다.
여기부터는 아직 작성되지 않았다. #2편에서 본격적으로 코드 작성을 시작했으니 거기로 가라
이벤트
생명주기
리소스