개인 자료란 (JE)

  서버 커뮤니티

Profile 알루네스 대표칭호 없음
Profile

이해도 초보자 
게임버전 (JE) 1.19.2 
게임버전 (BE) 1.19.x 

포지로 서버를 돌리고있습니다.

헌데 마음에 드는 모드이지만 특정 아이템이 너무 강력하게 작동되는 버그(워든이 세방안에 사망)가 있어 수치를 조절하려는데 콘피그 폴더에는 class파일만 존재합니다.

이경우 모드를 수정해야 할 것 같은데 원래 이클립스를 사용하고 있어 class파일을 열람은 가능한데 수정이 불가능하네요.

소스코드를 열어 복사 후 컴파일 하려는데 이클립스에선 컴파일 버튼 자체가 안보이고 cmd javac 에서 하려니 에러가 발생합니다.




5개의 댓글

냥냐챠
2023.05.23

디컴파일된 자바 코드 가지고 IDE 에 옮겨 적어봐야 컴파일 할 때 각종 체크때문에 컴파일이 제대로 안될거다냥.

먼저 모드가 오픈소스인지 확인할 필요가 있지않나 싶다냥. 오픈소스라면 포크한 다음에 제대로 컴파일 할 수 있을거거든냥.

 

오픈소스가 아니라면 취할 수 있는 선택이 적다냥.

디컴파일된 자바 코드는 각종 의존성이 날라간 상태라서 온전히 컴파일 시도하는것만 하더라도 많은 시간이 걸릴거다냥.

그나마 나은 선택은 바이트 코드 수준에서 직접 명령어 단위로 필요한 부위를 식별한 다음 패치를 하는 것이다냥.

 

그렇지만 이건 JVM 에 대한 많은 이해와 지식이 필요하다냥. 삽입/변경/삭제해야 하는 명령어가 많거나 복잡할 수록 이 선택지도 그다지 쓸모 없을 가능성이 높다냥.

명령어만 수정해서는 안되고, 스택맵이라는 바이트 코드 검증용 데이터도 함께 변경된 명령어에 맞게 업데이트 해야하는데, 이건 차마 쉽다고 할 수가 없다냥. 어렵다냥.

 

더 나은 선택지는 그냥 모드 개발자랑 컨택해서 글쓴냥이의 의견을 말하고 업데이트를 해달라 하던가, 따로 그 부분을 설정으로 빼달라고 의견을 제시하는 거겠지냥.

 

참고냥

@냥냐챠

감사합니다. 어찌어찌 오픈소스 코드를 구했는데 소스 폴더가 제가 아는 방식이랑 많이 다르네요.저의 경우네는 포지를 쓰니까 fabric는 지워버리고 common 폴더내에서 소스코드를 수정하면 되는걸까요?

냥냐챠
2023.05.23
@알루네스

아니냥 그렇게 지우면 안되고냥. 저런 프로젝트 구조는 여러 모드 로더를 지원하기 위해서 모드 API 에 대응해서 별도로 구현한걸

각각의 폴더에다가 분리한 형태다냥. 지우면 빌드 스크립트에 이미 설정된 것들이 깨질거라 지우면 아마 빌드가 안될거라 생각냥.

 

글쓴냥이가 결국 수정해야할 곳은 common 폴더쪽에 있을것으로 예상냥.

 

나머지는 구글링해가면서 찾는것이 좋다냥.

참고냥.

알루네스
2023.05.23
@냥냐챠

아하 감사합니다. 그럼 저상태에서 common에서 수정 후 그대로 컴파일하면 되겟네요! 좋은답변 정말 감사합니다!

알루네스
2023.05.23
@냥냐챠

선생님.. 혹시 컴파일은 어떻게 해야할까요..? 다른 자바처럼 컴파일하면 오류가 나네요 .. ㅠㅠ