Minecraft Server 용 개조-어떻게 작동합니까?


9

Minecraft 서버는 단일 병으로 제공됩니다. 모드는 어떻게 개발됩니까? 그들은 원래 항아리와 어떻게 상호 작용합니까? 후드 아래에 무엇이 있습니까?

어떤 기술이 관련되어 있습니까? 나는 주로 C ++ / Python 사람이지만 개조 개발에 대해 배우고 싶습니다.

답변:


11

JAR는 단순히 사용되는 다양한 클래스 파일과 기타 메타 데이터를 포함하는 ZIP 파일입니다. 완전히 표준화 된 형식입니다.

ZIP 파일을 추출 할 수 있으며 수정에 필요한대로 클래스 파일을 편집 할 수 있습니다. 그런 다음 수정 된 파일이 아카이브에 다시 추가되어 서버는 원래 파일 대신 수정 된 파일을 사용합니다.

기술적으로 Minecraft 개조는 원래 코드의 "해킹 된"버전입니다. 실제 바이너리 클래스 파일은 게임에 새로운 내용을 알리기 위해 수정해야합니다. 아직 공식적인 모드 지원은 없습니다 (Notch는 베타 버전에서 작동 할 것이라고 언급했지만).

물론, 모드를 적극적으로 디자인하는 경우에는 좋은 방법이 아닙니다. 대신 적절한 위치에서 사용자 정의 코드를 실행할 수있는 일종의 플러그인 아키텍처를 설계합니다. 정확히 어떻게 할 것인지는 mod가 무엇을 할 수 있는지에 달려 있습니다. 예를 들어, 보안이 문제가 될 경우, 일종의 스크립팅을 사용하도록 mod 인터페이스를 디자인하고 싶을 수 있습니다. 사용자 컴퓨터에 모든 종류의 것들.


예를 들어 McAdmin은 C #으로 작성되었습니다.
BlueRaja-Danny Pflughoeft

@BlueRaja : MCAdmin은 실제로 제 생각에 모드가 아닙니다-맞춤형 독립형 서버입니다. 클라이언트가 명령을 통해 새로운 일을 할 수는 있지만 두 가지가 다르다고 생각합니다.
Michael Madsen

응? 아니요, 확실히 모드였습니다. 마인 크래프트 서버를 둘러싼 래퍼였습니다. 마인 크래프트 서버가 실행 중이어야하므로 독립형이 아니 었습니다. 나는 소스를 간략히 살펴 보았고 네트워크 메시지를 가로 채서 들어오고 나가는 도중에 변경하는 것처럼 보였다.
BlueRaja-대니 Pflughoeft

3
@BlueRaja : 허-독립형 서버라고 맹세했을 수도 있지만 다시는 실제로 사용하지 않는다는 것을 인정합니다. 플레이어와 서버 사이의 프록시 서버 역할을하여 작동하는 것처럼 보이기 때문에 특별한 경우입니다. 나는 아직도 그것을 꽤 모드라고 부르지 않을 것이지만, 그것은 단지 나일 수 있습니다.
Michael Madsen

6

싱글 플레이어 모드는 원래 코드의 해킹 된 버전입니다. 멀티 플레이어 모드는 현재 다릅니다. 그들은 거의 모두 hey0의 서버 래퍼를 사용하는데, 이것은 minecraft_server.jar (또는 Java 랜드에있는 용어)에 링크하지만 자체 함수 클래스를 정의하고 일부 핵심 함수를 오버로드하며 자체 main ()을 실행합니다

Hey0은 mod API를 제공합니다 . 보다


1

귀하의 정보를 위해, Mojang은 가까운 시일 내에 (Mod API)를 발표 할 예정입니다 (베타 기간 동안, 2011 년 11 월경 공식 출시 이전).

사실, Notch의 블로그에서 언급했듯이 전체 소스 코드가 될 것입니다.

http://notch.tumblr.com/post/4955141617/the-plan-for-mods

그러나 지금은 항아리를 "디 컴파일"하여 부분적으로 난독 화 된 코드를보고 나중에 사용 / 디버깅하기 위해 다시 컴파일해야합니다.

이렇게하려면 Minecraft Coder 's Pack http://mcp.ocean-labs.de/index.php/MCP_Releases를 적극 권장합니다 .

포럼에는 다음과 같은 두 가지 모드 자습서가 있습니다. http://www.minecraftforum.net/topic/96862-creating-mods-modding-tutorials-21511/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.