작성 기준: 2026-10-11 현재 프로젝트 소스와 설정 로딩 방식. 상단은 플레이어가 바로 읽는 안내이며, 하단은 이 파일을 에이전트에게 전달해 질문할 때 사용하는 상세 자료입니다. 별도 표시가 없는 비용·인원·HP는 신규 설정의 기본값입니다. 운영 서버에서 설정을 변경했다면 실제 값은 달라집니다.
1. 플레이어용 빠른 안내
서버 소개
Stime은 국가를 만들고 영토를 확장하며, 전쟁 때 상대 국가의 Core를 공격하는 마인크래프트 생존 서버입니다. 국가에 가입하거나, 작은 용병대를 꾸리거나, 소속 없는 방랑자로 활동할 수 있습니다. 화폐는 인벤토리에 실제 아이템으로 보관하는 Stock입니다.
평시에는 국가 영토가 보호되고, 전쟁이 시작되면 국가원·용병·방랑자 모두 다른 국가를 침공할 수 있습니다. 마지막 Core를 잃은 국가는 멸망합니다. 전쟁 시작과 종료는 관리자가 결정합니다.
| 항목 | 기본 규칙 |
|---|---|
| 국가 | 생성비 150 Stock, 국가장 포함 최대 6명 |
| 용병대 | 무료 생성, 대장 포함 최대 3명 |
| 영토(Claim) | 청크 단위 구매. 첫 번째 100, 두 번째 100, 세 번째 120 Stock |
| Core | 첫 설치 권리 무료, 설치된 것과 설치 대기분 합계 최대 3개, 기본 HP 200 |
| 추가 Core | 두 번째 1,000, 세 번째 2,000 Stock. 이후 누적 획득 순번에 따라 가격 상승 |
| 중립마을 | 스폰 청크 중심 5×5 청크의 상시 안전지대 |
| 무법지대 | 평시에도 PvP·건축·파괴·약탈 가능 |
| 차원 | Overworld에서 국가 영토 운영, Nether는 무법지대, End는 폐쇄 |
처음 시작하는 방법
/war status로 평시(PEACE)인지 전쟁(WAR)인지 확인합니다.- 중립마을의 Stock 거래상을 우클릭해 자원을 Stock으로 바꿉니다. 기본 거래는 다이아몬드 1개 → 10 Stock, 참나무 원목 32개 → 2 Stock입니다. 거래창에 남은 한도가 표시됩니다.
- 원하는 플레이 방식을 선택합니다.
- 국가 가입:
/nation으로 목록을 보고/nation apply <국가명>으로 신청합니다. 국가장이 승인하면 가입됩니다. - 국가 창설: 기본 250 Stock을 준비합니다.
/nation create <이름>으로 국가를 만든 뒤, Claim 가능한 Overworld 청크에서/nation claim을 사용합니다. 자국 영토에서 위로 두 칸이 비어 있는 안전한 발판의 윗면을 바라보고/nation core place를 입력하면 첫 Core가 설치됩니다. - 용병대:
/mercenary create <이름>으로 만들거나/mercenary apply <용병대명>으로 가입을 신청합니다. 대장이 승인해야 가입됩니다. - 방랑자: 소속 없이 생존합니다. 방랑자와 용병은 무법지대에서 신속 I 효과를 받고,
/vault로 개인 금고를 사용할 수 있습니다.
- 국가 가입:
- 국가장은
/nation territory로 영토를,/nation cores로 Core 위치·HP·설치 대기분을 확인합니다. 첫 Core를 설치한 뒤 중립마을에서/nation core buy로 추가 Core를 구매할 수 있습니다.
국가명과 용병대명은 한글·영문·숫자 3~15자입니다. 공백과 특수문자는 사용할 수 없습니다. 국가와 용병대에 동시에 소속될 수 없습니다.
꼭 알아야 할 규칙
- 평시: 국가원은 타국 영토에 들어갈 수 없습니다. 방랑자·용병은 들어갈 수 있지만 블록 설치·파괴, 상자, 문, 레버 등은 사용할 수 없습니다. 자국 영토는 같은 국가원이 사용할 수 있습니다.
- 전쟁: 모든 소속의 플레이어가 타국 영토에 진입해 건축·파괴·상자 약탈·Core 공격을 할 수 있습니다. 타국 영토에서 부순 블록 자체는 드롭되지 않지만, 상자 내용물은 약탈할 수 있습니다.
- 중립마을: 전쟁 중에도 보호됩니다. 일반 플레이어는 PvP, 건축·파괴, 일반 상자·문·레버 사용, 아이템 버리기를 할 수 없습니다. 지정 거래상과 모드 메뉴는 이용할 수 있습니다.
- 아군 보호: 같은 국가 또는 같은 용병대 구성원끼리는 피해를 줄 수 없습니다. 다른 용병대나 다른 국가는 아군으로 취급하지 않습니다.
- 영토 확장: 국가장만 평시에 Claim할 수 있습니다. 기존 영토와 변으로 이어져야 하며, 중립마을과 그 바깥 5청크의 Claim 금지 구간에는 영토를 만들 수 없습니다.
- Core: 국가장만 평시에 설치·구매할 수 있습니다. 설치 후 옮길 수 없습니다. 마지막 설치 Core가 전쟁에서 파괴되면 국가원은 방랑자가 되고 영토 보호는 사라집니다. 건물과 일반 아이템은 남습니다.
- 전쟁 준비: 국가 생성·가입·탈퇴·추방·국가장 위임·자진 해산은 평시에 처리합니다. 전쟁 중에는 국가 구성 변경, Claim, Core 구매·설치, 일반 플레이어 이동 명령이 제한됩니다.
- 사망: 전쟁 중에는 일반 인벤토리를 떨어뜨립니다. 토템의 죽음 방지 효과는 평시·전쟁 모두 발동하지 않습니다. End Crystal과 Respawn Anchor는 사용할 수 없으며 Nether에서는 침대를 설치·사용할 수 없습니다.
- 금고: 방랑자·용병용 9칸입니다. Stock, 셜커 상자, 엔더 상자는 넣을 수 없습니다. 국가에 가입하면 금고가 잠기지만 내용물은 보존됩니다.
Core가 없는 국가는 전쟁 준비를 마쳐야 합니다. 관리자가 /war start ignore로 확인 후 시작하면 Core 미설치 국가는 해산될 수 있습니다. 설치 대기 권리만 있고 실제 설치 Core가 없는 경우도 해당합니다.
자주 쓰는 명령
| 목적 | 명령 |
|---|---|
| 국가 메뉴 / 가입 신청 | /nation, /nation apply <국가명> |
| 국가 창설 / 정보 | /nation create <이름>, /nation info |
| 신청 확인 / 승인 | /nation applications, /nation accept <플레이어> |
| 영토 구매 / 좌표 확인 | /nation claim, /nation territory |
| Core 확인 / 설치 / 구매 | /nation cores, /nation core place, /nation core buy |
| 미완료 Core 결제 취소 | /nation core cancel |
| 용병대 창설 / 가입 신청 | /mercenary create <이름>, /mercenary apply <용병대명> |
| 개인 금고 / 열쇠 | /vault, /vault key |
| 평시 타국 영토에서 탈출 | 방랑자·용병만 /escape |
| 전쟁 상태 / Stock 인증 | /war status, Stock을 주손에 들고 /stock check |
Core 결제창에서는 Stock 투입 → 구매 확정 순서로 버튼을 누릅니다. 창을 닫고 Stock을 더 가져와 이어서 낼 수 있습니다. 취소했는데 일부 Stock이 반환 대기로 남았다면 인벤토리를 비운 뒤 /nation core cancel을 다시 사용하세요.
2. 에이전트 질의용 상세 자료
아래 상세 자료는 챗봇에 붙여넣은 뒤 질문하는 용도입니다. 이 2번 항목부터 문서 끝까지 복사해서 챗봇에 붙여넣고, 궁금한 내용을 질문하면 됩니다. 이 마크다운 파일 전체를 첨부해도 됩니다. 작성·재검토 기준은 2026-10-11 프로젝트 소스입니다. 별도 표시가 없는 수치는 신규 설정의 기본값이며, 실제 운영 서버의 설정이나 이미 저장된 Core 값은 다를 수 있습니다.
이하에는 플레이어 요약의 근거와 예외, 설정 키, 계산식을 기록합니다. 이 파일만 전달받은 에이전트도 기본 규칙을 설명할 수 있도록 작성했습니다.
2.1 기준과 해석 순서
- 확인한 프로젝트는
Stime Mod, 모드 ID는stimewar, 이름은Stime War입니다. - 현재
build.gradle의 버전은2.0.1입니다. Minecraft Java26.3, Java25, Fabric Loader0.19.5, Fabric API0.161.0+26.3을 대상으로 합니다. 서버 전용 모드이며 전용 클라이언트 모드·전용 패킷이 필요하지 않습니다. - 작성 시 Git HEAD는
e1e9934이며, 커밋되지 않은 현재 소스 변경도 포함해 확인했습니다. 최상위의stime-war-2.0.1.jar~stime-war-2.0.4.jar는 이름만으로 현재 소스와 동일하다고 판단할 수 없습니다. - 규칙은 현재 서비스 코드와 Brigadier 명령 등록을 우선해 정리했습니다. 과거 보고서·인수인계 문서는 변경 이력이므로 현재 코드와 다를 수 있습니다.
- 값의 우선순위는 운영 서버에서 읽은 유효 설정 → 누락된 키의 코드 기본값입니다. 이미 저장된 Core의
hp·maxHp는 개별 저장 기록을 따릅니다. run/config/stimewar/config.json은 프로젝트의 로컬 개발 실행 설정입니다. 이것을 운영 서버 설정이나 현재 실행 중인 서버 상태로 단정하지 않습니다.- 서버 주소, 접속 시간, 전쟁 일정, 별도 플러그인 명령, 채팅 규정·제재 기준은 이 프로젝트만으로 확정할 수 없습니다. 이 문서의 규칙은 모드가 구현한 플레이 규칙입니다.
2.2 용어와 게임 상태
| 용어 | 의미 |
|---|---|
| 국가 / Nation | 국가장과 국가원으로 구성된 조직. Claim과 Core를 보유 |
| 용병대 / Mercenary | 별도 소규모 조직. 국가 소속과 중복 불가. 국가 Claim·Core 권한 없음 |
| 방랑자 / Wanderer | 국가와 용병대에 모두 소속되지 않은 플레이어 |
| Claim | 국가가 소유한 Overworld 청크. X/Z 16×16블록 단위이며 Y별 분할 없음 |
| 무법지대 / LAWLESS | 중립 안전지대와 국가 영토를 제외한 Overworld, 그리고 Nether |
| 중립마을 / Neutral | Overworld 스폰 청크 중심의 정사각형 안전지대 |
| No-Claim Buffer | 중립마을 바깥의 Claim 금지 띠. 안전지대와 달리 이 띠 자체에 안전 보호는 부여하지 않음 |
| Stock | 서버가 인증한 실제 화폐 아이템. 가상 잔액 계정이 아님 |
| Alive Core | 국가 데이터에 살아 있는 것으로 저장된 설치 Core |
| Pending Core | 구매·초기 지급은 되었으나 아직 설치하지 않은 Core 권리와 번호 |
| PEACE / WAR | 서버 전체의 평시 / 전쟁 상태. 국가별 선전포고 상태가 아님 |
국가 ALIVE / DEAD / DISSOLVED | 활성 / 전쟁 멸망 / 해산 상태. ALIVE 국가만 영토·소속 권한 보유 |
신규 국가는 totalCoreAcquiredCount=1, pendingCoreNumbers=[1]로 시작합니다. 첫 Core가 자동으로 월드에 생성되는 것은 아닙니다. Pending은 생존 Core가 아니므로 전쟁 시작 준비와 멸망 방어에 포함되지 않습니다.
2.3 모든 기본 설정값
파일 위치는 서버 기준 config/stimewar/config.json입니다. 신규 파일은 기본값으로 생성되며, 기존 파일의 알려진 키는 명시된 값을 유지합니다. 누락된 키는 기본값을 사용합니다. 일반 설정 변경은 서버 재시작 시 적용됩니다.
| 설정 키 | 신규 기본값 | 의미 / 유효 범위 |
|---|---|---|
stockSecret | 무작위 UUID 2개를 이어 만든 문자열 | Stock·금고 열쇠 인증 비밀키. 길이 32 이상. 실제 값은 공유 문서에 넣지 않음 |
nationCreationCost | 150 | 국가 생성비, Stock 수량. 0 이상 |
maxNationMembers | 6 | 국가장 포함 국가 정원. 1 이상 |
firstClaimCost | 100 | 첫 Claim 가격. 0 이상 |
baseClaimCost | 100 | 두 번째 Claim부터 사용하는 기본 가격. 0 이상 |
claimCostIncrement | 0 | Claim 가격의 순번당 선형 추가분. 0 이상 |
claimCostGrowthMultiplier | 1.2 | Claim 가격의 지수 증가 배율. 유한수, 1 이상 |
maxClaimsPerNation | 0 | 국가별 최대 Claim 수. 0은 개수 제한 없음 |
neutralRadiusChunks | 2 | 스폰 청크에서 X/Z 각 방향 안전지대 반경. 0~1,000청크 |
neutralClaimBufferChunks | 5 | 안전지대 바깥 Claim 금지 추가 반경. 0~10,000청크 |
maxCoresPerNation | 3 | 설치 Core와 Pending의 합계 상한. 1 이상 |
baseCoreCost | 1000 | 두 번째 Core부터 사용하는 기본 가격. 0 이상 |
coreCostIncrement | 0 | Core 가격의 누적 획득 순번당 선형 추가분. 0 이상 |
coreCostGrowthMultiplier | 2.0 | Core 가격의 지수 증가 배율. 유한수, 1 이상 |
corePriceOverrides | {} | 특정 누적 Core 번호의 개별 가격. 키는 2 이상, 값은 0 이상의 정수 |
totalDestroyedCoresToEndWar | 2 | 구형 설정 호환 필드. 자동 종전에는 사용하지 않음. 검증상 1 이상 |
coreMaxHp | 200 | 새로 설치하는 Core의 최대 HP. 유한수, 0 초과 |
meleeCoreDamage | 10 | 구형 설정 호환 필드. 실제 근접 피해의 고정값으로 사용하지 않음. 검증상 유한수, 0 초과 |
projectileCoreDamage | 8 | 허용된 투사체가 Core에 주는 1회 피해. 유한수, 0 초과 |
explosionCoreDamage | 120 | 허용된 TNT/TNT Minecart 폭발 1회당 Core 피해. 유한수, 0 초과 |
coreBossbarRadius | 128 | Core HP BossBar를 표시하는 거리, 블록 단위. 1 이상 |
escapeMaxChunkRadius | 64 | /escape가 현재 청크 주변 X/Z 각 방향으로 탐색하는 최대 청크 반경. 1~256 |
inactivityEnabled | false | 비활성 국가 자동 처리 활성화 여부 |
inactiveDays | 30 | 마지막 국가 활동 이후 비활성으로 판단하는 일수. 1 이상 |
autoCleanupClaims | false | 비활성 처리 시 Claim 자동 정리 여부 |
autoCleanupCores | false | 비활성 처리 시 Core 자동 정리 여부 |
autoDissolve | false | 비활성 처리 시 국가 자동 해산 여부 |
autosaveSeconds | 300 | 모드 상태 자동저장 간격. 1초 이상, 기본 5분 |
용병대 정원 3명과 금고 9칸은 위 설정 키가 아니라 각각 MercenaryService.MAX_MEMBERS, VaultMenu.VAULT_SLOTS의 코드 상수입니다. 용병대가 기존 데이터에서 이미 4명 이상이면 자동 추방하지 않고 추가 신청·승인·관리자 멤버 추가를 차단합니다.
로컬 개발 설정과의 차이: 작성 당시 run/config/stimewar/config.json에는 coreMaxHp=10000, explosionCoreDamage=50, projectileCoreDamage=8, autosaveSeconds=300이 명시되어 있습니다. 따라서 이 파일을 현재 소스가 읽으면 새 Core HP와 폭발 피해는 신규 기본값 200/120 대신 10000/50이 됩니다. meleeCoreDamage=10은 호환 필드이며 근접 피해를 고정하지 않습니다. 남아 있는 preparationDays=14, coreWarningRadius=64, coreWarningCooldownSeconds=30은 현재 WarConfig에 없는 키로, 현재 소스의 동작을 설정하지 않습니다.
설정 로더는 알려진 키를 검증한 뒤 정규화한 파일을 기록하고 기존 설정을 config.json.bak에 보존합니다. stockSecret을 바꾸면 기존 Stock과 금고 열쇠 인증이 무효화됩니다. 기존 Core의 최대 HP는 coreMaxHp를 변경해도 자동 변경되지 않으며, 종전 회복도 해당 Core에 저장된 maxHp를 따릅니다.
2.4 Stock과 가격 계산
화폐의 성질
- 신규 Stock은 이름이
Stock인 인증된minecraft:popped_chorus_fruit입니다. 기존 인증minecraft:barrierStock도 계속 인정합니다. - 인증은 Custom Data와 HMAC-SHA256으로 확인합니다. 같은 모양이나 이름의 일반 아이템, 모루로 이름만 바꾼 아이템은 화폐가 아닙니다.
- 아이템 1개가 1 Stock이며 한 스택은 최대 64개입니다. 인증은
/stock check로 주손 아이템을 확인합니다. - 일반 인벤토리·상자에 실물로 보관하거나 다른 플레이어에게 넘길 수 있습니다. 지역의 일반 상호작용·드롭 규칙은 따릅니다. 전쟁 사망·약탈 위험이 있으며 개인 금고에는 보관할 수 없습니다.
- 인증 Stock은 제작·일반 주민 거래 입력·아이템 자체 사용·소비·모루·숫돌·석재 절단기·연료·퇴비 처리 등으로 소모되지 않도록 보호합니다. Stock을 들고 있어도 허용된 상자·문·레버 사용이나 일반 근접 공격은 가능합니다.
Claim 가격
n을 새로 구매할 Claim의 순번으로 두면 다음과 같습니다. 현재 보유 Claim이 k개라면 n=k+1입니다.
n = 1: firstClaimCost
n ≥ 2: ceil(baseClaimCost × claimCostGrowthMultiplier^(n−2)
+ claimCostIncrement × (n−2))
소수점은 올림합니다. Claim 가격은 현재 보유 개수로 계산하며 Core 누적 구매 이력과는 관계없습니다.
| Claim 순번 | 기본 비용 | 첫 Claim부터의 누적 비용 |
|---|---|---|
| 1 | 100 | 100 |
| 2 | 100 | 200 |
| 3 | 120 | 320 |
| 4 | 144 | 464 |
| 5 | 173 | 637 |
| 6 | 208 | 845 |
| 7 | 249 | 1,094 |
| 8 | 299 | 1,393 |
| 9 | 359 | 1,752 |
| 10 | 430 | 2,182 |
국가 생성비까지 더하면 첫 Claim과 첫 Core 설치 준비 비용은 기본 150+100=250 Stock입니다. 첫 Core 설치에는 추가 Stock이 들지 않습니다.
Core 가격
p를 국가가 역사상 획득하는 Core 번호로 두면 다음과 같습니다. 다음 번호는 totalCoreAcquiredCount+1입니다.
p = 1: 국가 생성 시 무료 Pending 권리
p ≥ 2: corePriceOverrides[p]가 있으면 그 값
없으면 ceil(baseCoreCost × coreCostGrowthMultiplier^(p−2)
+ coreCostIncrement × (p−2))
| 누적 Core 번호 | 기본 비용 | 해석 |
|---|---|---|
| #1 | 0 | 창설 시 지급된 첫 설치 권리 |
| #2 | 1,000 | 첫 추가 구매 |
| #3 | 2,000 | 두 번째 추가 구매 |
| #4 | 4,000 | 일부 Core를 잃고 국가가 생존한 뒤 다음 구매 |
| #5 | 8,000 | 누적 번호 기준 |
| #6 | 16,000 | 누적 번호 기준 |
Core를 잃어도 획득 이력은 줄지 않습니다. 기본 최대 3개 제한 때문에 #4 이상은 보유 여유가 생겨야 구매할 수 있고, Alive Core가 하나 이상 남아 있어야 추가 구매할 수 있습니다. 국가 생성·Claim 한 개·#1~#3 획득까지의 기본 총액은 150+100+1000+2000=3,250 Stock입니다.
국가 생성과 Claim은 현재 인벤토리의 인증 Stock으로 즉시 결제합니다. 미완료 Core 결제가 있으면 먼저 정리해야 합니다. Core만 구매 건별로 실물을 나누어 납부할 수 있으며 가상 잔액으로 전환하지 않습니다.
2.5 영토와 평시·전쟁 권한
다음 표는 일반 Survival 플레이어 기준입니다. 창작 모드·관리자·중립 Builder의 제한된 예외는 2.11절을 참고하세요.
| 장소 / 소속 | PEACE 진입 | PEACE 설치·파괴·상호작용 | WAR 진입 | WAR 설치·파괴·상호작용 |
|---|---|---|---|---|
| 중립마을 / 일반 플레이어 | 가능 | 불가. 지정 거래상·모드 메뉴는 별도 허용 | 가능 | 동일하게 보호 |
| 자국 Claim / 국가원 | 가능 | 가능 | 가능 | 가능 |
| 타국 Claim / 다른 국가원 | 불가 | 불가 | 가능 | 가능 |
| 국가 Claim / 방랑자·용병 | 가능 | 불가 | 가능 | 가능 |
| Overworld 무법지대 / 누구나 | 가능 | 가능 | 가능 | 가능 |
| Nether / 누구나 | 가능 | 가능. 차원별 금지 아이템 적용 | 가능 | 동일 |
| End / 누구나 | 불가 | 불가 | 불가 | 불가 |
- 상호작용에는 상자·통·화로 등 보관함, 문·레버·버튼·발판·트립와이어, 일반 주민·동물·차량·액자·갑옷 거치대 등이 포함됩니다. 공중에서 음식·활·방패를 쓰는 행위 자체와 보호 위치를 바꾸는 행위는 별도로 판단합니다.
- 평시 타국 국가원의 보행·탑승·텔레포트·포털 진입을 제한합니다. 서버 틱에서도 재검사하며 불법 위치는 이전 합법 위치 또는 안전한 스폰 근처로 돌려보냅니다. 관리자나 Creative 국가원도 평시 타국 Claim 진입을 자동으로 허용받지 않습니다.
- 상자를 열어 둔 뒤 종전·소속 변경·차량 이동 등으로 사용 권한을 잃으면 메뉴를 닫습니다. 큰 상자는 두 청크에 걸치면 양쪽 접근 권한이 필요합니다.
- Claim은 국가장만 평시에 구매하며 Overworld에서만 가능합니다. 첫 Claim은 위치 제한을 통과하면 독립 청크에서 시작할 수 있고, 이후는 동서남북 중 한 변이 기존 Claim과 맞닿아야 합니다. 대각선 연결은 인정하지 않습니다.
- 플레이어용
unclaim은 없습니다. 관리자 제거도 Core가 있는 청크나 나머지 영토의 연결성을 깨는 제거는 제한합니다. - 청크 좌표는
floor(블록 X/16),floor(블록 Z/16)입니다. 음수도 내림합니다. 예: 블록 X=-1은 청크 X=-1입니다./nation territory는 블록 좌표가 아닌 청크 X/Z를 출력하며 이동 기능은 없습니다.
중립 범위 계산: 스폰이 속한 청크 (sx, sz)를 중심으로 기본 안전지대는 |cx−sx|≤2 그리고 |cz−sz|≤2인 5×5청크입니다. Claim 금지는 두 반경의 합 2+5=7을 적용한 15×15청크 전체입니다. 각각 청크 경계에 맞춘 80×80블록 / 240×240블록 범위이며 스폰 블록에서 정확히 ±40/±120블록인 원형 영역이 아닙니다. 안전지대 바깥 Buffer는 Claim만 금지된 무법지대입니다. 서버 시작 시 Overworld 스폰 청크를 기준으로 중심을 갱신합니다.
2.6 PvP, 약탈과 자동화
- 평시는 서버 전체 PvP 비활성 상태가 아닙니다. 중립 밖 무법지대와 Nether에서는 일반 PvP가 가능합니다.
- 같은 국가 또는 같은 용병대 구성원은 아군입니다. 직접 공격·귀속 가능한 투사체·폭발·해로운 투척/잔류 포션에 아군 보호를 적용합니다. 전쟁 여부로 아군 관계가 해제되지 않습니다.
- 전쟁에는 국가원·용병·방랑자 모두 다른 국가 Claim에서 침공·PvP·상자 약탈을 할 수 있습니다. 같은 국가 Core는 공격할 수 없습니다.
- 적 Claim에서 플레이어가 부순 블록과 적 Claim을 부수는 폭발은 블록 자체의 전리품을 억제합니다. 상자 등의 내용물과 일반 아이템까지 모두 삭제하는 규칙이 아닙니다. 자국의 일반 채굴은 이 침공 드롭 억제 대상이 아닙니다.
- 평시 일반 폭발은 국가 Claim의 블록을 파괴하지 않습니다. 무법지대의 TNT는 일반적으로 사용할 수 있고, 전쟁에는 Claim 폭파도 허용됩니다. 중립 보호와 Core 고정은 유지됩니다.
- 호퍼·유체·불 확산·디스펜서 양동이는 평시 영역 경계를 이용해 보호를 우회하지 못하도록 제한합니다. 호퍼·유체·디스펜서의 일반 영역 간 이동은 전쟁에 허용될 수 있으나 중립 안전지대는 계속 제한됩니다.
- 피스톤은 평시와 전쟁 모두 중립마을 밖의 같은 영역 안에서만 블록을 옮길 수 있습니다. 다른 국가 영토·무법지대 경계를 넘는 밀기/당기기와 중립마을 내부의 피스톤 이동도 차단하며, Core가 차지한 공간은 이동·파괴할 수 없습니다.
- TNT·TNT Minecart는 가능한 경우 설치자/공격자 UUID를 직접 점화·레드스톤·레일·연쇄 폭발·피스톤 이동·재시작 이후에도 추적합니다. 가까운 플레이어를 임의로 공격자로 지정하지 않습니다.
- 실제 소유자 미상 TNT 예외: 현재 WAR에서는 공격자 UUID를 확인할 수 없는 TNT/TNT Minecart도 Core에 피해를 줄 수 있습니다. 이 경우 아군 식별을 보장할 수 없어 로그에 경고합니다. “모든 TNT가 무조건 아군 Core에 피해를 주지 않는다”로 설명하면 부정확합니다.
2.7 Core 설치, 피해와 국가 멸망
설치 조건과 외형
- Core는 일반 비컨 블록이 아니라 비컨을 머리에 장착한 서버 Armor Stand Entity입니다. 일반 비컨을 만들어 설치해도 Core가 되지 않습니다.
- 국가장은 평시에 자국 Overworld Claim에서
/nation core place를 사용합니다. 명령은 시선 약 5블록 안의 블록 면 바깥 위치를 대상으로 하며, 블록을 맞추지 못하면 플레이어 위치를 사용합니다. - Pending 번호를 앞에서부터 사용하며 Core의 국가 UUID, Core UUID, 설치 좌표, 번호, HP를 저장합니다.
- 두 칸이 공기이고 유체가 없어야 하며, 아래 블록의 윗면이 단단해야 합니다. 공중·유체·마그마·선인장·캠프파이어/영혼 캠프파이어 발판은 거부합니다.
- Y는
월드 최저 Y+5이상,Core Y+2≤월드 최고 Y여야 합니다. X/Z 절댓값은29,999,984미만이며 월드 보더 안이어야 합니다. 다른 Core의 공간과 겹칠 수 없습니다. - 설치 후 위치는 고정됩니다. 일반 밀기·낙하·피스톤·폭발 넉백·탑승·포털·텔레포트·일반 제거로 옮기거나 없애지 못합니다. 플레이어 이동 명령은 없습니다.
피해 수치와 HP 표시
| 공격 | Core 피해 | 조건 |
|---|---|---|
| 플레이어 근접 | Vanilla가 계산한 실제 피해 | 무기·공격력 속성·공격 충전도·치명타 등 반영 |
| 투사체 | 기본 8 | 귀속 가능한 적/용병/방랑자 공격. 같은 투사체는 같은 Core에 중복 피해를 주지 않음 |
| TNT / TNT Minecart | 기본 120 | Core가 폭발 반경×2 안이고 폭발 노출이 있어야 함. 허용된 폭발마다 해당 Core에 1회 |
| 우클릭 / 장비 조작 | 0 | 상호작용으로 공격하지 않음 |
| 평시 공격 / 같은 국가로 귀속된 공격 | 0 | 일반 Core 피해 차단. WAR 소유자 미상 TNT는 2.6절의 예외 적용 |
| 환경·일반 몹 공격 | 일반 Core 피해 경로 없음 | Core는 일반 갑옷 거치대 내구도로 파괴되지 않음 |
기본 HP 200이라면 투사체 25회의 유효 타격, 기본 피해 TNT 폭발 2회의 유효 타격으로 파괴할 수 있습니다. 이는 방어·지형 노출·설정 변경을 제외한 단순 수치 예시입니다. 근접은 고정 10이 아니며 연타보다 충전 공격의 피해가 큽니다.
BossBar는 같은 Overworld 차원에서 Core 위치 (x+0.5, y, z+0.5)와의 3차원 거리 128블록 이하인 플레이어에게 표시합니다. Core가 살아 있고 HP가 양수여야 하며 거리 밖·차원 이동·로그아웃·파괴 시 제거합니다. 자신이 속한 국가에만 표시하는 규칙은 아닙니다.
파괴와 복구
- 정상 WAR 피해로 HP가 0 이하가 되면 해당 Core를 제거하고 국가명·Core 번호·남은 Alive Core 수를 서버에 알립니다.
- 국가의 마지막 Alive Core가 파괴되면 즉시
DEAD가 됩니다. 멤버·가입 신청·Claim·Pending을 정리하고 국가 접두사·권한을 해제합니다. 건축물과 일반 아이템, 누적 Core 획득 이력은 남습니다. - Pending이 남아 있어도 마지막 Alive Core 파괴를 막아 주지 않습니다. 전쟁 중 재설치도 불가능합니다.
- 저장 Alive 기록이 있는데 Entity가 비정상적으로 사라졌다면 국가를 멸망시키지 않고 원래 UUID·위치·HP로 복구합니다. 청크/Entity가 로드되기 전에는 무리하게 중복 생성하지 않습니다.
- 정상 파괴·해산·관리자 삭제된 Core는 복구 대상이 아닙니다. 잘못된 저장 좌표나 UUID 충돌은 기록을 보존하고 관리자 점검을 요구합니다.
2.8 전쟁 시작과 종료
- 전쟁은 자동 일정·국가 간 개별 선언 없이 관리자가
/war start로 시작합니다. 파괴 개수·국가 멸망·남은 국가 수만으로 자동 종료하지 않습니다. - 기본 시작 조건은 모든 활성 국가에 저장 Alive Core 1개 이상이 있는 것입니다. 청크 미로드나 Entity 일시 부재와 설치 기록 부재는 구분합니다.
- 설치 Core가 없는 국가가 있으면 기본 start는 상태를 바꾸지 않고 목록과 해산 안내만 표시합니다. Claim이 없어도 대상이며 Pending만 있는 경우도 포함됩니다.
- 같은 관리자가 안내 후
/war start ignore를 사용하면 현재도 Core가 없는 경고 대상 국가를DISSOLVED로 해산하고 전체 전쟁을 시작합니다. 새 미설치 국가가 추가되면 새 목록 확인이 필요합니다. 확인 전 Core를 설치한 국가는 보존합니다. 확인은 일회성이며 재시작 후 유지되지 않습니다. - 해산은 구성원·신청·Claim·Pending 권리를 해제합니다. 건물·일반 아이템·누적 취득 이력·미완료 결제 저널은 보존하고, 이미 소비한 국가 생성비나 완료 구매비를 자동 환불하지 않습니다. 관리 해산은 전쟁 Core 파괴 수에 포함하지 않습니다.
- 시작 시 Overworld의
keepInventory이전 값을 기록하고false로 만듭니다. 전쟁 중 사망자는 일반 인벤토리를 떨어뜨리고 부활해 다시 참여할 수 있습니다. /war end는 평시 보호를 복구하고 생존 Core를 각각 저장된 최대 HP로 회복합니다. 파괴된 Core·멸망한 국가는 되살리지 않습니다. 시작 전keepInventory=true였으면 다시 true로 돌립니다.- 일반 플레이어의 이동 명령 차단 목록은
home,homes,tp,teleport,tpa,tpahere,tpaccept,tpyes,tphere,spawn,warp,warps,back,rtp,wild,randomtp,hub,lobby,return,escape입니다. 관리자 권한은 이 명령 차단에서 제외됩니다. - 위 이름의 명령을 이 모드가 모두 제공하는 것은 아닙니다. 다른 모드의 이동 명령을 제한하는 목록이며 알 수 없는 별칭은 별도 설정이 필요할 수 있습니다.
국가와 용병대의 차이: 국가 생성·가입 신청/승인·탈퇴·추방·국가장 위임·자진 해산은 WAR에 제한됩니다. 가입 신청의 거절은 처리할 수 있습니다. 현재 MercenaryService에는 WAR 금지 조건이 없으므로 용병대 생성·가입·탈퇴·추방·위임·해산은 전쟁 중에도 처리할 수 있습니다. 용병대에도 국가 구성 변경 금지가 적용된다고 답하면 현재 코드와 다릅니다. 운영자가 별도 규정을 두었는지는 추가 확인이 필요합니다.
2.9 추가 Core 결제 매뉴얼
- 평시에 Alive Core가 하나 이상 있는 국가의 국가장이 중립마을로 갑니다.
/nation core shop에서 가격·Alive/Pending·누적 획득 수를 확인하고/nation core buy로 결제창을 엽니다. 거래상에게 웅크리고 우클릭해도 Core 상점으로 연결됩니다.- 인벤토리의 인증 Stock 투입 버튼을 누릅니다. 남은 금액만큼 실제 Stock을 가져와 해당 결제 건에 보관합니다. GUI 아이콘에 직접 아이템을 넣는 방식이 아닙니다.
- 부족하면 닫고 Stock 더 가져오기를 누른 뒤 다시 열어 이어서 납부합니다. 이 납부는 다른 구매에 사용할 수 있는 공용 잔액이 아닙니다.
- 전액이 모이면 Core 구매 확정을 눌러 해당 누적 번호의 Pending을 획득합니다. 자국 Claim으로 돌아가 별도로 설치합니다.
- 취소 버튼 또는
/nation core cancel은 미완료 결제에 보관된 원래 실물 스택을 반환합니다. 인벤토리가 꽉 차면 반환 가능한 만큼 처리하고 잔여분을 보관합니다. 공간을 만든 뒤 다시 취소합니다.
결제는 납부자 UUID·국가 UUID·Core 번호에 묶입니다. 접속 해제·재시작 뒤에도 저널을 확인해 복구하며, 국가장 변경·해산·전쟁 시작 등으로 조건을 잃은 미완료 결제는 복구 과정에서 환불 처리할 수 있습니다. 이미 완료한 구매를 취소해 환불받는 기능은 아닙니다.
중립 거래창 입력과 커서 아이템을 안전하게 반환할 공간이 없으면 결제 이체를 시작하지 않고 공간 확보를 안내합니다. 저장 오류로 접속이 종료된 경우에는 관리자에게 알리고 payments/<납부자 UUID>.dat, 해당 플레이어 데이터, 국가 저장 파일을 보존해야 합니다. 저널을 삭제하면 복구 판단 근거가 사라집니다.
2.10 Stock 거래상 설정과 한도
config/stimewar/trades.json은 거래 품목 설정, trades-state.json은 NPC 위치·UUID·사용 횟수 저장 파일입니다. 거래상은 중립마을에서 고정된 주민으로 나타나며, 일반 우클릭은 Vanilla 거래창을 엽니다. 주민과의 거리가 8블록 이하이고 같은 Overworld에 있어야 거래창이 유효합니다.
| 기본 품목 ID | 투입 | 지급 | 기본 하루 한도 | 기본 총 횟수 / Stock 재고 제한 |
|---|---|---|---|---|
diamond | 다이아몬드 1개 | 10 Stock | 64회 | 없음 |
oak_log | 참나무 원목 32개 | 2 Stock | 128회 | 없음 |
한도는 품목별 서버 전체 공용입니다. 플레이어마다 별도 64회/128회가 아닙니다. 기본 품목의 하루 최대 지급량은 각각 640/256 Stock입니다. 일일 사용 횟수는 UTC 날짜가 다음 날로 넘어가면 초기화되므로 한국 시간으로는 오전 9시 기준입니다. 로그아웃·주민 청크 언로드·재시작으로 한도가 초기화되지 않습니다.
| 거래 설정 키 | 기본값 / 범위 | 설명 |
|---|---|---|
schemaVersion | 1 | 거래 설정 스키마 |
npcName | Stock 거래상, 1~64자 | 주민 표시 이름 |
spawnOffsetX/Y/Z | 2/1/0, 각 -32~32 | 최초 위치 설정 때 스폰 블록 좌표에서의 오프셋 |
offers | 기본 2개, 허용 1~30개 | 거래 품목 목록 |
offers[].id | diamond, oak_log 등 | 고유 [a-z0-9_] 1~40자. 사용량 저장 키 |
offers[].item | 유효한 아이템 ID | 투입 아이템. AIR와 BARRIER는 입력 품목으로 금지 |
offers[].itemCount | 1~해당 아이템 최대 스택 | 1회 거래에서 소비하는 수량 |
offers[].stockPayout | 1~64 | 1회 지급 Stock 수량 |
offers[].maxTradeCount | 기본 0 | 품목 누적 완료 거래 횟수 상한. 0은 무제한 |
offers[].stock | 기본 0 | 품목 총 지급 Stock 수량 상한. 0은 무제한 |
offers[].totalLimit | 기본 0 | 기존 설정 호환 누적 거래 횟수 상한. 0은 무제한 |
offers[].dailyLimit | 64 / 128 | 품목의 UTC 하루 완료 거래 횟수 상한. 0은 무제한 |
가능 횟수는 누적 횟수 한도들, 하루 한도, floor(남은 Stock 재고 / stockPayout) 중 가장 작은 값입니다. 예를 들어 재고 한도 25 Stock, 회당 지급 10 Stock이면 총 2회만 가능합니다. 남은 5 Stock은 1회 지급량에 못 미칩니다.
Stock 재고 소모량은 **저장된 총 완료 횟수 × 현재 stockPayout**으로 환산합니다. 과거 각 거래의 실제 지급량을 별도 합산한 장부는 없으므로 운영자가 지급량을 바꾸면 과거 횟수도 새 지급량 기준으로 계산됩니다. 거래 설정은 /nation admin trader reload로 다시 읽을 수 있고, 변경 시 열린 거래창은 닫습니다. 초기 위치가 저장된 뒤 오프셋만 바꿔 기존 NPC가 자동 이동하는 것은 아닙니다.
2.11 금고, 이동·차원, 표시와 관리 예외
개인 금고
- 국가에 소속되지 않은 플레이어만 9칸 개인 금고를 사용할 수 있습니다. 용병·방랑자 모두 해당하며 평시/전쟁 또는 중립마을에만 묶인 기능이 아닙니다.
/vault로 열거나/vault key로 본인 UUID에 묶인 인증 Tripwire Hook 열쇠를 받고 아이템을 우클릭합니다. 다른 사람의 열쇠로 그 금고를 열 수 없습니다.- 국가에 가입하면 열린 금고를 닫고 접근을 잠급니다. 내용물은 삭제하지 않으며 다시 국가 소속이 없어지면 사용할 수 있습니다.
- 인증 Stock·모든 셜커 상자·엔더 상자와 이를 담은 번들/컨테이너는 저장 불가입니다. 내부를 안전하게 검사할 수 없는 Block Entity 데이터·미개봉 전리품 컨테이너, 16단계 이상 중첩도 거부합니다.
- 개인 파일은 서버의
config/stimewar/vaults/<UUID>.dat에 저장하며 백업과 손상 파일 보존을 통해 복구합니다. 일반 엔더 상자 인벤토리와 별개입니다.
이동과 차원
/escape는 PEACE의 Overworld 국가 Claim 안에 있는 방랑자·용병만 사용합니다. 주변 최대 64청크 반경의 후보 중 수평 거리 기준 가장 가까운 안전한 무법지대 착지 위치를 찾습니다. 중립 청크·Claim·월드 보더 밖·유체·위험한 발판은 제외합니다. 후보가 없으면 실패하며 국가원의 침공 이동 수단이 아닙니다.- 국가 소속이 없는 플레이어는 Overworld 무법지대와 Nether에서 신속 I을 받습니다. 모드가 주는 효과는 600틱(정상 20 TPS에서 30초)이고 계속 갱신합니다. 중립마을·국가 Claim에서는 이 효과를 제거하며 더 강한 외부 신속 효과를 덮어쓰지 않습니다.
- Nether는 Claim할 수 없는 무법지대입니다. 침대 설치·사용·수면·침대 폭발을 제한합니다.
- End 진입은 허용하지 않습니다. 비정상 End 체류는 Overworld의 안전한 스폰 근처로 복귀시킵니다.
- 플레이어 Totem of Undying은 평시·전쟁과 Overworld·Nether 모두 죽음 방지 발동을 차단합니다. 단순 소지 자체를 금지하는 기능은 아닙니다. End Crystal 생성/배치·폭발, Respawn Anchor 배치/사용·잘못된 리스폰 지점 폭발도 제한합니다.
화면 표시와 중립 보호
- 채팅·이름표에
[국가명]또는[용병대명]접두사를 표시합니다. 이름이 같다는 이유만으로 소속 권한을 얻지 않습니다. - Vanilla Locator는 같은 국가 또는 같은 용병대의 접속 중인 팀원만, 같은 차원에서 표시하도록 필터링합니다. 서버
locatorBar게임 규칙과 Vanilla 송수신 조건도 충족해야 합니다. 적·다른 용병대·방랑자 위치를 공개하지 않습니다. - Overworld의 구역 변경은 ActionBar로
[중립마을],[무법지대],[영토] 국가명을 안내합니다. Nether에서 이 구역 안내를 계속 표시하는 기능은 아닙니다. - 일반 플레이어는 중립마을에서 Q 드롭, 메뉴의 버리기, GUI 바깥 클릭 드롭을 할 수 없습니다. 커서 아이템과 거래 입력을 기본 인벤토리/커서에 보존·반환하는 처리가 있습니다.
- 단, 서로 다른 거래 입력과 커서가 인벤토리+커서 수용량을 넘으면 Vanilla 정리 과정의 초과 드롭이 발생할 수 있습니다. 일반 제작·모루 입력까지 모든 종료 드롭을 보장하는 시스템으로 설명하지 않습니다.
관리자·Creative·중립 Builder
상단 규칙은 일반 플레이어 기준이며 다음은 관리 작업의 구현상 예외입니다.
- 관리자 명령은
Commands.LEVEL_ADMINS권한을 요구합니다. 관리자가 직접 하는 국가 멤버 수정·Core 정리 등은 일반 플레이어 명령과 다른 관리 경로입니다. - OP 또는 Creative는 중립의 일반 건축·상호작용 보호를 우회할 수 있습니다. Creative 공격은 아군·중립 전투 보호를 우회하는 예외가 있으나 권한 없는 명령을 실행할 수 있게 해 주지는 않습니다.
- 평시 타국 Claim 진입·상호작용, 같은 국가 Core 공격·평시 Core 피해·Core 고정·End 폐쇄 등은 Creative라는 이유로 모두 풀리지 않습니다. 지연된 공격/폭발의 Creative 예외는 공격자가 현재 온라인 Creative일 때 판단합니다.
- 운영자가
/neutral builder add <플레이어>로 지정한 Builder는 중립의 블록 설치·파괴만 허용받습니다. 일반 상자·문·레버·양동이·엔티티 상호작용·PvP·드롭 권한까지 받지 않습니다. 금지 위험 블록과 Core 공간 보호도 별도 적용됩니다.
2.12 플레이어 명령 전체 목록
<...>는 필수 인수, [...]는 생략 가능한 인수입니다. 국가는 이름 또는 UUID로 지정할 수 있고, 용병대도 이름 또는 UUID로 지정합니다. 플레이어 인수는 서버가 알고 있는 이름 또는 UUID입니다.
| 명령 | 기능 / 권한 |
|---|---|
/nation | 국가원은 국가 메뉴, 무소속은 국가 목록 |
/nation create <이름> | 무소속 플레이어의 평시 국가 창설. 기본 150 Stock |
/nation apply | 국가 목록 열기 |
/nation apply <국가> | 무소속 플레이어의 평시 가입 신청 |
/nation info [국가] | 생략하면 자국 정보, 지정하면 해당 국가 정보 |
/nation members | 자국 국가원 GUI. 국가장은 위임·추방 관리 |
/nation applications | 국가장 전용 신청 GUI |
/nation accept <플레이어> | 국가장 전용 평시 신청 승인. 승인 시 소속·정원 재검사 |
/nation reject <플레이어> | 국가장 전용 신청 거절 |
/nation leave | 일반 국가원 평시 탈퇴. 국가장은 먼저 위임하거나 해산 |
/nation disband | 국가장 전용 평시 해산 |
/nation kick <플레이어> | 국가장 전용 평시 국가원 추방 |
/nation leader <플레이어> | 같은 국가원에게 평시 국가장 위임 |
/nation claim | 국가장 전용 평시 현재 청크 유료 구매 |
/nation territory | 자국 전체 Claim 수·청크 X/Z 목록. 텔레포트·표식 기능 없음 |
/nation cores | 자국 Core 좌표·HP·번호, Pending 목록 GUI. 항목 클릭 시 UUID 확인 |
/nation core place | 국가장 전용 평시 자국 Claim의 Pending 설치 |
/nation core shop | 중립마을의 국가장용 Core 상점 |
/nation core buy | 추가 Core 전용 결제창 열기/이어 열기. 구매 조건 적용 |
/nation core cancel | 자신의 미완료 결제 취소·반환 대기분 받기 |
/mercenary | 자신의 용병대 이름·인원 확인 |
/mercenary create <이름> | 무소속 플레이어의 무료 용병대 생성 |
/mercenary apply <용병대> | 무소속 플레이어의 가입 신청. 정원 3명 검사 |
/mercenary applications | 용병대장 전용 신청 이름/UUID 목록 |
/mercenary accept <플레이어> | 대장 전용 승인. 소속·정원 재검사 |
/mercenary reject <플레이어> | 대장 전용 신청 거절 |
/mercenary leave | 일반 대원 탈퇴. 대장은 먼저 위임하거나 해산 |
/mercenary disband | 대장 전용 해산 |
/mercenary kick <플레이어> | 대장 전용 같은 용병대원 추방 |
/mercenary leader <플레이어> | 같은 용병대원에게 대장 위임 |
/mercenary info [용병대] | 생략하면 본인 소속, 지정하면 해당 용병대 정보 |
/vault | 국가 소속이 없을 때 9칸 개인 금고 |
/vault key | 국가 소속이 없을 때 본인 전용 금고 열쇠 지급. 인벤토리 공간 필요 |
/escape | 평시 타국 Claim 안 방랑자·용병의 안전한 무법지대 탈출 |
/war status | PEACE/WAR, 이번 전쟁의 파괴 Core 수와 시작 시각 값 |
/stock check | 주손 아이템의 인증 Stock 여부 |
가입 신청은 동시에 여러 대상에 보낼 수 있으나 국가·용병대 가입 또는 생성으로 소속이 생기면 그 플레이어의 기존 국가/용병대 신청을 정리합니다. /mercenary invite와 /mercenary join은 현재 명령 트리에 없습니다. 신청(apply) → 대장 승인(accept) 방식입니다.
2.13 운영 명령과 보존 자료
플레이어가 에이전트에게 오류를 질문할 때 관리자가 무엇을 확인할 수 있는지 설명하기 위한 목록입니다. 다음 명령은 일반 플레이어가 사용할 수 없습니다.
| 명령 계열 | 용도 |
|---|---|
/war start, /war start ignore, /war end | 전체 전쟁 제어. ignore의 해산 확인 절차는 2.8절 |
/stock give <접속 대상> <1..2304>, /stock remove <접속 대상> <1..2304> | 실제 Stock 지급/제거 |
/nation admin check | 국가 Core/Pending·신청·오프라인 납부자 포함 미완료 결제의 읽기 전용 GUI |
/nation admin list, /nation admin info <국가> | 국가 목록·정보 |
/nation admin create <이름> <접속 국가장>, /nation admin delete <국가> | 국가 생성/해산 관리 |
/nation admin leader <국가> <플레이어>, /nation admin rename <국가> <새이름> | 국가장·국가명 관리 |
/nation admin member add|remove <국가> <플레이어> | 국가원 관리 |
/nation admin applications <국가> [clear] | 신청 확인/정리 |
/nation admin claim owner, /nation admin claim info <국가> | 현재 청크 소유 국가 / 영토 목록 |
/nation admin claim add|remove|clear <국가> | 영토 관리. add/remove는 현재 청크 |
/nation admin core list <국가>, /nation admin core info <CoreUUID> | 저장 Core 목록·상세 |
/nation admin core add <국가>, /nation admin core remove <CoreUUID> | Core 설치/삭제 관리. 관리 삭제는 WAR 파괴 수에 미포함 |
/nation admin core repair <CoreUUID>, /nation admin core hp <CoreUUID> <양의정수> | 실제 Entity 복구 확인 / 저장 최대 HP 범위 안 HP 조절 |
/nation admin core purchases <국가> [누적수] | 누적 취득 이력 조회/수정. 현재 사용 중인 번호보다 낮출 수 없음 |
/nation admin trader set, /nation admin trader reload | 중립 내부 거래상 위치 지정 / 거래 설정 갱신 |
/nation admin inactive, /nation admin inactivity status|mark|clear|cleanupcores|cleanupclaims|dissolve <국가> | 비활성 국가 조회·표시·정리 |
/mercenary admin create <이름> <접속 대장>, /mercenary admin info|disband <용병대> | 용병대 생성·조회·해산 |
/mercenary admin leader <용병대> <플레이어>, /mercenary admin member add|remove <용병대> <플레이어> | 대장·대원 관리. 추가 정원 3명 적용 |
/neutral builder add|remove <플레이어>, /neutral builder list | 중립 건축 담당자 지정/해제/조회 |
| 표시는 여러 명령 중 하나를 선택한다는 뜻이며 문자 그대로 입력하지 않습니다.
비활성 처리는 기본 꺼져 있습니다. 켜면 국가원의 접속·활동을 갱신하고 평시에 기본 30일 무활동 국가를 처리합니다. 자동 점검은 1,200틱(정상 TPS에서 1분) 주기입니다. autoDissolve가 우선하며, 그렇지 않으면 Core/Claim 정리 옵션을 따릅니다. Core가 남아 있는 Claim 전체 정리는 거부될 수 있습니다.
| 서버 저장 경로 | 내용 |
|---|---|
config/stimewar/config.json / .bak | 모드 설정 / 이전 설정 |
config/stimewar/data.json | 국가·소속·Claim·Core·전쟁·신청·Builder·결제 적용 영수증 ID 등의 상태, schema 5 |
config/stimewar/data.commit.json | 내구성 있는 최신 커밋 스냅샷 |
config/stimewar/data.json.bak | 이전 국가 상태 백업 |
config/stimewar/payments/<납부자UUID>.dat | 실제 결제 스택·단계·인벤토리 이체 기록 |
config/stimewar/vaults/<플레이어UUID>.dat / .bak | 개인 금고와 백업 |
config/stimewar/trades.json | 거래 설정 |
config/stimewar/trades-state.json / .bak | 품목별 총/일일 사용 횟수, UTC 날짜, NPC UUID·위치 |
config/stimewar/audit.log | 국가·Claim·Core·전쟁 등 운영 이력 |
| 월드의 플레이어 데이터·청크·차원별 SavedData | 일반 아이템/Entity와 TNT 설치자 귀속 자료 등 |
기본 자동저장은 300초이며 중요한 서비스 변경은 트랜잭션 저장으로 처리합니다. 자동저장 실패 시 메모리 상태를 보존하고 200틱(정상 20 TPS에서 10초) 뒤 재시도하며 온라인 관리자에게 실패/복구를 알립니다. 종료 시 최종 저장 실패도 기록하지만 미저장 변경이 보존된다고 보장하지 않습니다. 복구·이전 작업은 월드와 config/stimewar/를 함께 보존해야 합니다.
2.14 프로젝트 전체 구조와 근거 코드
이 문서의 코드 경로는 프로젝트 루트 기준입니다. 주요 Java 파일의 공통 경로는 src/main/java/com/stime/war/입니다.
Stime Mod/
├─ PLAYER_GUIDE.md 이 문서: 플레이어 요약 + 에이전트용 상세
├─ README.md / ADMIN_GUIDE.md 설치·운영 안내
├─ STIME_CLEAN_V2_HANDOFF.md 인수인계·설계·변경 의도
├─ CLEAN_V2_*REPORT*.md 과거 구현/검증 보고
├─ stime-war-2.0.*.jar 보관된 JAR. 현재 소스 포함 여부는 별도 확인
├─ build.gradle / settings.gradle 버전·의존성·Java·테스트·빌드 설정
├─ gradlew / gradlew.bat / gradle/ Gradle 실행기
├─ stime-ci.yml / apply-bugfix-*.yml 자동화 설정 파일
├─ src/main/java/com/stime/war/ 실제 모드 서비스와 보호 코드
│ ├─ payment/ 실물 결제·저널·복구
│ ├─ trade/ 주민 거래·품목 설정·공용 한도 저장
│ ├─ vault/ 개인 금고·인벤토리 메뉴
│ ├─ protection/ 피해/폭발 판정·TNT 소유자 귀속
│ └─ mixin/ Vanilla 동작에 보호·표시·결제 안전 적용
├─ src/main/resources/ fabric.mod.json, stimewar.mixins.json
├─ src/test/java/ JUnit: 모델·설정·가격·저장·조회 검증
├─ src/gametest/ 실제 서버 World/Entity/Menu 보호 검증
├─ docs/ 날짜별 변경 보고·명세·계획
├─ build/ 빌드 JAR·테스트 결과·임시 검증 산출물
├─ run/ 로컬 개발 실행 월드·설정
└─ .tools/ / logs/ / .gradle/ 로컬 도구·로그·Gradle 캐시
| 주제 | 근거 파일과 역할 |
|---|---|
| 초기화·이동/메뉴 재검사·신속·자동저장 | StimeWar.java |
| 기본값·설정 검증 | WarConfig.java, PersistenceService.java |
| 상태·국가/Claim/Core 모델·인덱스 | WarData.java |
| 일반 권한·아군·PvP·자동화 | AccessService.java, protection/ProtectionService.java |
| 국가 생성·신청·멤버·해산·멸망 | NationService.java |
| Claim 위치·연결성·결제 | ClaimService.java |
| 비용 계산·올림 | EconomyService.java |
| Core 설치·고정 위치·HP·Entity 복구·BossBar | CoreService.java, mixin/CoreEntityMixin.java, mixin/CoreLivingEntityMixin.java |
| 전쟁 준비·ignore 해산·수동 종전 | WarService.java |
| 용병대 신청·정원 3명·WAR 예외 | MercenaryService.java |
| 실제 명령 목록과 인수 | WarCommands.java, vault/VaultService.java |
| 국가/신청/Core/관리자 GUI | NationMenus.java |
| Stock 인증과 소모 차단 | StockService.java, StockProtection.java, mixin/Stock*Mixin.java |
| 실물 납부·취소·재접속 복구 | payment/PaymentService.java, payment/PaymentJournal.java, payment/PaymentRecovery.java |
| 거래·한도·UTC 리셋·NPC | trade/TraderService.java, trade/TradeConfig.java, trade/TradeStorage.java |
| 9칸 금고·금지 아이템·열쇠 | vault/VaultService.java, vault/VaultMenu.java |
| 중립 안전지대·Buffer·Builder | NeutralVillageService.java, NeutralBuilderService.java |
| 탈출·안전 착지 | EscapeService.java |
| 비활성 국가 처리·운영 기록 | InactivityService.java, AuditService.java |
| 구역 ActionBar·아군 위치 | ZoneNotificationService.java, TeamLocatorService.java, mixin/TeamLocatorWaypointMixin.java |
| 중립 커서·거래 입력 반환 | NeutralCursor.java, NeutralCursorState.java, NeutralMerchantInputs.java, 관련 Mixin |
| 폭발과 TNT 귀속·전쟁 드롭 | protection/ExplosionAttribution.java, protection/TntOwnershipData.java, protection/OwnedSource.java, protection/MutableOwnedSource.java, mixin/ServerExplosionMixin.java, mixin/WarBlockDropMixin.java, mixin/Tnt*Mixin.java, mixin/Minecart*Mixin.java |
| 피스톤·유체·호퍼·양동이·포션 경계 | mixin/PistonBaseBlockMixin.java, mixin/FlowingFluidMixin.java, mixin/HopperBlockEntityMixin.java, mixin/BucketItemMixin.java, mixin/DispenserBucketBehaviorMixin.java, mixin/ThrownSplashPotionMixin.java, mixin/AreaEffectCloudPotionMixin.java |
| 금지 아이템·차원·드롭·이동 명령 | mixin/WarTotemMixin.java, mixin/NetherBed*Mixin.java, mixin/RespawnAnchorSafetyMixin.java, mixin/EndCrystalItemSafetyMixin.java, mixin/ServerPlayerMixin.java, mixin/ServerGamePacketListenerMixin.java, mixin/MovementCommandMixin.java |
| 나머지 Vanilla 보호 어댑터 목록 | src/main/resources/stimewar.mixins.json. 설치·점화·엔티티 피해·발판·농지·거북알·Enderman 등의 세부 경로 |
관련 회귀 테스트는 NationCreationCostGameTests, NationCommandsGameTests, MercenaryApplicationsGameTests, CoreMeleeGameTests, CoreEntityGameTests, WarGameTests, PeaceProtectionGameTests, PistonProtectionGameTests, PotionAffiliationGameTests, DispenserBucketBoundaryGameTests, ServerTickSafetyGameTests, StockGameTests, TeamLocatorGameTests, NeutralCursorGameTests, payment/*GameTests, trade/TraderGameTests, vault/VaultGameTests 등에 있습니다.
2026-10-11 보호 판정·저장 안정화 보고에는 당시 JUnit 59개와 GameTest 309개 통과가 기록되어 있습니다. 이는 기존 검증 이력이며 이 안내서 작성 중 새로 게임 테스트를 실행했다는 뜻은 아닙니다. 실제 Geyser/Floodgate/Bedrock 접속 검증 완료도 의미하지 않습니다.
2.15 에이전트에게 질문할 때의 안내와 FAQ
이 파일을 첨부하거나 2번 항목부터 문서 끝까지 챗봇에 붙여넣은 뒤, 아래 안내와 궁금한 질문을 함께 보내면 됩니다.
이 문서 기준으로 답해 줘. 기본 설정인지 실제 운영 설정인지 구분하고, 근거 절 번호를 알려 줘. 문서에 없는 운영 규칙이나 다른 플러그인 기능은 추측하지 말아 줘.
질문 예시: “방랑자인데 평시 타국 영토의 문이 안 열려요. 정상인가요?” 또는 “Core를 하나 잃었는데 다음 구매 비용은 얼마인가요?”
| 질문 | 문서 기준 답변 |
|---|---|
| 국가를 만들고 첫 Core까지 설치하려면 얼마인가요? | 기본 250 Stock. 국가 150 + 첫 Claim 100, 첫 Core 권리 무료. 2.4절 |
| 국가를 만들었는데 Core가 없어요. | 자동 생성되지 않습니다. Claim 후 국가장이 안전한 위치에 /nation core place. 2.2·2.7절 |
| 중립마을 밖인데 왜 Claim이 안 되나요? | 바깥 5청크 Buffer까지 Claim 금지입니다. 다른 국가 소유·연결성·차원·전쟁 상태도 확인. 2.5절 |
| 평시인데 방랑자가 영토 안에 있어요. | 방랑자·용병은 평시 진입 가능, 상호작용 불가입니다. 다른 국가원과 구분. 2.5절 |
| 전쟁 중 방랑자가 상자를 털 수 있나요? | 가능합니다. 설치·파괴·일반 상호작용·Core 공격도 가능. 2.5·2.6절 |
| 적 집을 부쉈는데 블록이 안 나와요. | 전쟁 중 적 Claim 블록 자체의 드롭 억제입니다. 상자 내용물과 구분. 2.6절 |
| Core를 잃었는데 다음 가격이 그대로 비싸요. | 보유 수가 아닌 누적 획득 번호로 가격 계산. 2.4절 |
| 설치 대기 Core가 있는데 왜 전쟁 준비가 안 되나요? | Pending은 Alive 설치 Core로 세지 않습니다. 2.2·2.8절 |
| Core 두 개를 부쉈는데 전쟁이 계속되나요? | 자동 종전은 제거됐습니다. 관리자의 /war end가 필요. 2.8절 |
| 오늘 거래를 안 했는데 품절이에요. | 일일 한도는 품목별 서버 공용이며 UTC/한국 오전 9시 리셋. 2.10절 |
| 국가에 가입했더니 금고가 안 열려요. | 국가원은 잠기며 내용은 보존됩니다. 국가 소속이 없어지면 다시 접근. 2.11절 |
| 기본 HP가 200인데 우리 Core는 10000이에요. | 운영 설정이나 기존 저장 Core의 최대 HP가 다를 수 있습니다. 로컬 run 설정도 10000을 명시. 2.3절 |
| 전쟁 중 용병대에 가입할 수 있나요? | 현재 용병대 코드에는 WAR 금지 조건이 없습니다. 국가 가입과 다릅니다. 2.8절 |
| 초대/가입 명령이 작동하지 않아요. | 현재 용병대는 /mercenary apply와 /mercenary accept 방식입니다. 2.12절 |
실제 서버 문제를 판단할 때는 서버의 모드 버전·PEACE/WAR·본인 소속·차원·청크·설정값·메시지를 함께 확인합니다. 설정을 공유할 때는 stockSecret 값과 개인 정보는 빼고 전달합니다. 문서의 기본값만으로 현재 운영 서버의 상태를 단정하지 않습니다.