마인크래프트/세계/NBT

 




1. 개요
2. 맵 폴더 구조
3. data
3.1. map_ɴ.dat
4. level.dat
4.1. 데이터
5. (플레이어 UUID).dat
5.1. 데이터
6. 서버


1. 개요


마인크래프트의 맵 데이터에 대한 NBT(Named Binary Tag)를 정리한 문서.
NBTExplorer를 이용해서 맵의 NBT를 확인하거나 수정할 수 있다.

2. 맵 폴더 구조


advancements - 발전과제 json 데이터
data - 데이터들(대표적으로 지도)
datapack - 데이터팩의 데이터
DIM-1 - 네더 월드
DIM-1\\region 네더 월드의 데이터
DIM1 - 엔드 월드
DIM1\\region - 엔드 월드의 데이터
players - 플레이어 데이터
region - 오버월드 데이터
세계 데이터들의 경우는 어디까지나 세계가 변화한 것을 기록한 것이기 때문에 데이터를 삭제해도 당장에 큰 오류는 없다.[1][2]

3. data


데이터이다.

3.1. map_ɴ.dat


지도. ɴ은 지도NBT의 번호이다.
형식:
data
• banners ''배너. 배너를 입력하면 태그가 더 달린다.''
• frames ''아이템 엑자에 달린 정보. 위와 마찬가지로 태그가 더 달린다.''
• dimension ''지도를 만든 차원이다. 더 알고싶으면 마인크래프트/차원''
• locked ''잠근 여부다.''
• scale ''크기. 기본적으로 0이다. 지도(마인크래프트)''
• xCenter ''지도의 x중심. 원하는 좌표도 된다.(수가 -일때 더하기 금지)''
• zCenter ''지도의 z중심. 원하는 좌표도 된다.(수가 -일때 더하기 금지)''
DataVersion ''level.dat의 버전아이디''

4. level.dat


이 파일은 마인크래프트의 맵 정보가 담겨있다.

4.1. 데이터


  • Data - 형식: Compound
    • CustomBossEvents - 형식: Compound
    • DataPacks - 형식: Compound
      • Enabled - 형식: List - 활성화된 데이터팩 목록
        • (단일 데이터 팩) - 형식: String
      • Disabled - 형식: List - 비활성화된 데이터팩 목록
        • (단일 데이터 팩) - 형식: String
    • DimensionData - 형식: Compound
      • 1 - 형식: Compound - 엔드에 관한 데이터
        • DragonFight - 형식: Compound - 엔더 드래곤 싸움에 관한 것
          • [image] DragonKilled - 엔더 드래곤이 현재 살아있는 경우. 1이다.
          • [image] PreviouslyKilled
    • GameRules - 형식: Compound - 게임 규칙
    • Player - 형식: Compound - 플레이어 데이터
    • Version - 형식: Compound - 세계가 저장된 마인크래프트 정보
      • Id - 형색: int - 데이터 버전을 표시하는 정수
      • Name - 형색: String - 버전 이름이다. 예: 19w42a
      • Snapshot - 형색: Byte - 스냅샷 여부. 1이면 스냅샷 버전이다.
  • allowCommands - 형식: Byte - 치트가 활성화된 경우 1이다.
  • BorderCenterX - 형식: Double - X 좌표에서 세계 경계의 중심. 기본값은 0
  • BorderCenterZ - 형식: Double - Z 좌표에서 세계 경계의 중심. 기본값은 0
  • BorderDamagePerBlock - 형식: Double - 기본값은 0.2
  • BorderSafeZone - 형식: Double - 기본값은 5
  • BorderSize - 형식: Double - 세계 경계의 길이. 기본값은 60000000이다.
  • BorderSizeLerpTarget - 형식: Double - 기본값은 60000000이다.
  • BorderSizeLerpTime - 형식: Long - 기본값은 0이다.
  • BorderWarningBlocks - 형식: Double - 기본값은 5이다.
  • BorderWarningTime - 형식: Double - 기본값은 15이다.
  • clearWeatherTime - 형식: Int - 맑은 날씨가 끝날때 남은 시간(틱)
  • DataVersion - 형식: Int - 데이터 버전을 표시하는 정수.
  • DayTime - 형식: Long - 0은 아침, 6000은 낮, 12000은 저녁, 18000은 밤, 24000은 다음날이 되며 0으로 초기화 하지 않는다.
  • Difficulty - 형식: Byte - 난이도 설정. 0은 평화로움, 1은 쉬움, 2는 보통, 3은 어려움이다.
  • DifficultyLocked - 형식: Byte - 난이도 잠겨 있으면 1(True)이다. 기본값은 0[3]
  • GameType - 형식: Int - 월드 기본 게임모드. 0이면 서바이벌, 1은 크리에이티브, 2는 모험 모드, 3은 관전 모드이다.
  • generatorName - 형식: String
  • generatorVersion - 형식: Int
  • hardcore - 형식: Byte - 하드코어 설정. 1로 설정할시 하드코어 세계가 된다. 하드코어 자체가 엄연히 게임모드가 아니라 세계 옵션에 속한다.
  • initialized - 형식: Byte
  • LastPlayed - 형식: Long - 맵이 마지막으로 로드 된 유닉스 시간 (밀리 초)이다.
  • LevelName - 형식: String - 맵 이름
  • MapFeatures - 형식: Byte - 마을, 던전 등 구조물 생성 여부
  • raining - 형식: Byte - 비가 내리는 여부. 1이면 비가 내린다.
  • rainTime - 형식: Int - 비가 내릴때가지 남은 틱
  • RandomSeed - 형식: Long - 시드
  • SizeOnDisk - 형식: Long - 맵의 예상크기 현재는 사용하지 않지만 예전에 사용한 흔적이 있다.
  • SpawnX - 형식: Int - 월드 플레이어 스폰 좌표 X
  • SpawnY - 형식: Int - 월드 플레이어 스폰 좌표 Y
  • SpawnZ - 형식: Int - 월드 플레이어 스폰 좌표 Z
  • thundering - 형식: Byte - 천둥번개 여부. 1이면 천둥번개를 친다.
  • thunderTime - 형식: Int
  • Time - 형식: Long - 맵 생성 이후 시간(틱)
  • version - 형식: Int - 맵 버전, 예로 들어 1.14.4 맵의 경우에는 19133이다.
  • WanderingTraderId - 형식: String - 떠돌이 상인의 UUID이다.
  • WanderingTraderSpawnChance - 형식: Int - 떠돌이 상인이 다음 시도에서 스폰 할 가능성. 이 값은 백분율이며 게임에 의해 로드 될 때 10으로 나눈다. 예를 들어 50은 5.0% 확률을 의미한다.
  • WanderingTraderSpawnDelay - 형식: Int - 다른 떠돌이 상인이 스폰 될 때까지 남은 시간

5. (플레이어 UUID).dat


playerdata 폴더에 있으며 플레이어에 대한 데이터 정보가 담긴 파일이다.

5.1. 데이터


id, CustomName, CustomNameVisible를 제외한 모든 엔티티와 같다.
HandItems, ArmorItems, DropChances, CanPickUpLoot, PersistenceRequired, Leashed, Leash를 제외한 모든 몹과 같다.
  • abilities - 형식: - 이 플레이어가 가진 능력.
    • walkSpeed - 형식 Float - 걷는 속도. 항상 0.1이다.
    • flySpeed - 형식 Float - 나는 속도. 항상 0.05이다.
    • mayfly: - 형식: Byte - 플레이어가 날 수 있다면 1(true) 이다.
    • flying - 형식: Byte - 플레이어가 현재 비행중인 경우 1(true) 이다.
    • invulnerable - 형식: Byte - 플레이어가 공허 피해를 제외한 모든 피해와 디버프 면역이면 1(true)이다.(/kill 명령어를 제외하고)
    • mayBuild - 형식: Byte - 플레이어가 블록을 배치하고 파괴할 수있는 경우 1(true)이다.(서바이벌 모드.)
    • instabuild - 형식: Byte - 플레이어가 블록을 즉시 파괴할 수있는 경우 1(true)이다.(크리에이티브와 같다.)
  • recipeBook - 형식: Compound - 제작법 책에 관한 NBT
    • recipes - 형식: List - 제작할 수 있는 블록
      • (제작 가능한 아이템 이름) - 형식: String - (예: 돌이면 minecraft:stone 이다.)
    • toBeDisplayed - 형식: List -
      • (제작 가능한 아이템 이름) - 형식: String - (예: 돌이면 minecraft:stone 이다.)
    • isFilteringCraftable - 형식: Byte -
    • isFurnaceFilteringCraftable - 형식: Byte -
    • isFurnaceGuiOpen - 형식: Byte - 제련 제작법 책 GUI를 연 경우 1(true)이다.
    • isGuiOpen - 형식: Byte - 제작 제작법 책 GUI를 연 경우 1(true)이다.
  • Attributes - 형식: List
    • Compound
      • Name - 형식: String - Attribute의 이름. 플레이어는 generic.maxHealth, generic.knockbackResistance, generic.movementSpeed, generic.armor, generic.armorToughness, generic.attackDamage, generic.attackSpeed, generic.luck 가 있다.
      • Base - 형식: Double - Attribute의 기본값.
  • EnderItems - 형식: List - 엔더상자 부분
    • Compound
      • Count - 형식: Byte - 아이템 개수
      • Slot - 형식: Byte - 엔더상자 슬롯 번호
      • id - 형식: String - 아이템 이름
      • tag - 형식: Compound
  • Inventory - 형식: List - 인벤토리 부분
    • Compound
      • Count - 형식: Byte - 아이템 개수
      • Slot - 형식: Byte - 엔더상자 슬롯 번호
      • id - 형식: String - 아이템 이름
      • tag - 형식: Compound
  • Motion - 형식: List - 엔티티가 어디로 이동하는 NBT이다. 3개의 Double가 있으며 각각 X Y Z이다.
    • Double
    • Double
    • Double
  • Pos - 형식: List - 엔티티의 X Y Z 좌표.
    • Double
    • Double
    • Double
  • Rotation - 형식: List - 엔티티가 바라보고 있는 방향
    • Float
    • Float
  • DataVersion - 형식: Int - 플레이어 NBT 버전이다. 새로운 스냅샷 및 릴리스마다 증가한다.
  • Dimension - 형식 Int - 플레이어의 차원, -1은 네더, 0은 오버월드(지상), 1은 엔더월드이다. 이외의 값도 있지만 세계 추가된 모드한정.
  • foodExhaustionLevel - 형식 Float - 행동에 따라 증가하며 4이상 될시 포만감 또는 배고픔이 1 줄어든다.
  • foodLevel - 형식 Int - 배고픔 게이지. 1이 반칸이다. 20이 꽉 찬 상태
  • foodSaturationLevel - 형식 Float - 포만감 게이지. 최댓값은 foodLevel와 같다.
  • foodTickTimer - 형식 Int - 배고픔이 다 달면 수치가 증가한다. 80(4초)되면 1(반칸) 피해량을 받는다.
  • playerGameType - 형식: Int - 게임모드 0은 서바이벌, 1은 크리에이티브, 2는 모험 모드, 3은 관전 모드이다.
  • Score - 형식: Int - 사망시 표시되는 점수.
  • seenCredits - 형식: Byte - 엔딩을 봤는지 여부. 1이면 봤다는 뜻이다.
  • SelectedItemSlot - 형식: Int - 선택된 핫바 슬롯. 수치가 2라면 3번째 핫바이다.
  • SelectedItem - 형식: Compound
  • XpLevel - 형식 Int - 레벨 수치. 32비트 변수이므로 2147483647 - 1가 최대 값이다.
  • XpP - 형식 Float - 경험치 막대에서 다음 레벨 진행률 / 백분율. 65.2%이면 0.652이다.
  • XpSeed - 형식 Int - 마법부여대의 사용되는 시드이다. 처음 값은 난수값이다.
  • XpTotal - 형식 Int - 총 경험치 수치

6. 서버


서버 목록에도 NBT 형식으로 되어있다. 경로는 .minecraft\\servers.dat
  • servers - 형식: Compound
    • 서버 - 형식: List
      • icon - 형식: String - 서버의 아이콘이다.
      • ip - 형식: String - 서버의 ip 부분.
      • name - 형식: String - 서버 이름
      • acceptTextures - 형식: Byte - 리소스팩 허용 여부. 1이면 허용한다. 0은 비허용이고 이 NBT가 없으면 물어보기이다.

[1] 예외로 level.dat는 거의 모든 소스이기 때문에 잘못 건드리면 실험적 설정 세계가 된다[2] 맵 구조는 시드의 따라 고정되기 때문이며 나머지 데이터들의 변화를 저장한 것.[3] 다른 값들과는 달리 PlayerData에 있는 값이 아니며, Level.Dat 폴더를 열어야 찾을 수 있는 값이다. 이런 특성 상 특수 값으로 분류된다.