문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 마인크래프트/모드/개발 (문단 편집) === 기타 팁 === * 리플렉션(Reflection)을 사용하면 private 등 접근 제한자로 인해 일반적으로는 접근할 수 없는 필드나 메소드에 접근할 수 있다. 그러나 마인크래프트는 난독화되지 않은 개발 환경과 난독화된 버전으로 나뉘므로, 리플렉션을 사용한 코드가 양쪽에서 오류없이 동작하도록 하려면 포지에서 제공하는 ObfuscationReflectionHelper 라는 클래스를 활용하는 것이 유용하다. 또한 private로 설정된 필드와 메소드중에는 함부로 접근하면 문제가 생길 수 있기 때문에 제한한 것들도 있으므로 유의해서 사용해야 한다. 또한 리플렉션을 이용하면 해당 모드의 API나 IMC[* Inter-Mod Communication, 포지에 있는 모드간 소통 기능이다.]를 사용하지 않고도 타 모드의 기능을 건들일 수 있다. 그러나 해당 모드가 설치되지 않으면 클래스를 찾지 못하여 오류가 발생하므로 해당 모드가 설치된 경우에만 동작하게 해야 한다. Reflection 사용시 성능이 떨어진다는 주장도 있으나 Reflection은 처음 JVM에서 로딩시에만 오버헤드가 발생할 뿐, 추가로 호출 시 별 차이 없다. 성능 테스트 환경을 불합리하게 설정 또는 오버헤드가 발생되게끔 사용해서 성능이 떨어지는것이다. 게임 버전 1.17 이후부터는 자바 16 이상을 사용함에 따라 리플렉션을 사용하여도 접근 제한자로 제한된 필드와 메소드에 접근하기 어렵게 되었다. Access Transformer 등 다른 방법을 사용하는 것이 권장된다. * 애드온 등 타 모드를 지원하는 모드를 개발할 경우 소스코드 폴더 내에 타 모드의 API를 넣는 대신 Java Build Path를 이용하여 빌드 경로에 API를 대신 포함시키는 것이 권장된다. 모드 JAR 파일 내에 타 모드의 API가 포함되어 있을 때 해당 모드의 API가 업데이트되면 충돌이 발생할 수 있다. * 바닐라 또는 타 모드의 소스코드를 수정할 필요가 있다면 소스코드를 직접 뜯어고치는 대신 ASM을 사용하는 것이 권장된다. ASM은 자바 바이트코드를 조작하여 소스코드를 수정한 효과를 내는 기능이다. 그러나 자바 바이트코드에 대한 이해가 필요하며, 타 모드와의 호환성 문제가 발생하거나 디버깅이 어려워질 수 있으므로 반드시 필요한 경우에만 사용하는 것이 권장된다. Mixin API를 사용하면 보다 손쉽게 ASM을 사용 가능하며, 특히 패브릭 개발 환경에서는 기본적으로 Mixin을 지원한다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기