개인 자료란 (JE)

  서버 커뮤니티


Profile xnoeyhx 대표칭호 없음

BaeHyeonWoo 5082c8327f7c4b04b0c72825062b7638

Profile

강좌 및 개발 개발자란 개발 질문 Java

플레이어의 닉네임을 바꾸는 법 (NMS)

17 일 전 조회 수 230 추천 수 0
분야 플러그인 
API 버킷 

현재 기존 플레이어를 삭제하고 새 플레이어를 생성하는 방식으로 사용중인데, 이외에 다른 방법이 있을까요?

모든 기능은 구현은 현재 클라바운드 패킷 제공으로 이루어지고있습니다.


+ 추가 질문: 명령어 자동완성상에서 삭제한 플레이어의 닉네임이 계속 뜨는 문제가 발생해서, 클라바운드 문제인지 서버바운드 문제인지 궁금합니다.


5개의 댓글

qsef1256
17 일 전

https://github.com/SkinsRestorer/SkinsRestorerX 에서 API 끌어다 쓰시면 직접 구현하지 않으셔도 됩니다


기술적인 답변을 원한다면, 없으니까 그렇게 돌아가는 거라고 답변 드리고 싶네요 (일단 Spigot API가 플레이어 이름 변경을 지원하지 않습니다, 이걸 강제로 구현하는데 드는 비용은 거의 난장판 일꺼라고 봅니다)


명령어 자동 완성은 Tab Complete 이라고 합니다, https://wiki.vg/Protocol#Tab-Complete_.28clientbound.29 에 서버바운드도 있고 클라바운드도 있는데 실제로 보여주는 건 클라바운드 문제로 보입니다.

qsef1256
17 일 전

그리고 NMS는 버전마다 다르기 때문에 완벽한 답변을 위해서는 버전을 기재해주셔야 합니다. 이건 사실 버전 관계 없이 구현되었던 부분이라 크게 문제는 안되네요

xnoeyhx
17 일 전
@qsef1256

버전은 paperweight 차원에서 복붙하면되는거라 큰 문제는 없어보이고 최대한 자체구현쪽으로 가는중입니다..!

 

답변 감사합니다 :)

카라멜
12 일 전

채팅창에서 출력 되는 자동 완성은 클라이언트에서 처리하기 때문에 ClientboundPlayerInfoPacket 선에서 정리 가능합니다.

다만 명령어를 사용할 때 플러그인에 의해 출력 되는 자동 완성은 net.minecraft.world.entity.player.Player#getScoreboardName() 반환 값을 수정해야 되는데, 바이트 코드를 조작해서 다른 이름으로 반환하시거나 net.minecraft.world.entity.player.PlayergameProfile 필드를 다른 이름이 담긴 GameProfile 객체로 바꾸시면 됩니다.

아마 Paper 기반 구동기라면 gameProfile 필드가 private final이진 않을겁니다.

xnoeyhx
8 일 전
@카라멜

명령어 자체를 가리는건 PlayerCommandSend로, 인수붙는 애들은 클라바운드로 처리하려고 합니다.

플러그인에 의해 출력되는 자동완성이라면 버킷 TabComplete쪽을 말씀하시는건가요? 차이가 어떻게 되는건가요?

뉴스 및 컨텐츠
/files/thumbnails/192/256/003/262x150.crop.jpg?20220630220506

소식

최근에 공개된 마인크래프트 채팅 신고 기능에 대해 어떻게 생각하시나요? 2

프리루트

2022-06-30

0

/files/thumbnails/110/256/003/262x150.crop.jpg?20220630020658

업데이트

마인크래프트 1.19.1 출시가 연기됨

마리오군

2022-06-30

2

/files/thumbnails/673/255/003/262x150.crop.jpg?20220629214425

모드

마인크래프트 1.19 옵티파인 모드 프리뷰 버전 출시

Dalsu

2022-06-29

0

/files/thumbnails/729/253/003/262x150.crop.jpg?20220626171915

업데이트

마인크래프트 1.19.1 릴리스 후보 1 업데이트

마리오군

2022-06-26

0