The Best Resource for Minecraft
The Best Resource for Minecraft

एक्सटेंशन आपको schematic फ़ॉर्मेट नहीं बताता है — 33 में से 31 .schematic फ़ाइलें कुछ और होने का अनुमान थीं

एक्सटेंशन आपको schematic फ़ॉर्मेट नहीं बताता है — 33 में से 31 .schematic फ़ाइलें कुछ और होने का अनुमान थीं

पाँच फ़ॉर्मेट, ब्लॉक पैक करने के चार अलग-अलग तरीके, और .schematic उनमें से दो द्वारा साझा किया जाता है। NBT रूट की जाँच करना फ़ाइल नाम पर भरोसा करने से बेहतर है, वो भी गिने हुए प्रमाणों के साथ।

प्रचलन में पाँच schematic फ़ॉर्मेट हैं, और फ़ाइल नाम एक तथ्य के बजाय सिर्फ एक संकेत है। यहाँ का व्यूअर फ़ाइल के अंदर देखकर तय करता है कि वह क्या है, और इसका एक ठोस कारण है।

पाँच फ़ॉर्मेट, पाँच एक्सटेंशन

एक्सटेंशनफ़ॉर्मेट
.nbtvanilla संरचना
.schemSponge
.schematicSponge — डिफ़ॉल्ट रूप से
.litematicLitematica
.mcstructureBedrock

समस्या वाली पंक्ति है .schematic. That extension is shared by the क्लासिक MCEdit फ़ॉर्मेट और Sponge का, और फ़ाइलों का नाम उन लोगों द्वारा बदल दिया जाता है जो नहीं जानते या परवाह नहीं करते।

वास्तविक डेटा पर गिना गया: इनमें से 33 .schematic files, 31 were MCEdit, one was a vanilla structure and one was a Litematica। इसलिए एक्सटेंशन का डिफ़ॉल्ट अनुमान लगभग उन सभी के लिए गलत है, और दो फ़ाइलें नहीं थीं .schematic in any sense — just misnamed.

इसका समाधान NBT रूट की जाँच करना है और यह देखना है कि फ़ाइल वास्तव में क्या है इसके नाम पर भारी पड़े:

  • a Regions key → Litematica
  • palette और blocks → vanilla structure
  • अन्यथा MCEdit आकार परीक्षण, फिर एक्सटेंशन पर वापस जाएँ

समान ब्लॉकों को पैक करने के चार तरीके

फ़ॉर्मेट केवल सतही तौर पर भिन्न नहीं हैं। प्रत्येक ब्लॉक डेटा को वास्तव में एक अलग तरीके से संग्रहीत करता है, और प्रत्येक विकल्प का एक परिणाम होता है:

Vanilla .nbt — a sparse list. प्रति रखे गए ब्लॉक पर एक प्रविष्टि, प्रत्येक पैलेट इंडेक्स का नाम देती है। Air बस अनुपस्थित है, इसलिए एक खोखला निर्माण हल्का होता है।

Sponge .schem — a varint stream. पैलेट इंडेक्स परिवर्तनीय-चौड़ाई वाले पूर्णांकों के रूप में पैक किए गए हैं: प्रति बाइट सात बिट्स का पेलोड, जारी रखने के लिए उच्च बिट सेट। छोटे पैलेट में प्रति ब्लॉक एक बाइट खर्च होता है; 127 प्रविष्टियों से अधिक का पैलेट उच्च इंडेक्स के लिए दो बाइट खर्च करने लगता है। सघन, लेकिन स्व-वर्णनात्मक।

MCEdit .schematic — a flat byte array. प्रति ब्लॉक एक बाइट, इसलिए अधिकतम 256 ब्लॉक प्रकार — यही कारण है कि इसे एक AddBlocks side-array packing a नौवें बिट की आवश्यकता होती है प्रति ब्लॉक एक निबल के रूप में। यह ब्लॉक स्टेट्स से पहले का एक लेगेसी न्यूमेरिक-id फ़ॉर्मेट है, और इसके id एक के माध्यम से हल होते हैं SchematicaMapping compound rather than being names.

Litematica .litematic — bit-packed longs. इंडेक्स बिल्कुल पैक किए गए हैं max(2, bits needed for the palette) bits each, LSB-first, and an entry may straddle the boundary between two longs. A 5-entry palette uses 3 bits per block; a 300-entry one uses 9.

का फ़्लोर 2 बिट्स मायने रखता है: यहाँ तक कि दो-ब्लॉक वाला पैलेट भी प्रति प्रविष्टि 2 बिट्स से कम कंप्रेस नहीं होता है, इसलिए एक मोनोक्रोम निर्माण उतना छोटा नहीं होता जितना कि गणित सुझाव देता है।

Bedrock little-endian है

.mcstructure is the odd one out at a lower level: Bedrock writes little-endian NBT जहाँ प्रत्येक Java फ़ॉर्मेट big-endian लिखता है। यह किसी भी फ़ॉर्मेट पार्सिंग होने से पहले तय किया जाता है — गलत endianness के साथ बाइट्स पढ़ें और आपको गलत संरचना नहीं मिलती, बल्कि आपको कचरा मिलता है जो पार्स होने में पूरी तरह विफल रहता है।

व्यावहारिक रूप से इसका क्या अर्थ है

यदि कोई schematic कहीं नहीं खुलती है, तो पहला सवाल यह नहीं है कि "क्या फ़ाइल दूषित है" बल्कि "क्या यह फ़ाइल वही है जो इसका नाम कहता है"। एक .schematic from a download page is much more likely to be MCEdit than Sponge, and a tool that trusts the extension will reject a perfectly good file.

और एक ही निर्माण के दो एक्सपोर्ट की तुलना करते समय, आकार का अंतर ज्यादातर एन्कोडिंग के बारे में होता है न कि सामग्री के बारे में — एक विरल vanilla .nbt of a hollow build and a bit-packed .litematic of the same thing are solving different problems.

टूल आज़माएं: Schematic 3D Viewer →