도둑 주민 데이터팩 — Minecraft Java 1.21.4

설치
1. 월드를 백업합니다.
2. ZIP을 풀지 않고 해당 월드의 datapacks 폴더에 넣습니다.
   일반적인 위치: %APPDATA%\.minecraft\saves\월드이름\datapacks
3. 월드에 들어가 /reload 를 실행합니다. 명령어 사용 권한이 필요합니다.
4. 서바이벌 또는 모험 모드에서 30초 기다립니다.

규칙
- 플레이어마다 600게임틱(정상 속도에서 30초)에 한 번 도둑이 나타납니다.
- 화면 위 보스바가 나에게 다음 도둑이 오는 시간을 표시합니다. 마지막 5초는 빨간색입니다.
- 주민은 훔친 물건을 손에 표시하며, 채팅으로 아이템 이름과 수량을 알려줍니다.
- 기본 이름은 게임 언어 설정을 따르고, 모루 등으로 붙인 이름도 표시합니다.
- 단축바 9칸 + 일반 인벤토리 27칸 중 비어 있지 않은 슬롯을 균등하게 고릅니다.
- 선택한 슬롯의 묶음 전체를 훔칩니다. 갑옷, 보조 손, 엔더 상자는 제외합니다.
- 인벤토리가 비어 있으면 그 차례는 건너뜁니다.
- 아이템의 수량, 이름, 인챈트, 내구도, 셜커 상자 내용 등 아이템 데이터를 복사합니다.
- 주민을 처치하면 훔친 플레이어의 빈 인벤토리 슬롯에 원본 묶음을 바로 돌려줍니다.
- 빈 슬롯이 없으면 주인 발밑에 정지한 상태로 떨어뜨리고 안내합니다. 이 아이템은 주인만 주울 수 있습니다.
- 주인이 오프라인/사망/관전자 상태면 보관 마커를 유지하고, 돌아왔을 때 해당 청크가 로드되어 있으면 반환합니다.
- 도둑이 나타난 뒤 200게임틱(정상 속도에서 10초) 안에 잡아야 합니다.
- 시간 안에 잡지 못하면 피해자 화면 중앙에 “주민을 못 잡았다”를 표시하고 주민이 사라집니다.
- 시간 초과로 사라진 도둑이 훔친 아이템은 잃습니다. 처치와 시간 초과가 같은 틱이면 처치 반환을 우선합니다.
- 자연사해도 반환됩니다. 바닥에 반환된 아이템은 5분 후 사라집니다.
- 도둑마다 별도 보관하므로 이전 도둑이 남아 있어도 다음 도둑이 등장합니다.
- 크리에이티브/관전자에서는 자동으로 훔치지 않습니다.
- 기본 3개 차원 지원. 청크가 내려가면 도둑과 물건은 저장되며 다시 불러오면 처리됩니다.
- 멀티플레이에서 도둑은 가장 가까운 관전자 외 플레이어에게서 도망갑니다.

명령어
/function thief:test     지금 바로 한 번 훔치기 (플레이어가 실행, 시작 상태에서 사용)
/function thief:stop     새 도둑 출현 중지
/function thief:start    다시 시작, 타이머 초기화
/function thief:recover  불러온 청크의 모든 도둑 물건을 주인에게 반환 (주인 정보 없는 구버전 물건은 현장에 반환)

제거
/function thief:stop 후 도둑을 잡거나 /function thief:recover 로 회수하세요.
멀리 떨어진 도둑은 그 청크로 돌아가 회수한 뒤 월드를 종료하고 ZIP을 제거하세요.

구현 및 제한
- 주민의 이동은 명령어로 제어합니다. 평지와 단순한 한 블록 높이 지형에 적합합니다.
- 평지 이동 속도는 초당 약 4.49블록(틱당 0.22448블록)으로, 효과 없는 일반 달리기의 약 80%입니다. 달리기 점프나 신속 효과는 기준에서 제외합니다.
- 발밑을 확인해 공중에서는 아래로 내려보내므로, 오르막/내리막이나 공중 소환 후 바닥에 내려옵니다.
- 벽에 막히면 좌우/뒤쪽을 포함한 12방향으로 이동 가능성을 탐색하고, 선택한 우회 방향을 1초간 유지합니다.
- 몸과 머리 공간을 확인하여 벽을 관통하는 이동을 피합니다. 복잡한 미로를 푸는 완전한 길찾기 AI는 아닙니다.
- 장비 드롭에 의존하지 않고 보이지 않는 동승 마커에 원본 아이템을 저장합니다.
- 손의 아이템은 표시용이며 드롭 확률을 0으로 설정하여 두 번 반환되지 않게 합니다.
- 엔티티 일괄 삭제 명령/플러그인으로 마커까지 지우면 물건이 사라질 수 있습니다.
- 공식 Minecraft Java 1.21.4 로컬 서버와 자동 접속 클라이언트로 이동, 도난, 인챈트 아이템 반환/줍기, 보스바, 실패 문구 전달, 200틱 제한을 검증했습니다.
- 그래픽 클라이언트 화면의 시각 검사는 하지 않았습니다.

호환 기준: 공식 Java 1.21.4 릴리스 노트의 데이터팩 버전 61
https://www.minecraft.net/en-us/article/minecraft-java-edition-1-21-4

업데이트 설치: 기존 ZIP을 이 ZIP으로 교체한 다음 /reload 를 실행하세요.
이전 버전에서 못 돌려받은 물건의 보관 마커가 남아 있다면 업데이트 후 해당 청크에서 자동 반환됩니다.
주인 정보가 없는 아주 초기 버전의 도둑은 업데이트 후 현장에 물건을 반환하고 제거합니다.
이미 마커까지 삭제된 물건은 데이터팩만으로 복구할 수 없습니다.
손 표시와 채팅 알림은 업데이트 후 새로 출현한 도둑부터 적용됩니다.
