MC Toolkit

가이드 / 명령어 및 데이터

확장자는 도식 포맷을 알려주지 않는다 — .schematic 파일 33개 중 31개는 다른 무언가의 추측이었다

다섯 가지 포맷, 블록을 담는 네 가지 방식, 그리고 .schematic은 그중 둘이 공유한다. NBT 루트를 sniffing하는 것이 파일 이름을 믿는 것보다 낫다, 계수된 증거와 함께.

유통되는 도식 포맷은 다섯 가지이며, 파일 이름은 사실이 아니라 힌트일 뿐이다. 여기 뷰어는 파일 내부를 들여다보고 그것이 무엇인지 판단하는데, 거기에는 측정된 이유가 있다.

다섯 포맷, 다섯 확장자

확장자포맷
.nbt바닐라 구조물
.schemSponge
.schematicSponge — 기본값
.litematicLitematica
.mcstructureBedrock

문제가 되는 행은 .schematic이다. 이 확장자는 클래식 MCEdit 포맷과 Sponge의 포맷이 공유하며, 파일은 알지 못하거나 신경 쓰지 않는 사람들에 의해 이름이 바뀐다.

실제 코퍼스에서 계수한 결과: .schematic 파일 33개 중 31개는 MCEdit, 하나는 바닐라 구조물, 하나는 Litematica였다. 따라서 이 확장자의 기본 추측은 거의 전부에 대해 틀리며, 두 파일은 어떤 의미에서도 .schematic이 아니었다 — 그저 잘못 이름 붙여졌을 뿐이다.

해결책은 NBT 루트를 sniffing하고, 파일이 무엇인지가 무엇이라 불리는지를 이기게 하는 것이다:

  • Regions 키 → Litematica
  • palette 그리고 blocks → 바닐라 구조물
  • 그 외에는 MCEdit 형태 검사, 그다음 확장자로 폴백

같은 블록을 담는 네 가지 방식

이 포맷들은 겉모습만 다른 게 아니다. 각각 블록 데이터를 진정으로 다른 방식으로 저장하며, 각 선택에는 결과가 따른다:

바닐라 .nbt — 리스트. 저장된 위치마다 항목 하나, 각각 팔레트 인덱스를 명시한다. 공기는 다른 블록과 똑같이 저장되며, 구조물 공허 공간만 빠진다. 따라서 속이 빈 건축물은 저장 전에 내부가 공허화되었을 때만 저렴하다.

Sponge .schem — varint 스트림. 팔레트 인덱스가 가변 폭 정수로 패킹된다: 바이트당 7비트의 페이로드, 계속하려면 상위 비트 설정. 작은 팔레트는 블록당 1바이트가 들고, 127개를 넘는 팔레트는 높은 인덱스에 2바이트가 들기 시작한다. 밀도 있지만 자기 서술적이다.

MCEdit .schematic — 평면 바이트 배열. 블록당 1바이트, 즉 최대 256개 블록 유형 — 바로 그래서 선택적 AddBlocks 사이드 배열이 블록당 니블로 4개의 id 비트를 더해 id가 4,095까지 이른다. 이것은 블록 상태 이전의 레거시 숫자 id 포맷이다: 그 id는 숫자이며, Schematica가 기록했을 때는 SchematicaMapping 컴파운드를 통해, 그렇지 않으면 바닐라 1.12 id 테이블을 통해 해석된다.

Litematica .litematic — 비트 패킹된 long. 인덱스는 정확히 max(2, bits needed for the palette) 비트씩, LSB 우선으로 패킹되며, 항목이 두 long 사이의 경계를 걸칠 수 있다. 5개 항목 팔레트는 블록당 3비트를 쓰고, 300개 항목 팔레트는 9비트를 쓴다.

2비트라는 하한이 중요하다: 두 블록짜리 팔레트조차 항목당 2비트 아래로 압축되지 않으므로, 단색 건축물은 수학이 시사하는 만큼 작지 않다.

Bedrock은 리틀 엔디언이다

.mcstructure은 더 낮은 수준에서 유별나다: Bedrock은 리틀 엔디언 NBT를 쓰는 반면 모든 Java 포맷은 빅 엔디언을 쓴다. 이는 어떤 포맷 파싱보다도 먼저 결정된다 — 바이트를 잘못된 엔디언으로 읽으면 잘못된 구조물이 나오는 게 아니라, 파싱 자체가 실패하는 쓰레기가 나온다.

이것이 실무적으로 의미하는 것

어딘가에서 도식이 열리지 않는다면, 첫 질문은 "파일이 손상되었나"가 아니라 "이 파일이 이름이 말하는 그것인가"이다. 다운로드 페이지에서 받은 .schematic는 Sponge일 가능성보다 MCEdit일 가능성이 훨씬 크며, 확장자를 믿는 도구는 멀쩡한 파일을 거부할 것이다.

그리고 같은 건축물의 두 내보내기를 비교할 때, 크기 차이는 대부분 내용이 아니라 인코딩에 관한 것이다 — 속이 빈 건축물의 공허화된 바닐라 .nbt와 같은 것의 비트 패킹된 .litematic는 서로 다른 문제를 푸는 것이다.

스키매틱 3D 뷰어 →

더 많은 가이드

모두 보기 →