Guides / Commands & Data

Phần mở rộng không cho biết định dạng sơ đồ — 31 trong số 33 tệp .schematic là định dạng khác

Năm định dạng, bốn cách đóng gói khối khác nhau, và .schematic được chia sẻ bởi hai trong số đó. Kiểm tra gốc NBT tốt hơn là tin vào tên tệp, với bằng chứng được đếm.

Có năm định dạng sơ đồ đang lưu hành, và tên tệp chỉ là một gợi ý chứ không phải là một sự thật. Trình xem ở đây quyết định một tệp là gì bằng cách nhìn vào bên trong nó, và có một lý do được đo lường cho điều đó.

Năm định dạng, năm phần mở rộng

phần mở rộngđịnh dạng
.nbtcấu trúc vanilla
.schemSponge
.schematicSponge — mặc định
.litematicLitematica
.mcstructureĐá nền

Hàng có vấn đề là .schematic. Phần mở rộng đó được chia sẻ bởi định dạng MCEdit cổ điển và của Sponge, và các tệp bị đổi tên bởi những người không biết hoặc không quan tâm.

Được đếm trên một tập dữ liệu thực: trong số 33 tệp .schematic, 31 là MCEdit, một là cấu trúc vanilla và một là Litematica. Vì vậy, dự đoán mặc định của phần mở rộng là sai đối với gần như tất cả chúng, và hai tệp không phải là .schematic theo bất kỳ nghĩa nào — chỉ là bị đặt tên sai.

Cách khắc phục là kiểm tra gốc NBT và để những gì tệp thắng thế so với tên gọi của nó:

  • một khóa Regions → Litematica
  • palette blocks → cấu trúc vanilla
  • nếu không thì kiểm tra hình dạng MCEdit, sau đó quay lại phần mở rộng

Bốn cách đóng gói cùng một khối

Các định dạng không khác nhau về mặt hình thức. Mỗi định dạng lưu trữ dữ liệu khối theo một cách thực sự khác nhau, và mỗi lựa chọn đều có một hệ quả:

Vanilla .nbt — một danh sách thưa thớt. Một mục cho mỗi khối được đặt, mỗi mục đặt tên một chỉ mục bảng màu. Không khí đơn giản là không có mặt, vì vậy một công trình rỗng có chi phí thấp.

Sponge .schem — một luồng varint. Các chỉ mục bảng màu được đóng gói dưới dạng số nguyên có độ rộng thay đổi: bảy bit dữ liệu trên mỗi byte, bit cao được đặt để tiếp tục. Các bảng màu nhỏ có chi phí một byte trên mỗi khối; một bảng màu trên 127 mục bắt đầu tốn hai byte cho các chỉ mục cao. Dày đặc, nhưng tự mô tả.

MCEdit .schematic — một mảng byte phẳng. Một byte trên mỗi khối, vì vậy tối đa 256 loại khối — đó chính xác là lý do tại sao nó cần một mảng phụ AddBlocks đóng gói một bit thứ chín dưới dạng một nibble trên mỗi khối. Đây là một định dạng ID số cũ từ trước trạng thái khối, và các ID của nó được giải quyết thông qua một hợp chất SchematicaMapping chứ không phải là tên.

Litematica .litematic — các số nguyên dài được đóng gói bit. Các chỉ mục được đóng gói chính xác max(2, bits needed for the palette) bit mỗi bit, LSB-first, và một mục có thể vượt qua ranh giới giữa hai số nguyên dài. Một bảng màu 5 mục sử dụng 3 bit trên mỗi khối; một bảng màu 300 mục sử dụng 9.

Mức tối thiểu 2 bit quan trọng: ngay cả một bảng màu hai khối cũng không nén dưới 2 bit trên mỗi mục, vì vậy một công trình đơn sắc không nhỏ như toán học gợi ý.

Bedrock là little-endian

.mcstructure là trường hợp đặc biệt ở cấp độ thấp hơn: Bedrock ghi NBT little-endian trong khi mọi định dạng Java đều ghi big-endian. Điều đó được quyết định trước khi bất kỳ phân tích cú pháp định dạng nào xảy ra — đọc các byte với endianness sai và bạn không nhận được một cấu trúc sai, bạn nhận được dữ liệu rác không thể phân tích cú pháp.

Điều này có ý nghĩa thực tế gì

Nếu một sơ đồ không mở được ở đâu đó, câu hỏi đầu tiên không phải là "tệp bị hỏng" mà là "tệp này có đúng như tên gọi của nó không". Một .schematic từ một trang tải xuống có nhiều khả năng là MCEdit hơn là Sponge, và một công cụ tin tưởng phần mở rộng sẽ từ chối một tệp hoàn toàn tốt.

Và khi so sánh hai bản xuất của cùng một công trình, sự khác biệt về kích thước chủ yếu là về mã hóa chứ không phải nội dung — một .nbt vanilla thưa thớt của một công trình rỗng và một .litematic được đóng gói bit của cùng một thứ đang giải quyết các vấn đề khác nhau.

Trình xem schematic 3D →

More guides

Browse all →

Cần thêm công cụ Minecraft khác?

Bộ công cụ tạo, xem và chuyển đổi chạy ngay trên trình duyệt — tất cả đều miễn phí.