Новые темы на Minecraft Форуме | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Что в майнкрафте можно делать с ребенком? | Артём124 | Вопросы от новичков о Minecraft | 5 | Вчера 17:58 |
Мод Remove Mouseover Highlight [1.7.10] | EvilMaster | Моды Minecraft | 0 | Вчера 10:02 |
здраствуйте. стоит ли поиграть в майнкрафт? послед. | -_-даня-_- | Вопросы от новичков о Minecraft | 5 | 2019-08-23 12:35 |
В чем смысл игры маинкрафт?) | nikitosd | Вопросы от новичков о Minecraft | 3 | 2019-08-22 17:59 |
В чем смысл маинкрфата? | h0t3wka | Вопросы от новичков о Minecraft | 5 | 2019-08-22 13:54 |
Как отомстить гриферу в майнкрафт на выживании? | Beka | Вопросы от новичков о Minecraft | 5 | 2019-08-19 16:54 |
Тег — отдельный элемент дерева данных. Первый байт в теге — это тип тега (также называемый идентификатором или ID), затем 2 байта хранят длину названия, затем название в виде строки в формате UTF-8 (следует отметить, что TAG_End не имеет названия и не включает дополнительные 2 байта; предполагается, что название пустое). Названия тегов могут содержать пробелы, хотя сам Minecraft не имеет таких тегов. Наконец, следующие байты — содержимое тега, зависящее от типа тега. Таблица ниже описывает 12 известных тегов в версии NBT 19133:
ID | Иконка | Тип тега | Содержимое | Описание | Ёмкость |
---|---|---|---|---|---|
0 | TAG_End | Нет. | Используется для обозначения конца составных тегов. У этого тега нет названия, поэтому он всегда представлен одним байтом, равным 0. Также этот тип используется в пустых тегах списков. | — | |
1 | TAG_Byte | 1 байт / 8 битов, со знаком | Целочисленный тип со знаком. Иногда используется для логических переменных. | Весь промежуток от -(2 7 ) до (2 7 — 1) (от -128 до 127) |
|
2 | TAG_Short | 2 байта / 16 битов, со знаком, обратный порядок байтов | Целочисленный тип со знаком. | Весь промежуток от -(2 15 ) до (2 15 — 1) (от -32�768 до 32�767) |
|
3 | TAG_Int | 4 байта / 32 бита, со знаком, обратный порядок байтов | Целочисленный тип со знаком. | Весь промежуток от -(2 31 ) до (2 31 — 1) (от -2�147�483�648 до 2�147�483�647) |
|
4 | TAG_Long | 8 байт / 64 бита, со знаком, обратный порядок байтов. | Целочисленный тип со знаком. | Весь промежуток от -(2 63 ) до (2 63 — 1) (от -9�223�372�036�854�775�808 до 9�223�372�036�854�775�807) |
|
5 | TAG_Float | 4 байта / 32 бита, со знаком, обратный порядок байтов, IEEE 754-2008, binary32 | Тип чисел с плавающей точкой со знаком. | Точность меняется на протяжении числовой прямой; см. Число одинарной точности. |
|
6 | TAG_Double | 8 байт / 64 бита, со знаком, обратный порядок байтов, IEEE 754-2008, binary64 | Тип чисел с плавающей точкой со знаком. | Точность меняется на протяжении числовой прямой; см. Число двойной точности. |
|
7 | TAG_Byte_Array | Один TAG_Int, обозначающий размер, затем размер тегов TAG_Byte. | Массив байтовых переменных. | Максимальное число элементов изменяется от (2 31 — 9) до (2 31 — 1) (от 2�147�483�639 до 2�147�483�647) и зависит от текущей JVM. | |
8 | TAG_String | Один TAG_Short, обозначающий длину, затем строка в формате UTF-8 с размером длина. | Строка в формате UTF-8. Она имеет размер, а не завершается нулём. | 32�767 точек кода UTF-8 (см. UTF-8; наиболее распространённые символы состоят из одной точки кода. | |
9 | TAG_List | Один TAG_Byte, обозначающий тип, затем TAG_Int, обозначающий размер, затем размер тегов типа тип. | Список нагрузок тегов без ID и без названий. | В связи с ограничениями JVM и реализацией ArrayList, максимальный размер списка — (2 31 — 9) или 2�147�483�639. Также следует отметить, что максимальная глубина размещения списков и составных тегов равна 512. | |
10 | TAG_Compound | Полные теги, затем один тег TAG_End. | Список полных тегов, включающий их типы, названия и содержимые. Все теги должны иметь различные имена. | В отличие от списков, ограничения на количество тегов в составном теге нет (хотя имеется неявное ограничение в виде размера виртуальной памяти). Также следует отметить, что максимальная глубина размещения списков и составных тегов равна 512. | |
11 | TAG_Int_Array | Один TAG_Int, обозначающий размер, затем размер тегов TAG_Int. | Массив тегов TAG_Int. | Максимальное число элементов изменяется от (2 31 — 9) до (2 31 — 1) (от 2�147�483�639 до 2�147�483�647) и зависит от текущей JVM. |
Списки и составные теги могут быть вложены. Следует отметить, что в списке списков подсписки могут иметь разные типы элементов.
Файл NBT — это сжатый GZip составной тег, включающий название и тип. Некоторые такие файлы, используемые Minecraft, не являются сжатыми GZip, хотя в большинстве случаев спецификация Нотча, предписывающая сжатие, соблюдается. В Xbox 360 издании чанки сжимаются XMemCompress, разновидностью алгоритма сжатия LZX. Заголовка, указывающего версию или какую-либо иную информацию, в файлах нет, версия указана только в файле level.dat.
Использование формата NBT в Minecraft местами является странным. В некоторых случаях пустые списки могут быть представлены списками байтов (или тегов End в более новых версиях Minecraft), а не списками правильного типа. К тому же, каждый корневой тег имеет пустое название и включает только один составной тег с самими данными и названием. Например:
Корневой тег для большинства структур NBT в Minecraft.
�Название : Единственный тег, содержащийся в корневом теге. Он имеет название и содержит сами данные.
Ещё одна заметная странность — это то, что хотя оригинальная спецификация Нотча допускает пробелы в названиях тегов, и приведённый в ней пример использует это, в Minecraft нет файлов с пробелами в тегах. Также использование прописных букв в названиях тегов непостоянно: где-то с прописной буквы пишется каждое слово, где-то — каждое, кроме первого, а где-то используются только строчные буквы.
- level.dat хранится в сжатом формате NBT.
- Файлы
.dat хранятся в сжатом формате NBT.
Mojang предоставила экземпляры классов Java для работы с NBT, предназначенные для использования разработчиками, как часть исходного кода для преобразователя McRegion → Anvil. Помимо этого, сообщество разработало программы для просмотра и изменения сжатых и несжатых файлов NBT, например, NBTExplorer и NBT2YAML (все вышеприведённые программы поддерживают последние версии NBT).
Тег — отдельный элемент дерева данных. Первый байт в теге — это тип тега (также называемый идентификатором или ID), затем 2 байта хранят длину названия, затем название в виде строки в формате UTF-8 (следует отметить, что TAG_End не имеет названия и не включает дополнительные 2 байта; предполагается, что название пустое). Названия тегов могут содержать пробелы, хотя сам Minecraft не имеет таких тегов. Наконец, следующие байты — содержимое тега, зависящее от типа тега. Таблица ниже описывает 12 известных тегов в версии NBT 19133:
ID | Иконка | Тип тега | Содержимое | Описание | Ёмкость |
---|---|---|---|---|---|
0 | TAG_End | Нет. | Используется для обозначения конца составных тегов. У этого тега нет названия, поэтому он всегда представлен одним байтом, равным 0. Также этот тип используется в пустых тегах списков. | — | |
1 | TAG_Byte | 1 байт / 8 битов, со знаком | Целочисленный тип со знаком. Иногда используется для логических переменных. | Весь промежуток от -(2 7 ) до (2 7 — 1) (от -128 до 127) |
|
2 | TAG_Short | 2 байта / 16 битов, со знаком, обратный порядок байтов | Целочисленный тип со знаком. | Весь промежуток от -(2 15 ) до (2 15 — 1) (от -32 768 до 32 767) |
|
3 | TAG_Int | 4 байта / 32 бита, со знаком, обратный порядок байтов | Целочисленный тип со знаком. | Весь промежуток от -(2 31 ) до (2 31 — 1) (от -2 147 483 648 до 2 147 483 647) |
|
4 | TAG_Long | 8 байт / 64 бита, со знаком, обратный порядок байтов. | Целочисленный тип со знаком. | Весь промежуток от -(2 63 ) до (2 63 — 1) (от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807) |
|
5 | TAG_Float | 4 байта / 32 бита, со знаком, обратный порядок байтов, IEEE 754-2008, binary32 | Тип чисел с плавающей точкой со знаком. | Точность меняется на протяжении числовой прямой; см. Число одинарной точности. |
|
6 | TAG_Double | 8 байт / 64 бита, со знаком, обратный порядок байтов, IEEE 754-2008, binary64 | Тип чисел с плавающей точкой со знаком. | Точность меняется на протяжении числовой прямой; см. Число двойной точности. |
|
7 | TAG_Byte_Array | Один TAG_Int, обозначающий размер, затем размер тегов TAG_Byte. | Массив байтовых переменных. | Максимальное число элементов изменяется от (2 31 — 9) до (2 31 — 1) (от 2 147 483 639 до 2 147 483 647) и зависит от текущей JVM. | |
8 | TAG_String | Один TAG_Short, обозначающий длину, затем строка в формате UTF-8 с размером длина. | Строка в формате UTF-8. Она имеет размер, а не завершается нулём. | 32 767 точек кода UTF-8 (см. UTF-8; наиболее распространённые символы состоят из одной точки кода. | |
9 | TAG_List | Один TAG_Byte, обозначающий тип, затем TAG_Int, обозначающий размер, затем размер тегов типа тип. | Список нагрузок тегов без ID и без названий. | В связи с ограничениями JVM и реализацией ArrayList, максимальный размер списка — (2 31 — 9) или 2 147 483 639. Также следует отметить, что максимальная глубина размещения списков и составных тегов равна 512. | |
10 | TAG_Compound | Полные теги, затем один тег TAG_End. | Список полных тегов, включающий их типы, названия и содержимые. Все теги должны иметь различные имена. | В отличие от списков, ограничения на количество тегов в составном теге нет (хотя имеется неявное ограничение в виде размера виртуальной памяти). Также следует отметить, что максимальная глубина размещения списков и составных тегов равна 512. | |
11 | TAG_Int_Array | Один TAG_Int, обозначающий размер, затем размер тегов TAG_Int. | Массив тегов TAG_Int. | Максимальное число элементов изменяется от (2 31 — 9) до (2 31 — 1) (от 2 147 483 639 до 2 147 483 647) и зависит от текущей JVM. |
Списки и составные теги могут быть вложены. Следует отметить, что в списке списков подсписки могут иметь разные типы элементов.
Файл NBT — это сжатый GZip составной тег, включающий название и тип. Некоторые такие файлы, используемые Minecraft, не являются сжатыми GZip, хотя в большинстве случаев спецификация Нотча, предписывающая сжатие, соблюдается. В Xbox 360 издании чанки сжимаются XMemCompress, разновидностью алгоритма сжатия LZX. Заголовка, указывающего версию или какую-либо иную информацию, в файлах нет, версия указана только в файле level.dat.
Использование формата NBT в Minecraft местами является странным. В некоторых случаях пустые списки могут быть представлены списками байтов (или тегов End в более новых версиях Minecraft), а не списками правильного типа. К тому же, каждый корневой тег имеет пустое название и включает только один составной тег с самими данными и названием. Например:
- Корневой тег для большинства структур NBT в Minecraft.
- Название : Единственный тег, содержащийся в корневом теге. Он имеет название и содержит сами данные.
Ещё одна заметная странность — это то, что хотя оригинальная спецификация Нотча допускает пробелы в названиях тегов, и приведённый в ней пример использует это, в Minecraft нет файлов с пробелами в тегах. Также использование прописных букв в названиях тегов непостоянно: где-то с прописной буквы пишется каждое слово, где-то — каждое, кроме первого, а где-то используются только строчные буквы.
- level.dat хранится в сжатом формате NBT.
- Файлы
.dat хранятся в сжатом формате NBT.
Mojang предоставила экземпляры классов Java для работы с NBT, предназначенные для использования разработчиками, как часть исходного кода для преобразователя McRegion → Anvil. Помимо этого, сообщество разработало программы для просмотра и изменения сжатых и несжатых файлов NBT, например, NBTExplorer и NBT2YAML (все вышеприведённые программы поддерживают последние версии NBT).
У кого есть идеи, как читать нбт предмета в инвентаре?
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
У нас играют и пишут программы как новички так и опытные программисты. А самые продвинутые участники нашего коллектива даже разрабатывают собственные авторские моды и аддоны, ресурспаки, репозитории, мощнейшие библиотеки и операционные системы! Эти участники — гордость нашего проекта, которые по праву носят почетное звание Гуру!
Регистрируйтесь прямо сейчас и присоединяйтесь к нашему дружному коллективу фанатов игры Майнкрафт, компьютерных и инженерных модов!