Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Emplace — CraftEngine 가구를 미리보기로 놓기

CraftEngine 은 가구 아이템을 우클릭하면 그 자리에 즉시 놓는다. 어디에 어느 방향으로 놓일지는 놓아 봐야 안다. 이 플러그인은 그 설치를 가로채서, 놓기 전에 반투명 미리보기로 자리와 방향을 잡게 한다.

  • Minecraft 1.21.x
  • 서버 Paper
  • Java 21
  • 필수 의존 CraftEngine

조작

동작 조작
미리보기 시작 가구 아이템을 들고 우클릭
회전 좌클릭
반대로 회전 F (손 바꾸기)
설치 우클릭
격자 켜고 끄기 웅크리기
취소 Q(버리기) · 다른 슬롯 선택

미리보기는 시선을 따라다닌다. 놓을 수 있으면 초록, 못 놓으면 빨강으로 빛나고 하단에 조작 안내가 뜬다. 미리보기는 본인에게만 보인다.

아이템이 실제로 소모되는 시점은 설치가 성공한 순간이다. 취소하거나 자리를 못 찾으면 아무것도 잃지 않는다. 크리에이티브에서는 소모하지 않는다.

격자 — 0.5칸

기본은 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 이 가구마다 정해 둔 규칙을 그대로 따른다.

바닥·벽·천장은 부딪힌 면으로 고른다. 벽에 붙는 모습이 없는 가구를 벽에 대면 바닥 모습으로 떨어진다.


가구 yml 을 안 건드린다

설치를 가로채는 지점은 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.ymldebug 를 켜고 다시 놓아 보면, 가로챈 가구와 띄운 조각 수가 로그에 뜬다.

[Emplace] 가로챔: nogs_partridge:plushie | 모습 ground | 미리보기 조각 1개

조각이 0개면 가구 정의로 그리지 못했다는 뜻이다. 그때는 손에 든 아이템으로 대신 띄운다 — 생김새는 실물과 다를 수 있지만 자리와 방향은 정확하다. 왜 못 그렸는지는 경고로 같이 남는다.


알려진 한계

  • 미리보기는 아이템으로 그려지는 조각만 그대로 띄운다. 블록이나 글자로 된 조각, BetterModel 같은 외부 모델은 못 읽어서 손에 든 아이템으로 대신 띄운다.
  • 놓을 자리는 자체 판정이라 CraftEngine 이 즉시 놓을 때와 미세하게 다를 수 있다. 회전·정렬 규칙은 CraftEngine 것을 그대로 쓰므로 각도와 칸 위치는 같다.

라이선스

MIT — LICENSE

About

CraftEngine 가구를 미리보기로 자리 잡아 놓는 Paper 플러그인

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages