Формат чанка

Материал из Minecraft Wiki
Перейти к: навигация, поиск

Чанки хранят информацию о территории и сущностях в области 16×256×16. Они также хранят информацию об освещении, производительности Minecraft и другую информацию.

NBT структура[править | править код]

Данные чанков хранятся в виде тегов в файлах Minecraft Anvil, которые именуются в формате r.x.z.mca. Они хранятся в виде NBT формата со следующей структурой (смотрите раздел «Формат блока» для правильного упорядочения блоков):

  • Корневой тег.
    •  DataVersion: Версия NBT структуры чанка.
    •  Level: Данные чанка.
      •  xPos: X-координата чанка.
      •  zPos: Z-координата чанка.
      •  LastUpdate: Время последнего сохранения чанка.
      •  InhabitedTime: Общее количество времени присутствия игроков в этом чанке. Обратите внимание, что это значение увеличивается быстрее, если в чанке находятся больше игроков. Используется для определения областной сложности: увеличивается шанс спауна экипированных мобов, шанс, что предметы у мобов будут зачарованными, шанс спауна пещерных пауков, шанс, что мобы смогут подбирать упавшие предметы, и шанс появления зомби, способного спаунить других зомби во время атаки. Обратите внимание, что при значениях 3600000 и выше, сложность в данной области достигает своего максимума. При значениях 0 и ниже сложность ограничивается до минимума (итак, если это значение отрицательное, оно ведет себя так же, как и при значении 0, кроме того, для восстановления положительного значения требуется бо́льшее время). Смотрите статью «Областная сложность» для получения бо́льшей информации.
      •  Biomes: Может не существовать. 256‌[до 1.15] и 1024‌[запланированное: JE 1.15] записи данных биома, по одной на каждый чанк.‌[до 1.15][источник?] Смотрите значения данных биомов для просмотра их идентификаторов. Если этот тег не существует, он создается и заполняется Minecraft, когда чанк загружается и сохраняется. Если какие-либо значения в этом пространстве соответствуют неизвестному биому, Minecraft также настраивает их на биом, который обычно генерируется в этом месте.
      •  Heightmaps: Несколько различных значений высоты, соответствующих 256, используется по 9 бит на одно значение (самый низкий — 0, самый высокий — 256, оба значения считаются включительно).
        •  MOTION_BLOCKING: Самый высокий блок, блокирующий движение или содержащий жидкость.
        •  MOTION_BLOCKING_NO_LEAVES: Самый высокий блок, блокирующий движение или содержащий жидкость, или находящийся в теге minecraft:leaves.
        •  OCEAN_FLOOR: Самый высокий блок (не воздух), твёрдый блок.
        •  OCEAN_FLOOR_WG: Самый высокий блок, который не является ни воздухом, ни содержит жидкость, используется для генерации игрового мира.
        •  WORLD_SURFACE: Самый высокий блок (не воздух).
        •  WORLD_SURFACE_WG: Самый высокий блок (не воздух), используется для генерации игрового мира.
      •  CarvingMasks:
        •  AIR: Последовательность битов, указывающая, была ли сгенерирована пещера в определённом месте, сохраняется в группе байтов.
        •  LIQUID: Серия битов, указывающих, была ли сгенерирована подводная пещера в определённом месте, сохраняется в группе байтов.
      •  Sections: Список составных тегов, каждый тег является своего рода подчанком.
        • Отдельный раздел.
          •  Y: Y-индекс (не координата) этого раздела. Диапазон от 0 до 15 (снизу вверх) без дубликатов, но некоторые разделы могут отсутствовать, если они оказываются пустыми.
          •  Palette: Набор различных состояний блока, используемых в чанке.
          •  BlockLight: 2048 байт записывают количество испускаемого блоком света на каждый блок. Ускоряет время загрузки, по сравнению с перерасчётом во время загрузки. 4 бита на блок.
          •  BlockStates: Количество переменных 64-битных линий, достаточное, чтобы соответствовать 4096 индексам. Индексы соответствуют порядку предметов в инвентаре. Все индексы имеют одинаковый размер в разделе, который является размером, необходимым для представления самого большого индекса (минимум 4 бита). Если размер каждого индекса не равен 64, запись битов продолжится на следующей строке.
          •  SkyLight: 2048 байт записывают силу солнечного или лунного света, попадающего на каждый блок. 4 бита на блок.
      •  Entities: Каждый TAG_Compound в этом списке определяет сущность в чанке. Смотрите раздел Формат сущности ниже. Если данный список пуст, он преобразуется в конечные теги (до 1.10, список байтовых тегов).
      •  TileEntities: Каждый TAG_Compound в этом списке определяет блок-сущность в чанке. Смотрите раздел Формат блока сущности ниже. Если данный список пуст, он преобразуется в конечные теги (до 1.10, список байтовых тегов).
      •  TileTicks: Каждый TAG_Compound в этом списке является «активным» блоком в чанке, ожидающем обновления. Они используются для сохранения состояния механизма, работающего на красном камне, падающего песка, или другого. Смотрите раздел Формат тика предметов ниже.
      •  LiquidTicks: Каждый TAG_Compound в этом списке является «активной» жидкостью в в чанке, ожидающем обновления.
      •  Lights: Список из 16 других списков, которые хранят координаты источников света в чанке во время генерации игрового мира в кратком виде.
      •  LiquidsToBeTicked: Список 16 TAG_Lists, хранящих позиции «активных» жидкостей, которые должны быть отмечены и упакованы в TAG_Shorts.
      •  ToBeTicked: Список 16 TAG_Lists, хранящих позиции «активных» блоков, которые должны быть отмечены и упакованы в TAG_Shorts.
      •  PostProcessing: Список 16 TAG_Lists, хранящих хранят позиции блоков, которые должны обновиться, когда прото-чанк преобразуется в полный чанк, упакованный в TAG_Shorts.
      •  Status: Определяет статус генерации игрового мира в данном чанке. Он может иметь одно из следующих описаний: empty, base, carved, liquid_carved, decorated, lighted, mobs_spawned, finalized, full или postprocessed.
      •  Structures: Структура данных в данном чанке.
        •  References: Координаты чанков, содержащих теги Starts.
          •  Structure Name: Каждая 64-битная цифра этого тега указывает координаты чанка (то есть координату блока / 16) со своей координатой X, сжатой в (наименее значимые) 32 бита, и координатой Z сжатой в (наиболее значимые) 32 бита.
        •  Starts: Структуры, которые еще предстоит сгенерировать, хранятся по общему типу. Некоторые части структур уже могут быть созданы. Полностью сгенерированная структура удаляет данные, создавая свой идентификатор вместо значения «INVALID», и удаляет другие теги.
          •  Structure Name: Здесь хранятся данные структуры, которая может появиться только в данном измерении, например, данные города Края хранятся только в данных чанков Края.
            •  ChunkX: X-координата начала структуры в чанке. Отсутствует, если используется неверный идентификатор.
            •  ChunkZ: Z-координата начала структуры в чанке. Отсутствует, если используется неверный идентификатор.
            •  id: Если в этом чанке нет структуры такого типа, то идентификатор является «неверным».
            •  biome: Идентификатор биома, в котором находится данная структура. Отсутствует, если используется неверный идентификатор.
            •  BB: Ограничивающий прямоугольник всей структуры (остальные дочерние элементы). Значение равно 6: начальные координаты X, Y и Z, за которыми следуют конечные координаты X, Y и Z. Отсутствует, если используется неверный идентификатор.
            •  Valid: 1 или 0 (true/false) — (Только для деревень) Есть ли в деревне хотя бы 3 дороги. Отсутствует, если используется неверный идентификатор.
            •  Processed: (Только для подводной крепости) Список чанков, в которых была создана часть структуры. Отсутствует, если используется неверный идентификатор.
              • : Чанк.
                •  X: X-позиция чанка (координаты чанка, а не его блоков).
                •  Z: Z-позиция чанка.
            •  Children: Список частей, составляющих структуру, которые еще не были сгенерированы. Отсутствует, если используется неверный идентификатор.
              • Данные частей структуры. [источник?]
                •  id: Идентификатор части структуры. Как правило, сильно сокращенный код, а не что-то читаемое человеком.
                •  Rot: Поворот подводных руин и затонувших кораблей. Значениями могут быть: COUNTERCLOCKWISE_90, NONE, CLOCKWISE_90, и CLOCKWISE_180.
                •  BiomeType: Температура океана, где находятся подводные руины. Значениями могут быть: WARM и COLD.
                •  Template: Используемый шаблон подводных руин или затонувшего корабля.
                •  integrity: Целостность данной структуры (используется только для подводных руин).
                •  TPX: X-координата генерации подводных руин или затонувшего корабля.
                •  TPY: Y-координата генерации подводных руин или затонувшего корабля.
                •  TPZ: Z-координата генерации подводных руин или затонувшего корабля.
                •  PosX: X-координата генерации части деревни.
                •  PosY: Y-координата генерации части деревни.
                •  PosZ: Z-координата генерации части деревни.
                •  isLarge: 1 или 0 (true/false) — Если подводные руины большие.
                •  GD: Возможно, это своего рода расстояние части структуры от её начала.
                •  O: Возможная ориентация части структуры.
                •  BB: Ограничивающий прямоугольник части структуры. (Не включает в себя часть крыши деревенского дома, которая может нависать над дорогой.) Значение равно 6: минимальные X, Y, и Z координаты, за которыми следуют максимальные X, Y, и Z координаты.
                •  Width: (Храмы и хижины) Ширина структуры (X/Z).
                •  Height: (Храмы и хижины) Высота структуры (Y).
                •  Depth: (Храмы и хижины) Глубина структуры (X/Z).
                •  HPos: (Храмы и хижины) Y-уровень, на котором была сгенерирована структура. Используется для размещения её на поверхности. Значение равно -1, если структура ещё не была сгенерирована.
                •  placedTrap1: 1 или 0 (true/false) — (Храм в джунглях) Была ли установлена ловушка с раздатчиком со стрелами в коридоре.
                •  placedTrap2: 1 или 0 (true/false) — (Храм в джунглях) Была ли установлена ловушка с раздатчиком со стрелами перед сундуком.
                •  placedMainChest: 1 или 0 (true/false) — (Храм в джунглях) Был ли сгенерирован главный сундук.
                •  placedHiddenChest: 1 или 0 (true/false) — (Храм в джунглях) Был ли спрятан сундук.
                •  hasPlacedChest0: 1 или 0 (true/false) — (Храм в пустыне) Был ли сгенерирован сундук.
                •  hasPlacedChest1: 1 или 0 (true/false) — (Храм в пустыне) Был ли сгенерирован сундук.
                •  hasPlacedChest2: 1 или 0 (true/false) — (Храм в пустыне) Был ли сгенерирован сундук.
                •  hasPlacedChest3: 1 или 0 (true/false) — (Храм в пустыне) Был ли сгенерирован сундук.
                •  Witch: 1 или 0 (true/false) — (Хижина ведьмы) Была ли ведьма заспаунена в хижине.
                •  hr: 1 или 0 (true/false) — (Заброшенная шахта «MSCorridor») Есть ли в коридоре рельсы.
                •  sc: 1 или 0 (true/false) — (Заброшенная шахта «MSCorridor») Есть ли в коридоре паутина.
                •  hps: 1 или 0 (true/false) — (Заброшенная шахта «MSCorridor») Есть ли в коридоре спаунер пещерного паука.
                •  Num: (Заброшенная шахта «MSCorridor») Длина коридора.
                •  tf: 1 или 0 (true/false) — (Заброшенная шахта «MSCrossing») Есть ли перекрёсток высотой в 2 этажа.
                •  D: (Заброшенная шахта «MSCrossing») Указывает «входное» направление для перекрёстка.
                •  Entrances: (Заброшенная шахта «MSRoom») Список выходов из комнаты.
                  • : Ограничительная рамка выхода.
                •  Chest: 1 или 0 (true/false) — (Крепость «NeSCLT» и «NeSCRT») Должна ли данная часть крепости содержать сундук, будучи ещё не сгенерированной. (Крепость «SHCC») Был ли сундук сгенерирован в крепости её частью. (Деревня «ViS») Был ли сгенерирован сундук в доме инструментальщика.
                •  Mob: 1 или 0 (true/false) — (Крепость «NeMT») Должна ли данная часть крепости содержать спаунер ифритов, будучи ещё не сгенерированной. (Крепость «SHPR») Был ли сгенерирован спаунер чешуйниц в данной части крепости.
                •  Seed: (Крепость «NeBEF») Случайное семя для части крепости — сломанного моста.
                •  EntryDoor: (Крепость) Тип двери на входе в данную часть.
                •  Steps: (Крепость «SHFC») Длина коридора.
                •  leftLow: 1 или 0 (true/false) — (Крепость «SH5C») Имеет ли 5-дорожный переход выход на нижний этаж сбоку с вверх идущей лестницей.
                •  rightLow: 1 или 0 (true/false) — (Крепость «SH5C») Имеет ли 5-дорожный переход выход на нижний этаж сбоку с вниз идущей лестницей.
                •  leftHigh: 1 или 0 (true/false) — (Крепость «SH5C») Имеет ли 5-дорожный переход выход на верхний уровень сбоку с вверх идущей лестницей.
                •  rightHigh: 1 или 0 (true/false) — (Крепость «SH5C») Имеет ли 5-дорожный переход выход на верхний уровень сбоку с вниз идущей лестницей.
                •  Tall: 1 или 0 (true/false) — (Крепость «SHLi») Имеет ли библиотека второй этаж.
                •  Type: (Крепость «SHRC») Указывает, содержит ли комната столб с факелами, фонтан, второй этаж с сундуком, или это просто пустая комната.
                •  Source: 1 или 0 (true/false) — (Крепость «SHSD») Является ли винтовая лестница источником крепости или она была случайно сгенерирована.
                •  Left: 1 или 0 (true/false) — (Крепость «SHS») Есть ли в коридоре отверстие в стене слева.
                •  Right: 1 или 0 (true/false) — (Крепость «SHS») Есть ли в коридоре отверстие в стене справа.
                •  Type: (Деревня) Тип деревни: 0=равнина, 1=пустыня, 2=саванна, 3=тайга.
                •  Zombie: 1 или 0 (true/false) — (Деревня) Сгенерирована ли данная деревня как деревня-зомби.
                •  VCount: (Деревня) Количество жителей, заспаунившихся в этой части.
                •  HPos: (Деревня) Y-уровень, на котором была сгенерирована структура. Используется для размещения её на поверхности. Значение равно -1, если структура ещё не была сгенерирована.
                •  CA: (Деревня «ViF» и «ViDF») Урожай на садовом участке.
                •  CB: (Деревня «ViF» и «ViDF») Урожай на садовом участке.
                •  CC: (Деревня «ViDF») Урожай на садовом участке.
                •  CD: (Деревня «ViDF») Урожай на садовом участке.
                •  Terrace: 1 или 0 (true/false) — (Деревня «ViSH») Есть ли в доме лестница на крышу и ограждение.
                •  T: (Деревня «ViSmH») Стол: 0 — нет стола, 1 и 2 — стол размещён по обе стороны дома.
                •  C: (Деревня «ViSmH») Тип крыши дома
                •  Length: (Деревня «ViSR») Длина части дороги.
                •  junctions: (Деревня) Список точек соединения. [источник?]
                    •  source_x: Координата блока.
                    •  source_ground_y: Координата блока.
                    •  source_z: Координата блока.
                    •  delta_y:
                    •  dest_proj: Одно значение из terrain_matching или rigid.

Формат блока[править | править код]

В формате Anvil позиции блоков упорядочиваются по YZX для целевого сжатия.

Система координат выглядит следующим образом:

  • X — увеличивается восток, уменьшается запад
  • Y — увеличивается вверх, уменьшается вниз
  • Z — увеличивается на юг, уменьшается на север.

Упорядочивание также способствует наилучшему просчитыванию, потому что все индексы в наименее значимом измерении (в данном случае X), отображаются для каждого индекса в следующем наиболее значимом измерении; чтение или понимание упорядоченных координат YZX можно сравнить с книгой, верхняя сторона которой направлена на север: все буквы (или X-индекс) расположены на одной строке (или Z-индексе), и все строки на одной странице (или Y-индексе). Для 2D массивов (таких как «Biomes» и «HeightMap») значения Y просто игнорируются — это можно сравнить с книгой, толщина которой всего одна страница.

Каждая часть чанка равна пространству 16x16x16 блоков, в одном чанке может быть до 16 частей. Часть 0 — это нижняя часть чанка, а часть 15 — это верхняя часть чанка. Ради экономии пространства, пустые части чанка не сохраняются. В каждом разделе есть байт тег «Y» для Y-индекса части, значения которого могут колебаться от 0 до 15, палитра, определяющая подходящий идентификатор части чанка к каждому состоянию блока, а также длинный массив, хранящий идентификаторы местоположения каждого блока. Идентификаторы состояния блока сжимаются для соответствия наименьшему количеству битов в каждом длинном массиве. Массивы байтов «BlockLight» и «SkyLight» используются для определения уровня освещёния блоков и уровня освещения неба соответственно. Значения «SkyLight» показывают, сколько солнечного или лунного света потенциально может достичь блока, независимо от текущего уровня освещения неба.

Порядок байтов 2048-байтового массива (такого как «BlockLight» и «SkyLight»), дающий только 4 бита на блок, кажется аномальным исключением другого, обратного, порядка, широкоформатного хранилища данных. Это также идёт вразрез с естественно читаемой печатью. Если блоки начинаются с 0, они группируются с чётными числами, предшествующими нечётным числам (то есть 0 и 1 разделяют первый байт, 2 и 3 разделяют следующий и так далее); в этих значениях Minecraft хранит чётные блоки в наименее значимых полубайтах, а нечётные блоки в наиболее значимых полубайтах. Таким образом блок[0] — это байт[0] в 0x0F, блок[1] — это байт[0] в 0xF0, блок[2] — это байт[1] в 0x0F, блок[3] — это байт[1] в 0xF0 и так далее…

Пример кода ниже показывает, как получить доступ к информации об отдельных блоках из одной части чанка. Наведите указатель мыши на текст, чтобы просмотреть дополнительную информацию или комментарии.

byte Nibble4(byte[] arr, int index){ return index%2 == 0 ? arr[index/2]&0x0F : (arr[index/2]>>4)&0x0F; }
int BlockPos = y*16*16 + z*16 + x;
byte BlockID_a = Blocks[BlockPos];
byte BlockID_b = Nibble4(Add, BlockPos);
short BlockID = BlockID_a + (BlockID_b << 8);
byte BlockData = Nibble4(Data, BlockPos);
byte Blocklight = Nibble4(BlockLight, BlockPos);
byte Skylight = Nibble4(SkyLight, BlockPos);

Формат сущности[править | править код]

Каждая безымянная сущность ( TAG_Compound) содержится в списке сущностей в файле чанка. Единственным исключением является игрок-сущность, хранится в файле level.dat или в файлах <player>.dat на серверах. Все сущности используют эту базовую структуру:

  • Данные сущности
    •  id: Строковое представление идентификаторов сущностей. Не существует для сущности игрока.
    •  Pos: 3 TAG_Doubles описывают настоящие X, Y и Z координаты сущности.
    •  Motion: 3 TAG_Doubles описывают настоящие значения dX, dY и dZ скорости сущности в метрах в тик (м/т).
    •  Rotation: Два TAG_Floats отображает вращение сущности в градусах.
      • Вращение сущности по часовой стрелке вокруг оси Y (также называется отклонением). Значение угла поворота сущности на юг равняется 0, то есть с юга начинается отсчёт. Значение не превышает 360 градусов.
      • Отклонение головы сущности от горизонта (также называется наклоном). При горизонтальном положении значение равно 0. При положительном значении голова сущности направлена вниз. Не превышает положительного или отрицательного значения в 90 градусов.
    •  FallDistance: Расстояние падения сущности. Бо́льшие значения наносят бо́льший урон при приземлении сущности.
    •  Fire: Число тиков до прекращения горения сущности. Отрицательные значения определяют, как долго сущность может стоять в огне, прежде чем полностью сгореть. По умолчанию значение установлено на -20, когда сущность не горит.
    •  Air: Каким запасом воздуха обладает сущность, значение указывается в тиках. Заполняется максимум до 300, давая 15 секунд для погружения, прежде чем сущность начнет тонуть, и 35 секунд, прежде чем сущность погибнет (если она имела 20 единиц здоровья). Уменьшается под водой. Если 0, находясь под водой, сущность теряет 1 единицу здоровья в секунду.
    •  OnGround: 1 или 0 (true/false) — true, если сущность касается земли.
    •  NoGravity: 1 или 0 (true/false) — если true, сущность не падает, если находится в воздухе.
    •  Dimension: Известно лишь, что используется в файле <player>.dat для хранения последнего известного местоположения игрока вместе с координатами. Все остальные сущности сохраняются только в региональных файлах измерения, в котором они находятся. -1 для Нижнего мира, 0 для Верхнего мира, и 1 для Края.
    •  Invulnerable: 1 или 0 (true/false) — true, если сущность не должна получать урон. Это относится как к живым, так и к неживым существам: мобы не должны получать урон из любого источника (включая эффекты от зелий) и не могут быть перемещены удочками, атаками, взрывами или снарядами, а такие объекты, как транспортные средства и рамки, не могут быть уничтожены, если их опорные блоки не были разрушены. Примечательно, что эти объекты могут быть повреждены игроками, находящимися в режиме «Творчество».
    •  PortalCooldown: Число тиков, по истечении которого сущность сможет телепортироваться обратно через портал Нижнего мира. Изначально начинается с 300 тиков (15 секунд) после телепортации и отсчитывается до 0.
    •  UUIDMost: Наиболее значимые биты данной сущности (Universally Unique IDentifier). Это работает совместно с UUIDLeast для формирования уникального идентификатора данной сущности.
    •  UUIDLeast: Наименее значимые биты данной сущности (Universally Unique IDentifier).
    •  CustomName: Пользовательское имя данной сущности в текстовом файле JSON. Появляется в сообщениях о смерти игрока и в интерфейсах торговли с деревенским жителем, а также над сущностью, когда курсор игрока находится над ней. Может не существовать, а может и существовать, но быть пустым.
    •  CustomNameVisible: 1 или 0 (true/false) — если true, и эта сущность имеет пользовательское имя, имя всегда появляется над сущностью, независимо от того, куда указывает курсор. Если сущность не имеет пользовательского имени, отображается имя по умолчанию. Может не существовать.
    •  Silent: 1 или 0 (true/false) — если true, данная сущность перестаёт издавать звуки. Может не существовать.
    •  Passengers: Данные сущности, управляющей другой сущностью. Примечательно, что обе сущности управляют движением, но самая верхняя сущность управляет условиями спауна, когда она создается спаунером мобов.
      • Смотрите этот формат (рекурсивный).
    •  Glowing: 1 или 0 (true/false) — true, если сущность имеет светящийся контур.
    •  Tags: Список тегов системы счёта игровых событий данной сущности.

Мобы[править | править код]

Мобы-сущности
Идентификатор сущности Наименование
bat Летучая мышь
blaze Ифрит
cat Кошка
cave_spider Пещерный паук
chicken Курица
cod Треска
cow Корова
creeper Крипер
dolphin Дельфин
donkey Осёл
drowned Утопленник
elder_guardian Древний страж
ender_dragon Дракон Края
enderman Странник Края
endermite Чешуйница Края
evoker Вызыватель
fox Лиса
ghast Гаст
giant Гигант
guardian Страж
horse Лошадь
husk Кадавр
illusioner Иллюзор
iron_golem Железный голем
llama Лама
magma_cube Лавовый куб
mooshroom Грибная корова
mule Мул
ocelot Оцелот
panda Панда
parrot Попугай
phantom Фантом
pig Свинья
pillager Разбойник
polar_bear Белый медведь
pufferfish Иглобрюх
rabbit Кролик
ravager Разоритель
salmon Лосось
sheep Овца
shulker Шалкер
silverfish Чешуйница
skeleton Скелет
skeleton_horse Лошадь-скелет
slime Слизень
snow_golem Снежный голем
spider Паук
squid Спрут
stray Зимогор
trader_llama Лама торговца[Только для Java Edition]
tropical_fish Тропическая рыба
turtle Черепаха
vex Досаждатель
villager Деревенский житель
villager_v2 Деревенский житель[Только для Bedrock Edition]
vindicator Поборник
wandering_trader Странствующий торговец
witch Ведьма
wither Иссушитель
wither_skeleton Скелет-иссушитель
wolf Волк
zombie Зомби
zombie_horse Зомби-лошадь
zombie_pigman Зомби-свиночеловек
zombie_villager Зомби-житель
zombie_villager_v2 Зомби-житель[Только для Bedrock Edition]

Мобы — это подкласс сущностей с дополнительными тегами для хранения данных об их здоровье, состоянии атаки/получения урона, переносимых эффектах и о многом другом, в зависимости от моба. Игроки являются подклассом моба.

Снаряды[править | править код]

Снаряды-сущности
Идентификатор сущности Наименование
arrow Стрела
dragon_fireball Кислота Края
egg Яйцо
ender_pearl Жемчуг Края
experience_bottle Зелье опыта
fireball Огненный шар гаста
llama_spit Плевок ламы
potion Взрывное зелье
small_fireball Огненный шар ифрита
shulker_bullet Снаряд шалкера
snowball Снежок
spectral_arrow Призрачная стрела
trident Трезубец
wither_skull Череп иссушителя

Снаряды являются подклассом сущности и имеют очень непонятные теги, такие как X, Y, Z (теги координат), несмотря на имеющийся тег сущности Pos, inTile, несмотря на inGround, они колеблются, несмотря на то, что большинство снарядов не являются стрелами. В то время как все снаряды имеют общие теги, все они независимо друг от друга реализуются через Throwable и ArrowBase.

Предметы и сферы опыта[править | править код]

Предметы-сущности
Идентификатор сущности Наименование
experience_orb Сфера опыта
item Брошенный предмет

Предметы и сферы опыта являются подклассом сущности.

Транспорт[править | править код]

Транспорт-сущности
Идентификатор сущности Наименование
boat Лодка
minecart Вагонетка
chest_minecart Вагонетка с сундуком
command_block_minecart Вагонетка с командным блоком
furnace_minecart Вагонетка с печью
hopper_minecart Вагонетка с воронкой
spawner_minecart Вагонетка со спаунером
tnt_minecart Вагонетка с ТНТ

Транспорт является подклассом сущности.

Динамические блоки[править | править код]

Динамические блоки-сущности
Идентификатор сущности Наименование
falling_block Динамический блок
tnt ТНТ

Динамические блоки являются подклассом сущности и используются для моделирования реалистично движущихся блоков.

Другое[править | править код]

Другие сущности
Идентификатор сущности Наименование
area_effect_cloud Облако эффекта
armor_stand Стойка для брони
end_crystal Кристалл Края
evoker_fangs Челюсти вызывателя
eye_of_ender Око Края
firework_rocket Ракета
item_frame Рамка
leash_knot Узел поводка
painting Картина
fishing_bobber Поплавок

Другие типы сущностей, которые являются подклассом сущности, но не входят ни в одну из вышеперечисленных категорий.

Формат блока-сущности[править | править код]

Блоки-сущности
Идентификатор блока-сущности Соответствующий блок
banner Флаг
barrel Бочка
beacon Маяк
bed Кровать
beehive Пчелиное гнездо/улей
bell Колокол
blast_furnace Плавильная печь
brewing_stand Варочная стойка
campfire Костёр
cauldron Котёл[Только для BE и LCE]
chest Сундук
Сундук-ловушка
comparator Компаратор
command_block Командный блок
conduit Морской проводник
daylight_detector Датчик дневного света
dispenser Раздатчик
dropper Выбрасыватель
enchanting_table Стол зачаровывания
ender_chest Сундук Края
end_gateway Врата Края
end_portal Портал Края
furnace Печь
hopper Загрузочная воронка
jigsaw Блок головоломки
jukebox Проигрыватель
lectern Кафедра
mob_spawner Спаунер
piston Движущийся поршень
shulker_box Шалкеровый ящик
sign Табличка
skull Голова моба
smoker Коптильня
structure_block Структурный блок

Блок-сущность (не относится к сущности) используется Minecraft для хранения инфориации о блоке, информации, которая не может быть сохранена в состояниях блока. Блоки-сущности назывались «объектами-сущностями» до предварительных сборок 1.8 и этот термин всё ещё используется в некоторых применяемых командах.

Формат тиков объектов[править | править код]

Тики объектов представляют собой обновления блоков, которые должны произойти, потому что они попросту не могли произойти до сохранения чанка. Примерами тиков объектов могут быть схемы красного камня, нуждающиеся в непрестанном обновлении чанка, вода и лава, которые должны продолжать течь, недавно помещенный песок или гравий, который должен упасть и так далее. Тики объектов не используются при опадании листвы, где информация об опадании хранится в значениях данных блока листвы и обрабатывается Minecraft при загрузке чанка. Для создателей игровых карт тики объектов могут использоваться для обновления блоков по прошествии определённого периода времени с загруженным в память чанком.

История[править | править код]

Впервые чанки появились в Minecraft Infdev. До добавления формата MCRegion в Beta 1.3, чанки хранились в индивидуальном порядке в виде файлов с расширением .dat, где имена файлов содержали позицию чанка, закодированную в Base36 — это также известно как Alpha (формат карты). MCRegion изменяет это, сохраняя группы из 32×32 чанка в отдельных файлах .mcr с координатами, закодированными в Base10, с целью уменьшить использование дискового пространства, сократив количество дескрипторов файлов, которые Minecraft сразу открывал. Преемником MCRegion является нынешний формат, Anvil, который внес изменения только в формат чанка. Технология файла региона всё ещё используется, но вместо прежних расширений файлов теперь используется .mca.

Основным отличием Anvil от MCRegion было разделение чанков на части; каждый чанк имеет до 16 отдельных 16×16×16 частей — блоков, благодаря чему пустые секции просто не сохраняются. Ещё одним отличием является поддержка блоков с идентификаторами в диапазоне от 0 до 4095, по сравнению с предыдущим ограничением от 0 до 255. Однако сам Minecraft не полностью готов к тому, чтобы такие блоки существовали как предметы; многие идентификаторы предметов уже взяты в диапазоне от 256 до 4095.

Массивы The Blocks, Data, BlockLight и SkyLight теперь размещаются в отдельных частях чанка. Массивы The Data, SkyLight и BlockLight имеют 4-битные значения, а массивы BlockLight и SkyLight больше не используются в идентификаторе блока. Массив The Blocks использует 8 битов на каждый блок, а поддержка 4096 блоков существует в виде дополнительного массива байтов Add, где используется 4-бита на каждый блок для дополнительной информации идентификатора блока. С внедрением формата Anvil, формат NBT была изменена первоначальная спецификация Notch'а ради включения тега целочисленного массива, аналогичного ранее существующему тегу массива байтов. В настоящее время он используется только для информации HeightMap в чанках.

Официальный выпуск Java Edition
1.3.1 12w21a Удалены следующие теги MobSpawner: MaxExperience, RemainingExperience, ExperienceRegenTick, ExperienceRegenRate и ExperienceRegenAmount.
1.4.2 12w34a Добавлена сущность WitherBoss.
1.5 13w02a Добавлена сущность MinecartTNT.
Имя Minecart теперь не рекомендуется.
13w03a Добавлена сущность MinecartHopper.
13w06a Добавлена сущность MinecartSpawner.
1.6.1 13w16a Добавлена сущность EntityHorse.
13w21a Удалён следующий тег EntityHorse: ArmorType.
Удалён следующий тег EntityHorse: Saddle.
Релиз Тег Saddle снова добавлен к сущности EntityHorse.
1.7.2 13w39a Добавлена сущность MinecartCommandBlock.
1.8 14w02a Добавден тег Lock для блоков, имеющих хранилище.
Идентификаторы предметов больше не используются при указанни определённых NBT данных.
Добавлен тег Block к сущности FallingSand, используется для формата идентификаторов в алфавитном порядке.
14w06a Добавлен тег ShowParticles ко всем мобам.
Добавлен тег PickupDelay к предметам-сущностям.
Установка параметра Age на значение, равное -32768, не позволит предметам исчезнуть со временем.
Тег AttackTime был удалён для мобов.
14w10a Добавлен тег rewardExp к сущности Villager.
Добавлен тег OwnerUUID ко всем мобам, способным к размножению.
Добавлен тег Owner к сущности Skull.
Изменения, коснувшиеся рамки и картин: добавлены теги Facing, TileX, TileY и TileZ, которые представляют координаты блока, размещённого в предмете. Direction и Dir теперь отключены.
14w11a Добавлена сущность Endermite.
Добавлен тег EndermiteCount к сущности Enderman.
14w21a CustomName и CustomNameVisible теперь работают для всех сущностей.
14w25a Добавлена сущность Guardian.
Добавлены теги Text1, Text2, Text3 и Text4 к табличкам. Ограничение больше не зависит от количества символов (16), теперь оно зависит от их ширины.
14w27a Добавлена сущность Rabbit. Добавлен тег CommandStats к командному блоку и табличке.
14w28a Тег EndermiteCount удалён у сущности Enderman.
14w30a Добавлен тег Silent ко всем сущностям.
14w32a Добавлен тег NoAI ко всем мобам.
Добавлена сущность ArmorStand.
14w32c Добавлен тег NoBasePlate к сущности ArmorStand.
1.9 15w31a Добавлены теги HandItems, ArmorItems, HandDropChances и ArmorDropChances для Living, которые теперь заменяют теги DropChances и Equipment.
Добавлены теги HandItems и ArmorItems к ArmorStand.
Добавлен тег Glowing к Entity.
Добавлен тег Team к LivingBase.
Добавлен тег DragonPhase к EnderDragon
Добавлена сущность Shulker, часть Entity.
Добавлена сущность ShulkerBullet, часть Entity.
Добавлена сущность DragonFireball, которая распространяется на FireballBase и не имеет уникальных тегов.
Добавлены сущности TippedArrow и SpectralArrow, части Arrow.
Добавлен блок EndGateway, часть TileEntity.
15w32a Теги Tags и DataVersion теперь могут быть применены на сущности.
Изменён тип тега Fuse для сущности PrimedTnt с «Byte» на «Short».
15w32c Установлен лимит на количество возможных тегов, присвоенных сущности (1024 тега). При превышении он отображает сообщение об ошибке: «Невозможно добавить более 1024 тегов к сущности.»
15w33a Добавлена сущность AreaEffectCloud, часть Entity.
Добавлен тег ExactTeleport, а Life переименован в Age для блока EndGateway.
Добавлен тег Linger к сущности ThrownPotion.
Тег DataVersion удалён у Entity. Теперь он применяется только к сущности Player, части LivingBase.
Тег UUID удалён у Entity.
Тег HealF под тегом LivingBase теперь является устаревшим.
Тег Health под тегом LivingBase теперь имеет другой тип: из «Short» в «Float».
Тег Equipment удалён у сущности ArmorStand и Living, его использование теперь заменено на теги HandItems и ArmorItems, которые были добавлены ранее.
15w33c Добавлен тег BeamTarget к сущности EnderCrystal.
15w34a Добавлены байт-теги powered и conditional к объектам-сущностям Control для командного блока.
Добавлены теги life и power к сущности FireballBase.
Добавлен тег id внутри SpawnData к блоку MobSpawner.
Добавлен тег powered к объекту-сущности Music для музыкального блока.
15w35a Добавлен тег VillagerProfession к сущности Zombie.
15w37a Добавлен тег Enabled к сущности MinecartHopper.
15w38a Добавлены теги SkeletonTrap и SkeletonTrapTime к сущности EntityHorse.
15w41a Тег Riding заменён на Passengers для всех сущностей.
Добавлен тег RootVehicle для всех наездников.
Добавлен тег Type к сущности Boat.
15w42a Добавлен тег Fuel к блоку Cauldron (варочным стойкам).
15w43a Добавлены теги LootTable и LootTableSeed к блоку Chest, сущностям Minecart и MinecartHopper.
Добавлены теги DeathLootTable и DeathLootTableSeed ко всем мобам.
Добавлены теги life и power ко всем огненным шарам (FireballBase).
15w44a Добавлен тег ShowBottom к сущности EnderCrystal.
15w44b Добавлены теги Potion и CustomPotionEffects к сущности Arrow.
Добавлен тег Potion к сущности AreaEffectCloud.
15w45a Тег Linger удалён у сущности ThrownPotion. Вместо этого зелье задерживается, если сохраненный предмет имеет идентификатор minecraft:lingering_potion.
ThrownPotion теперь визуализируется как предмет, даже если предмет не является зельем.
15w46a Значение тега MoreCarrotTicks у сущности Rabbit теперь устанавливается на 40, когда кролики поедают урожай моркови, но не используется всегда.
15w47a Добавлен тег PaymentItem к блоку Beacon.
15w49a Тег PaymentItem удалён у блока Beacon.
Чтобы табличка воспринимала текст, все 4 тега («Text1», «Text2», «Text3» и «Text4») должны присутствовать.
15w51b Изначальное значение DisabledSlots в сущности ArmorStand изменено на более натуральное.
1.10 16w20a Добавлена сущность PolarBear.
Добавлен тег ZombieType к сущности Zombie, заменяющий VillagerProfession и IsVillager. Значение 6 указывает на кадавра.
Значение тега SkeletonType, равное 2, указывает на зимогора.
Тег NoGravity теперь распространяется на всех сущностей.
Добавлены теги powered, showboundingbox и showair к Structure.
16w21a Добавлен тег FallFlying к мобам и стойкам для брони.
Добавлены теги integrity и seed к Structure.
pre1 Добавлены теги ParticleParam1 и ParticleParam2 к сущности AreaEffectCloud.
1.11 16w32a Лошади разделены по идентификаторам сущностей: horse, donkey, mule, skeleton_horse и zombie_horse для их соответствующих типов. Теги Type и HasReproduced удалены у сущности horse, теги ChestedHorse и Items теперь применяются только к сущностям mule и donkey, а теги SkeletonTrap и SkeletonTrapTime теперь применяются только к сущности skeleton_horse.
Скелеты теперь разделены по идентификаторам сущностей: skeleton, stray и wither_skeleton. Тег SkeletonType удалён у всех типов скелетов.
Зомби теперь разделены по идентификаторам сущностей: zombie, zombie_villager и husk. Тег ZombieType удалён у всех типов зомби, теги ConversionTime и Profession теперь применяются только к сущности zombie_villager.
Стражи теперь разделены по идентификаторам сущностей: guardian и elder_guardian. Тег Elder удалён у сущности guardian.
Неиспользуемые идентификаторы Mob и Monster были удалены.
Байт-тег Pumpkin был добавлен к сущности snowman.
16w35a Добавлен тег CustomName к блоку banner.
16w39a Добавлены сущности llama, llama_spit, vindication_illager, vex, evocation_fangs и evocation_illager.
Добавлен тег Color к сущности shulker.
Добавлены теги LocName, CustomPotionColor и ColorMap к предметам.
16w40a Добавлен тег Johnny к сущности vindication_illager.
Удалены теги xTile, yTile, zTile, inTile, inGround из класса FireballBase (в больших огненных шарах, маленьких огненных шарах, кислоте Края и черепам иссушителя).
16w41a Тег llama_spit теперь доступен как объект сохранения игры.
16w42a Добавлен тег crit к сущности arrow.
16w43a Добавлены теги OwnerUUIDLeast и OwnerUUIDMost к сущности evocation_fangs.
16w44a Теги xTile, yTile, zTile, inTile, inGround были удалены у поплавка (сущности).
pre1 Тег ench изменён, чтобы требовать по крайней мере одно соединение.
1.12 17w13a Добавлены Parrot, ShoulderEntityLeft/ShoulderEntityRight, seenCredits, recipeBook и Recipes.
17w14a Добавлены теги isFilteringCraftable, isGuiOpen и recipes к recipeBook, которые являются составной частью тега.
Добавлены теги ConversionPlayerLeast и ConversionPlayerMost к сущности Zombie.
17w16a Синтаксический анализ NBT в командах теперь улучшен.
17w17a Добавлен тег toBeDisplayed к recipeBook, UpdateLastExecution и LastExecution.
17w17b Добавлены теги LoveCauseLeast и LoveCauseMost к сущностям, способным к размножению.
1.13 17w47a Тег damage удалён у предметов, для инструментов и брони теперь используется тег Damage, а для карт используется тег map, оба в tag.
Теги странника Края carried и carriedData объединены в carriedBlockState.
Теги стрелы inTile и inData объединены в inBlockState.
Теги вагонетки DisplayTile и DisplayData объединены в DisplayState.
Теги падающих блоков Block и Data объединены в BlockState.
Теги поршней BlockId и BlockData объединены в blockState.
Удалён музыкальный блок и цветочный горшок как сущности.
Сундук-ловушка теперь является независимым блоком-сущностью trapped_chest.
Удалён тег Base у флагов.
Удалён тег Rot у голов.
17w47a Удалён тег Record у проигрывателя.
17w47b Сундук-ловушка больше не является независимым блоком-сущностью, снова используется chest.
18w01a Thrower и Owner изменены со строк на компоненты с двумя большими именами L и M.
18w02a Поплавок, создаваемый удочкой теперь обладает собственным уникальным идентификатором сущности — fishing_bobber.
Мотивы картин теперь прописаны в нижнем регистре и в пространстве имён.
18w07a Добавлены сущности turtle, trident и phantom.
Добавлены теги HomePosX, HomePosY, HomePosZ, TravelPosX, TravelPosY, TravelPosZ и HasEgg к сущности turtle.
Добавлены теги AX, AY, AZ и Size к сущности phantom.
18w15a Добавлена сущность dolphin.
18w19a Сущность puffer_fish переименована в pufferfish.
18w20a Сущность cod_mob переименована в cod.
Сущность salmon_mob переименована в salmon.
18w21a Добавлены теги TreasurePosX, TreasurePosY, TreasurePosZ, GotFish и CanFindTreasure к сущности dolphin.
Тег ench переименован в Enchantments.
Тег Enchantments больше не поддерживает цифровые идентификаторы, вместо этого он требует текстовые идентификаторы.
pre5 Сущность xp_orb переименована в experience_orb.
Сущность xp_bottle переименована в experience_bottle.
Сущность eye_of_ender_signal переименована в eye_of_ender.
Сущность ender_crystal переименована в end_crystal.
Сущность fireworks_rocket переименована в firework_rocket.
Сущность commandblock_minecart переименована в command_block_minecart.
Сущность villager_golem переименована в iron_golem.
Сущность evocation_fangs переименована в evoker_fangs.
Сущность evocation_illager переименована в evoker.
Сущность vindication_illager переименована в vindicator.
pre5 Сущность illusion_illager переименована в illusioner.
1.14 18w43a Добавлены сущности illager_beast, panda и pillager.
18w45a Параметр LIGHT_BLOCKING тега heightmap был удалён.