MC Toolkit

가이드 / 명령어 및 데이터

Java와 Bedrock에서 같은 빨간 텍스트가 깨지는 이유

한 플러그인에서는 완벽하게 렌더링되는 색상 코드가 다른 플러그인에서는 앰퍼샌드가 그대로 노출됩니다. 원인은 플러그인이 아니라 형식에 있습니다.

§ 코드와 MiniMessage 태그는 같은 색상을 나타내더라도 같은 서버에서 거부될 수 있습니다. 서버의 색상 텍스트는 하나의 형식이 아니라 최소 다섯 가지이며, 플러그인마다 어떤 형식을 받아들이는지가 다릅니다.

다섯 가지 방언

방언형태사용되는 곳
레거시 섹션 기호§cHello바닐라 채팅, 구형 플러그인
앰퍼샌드 레거시&cHello설정 파일, 다수의 플러그인
BungeeCord 헥스&x&f&f&0&0&0&0프록시 플러그인, 일부 채팅
MiniMessage<red>Hello</red>최신 Paper 플러그인
JSON 컴포넌트{"text":"Hello","color":"red"}바닐라 명령어, /tellraw

앰퍼샌드 형식은 누군가 변환해 주기 전까지는 색상 코드가 아닙니다. MiniMessage를 기대하는 플러그인에 &c을 붙여 넣으면 플레이어는 그 문자를 그대로 읽게 됩니다.

레거시 코드는 색상이 한정되어 있다

섹션 기호 시스템은 정해진 색상 문자와 서식 토글만 지원합니다. 임의의 색상을 표현할 방법이 없습니다. 헥스 색상은 나중에 등장했고, BungeeCord 형식은 이를 한 문자씩 인코딩합니다. &x 뒤에 & 접두사가 붙은 헥스 숫자 여섯 자리가 오는 구조라서 그렇게 길어 보이는 것입니다.

MiniMessage는 #ff0000을 그대로 받습니다. JSON은 같은 헥스 값을 문자열로 받습니다.

Java와 Bedrock은 서로 맞지 않는다

Bedrock도 섹션 기호를 사용하지만, 색상 집합과 서식 초기화 처리가 Java와 다릅니다. Java 서버에서 올바르게 렌더링되는 문자열이 Bedrock 클라이언트에서는 이상한 문자로 보일 수 있으며, 크로스 플레이 프록시는 텍스트를 그대로 전달하기보다 두 형식 사이를 변환하는 경우가 많습니다. 서버에서 Bedrock 플레이어를 받는다면 양쪽에서 출력을 테스트하세요.

중첩의 함정

레거시 코드는 상태를 가집니다. 색상 코드는 서식을 초기화하므로, §l§cBold은 빨간색 굵은 글씨지만 §c§lBold은 다음 색상 코드가 나올 때까지만 굵은 빨간색이고, 그 색상 코드가 굵기를 지웁니다. MiniMessage는 트리 구조라서 <red><bold>text</bold></red>이 깔끔하게 닫힙니다. 중첩된 MiniMessage 문자열을 레거시 코드로 변환하면 구조가 사라집니다. 레거시에는 닫는 태그가 없기 때문입니다.

이스케이프

MiniMessage는 <을 문법으로 취급합니다. 이름이 <Steve>인 플레이어는 이름을 컴포넌트로 파싱하는 모든 플러그인을 망가뜨립니다. 레거시 형식도 &에 대해 같은 문제가 있어서, 많은 플러그인이 &&을 요구하거나 이를 이스케이프하는 설정 플래그를 둡니다.

텍스트를 한 번 작성하고, 플러그인이 실제로 파싱하는 방언을 고른 뒤, Server Text Studio에서 정확한 문자열을 복사하세요.

Server Text Studio →

더 많은 가이드

모두 보기 →

다른 마인크래프트 도구도 찾고 계신가요?

브라우저에서 바로 쓰는 생성기·뷰어·변환기 모음입니다. 전부 무료입니다.