Skip to content

Repository files navigation

DPT

DPT(Datapack Test Runner)는 Minecraft 클라이언트를 실행하지 않고 실제 Java 서버 엔진에서 데이터팩을 검사하는 Go CLI입니다.

이 프로젝트의 목표는 서버가 명령, 로그 또는 직렬화된 상태로 관찰할 수 있는 데이터팩 동작을 터미널에서 빠르게 확인할 수 있돌고 하는 것입니다.

지원 범위

DPT가 검증할 수 있는 범위는 다음과 같습니다.

  • pack.mcmeta와 JSON 파일의 기본 문법
  • 데이터팩 네임스페이스
  • .mcfunction의 간단한 정적 경고
  • 실제 서버에서 데이터팩이 정상적으로 로드되는지
  • 데이터팩에 포함된 네이티브 GameTest
  • Minecraft 콘솔 명령의 즉시 성공 여부와 정수 반환값
  • 서버 콘솔 로그
  • 지속 테스트 서버에서의 /reload, /test, /tick 명령

다음 항목은 검증하지 않습니다.

  • 파티클과 이펙트가 실제로 어떻게 보이는지
  • 모델, 텍스처, 셰이더, 폰트 렌더링
  • HUD, GUI, 카메라 연출
  • 애니메이션의 시각적인 자연스러움
  • 사운드의 실제 청감
  • 키보드와 마우스 입력 및 플레이 감각
  • 실제 플레이어 클라이언트에만 존재하는 상태
  • 등등

파티클 명령이 성공했는지는 확인할 수 있지만, 파티클이 의도한 모양으로 보였는지는 확인할 수 없습니다.

기능

명령 기능
dpt init 데이터팩에 dpt.json, tests/, .dpt/ 생성
dpt uninit DPT 설정과 생성 작업공간 제거
dpt check 서버를 열지 않고 기본 정적 검사
dpt test 네이티브 GameTest 실행 또는 로드 스모크 테스트
dpt shell 테스트 서버를 유지하며 명령을 실시간 전송
dpt exec 새 테스트 서버에서 한 개 이상의 명령을 순서대로 실행하고 결과 반환
dpt doctor Java, server.jar, EULA, 권한, 포맷 호환성 사전 진단
dpt clean 7일 이상 된 DPT 캐시와 실행 폴더 정리
dpt version DPT 버전 표시

dpt test는 데이터팩 안에서 네이티브 GameTest를 발견하면 Minecraft의 GameTest 전용 실행기를 사용합니다. GameTest가 하나도 없으면 DPT가 의미 있는 동작을 추측하지 않고, 데이터팩이 실제 서버에서 정상적으로 로드되는지만 확인합니다.

요구 사항

필수적 요구 사항

  • 공식 Minecraft Java Edition server.jar (버전은 1.13 이상)
  • 선택한 server.jar가 요구하는 최소 버전 이상의 Java
  • Minecraft EULA에 대한 사용자의 명시적인 동의

선택적 요구 사항

  • Go 1.26 이상: DPT 빌드에 필요

DPT는 서버 JAR를 포함하거나 재배포하지 않습니다. 테스트할 Minecraft 버전의 공식 Java 서버 JAR를 사용자가 준비해야 합니다.

1.12에는 .mcfunction이 있었지만 데이터팩 기능은 1.13에서 도입됐습니다. DPT는 데이터팩과 1.13 명령 체계를 사용하므로 1.12 이하는 지원 범위가 아닙니다. 사용자는 테스트할 JAR를 자유롭게 선택할 수 있지만, 현재 실제 통합 검증을 마친 버전과 하위 버전의 제한은 지원 환경을 확인하세요.

설치

macOS와 Linux

curl --proto '=https' --tlsv1.2 -fsSL \
  https://github.com/Ahho0927/DPT/releases/latest/download/install.sh | sh

기본 설치 위치는 ~/.local/bin/dpt입니다. 이 폴더가 PATH에 없으면 installer가 현재 셸과 ~/.zshrc 또는 ~/.bashrc에 추가할 줄을 출력합니다. installer가 셸 설정 파일을 임의로 수정하지는 않습니다.

특정 버전이나 설치 위치를 지정할 수도 있습니다.

curl --proto '=https' --tlsv1.2 -fsSL \
  https://github.com/Ahho0927/DPT/releases/latest/download/install.sh |
  sh -s -- --version v0.1.0 --install-dir "$HOME/.local/bin"

Windows PowerShell

irm https://github.com/Ahho0927/DPT/releases/latest/download/install.ps1 | iex

Windows PowerShell 5.1 이상 또는 PowerShell 7 이상을 지원합니다. 기본 설치 위치는 %LOCALAPPDATA%\Programs\DPT\bin\dpt.exe입니다. installer는 이 폴더를 사용자 Path에 추가하며, 기존 터미널에서는 새로 열어야 적용될 수 있습니다.

특정 버전을 설치하거나 Path 변경을 원하지 않으면 다음처럼 installer를 먼저 내려받아 실행합니다.

irm https://github.com/Ahho0927/DPT/releases/latest/download/install.ps1 -OutFile install-dpt.ps1
.\install-dpt.ps1 -Version v0.1.0 -NoModifyPath

현재 단계에서는 installer를 다시 실행하면 지정한 릴리스로 안전하게 교체할 수 있습니다. dpt updatedpt uninstall 서브커맨드는 다음 구현 단계이며 아직 제공하지 않습니다.

소스에서 직접 설치

개발 중인 소스를 직접 사용하려면 기존처럼 Go로 빌드할 수 있습니다.

mkdir -p "$HOME/.local/bin"
go build -o "$HOME/.local/bin/dpt" ./cmd/dpt

소스 빌드는 installer receipt를 만들지 않으므로 향후 자체 업데이트 대상이 아닙니다. 개발 폴더의 바이너리를 계속 사용하려면 심볼릭 링크를 만들 수 있습니다.

ln -sf "/path/to/DPT/dpt" "$HOME/.local/bin/dpt"

설치 후에는 어느 데이터팩 폴더에서든 경로 없이 사용할 수 있습니다.

cd /path/to/datapack
dpt check
dpt shell

빠른 시작

예를 들어 테스트 대상 데이터팩이 ./DPT에 있다면 다음처럼 초기화합니다.

./dpt init \
  --pack ./DPT \
  --server /absolute/path/to/server.jar \
  --accept-eula

--accept-eula는 사용자가 Minecraft EULA에 동의했다는 사실을 dpt.json에 기록합니다. DPT가 사용자를 대신해 EULA를 판단하거나 자동 동의하지 않습니다.

초기화를 해제하려면 다음 명령을 사용합니다.

dpt uninit --pack ./DPT

uninitdpt.json과 DPT가 생성한 .dpt/ 캐시·실행 기록을 제거합니다. tests/가 비어 있으면 함께 제거하지만, 사용자가 만든 테스트 파일이 하나라도 있으면 데이터 손실을 막기 위해 해당 폴더는 보존합니다. 원본 pack.mcmeta, data/와 데이터팩 파일은 건드리지 않습니다.

정적 검사를 실행합니다.

./dpt check --pack ./DPT

서버 실행 환경을 먼저 진단할 수 있습니다.

./dpt doctor --pack ./DPT

전체 테스트를 실행합니다.

./dpt test --pack ./DPT

여러 데이터팩을 함께 테스트하기

같은 --pack 뒤에 경로를 여러 개 쓰는 형식이 아니라, 팩마다 --pack을 반복합니다.

dpt test \
  --pack ./DPT \
  --pack ./CoreLibrary \
  --pack ./IntegrationTests

check, test, shell, exec에서도 같은 형식을 사용할 수 있습니다.

dpt check --pack ./CoreLibrary --pack ./DPT
dpt shell --pack ./CoreLibrary --pack ./DPT
dpt exec --pack ./CoreLibrary --pack ./DPT -- 'function piano:load'
./dpt test --pack ./DPT --tests 'piano:keys/*'

서버의 전체 로그가 필요하면 --verbose를 사용합니다.

./dpt test --pack ./DPT --verbose

자세한 사용법

dpt check

check는 서버를 실행하지 않습니다.

./dpt check --pack /path/to/datapack

현재 확인하는 항목:

  • pack.mcmeta 존재 여부와 최상위 pack 객체
  • pack_format 또는 min_format/max_format 선언
  • 설정된 server.jar의 데이터팩 포맷과 팩 호환 범위
  • 모든 .json, .mcmeta 파일의 JSON 문법
  • JSON 구문 오류의 대략적인 줄 번호
  • data/ 폴더 존재 여부
  • 네임스페이스 이름 규칙
  • .mcfunction 명령이 /로 시작하는지
  • 네이티브 GameTest 파일 수

포맷 필드 누락이나 선택한 서버 버전과의 불일치는 경고로 표시되며 check를 차단하지 않습니다. 실제 Minecraft 서버가 fallback으로 팩을 로드할 수 있기 때문입니다. JSON 문법 오류나 필수 구조 누락은 오류입니다.

예시 결과:

✓ 정적 검사 통과
  JSON 3 · 함수 2 · 네이티브 GameTest 0

MVP의 정적 검사는 Minecraft 버전별 Brigadier 명령 문법이나 리소스 간 참조까지 완전히 검증하지 않습니다. 실제 서버 로더가 최종 판단자입니다.


dpt test

네이티브 GameTest가 있을 때

DPT는 data/<namespace>/test_instance/**/*.json을 탐색합니다. 호환성을 위해 test_instances 복수 폴더도 발견 대상으로 인정하지만, 실제 파일 경로는 사용하는 Minecraft 버전의 형식을 따라야 합니다.

발견된 테스트가 있으면 개념적으로 다음 명령을 실행합니다.

java \
  -DbundlerMainClass=net.minecraft.gametest.Main \
  -jar server.jar \
  --packs <temporary-packs> \
  --report <report.xml> \
  --tests '<selection>' \
  --universe <temporary-world>

GameTest 실행기가 만든 JUnit 계열 XML을 파싱해 테스트별 성공, 실패, 오류, 건너뜀을 표시합니다.

GameTest 결과
✓ piano:note/plays (0.1s)
✗ piano:note/invalid (0.2s)
  expected stone at 1 2 3
2 tests · 1 failures · 0 errors · 0 skipped

GameTest 전용 실행기는 GameTest를 지원하는 현대 Java Edition 서버 JAR에서만 사용할 수 있습니다. 구버전 호환 어댑터는 현재 MVP에 포함되지 않습니다.

네이티브 GameTest가 없을 때

DPT는 다음과 같은 로드 스모크 테스트를 자동 수행합니다.

  1. 원본 데이터팩을 임시 월드의 datapacks/로 복사합니다.
  2. 로컬 전용 nogui 서버를 시작합니다.
  3. 서버가 준비 완료 상태까지 도달하는지 확인합니다.
  4. 데이터팩 로드 오류를 검사합니다.
  5. stop 명령으로 정상 종료합니다.

이 테스트가 성공했다는 것은 데이터팩이 로드되었다는 뜻입니다. 데이터팩의 제작 의도까지 검증했다는 뜻은 아닙니다.

네이티브 GameTest가 없어 안전한 로드 스모크 테스트를 실행합니다.
✓ 데이터팩이 실제 서버에서 로드되었습니다.
✓ 로드 스모크 테스트를 통과했습니다.

CI 결과 출력

사람이 읽는 기본 출력 대신 JSON을 사용할 수 있습니다.

dpt test --pack ./DPT --format json

JSON 결과는 schemaVersion, 실행 모드, 성공 여부, 종료 코드, 실행 시간, 팩 목록, 선택식과 상세 출력을 포함합니다. CI가 테스트 보고서를 수집하도록 집계 JUnit 파일도 별도 경로에 저장할 수 있습니다.

dpt test --pack ./DPT --junit build/reports/dpt.xml

현재 외부 JUnit은 DPT 실행 전체를 하나의 testcase로 기록합니다. 네이티브 GameTest runner가 만든 개별 case를 외부 보고서에 병합하는 기능은 후속 범위입니다.


dpt shell

shell은 로컬 테스트 서버를 계속 유지하며 Minecraft 명령을 실시간으로 전송합니다.

./dpt shell --pack ./DPT

Minecraft 명령은 / 없이 입력합니다. 실수로 /를 붙여도 DPT가 첫 글자를 제거합니다.

>>> function piano:load
>>> scoreboard players get #tempo piano
>>> data get storage piano:runtime

기본 화면은 서버 로그를 그대로 쏟아내지 않습니다. 반복되는 부팅, 레시피 로드, 청크 저장 메시지는 숨기고 명령 응답, 경고, 오류와 주요 생명주기 이벤트만 정리해서 표시합니다. 셸뿐 아니라 일반 DPT 명령도 실제 터미널에서는 성공은 초록, 경고는 노랑, 오류는 빨강, 제목·결과 항목은 청록, 상세 내용은 회색, 일반 메시지는 흰색으로 분류합니다. 셸 입력 프롬프트 >>>는 파란색입니다. JSON 출력의 안정성과 파이프 사용성을 위해 NO_COLOR가 설정됐거나 출력을 파일·파이프로 보내면 ANSI 색상 코드는 자동으로 꺼집니다.

✓ 테스트 서버 준비 완료
DPT shell 준비 완료 · 원본 로그: …/.dpt/runs/…/server.log
>>> scoreboard players get buyer money
✓ buyer has 5 [money]
>>> _

전체 원본 로그는 항상 .dpt/runs/<run-id>/server.log에 기록됩니다. 셸에서 :verbose on을 실행하면 원본 형식의 실시간 로그로 전환하고, :verbose off로 정리된 화면으로 돌아옵니다.

입력줄과 명령 기록

macOS와 Linux의 실제 터미널에서 실행하면 DPT가 입력줄을 직접 관리합니다.

  • 로그가 도착하기 전에 입력 중이던 명령을 그대로 복원
  • 위 화살표로 이전 명령 불러오기
  • 아래 화살표로 다음 명령으로 이동
  • 왼쪽·오른쪽 화살표로 글자 사이 이동
  • Home·End로 입력줄 처음과 끝으로 이동
  • Backspace와 Delete로 커서 앞·뒤 문자 삭제
  • Tab으로 명령, 인수와 데이터팩 리소스 자동완성
  • Ctrl-U로 현재 입력줄 지우기
  • Ctrl-D 또는 :exit로 정상 종료

명령 기록은 현재 DPT 셸 세션 동안 유지됩니다. 아직 셸을 종료한 뒤 다음 실행까지 기록을 영구 저장하지는 않습니다.

입력 또는 출력이 파일·파이프에 연결되어 있거나 raw terminal 입력을 지원하지 않는 운영체제에서는 일반 줄 입력 방식으로 자동 전환됩니다. 이때는 화살표 기록 탐색과 비동기 프롬프트 복원이 제공되지 않습니다.

Tab 자동완성

바닐라 nogui 서버 콘솔은 표준 입력으로 Tab 자동완성 요청을 주고받는 인터페이스를 제공하지 않습니다. DPT는 대신 처음 실행할 때 현재 server.jar의 데이터 생성기를 사용해 그 버전의 commands.json을 추출하고, .dpt/cache/completion/에 JAR 해시별로 저장합니다. 그래서 다른 Minecraft 버전의 명령 문법을 임의로 고정하지 않습니다.

자동완성은 다음 정보를 조합합니다.

  • 현재 서버 버전의 명령 리터럴과 Brigadier 인수 구조
  • 데이터팩의 함수 및 함수 태그 ID
  • 네이티브 GameTest ID
  • 선택자, 불리언, 연산자처럼 정적으로 알 수 있는 인수
  • :reload, :sync, :test 등 DPT 셸 명령

여러 후보가 있으면 공통 접두사까지 채우고 후보를 한 줄에 하나씩 세로로 표시합니다. 후보 목록은 두 번째 Tab을 누르거나 Enter로 명령을 실행하거나 입력 내용을 변경하면 사라집니다. :reload 후에는 모든 원본 팩을 다시 스캔하므로 새로 추가한 함수도 바로 완성할 수 있습니다. 반면 현재 월드에서 계속 변하는 플레이어 이름, 엔티티 UUID, 스코어보드 참가자와 저장소 내부 값은 이 방식으로 알 수 없어 자동완성 범위에 포함되지 않습니다. 서버 문법 추출이 실패하면 DPT는 경고를 한 번 표시하고 기본 명령 목록으로 전환합니다.

채팅과 tellraw

say가 서버 로그에 남긴 메시지는 발화 주체와 본문을 분리해 다음처럼 장식합니다.

💬 Server │ hello

tellraw는 임의의 엔티티가 아니라 플레이어를 대상으로 클라이언트에 텍스트 컴포넌트를 보내는 명령입니다. DPT 테스트 서버에는 접속한 플레이어가 없기 때문에 정상 실행되더라도 서버 로그에 메시지 본문이 남지 않습니다. 이를 보완하기 위해 셸에서 입력한 tellrawexecute ... run tellraw의 JSON을 해석해 전송 직전에 터미널 미리보기를 표시합니다.

>>> tellraw @a {"text":"경고!","color":"red","bold":true}
💬 TELLRAW → @a │ 경고!  [터미널 미리보기]

텍스트 색, 24비트 색, 굵게, 기울임, 밑줄, 취소선과 extra 결합은 터미널에서 최대한 비슷하게 표시합니다. 번역 키, 선택자, 스코어와 NBT 컴포넌트는 실제 클라이언트 값 대신 식별 가능한 표기로 남깁니다. 글꼴, hover/click 이벤트, 클라이언트 번역 결과, 실제 줄바꿈 폭과 화면 위치는 렌더링할 수 없으므로 이 미리보기는 시각 테스트의 대체물이 아닙니다.

DPT 전용 셸 명령:

:help                 셸 도움말
:reload               원본 팩을 다시 복사한 뒤 /reload
:sync                 :reload와 같은 명시적 별칭
:test [선택식]        /test run 실행
:exec <명령>          현재 서버에서 success/result 수집
:freeze               /tick freeze
:unfreeze             /tick unfreeze
:step [틱]            /tick step
:verbose [on|off]     전체 원본 로그 표시 전환
:logs                 원본 server.log 경로
:exit                 서버 정상 종료

reload, /reload, :reload, :sync는 단순히 서버 명령만 보내지 않습니다. 원본 데이터팩의 현재 내용을 임시 복사본에 다시 동기화하고 자동완성 리소스를 갱신한 뒤 서버의 /reload를 실행합니다. 원본에서 삭제한 파일도 임시 복사본에서 제거됩니다. 따라서 셸을 닫지 않고 원본 팩을 편집하고 이 명령을 실행해 계속 테스트할 수 있습니다.

서버 콘솔은 실제 플레이어나 엔티티가 아닙니다. 따라서 콘솔에서 @s는 아무 엔티티도 선택하지 않습니다. 소환한 엔티티는 @e[type=...,tag=...,limit=1]처럼 선택하거나 execute as @e[...] run ...으로 실행 주체를 지정하세요.

DPT는 플레이어가 없는 서버에서도 연속 명령 사이의 상태가 유지되도록 콘솔 기준 청크를 force-load하고, 난이도를 normal로 두며, 빈 서버 자동 일시정지를 끕니다. 기준 청크 밖 좌표를 시험한다면 먼저 forceload add <x> <z>가 필요합니다. 또한 적대 몹의 자연 despawn은 청크 로드와 별개이므로 장기 관찰용 소환에는 {PersistenceRequired:1b}를 사용하세요. DPT가 사용자의 summon NBT를 몰래 바꾸지는 않습니다. 플레이어 입력, 클라이언트 인벤토리와 시점에 의존하는 로직 역시 같은 방식으로 동작하지 않습니다.

shell은 빠른 탐색과 디버깅용이며 테스트 격리를 보장하지 않습니다. 이전 명령이 만든 엔티티, 스코어보드와 storage가 다음 명령에 남습니다. 최종 검증은 새 임시 월드를 만드는 dpt test로 실행해야 합니다.

dpt exec

exec은 새 임시 서버를 한 번 시작하고 한 개 이상의 명령을 지정된 순서대로 실행한 뒤 서버를 종료합니다.

./dpt exec --pack ./DPT -- 'function piano:load'

여러 명령은 -c 또는 --command를 반복해 지정합니다. 모든 명령은 같은 임시 월드에서 실행되므로 앞 명령이 만든 엔티티·scoreboard·storage를 뒤 명령이 확인할 수 있습니다.

./dpt exec --pack ./DPT \
  -c 'summon marker 0 64 0 {Tags:["probe"]}' \
  -c 'data get entity @e[tag=probe,limit=1] UUID' \
  -c 'kill @e[tag=probe]'

기본값은 첫 실패에서 멈추는 fail-fast입니다. 실패 뒤의 명령도 모두 실행해 진단하려면 --continue-on-error를 추가합니다. 기존의 -- '<단일 명령>' 형식은 계속 지원합니다.

DPT는 명령을 execute store successexecute store result로 감싸 한 번만 실행하면서 즉시 성공 여부와 정수 결과를 저장합니다.

✓ function piano:load
success: true
result: 1
elapsed: 4ms

successresult는 Minecraft 명령 시스템의 즉시 반환값입니다. 예약 함수가 몇 틱 후에 올바르게 끝났는지 또는 화면 출력이 올바른지를 의미하지 않습니다. Minecraft 버전에 따라 명시적 return이 없는 함수는 본문이 실행됐어도 정수 결과를 제공하지 않을 수 있으므로, 반환값 assertion이 필요한 함수는 return <값>으로 계약을 분명히 하는 편이 안전합니다.

각 독립 dpt exec 호출은 현재 새 서버를 부팅합니다. 여러 명령을 한 번에 실행하면 그 한 호출 안에서는 서버를 재사용합니다. 대화형 반복 작업에는 shell을 열고 :exec <명령>을 사용하면 같은 서버에서 success/result를 빠르게 수집할 수 있습니다. 다른 터미널의 dpt exec 프로세스가 실행 중인 셸을 찾아 연결하는 IPC 기능은 향후 범위입니다.

내부 결과 수집용 scoreboard objective는 호출마다 암호학적 난수로 만든 16자 이름을 사용하고 결과 수집 후 제거합니다. 데이터팩이 고정 DPT objective와 우연히 충돌하는 문제를 피하기 위한 조치입니다.


dpt doctor

테스트 실패 전에 환경 문제를 찾습니다.

dpt doctor --pack ./DPT

다음 항목을 확인합니다.

  • DPT version, build commit/date, OS와 architecture
  • Java 실행 파일과 major version
  • server.jar의 Minecraft ID, 요구 Java, 데이터팩 포맷과 SHA-256
  • EULA 기록, timeout과 설정 형식
  • 데이터팩 폴더 쓰기 권한과 loopback 포트 바인딩
  • 정적 검사와 7일 이상 된 DPT 산출물

해결이 필요한 설정 항목이 있으면 종료 코드 3을 반환합니다. doctor는 서버 자체를 부팅하는 deep test는 하지 않습니다.


dpt clean

기본적으로 마지막 수정 후 7일이 지난 .dpt/cache 파일과 .dpt/runs 실행 폴더만 정리 대상으로 선택하고 삭제 전에 묻습니다.

dpt clean --pack ./DPT
dpt clean --pack ./DPT --yes
dpt clean --pack ./DPT --older-than 24h
dpt clean --pack ./DPT --all

--all도 DPT가 소유한 cache/runs 아래만 삭제합니다. 새 completion 캐시를 저장할 때 오래된 산출물이 있으면 대화형 터미널에서 정리할지 묻습니다. CI나 파이프 입력에서는 멈추지 않고 dpt clean 사용법만 안내합니다.

자동 생성의 경계

테스트 파일이 없을 때 DPT가 안전하게 자동 생성할 수 있는 것은 다음뿐입니다.

  • 기본 파일 및 JSON 검사
  • 네임스페이스 검사
  • 실제 서버 부팅
  • 데이터팩 로드 여부
  • 로드 오류와 제한 시간 초과 감지

DPT는 다음을 자동 추측하지 않습니다.

  • 함수를 실행할 올바른 위치와 실행자
  • 실행 전 필요한 스코어보드와 storage
  • 함수 실행 후 기대해야 하는 값
  • 함수를 실행해도 안전한지
  • 실제 플레이어가 필요한지

모든 함수를 무작정 실행하면 잘못된 @s, 대규모 월드 수정, 무한 예약 함수 등의 문제가 생길 수 있기 때문입니다.

테스트 서버 안전 설정

일반 테스트 서버는 다음 원칙으로 생성됩니다.

  • nogui
  • 127.0.0.1에만 바인딩
  • 운영체제가 선택하는 임시 포트 사용
  • online-mode=false
  • 화이트리스트 활성화
  • view-distance=2
  • simulation-distance=2
  • 난이도 normal, 빈 서버 자동 일시정지 비활성화, 콘솔 기준 청크 force-load, 구조물 생성 비활성화
  • RCON과 Query 비활성화

이 설정은 외부 접속을 위한 서버 설정이 아닙니다. 신뢰할 수 없는 데이터팩을 강력하게 샌드박스하는 기능도 아닙니다. 데이터팩과 서버 JAR는 현재 사용자 권한으로 실행되므로 신뢰할 수 있는 파일만 사용해야 합니다.

MVP에서 아직 지원하지 않는 기능

  • tests/*.dpt.yml 선언형 테스트 실행
  • 스코어보드, storage, NBT의 자동 상태 diff
  • assertion DSL
  • 스냅샷 테스트
  • timeline 및 eventually 테스트
  • 테스트 fixture 자동 생성
  • 함수 호출 추적과 커버리지
  • 버전별 명령 문법을 이용한 완전한 정적 유효성 검사
  • 구버전 GameTest 호환 계층
  • 실제 플레이어 봇
  • Server Management Protocol 및 RCON 연동
  • 다른 프로세스의 dpt exec가 실행 중인 shell을 찾아 연결하는 기능
  • 구버전까지 포함한 다중 팩 최종 enabled 순서 자동 검증
  • OS 공용 server runtime cache와 용량/LRU 정책
  • 네이티브 GameTest 개별 case를 외부 JUnit에 병합
  • 렌더링과 클라이언트 자동화

향후 선언형 테스트를 추가하더라도 네이티브 GameTest 지원은 유지해야 합니다. 간단한 데이터 상태 테스트는 DPT 선언형 형식으로 작성하고, 복잡한 블록 시나리오는 바닐라 GameTest를 사용하는 방향이 적절합니다.

License

DPT는 MIT License로 배포되는 비공식 도구이며 Mojang 또는 Microsoft와 제휴하거나 승인받은 프로젝트가 아닙니다. 서버 소프트웨어는 포함하지 않습니다.

Contact

Ahho0927

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages