CraftEngine 은 가구 아이템을 우클릭하면 그 자리에 즉시 놓는다. 어디에 어느 방향으로 놓일지는 놓아 봐야 안다. 이 플러그인은 그 설치를 가로채서, 놓기 전에 반투명 미리보기로 자리와 방향을 잡게 한다.
- Minecraft 1.21.x
- 서버 Paper
- Java 21
- 필수 의존 CraftEngine
| 동작 | 조작 |
|---|---|
| 미리보기 시작 | 가구 아이템을 들고 우클릭 |
| 회전 | 좌클릭 |
| 반대로 회전 | F (손 바꾸기) |
| 설치 | 우클릭 |
| 격자 켜고 끄기 | 웅크리기 |
| 취소 | Q(버리기) · 다른 슬롯 선택 |
미리보기는 시선을 따라다닌다. 놓을 수 있으면 초록, 못 놓으면 빨강으로 빛나고 하단에 조작 안내가 뜬다. 미리보기는 본인에게만 보인다.
아이템이 실제로 소모되는 시점은 설치가 성공한 순간이다. 취소하거나 자리를 못 찾으면 아무것도 잃지 않는다. 크리에이티브에서는 소모하지 않는다.
기본은 0.5칸 격자다. 가구가 놓이는 좌표가 언제나 0.5 의 배수가 되므로 블록 한가운데에도, 두 블록 경계에도 딱 맞출 수 있다. 반 칸 옮겨 붙이는 것이 되니 탁자 두 개를 이어 붙이거나 의자를 탁자 모서리에 대는 것이 그냥 된다.
놓는 중에 웅크리면 격자와 가구 기본을 오간다. 더 잘게 맞추려면
/emplace 격자 <이름> 으로 고른다 — 고른 것은 사람마다 남아 계속 이어진다.
| 이름 | |
|---|---|
half |
½칸 — 0.0 · 0.5 · 1.0 (기본) |
quarter eighth |
더 잘게 |
center |
무엇을 찍든 언제나 블록 한가운데. 경계에는 못 놓는다 |
furniture |
가구가 원래 정해 둔 자리 |
free |
안 맞춤. 벽에 딱 붙일 때 |
격자는 칸 경계에 맞춘다. 예전에는 칸 한가운데(0.25 · 0.75)로 보냈는데, 그러면 격자 간격은 0.5 인데 놓이는 자리는 0.25 씩 어긋난 곳이라 블록 경계에 딱 맞출 수가 없었다. 탁자 두 개를 나란히 붙이는 것이 안 됐던 이유가 이것이다. 1.0 이 나오는 것은 옆 블록의 0.0 과 같은 자리, 곧 두 블록의 경계선이라 정상이다.
미리보기의 크기·위치·회전·조명은 가구 정의에서 그대로 읽는다.
CraftEngine 은 가구가 화면에 어떻게 그려지는지를 이미 전부 들고 있다. 그 값을 그대로 베껴 쓰기 때문에, 가구마다 따로 적을 값이 없고 어떤 가구든 실물과 똑같이 보인다. 새 리소스팩을 깔아도 손댈 게 없다.
미리보기 값을 설정 파일에 손으로 적는 방식은, 값이 어긋나면 미리보기와 실물의 크기나 높이가 달라진다. 그런데 그건 눈으로 보기 전까지 알 수가 없다.
회전과 정렬도 마찬가지다. 가구가 45도씩 도는지 90도씩 도는지, 칸 한가운데에 붙는지 모서리에 붙는지는 CraftEngine 이 가구마다 정해 둔 규칙을 그대로 따른다.
바닥·벽·천장은 부딪힌 면으로 고른다. 벽에 붙는 모습이 없는 가구를 벽에 대면 바닥 모습으로 떨어진다.
설치를 가로채는 지점은 CraftEngine 의 FurnitureAttemptPlaceEvent 다. 이벤트를 취소하는
방식이라 가구 정의 파일을 하나도 수정하지 않는다. 남의 리소스팩에서 온 가구도 그대로
걸리고, 이 플러그인을 지우면 원래대로 돌아간다.
config.yml
# 미리보기로 놓지 '않을' 가구. 여기 적은 것만 예전처럼 즉시 놓인다.
excluded-furniture:
- "default:bench"
reach: 5.0
preview:
glow: true # 놓을 수 있으면 초록, 못 놓으면 빨강
action-bar: true # 조작 안내
controls:
sneak-to-cycle-grid: true
grid:
default: half # 0.5칸 격자기본은 모든 가구에 적용된다. 빼고 싶은 것만 excluded-furniture 에 적으면 되고,
새 가구를 추가할 때 목록을 손볼 필요가 없다.
문구는 messages 아래에서 바꾼다. MiniMessage 문법을 쓴다.
| 명령어 | 설명 |
|---|---|
/emplace 또는 /emplace status |
올라온 가구 수와 제외 목록 |
/emplace reload |
config.yml 다시 읽기 (emplace.admin) |
/emplace cancel |
놓기를 그만둔다 |
./gradlew build산출물은 build/libs/.
config.yml 의 debug 를 켜고 다시 놓아 보면, 가로챈 가구와 띄운 조각 수가 로그에 뜬다.
[Emplace] 가로챔: nogs_partridge:plushie | 모습 ground | 미리보기 조각 1개
조각이 0개면 가구 정의로 그리지 못했다는 뜻이다. 그때는 손에 든 아이템으로 대신 띄운다 — 생김새는 실물과 다를 수 있지만 자리와 방향은 정확하다. 왜 못 그렸는지는 경고로 같이 남는다.
- 미리보기는 아이템으로 그려지는 조각만 그대로 띄운다. 블록이나 글자로 된 조각, BetterModel 같은 외부 모델은 못 읽어서 손에 든 아이템으로 대신 띄운다.
- 놓을 자리는 자체 판정이라 CraftEngine 이 즉시 놓을 때와 미세하게 다를 수 있다. 회전·정렬 규칙은 CraftEngine 것을 그대로 쓰므로 각도와 칸 위치는 같다.
MIT — LICENSE