0. 서론
이 글은 글쓴이가 본인 맵을 업데이트하면서 발견한 내용이고
생각보다 별 거 없는 내용이다.
그냥 쓰다 보니까 뭔가 쓸데없이 장황하게 쓰여졌다.
봐줘잉
목차
1. 텍스트 디스플레이
- 일단 이건 알고 글을 읽고 있겠지만 분량상 적음
2. 제작
- 이제 이것을 블록 크기에 맞춰보자
3. 활용
- 무려 애니메이션 길이 조절이 된다고 뿌슝빠슝?!??!?!?!!??!?
1. 텍스트 디스플레이
text_display는 말 그래도 문자를 보여주는 엔티티로
흔히 디스플레이라 불리는 1.19.4 맵제작계의 혁명 요소 중 하나다.
하지만 우리의 위대한 개발진은 이에 그치지 않고
더 많은 기능들을 추가해줬나니
이 내용은 3장 활용 파트에서 알아보자.
2. 제작
과거에는 비어있는 텍스트 디스플레이로 정사각형 모양의 디스플레이를 소환할 수 있었다.
이 디스플레이를 40배로 키우면 블록 1칸 크기와 동일해지는데
그렇게 만든 사각형들을 모아 만든 게 이것이다.
하지만 문제는 그로부터 시간이 지난 후에 생기는데
바로 내용이 없는 텍스트 디스플레이가 작은 정사각형 모양으로 소환된다는
이 부분이 버그로 간주되어 수정이 된 것이다.
이 깔끔하게 딱 떨어지는 40배 기믹을 쓸 수 없게 된 것은 너무나도 큰 손실이었다
고 생각한 글쓴이는 성질이 급해서 대체제도 안 찾은 채로
걍 버전을 안 올리기로 결심하고
이 기술 자체를 마음속에 고이 접어두었다.
하지만 대체제는 있었다. 공백이 안 되면 다른 공백을 쓰면 되지 아니한가
"" 대신 " "를 사용해보기로 했다.
수치가 소수점 단위로 갈까봐 너무나 두려웠지만
다행히도 이 방법은 아주 다행히도 안정적인 수치로 기존 기믹을 대체할 수 있었다.
오히려 기존처럼 40배까지 갈 필요도 없이
# x, y는 원하는 면적 크기 (블록 단위)
transformation.scale = [8*x, 4*y, 1]
transformation.translation = [0.4*x, 0, 0] # 디스플레이가 보이는 시점 기준, 좌측 하단에 기준점
다음과 같은 방식으로 해결 가능했다.
예시) 3x2블록 면적의 텍스트 디스플레이 생성 (기준점 좌측 하단 설정됨)
/summon text_display ~ ~ ~ {transformation:{scale:[24,8,1],translation:[],left_rotation:[0,0,0,1],right_rotation:[0,0,0,1]}}
# left_rotation, right_rotation은 여기서 크게 중요하지 않음
만약 디스플레이의 기준점을 중앙에 맞추고 싶다면
우선 좌측 하단으로 맞춘 다음 상하로 0.5, 좌우로 0.5만큼 움직이면 된다.
블록의 히트박스는 방벽이나 셜커, 아니면 나중에 추가될 해피 가스트를 통해 만들어내면 된다.
3. 활용
이제 제일 중요한 파트다.
위에 보여준 전자발판 예시의 가장 중요한 파트는
색깔이 바로 변하지 않고 부드럽게 변화한다는 것이다.
바로 여기서 이전에 말한 디스플레이만의 특별한 기능이 활용된다.
보간, interpolation이다.
디스플레이 엔티티는 모두 start_interpolation과 interpolation_duration이라는 데이터를 갖는데
이 중 start_interpolation의 값은 0으로, interpolation_duration의 값을 20으로 정하고
transformation이나 background의 값을 변경
해보면 아주 부드럽게 모양이나 배경 색이 달라진다.
start_interpolation은 0으로 해야 애니메이션이 즉시 나타나고
두 값 모두 틱(1/20초) 단위이기에 interpolation_duration에는 20을 넣어야 1초 동안 애니메이션이 진행된다.
이제 /data merge를 사용해 원하는 길이 동안 원하는 색으로 텍스트 디스플레이를 바꿔보자.
/execute as @e[tag=원하는텍스트디스플레이] run data merge entity @s {background:0x00ff0000,interpolation_duration:20,start_interpolation:0}
# 커맨드 길이를 줄이기 위해 execute as로 그룹화해서 한번에 색을 변경 (data는 여러 엔티티에 한번에 사용 불가)
# background 색상은 16진수 값 0xAARRGGBB로 지정 가능 (AA는 투명도, RRGGBB는 흔히 쓰이는 #dc51ba 형식의 색상 값이다.)
이제 알려줬으니 내 맵 해줄 거지? ㅇㅇ?
룰이웹은 어케 바꿀 거냐 딧이쟁이들아
아주 치밀한 녀석들이야 이거 참
갤러리 갤러리 루리웹 루리웹 루리웹 루리웹
끗 :D
유용함!!
+ 정보 지금 스냅샷부터는 더이상 start_interpolation을 설정하지 않아도 괜찮다(기본값 생김 요호호홍)
찾아보니 데이터팩 버전 69 (nice) 때 기본값이 생겼노 굳굳
참고로 해피 가스트는 사이드 및 아래 히트박스가 현재로선 없다는것… 즉 일반 히트박스론 적합하지 않다 (아래서 올라올 수 있는 블록으로 쓸수 있을래나… 어라?)