Формат чанка

Материал из 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: Может не существовать. 1024 записи данных биома.[источник?] Смотрите значения данных биомов для просмотра их идентификаторов. Если этот тег не существует, он создается и заполняется 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 при загрузке чанка. Для создателей игровых карт тики объектов могут использоваться для обновления блоков по прошествии определённого периода времени с загруженным в память чанком.

  • Тик объекта
    •  i: Идентификатор блока; используется для активации правильной процедуры обновления блока.
    •  t: Количество тиков до обработки должно произойти. Может быть отрицательным, когда обработка просрочена.
    •  p: Если для одного и того же тика запланировано несколько тиков плитки, сначала обрабатываются тики с меньшим p. Если они также имеют одинаковое p, порядок неизвестен.
    •  x: X позиция
    •  y: Y позииция
    •  z: Z позиция

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

Впервые чанки появились в 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.112w21aУдалены следующие теги MobSpawner: MaxExperience, RemainingExperience, ExperienceRegenTick, ExperienceRegenRate и ExperienceRegenAmount.
1.4.212w34aДобавлена сущность WitherBoss.
1.513w02aДобавлена сущность MinecartTNT.
Имя Minecart теперь не рекомендуется.
13w03aДобавлена сущность MinecartHopper.
13w06aДобавлена сущность MinecartSpawner.
1.6.113w16aДобавлена сущность EntityHorse.
13w21aУдалён следующий тег EntityHorse: ArmorType.
Удалён следующий тег EntityHorse: Saddle.
РелизТег Saddle снова добавлен к сущности EntityHorse.
1.7.213w39aДобавлена сущность MinecartCommandBlock.
1.814w02aДобавлен тег 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.
14w21aCustomName и CustomNameVisible теперь работают для всех сущностей.
14w25aДобавлена сущность Guardian.
Добавлены теги Text1, Text2, Text3 и Text4 к табличкам. Ограничение больше не зависит от количества символов (16), теперь оно зависит от их ширины.
14w27aДобавлена сущность Rabbit. Добавлен тег CommandStats к командному блоку и табличке.
14w28aТег EndermiteCount удалён у сущности Enderman.
14w30aДобавлен тег Silent ко всем сущностям.
14w32aДобавлен тег NoAI ко всем мобам.
Добавлена сущность ArmorStand.
14w32cДобавлен тег NoBasePlate к сущности ArmorStand.
1.915w31aДобавлены теги 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.1016w20aДобавлена сущность PolarBear.
Добавлен тег ZombieType к сущности Zombie, заменяющий VillagerProfession и IsVillager. Значение 6 указывает на кадавра.
Значение тега SkeletonType, равное 2, указывает на зимогора.
Тег NoGravity теперь распространяется на всех сущностей.
Добавлены теги powered, showboundingbox и showair к Structure.
16w21aДобавлен тег FallFlying к мобам и стойкам для брони.
Добавлены теги integrity и seed к Structure.
pre1Добавлены теги ParticleParam1 и ParticleParam2 к сущности AreaEffectCloud.
1.1116w32aЛошади разделены по идентификаторам сущностей: 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.1217w13aДобавлены 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.1317w47aТег 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.
18w01aThrower и 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.1418w43aДобавлены сущности illager_beast, panda и pillager.
18w45aПараметр LIGHT_BLOCKING тега heightmap был удалён.