개인 자료란 (JE)

  서버 커뮤니티

Profile 프란델 대표칭호 없음

Peurandel 3d3d482e35a54679a3c22d0f505dc661

Profile

강좌 자바 에디션(JE) 커맨드 응용

데이터팩 데이터 관리 테크닉 - 개인 스토리지

2024.03.08 조회 수 499 추천 수 1
게임버전 1.20.x 

글쓰는 시점의 최신 업데이트인, 1.20.4를 기준으로 한다.

또한, 데이터팩 초보가 사용하기엔 적합하지 않으니, 자신의 실력이 정돈되고 더 나은 코드를 작성하기 위해 보는 것이 아니라면

뒤로가기를 눌러주길 바란다.



개인 스토리지란?

storage uuid:<hex UUID>로, 엔티티의 헥사 UUID를 이용해 해당 개체 전용의 스토리지를 생성하는 것이다.

상당히 여러 방면에서 사용할 수 있으므로 (본인 같은 경우, 개인 창고용으로) 알아두면 좋다.


1.20.4에선 이전 버전과 달리 커스텀 월드를 생성해야한다.

개인 추천인 Void 유형의 커스텀 월드를 미리 만들어 놓자. 또한 해당 커스텀 월드의 0 0 0 좌표에 상자류 블럭이 있으며 그 안엔 container.0에 아무 아이템이나 있다.

해당 청크는 무한 로딩하게 세팅한다.


1. 헥사 UUID 추출 방법


UUID를 단순히 진수 변환 방식으로 바꿀 수도 있겠지만, 매우 비효율적이다.

그렇다면 우린 마크 자체에서 제공하는 UUID 추출기를 사용해야한다.



           { 

             "function": "minecraft:set_name"

             "entity": "this",

              "name": { 

               "selector": "@s"

              } 

           }

이런식으로 item_modifier 를 작성한 후에, /loot give @s loot <namespace>:<filename> 명령을 이용한다면 자신의 닉네임 및 헥사 UUID을 쉽게 얻어낼 수 있는데, 오로지 커맨드 실행자가 플레이어가 아닌 그외 엔티티만 작동한다.

이 문제 때문에 우리는 하이브리드로 두 종류의 함수를 작성해야한다.


2. 플레이어 추출기

플레이어의 UUID 추출하는 방식은 다음 과정을 거친다.

미리 생성해둔 커스텀 월드에 마커를 소환 -> 마커의 4개 정수 UUID를 플레이어의 4개 정수 UUID와 일치시킴 -> item_modifier로 해당 마커의 hex UUID를 추출함


우선 storage this:nbt_player nbt.UUID 경로에 플레이어의 4개 정수 UUID를 박아넣는 작업을 거쳐야한다.

그 뒤,

execute as Player in minecraft:(YOUROWNWORLD) run function skript:player1 with storage this:nbt_player nbt


#function skript:player1

$summon marker 0 1 0 {UUID:$(UUID),Tags:[marker.uuid]}

execute as @e[tag=marker.uuid] run function skript:player2

kill @e[tag=marker.uuid]


#function skript:player2

item modify block 0 0 0 container.0 ironman:uuid

function skript:loot_uuid with block 0 0 0 Items[0].tag.display


3. 그외 엔티티 추출

엔티티 추출은 플레이어 추출과 달리 개인 월드를 거치는 과정이 필요가 없다.

function skript:entity

item modify block 0 0 0 container.0 ironman:uuid

function ironman:uuid/loot_uuid with block 0 0 0 Items[0].tag.display


3. 최종 입력

function skript:loot_uuid

$data merge storage uuid:output {Text:$(Name)}



4. 추출

data modify storage your:storage nbt.UUID set from storage uuid:output Text.insertion 

를 통해 storage your:storage nbt.UUID에 헥사 UUID를 가져올 수 있다.



--- 수정 2024-03-10 ---

글 형식을 약간 수정했습니다.

loot insert보다 item modifier가 더 최적화가 잘 되어 바꿨습니다.





Warning
댓글이 없습니다.

새로운 댓글을 등록해 주세요!

뉴스 및 창작물
/files/thumbnails/317/150/004/262x150.crop.jpg?20260110144415

건축

광화문 구 경기도청사(1988)

KHC

2026-01-10

2

/files/thumbnails/144/149/004/262x150.crop.jpg?20260107110106

상품

《레고 마인크래프트 비주얼 딕셔너리》 출간!

다코미

2026-01-07

0

/files/thumbnails/384/148/004/262x150.crop.jpg?20260105141940

상품

《레고 마인크래프트 게임 아이디어 북》 출간!

다코미

2026-01-05

0

/files/thumbnails/018/142/004/262x150.crop.jpg?20251218163950

건축

마인크래프트 우주 수영장 [무료 다운로드]

SHALDOPlus

2025-12-18

0

/files/thumbnails/365/141/004/262x150.crop.jpg?20251215140757

상품

《마인크래프트 축제 아이디어 북》 출간!

다코미

2025-12-15

0

/files/thumbnails/358/140/004/262x150.crop.jpg?20251212154044

건축

보라빛 ♡

SHALDOPlus

2025-12-12

0