개인 자료란 (JE)

  서버 커뮤니티

Profile 으앙뀨앙 대표칭호 없음

aaeing 7720d585f6e74924bedda9b5d92084a1

Profile

질문하기 플러그인

직업 플러그인 제작 시 권한부여를 뭐로 하시나요??

2024.01.22 조회 수 74 추천 수 0
이해도 입문자 
게임버전 (JE) 1.20 
게임버전 (BE) 관련없음 

일단 spigot을 사용하고 있고요

해시맵을 이용해서 각 플레이어 데이터와 직업을 엮어서 저장하려했는데,

서버가 리로드 되는 과정에서는 결국 내부에 있는 해시맵이 지워지네요.. 그래서 해시맵을 파일 안에 저장시켜서 꺼내 쓰려 했는데 이 과정에서 막혔네요.. ㅠㅠ

자바에 대한 지식만 아는 상태라 프로그램간의 연계를 몰라서 이러는 거 같기도 한데.. 참고될만한 것이 있을까요..?

럭펌같은 플러그인도 있는건 아는데 일부러 안쓰고 혼자 해보려고 하고 있습니다.


5개의 댓글

코코냐
2024.01.22

퍼미션 노드..?

으앙뀨앙
2024.01.22
@코코냐

자체적으로 제작하는건 힘들겠죠...? ㅎ휴ㅠㅠㅠ 나름 욕심내서 해보려했는데..

으앙뀨앙
2024.01.22
@코코냐

감사합니다 답변주셔서!

qsef1256
2024.01.22

요약: DB 쓰세요. 그리고 그냥 럭펌 쓰는 것도 나쁘지 않습니다.

 

기본적으로 자바에서 변수를 통해 만드는 정보는 주기억장치, 즉 RAM에 저장됩니다, 정보를 영구적으로 저장하려면(=서버가 꺼져도 남아있게 하려면) 보조기억장치, 즉 하드디스크 또는 SSD등에 정보를 저장해야 합니다. 이렇게 하는 이유는 보조기억장치는 용량이 큰 대신 속도가 많이 느리기 때문이며, 이를 메모리 계층 구조라고 합니다. 이는 컴퓨터 공학의 운영체제 과목에서 배우실 수 있습니다. 따라서, 여기서 얘기하는 "프로그램 간의 연계" 같은 걸 배우려면 컴퓨터 공학 커리큘럼을 따라가시면 됩니다.

 

보조기억장치에 정보를 저장하는 방법은 여러가지가 있는데, 사실 그냥 txt 파일에 정보를 저장해도 보조기억장치에 저장이 됩니다. 그러나 데이터를 다룰 때 제일 많이 사용하는 방법은 DB를 사용하는 겁니다. DB 종류는 여러가지가 있는데 크게 RDBMS와 NoSQL로 나뉩니다. 이는 데이터베이스 과목에서 배우실 수 있으나, 간단히 요약하자면 RDBMS는 표고, NoSQL은 표 모양이 아닌 DB를 말합니다.

 

대부분의 데이터는 RDBMS로 충분히 다룰 수 있기 때문에, 보통 DB라고 하면 RDBMS를 먼저 찾습니다. 그리고 RDBMS도 여러 종류가 있지만 적어도 플러그인 개발에서는 MySQL이 제일 보편적입니다. 근데 데이터베이스는 기본적으로 외부 프로그램이기 때문에 자바 자체적으로 DB와 통신할 수 있는 API, 즉 JDBC를 제공합니다. 따라서 자바에서 DB를 사용한다면 JDBC를 사용하면 됩니다.

 

JDBC를 통해 MySQL을 플러그인에서 사용하는 방법은 Spigot Wiki에 있습니다: https://www.spigotmc.org/wiki/mysql-database-integration-with-your-plugin/

 

추가로, 이미 존재하는 물건(럭펌)이 있다는 걸 알면서도 따로 개발을 하는 건 좋지 못한 습관에 속합니다. 이를 바퀴의 재발명 이라고 부르며, 특수한 경우이거나 학습 목적이 아닌 이상 추천하지 않습니다.

으앙뀨앙
2024.01.22
@qsef1256

와... 사실 학습목적도 있고 약간의 개인적 욕심도 있어서 해봤는데 계속 해메다가 덕분에 좀 길을 찾은거 같네요!! 정말 감사합니다!!