이해도 | 초보자 |
---|---|
게임버전 (JE) | 1.19.2 |
게임버전 (BE) | 관련없음 |
셋홈 / 홈 명령어를 커맨드로 구현해보고 싶어서 노력중인데 잘 안되네요.
일단 셋홈 명령어까지는 구현을 했고 홈 명령어에서 막히고 있습니다.
이런 글을 처음 써봐서 일단 모든 커맨드를 어떻게 구성했는지 전부 설명을 드릴테니 한번 보시고 해결책 주시면 감사하겠습니다.
[반복] [무조건] [항상]
execute at @a[scores={sethome=1}] run scoreboard players enable @a[scores={sethome=1}] sethome
sethome 이라는 스코어보드를 만들어서 /trigger sethome 을 입력할 시 작동이 되도록 했구요
[연쇄] [조건] [항상]
summon minecraft:armor_stand ~ ~1000 ~ {Invisible:1b,Invulnerable:1b,NoGravity:1b,Small:1b,CustomName: '{"text":"extraNickname"}'}
셋홈 명령어를 사용한 위치에서 1000칸 위에 아머스탠드를 설치를 하는데, 나중에 홈 명령어로 이 아머스탠드를 찾을 때 플레이어 닉네임으로 찾기 위해서 아머스탠드 이름을 플레이어 이름으로 지정하려고 해보았습니다. 그래서 우선 summon 명령어로는 플레이어 닉네임을 가져오는게 불가능한 것 같아서 이름은 임시로 extraNickName 으로 지정을 하였고
[연쇄] [조건] [항상]
setblock ~ ~1 ~ minecraft:oak_sign{Text1:'{"selector":"@a[scores={sethome=1}]"}'} destroy
이제 방금 설치한 아머스탠드의 이름을 플레이어의 이름으로 바꾸어야 하니까 커맨드블록 위에 임의로 표지판을 하나 설치하여서 표지판 내용을 플레이어 닉네임으로 설정하였습니다.
[연쇄] [조건] [항상]
data modify entity @e[type=minecraft:armor_stand, name=extraNickname, limit=1] CustomName set from block 0 302 -6 Text1
그리고 아머스탠드 이름을 표지판 내용으로 변경하는것까지 잘 되었습니다.
( 0 302 -6 은 방금 설치한 표지판의 좌표입니다. )
[연쇄] [조건] [항상]
scoreboard players set @a[scores={sethome=1}] sethome 0
이러면 이제 플레이어가 셋홈을 사용한 위치를 저장하는것까지는 완료가 되었는데,
/trigger home 명령어를 사용해서 자신의 닉네임을 이름으로 가지는 아머스탠드의 위치를 불러오는게 도저히 안됩니다.
도와주시면 감사하겠습니다.
코코냐
2022.11.16저렇게 하면 아마 저 json 값 자체를 가져오게 될겁니다. storage에 플레이어 uuid를 넣고, 그걸 빼는 방식으로 개선해보세요.
elda
2022.11.17그렇게 하려고 해도 이게 서버에 저만 있는게 아니라 모든 유저가 다 명령어를 사용할 수 있어야하니까 유저별로 데이터를 각각 저장해서 필요할 때 불러와야 하는데 어떻게 해야할지 모르겠습니다
코코냐
2022.11.17플레이어 uuid는 유저마다 다릅니다.
elda
2022.11.17그건 아는데요 그러면 스토리지에서 명령어를 사용한 플레이어의 uuid에 해당하는 데이터를 찾아서 불러와야 하는데 그걸 어떻게해야 할까요?
코코냐
2022.11.17보통 바로 UUID로 박혀있는걸로 알고있습니다.
Ba_koD
2022.11.20sethome쪽은 아머스탠드 name이 잘들어갔다면 문제없어보이는데 home쪽문제 아닐까요? 개별적으로하면 또작동하다가 둘이 합치다가 문제가 생겼다거나
yusin12
2023.02.28스코어 보드 dummy 를 하나 더 만들어구!
y좌표 1000말구 플레이어 위치에 소환하게 해요!
trigger sethome을 입력하면
dummy도 같이 1점! 올라가게 해요!
그 뒤에 소환된 아머스탠드에! 임시로 tag를 붙인 다음에!
tag를 가진 아머스탠드와 dummy의 값을 같게 해요!
tag를 사진 아머스탠드기준으로 가장 가까운 플레이어에게 dummy와 같은 점수를 가지게 해요!
그 뒤에 tag를 가진 아머스탠드가 dummy의 점수가 1.. 이상이라면 임시로 줬던 tag를 삭제하게해요!
그리구 /trigger home을 치면! 플레이어에 dummy값과 아머스탠드에 dummy같이 같으면 플레이어가 그 아머스탠드로 tp되게 하면 될꺼같아요!!
dogpower
2024.02.15어짜피 혼자만 하는 맵이 아닌 이상 모드서버면 셋홈 모드를 넣거나, 플러그인이 가능한 버킷 서버(페이퍼, 크래프트 버킷, 폴리아, 스피갓 등등)면 셋 홈 플러그인(보통 에센셜로 많이 씁)을 넣는걸 추천합니다. 마인크래프트 공식 버킷이면 버킷 종류나 버전 바꾸는거 쉬우니까 검색해서 바꿔서 셋홈 플러그인을 넣는걸 추천합니다