추천하는 방식은 아닙니다만.. DDang_님이 알려주신 애드온으로 안된다면 [skript-reflect]로 구현 할 수 도 있긴합니다.
reflect 애드온 추가 한 뒤 아래의 코드를 작성하시면 됩니다.
먼저 reflect로 구현한 커스텀 이벤트와 익스프레션입니다.
# file name is _reflect.sk
import:
org.bukkit.event.player.PlayerAdvancementDoneEvent
on PlayerAdvancementDoneEvent:
set {_type::player} to event.getPlayer()
set {_type::location} to event.getPlayer().getLocation()
set {_type::world} to event.getPlayer().getWorld()
set {_data::namespaced_key} to event.getAdvancement().getKey().asString()
set {_event} to new custom event "PlayerAdvancementDoneEvent" with {_type::*} data {_data::*}
call {_event}
event "PlayerAdvancementDoneEvent":
pattern: advancement (complete|done)
event-values: player, location, world
expression [event-]advancement[[ namespace] key]:
return type: text
usable in:
custom event "PlayerAdvancementDoneEvent"
get:
return event.getData("namespaced_key")
이 reflect 코드는 수정없이 복사 + 붙여넣기로 가져가시면 됩니다.
주의하실 부분은 reflect로 구현된 코드가 사용된 코드보다 먼저 서버에 로드되어야 합니다.
한 파일에 작성할 시 reflect 코드를 위에, 사용된 코드를 아래에 배치해야합니다.
reflect 코드를 다른 파일에 저장 할 경우는
파일을 읽는 순서가 문자(특수문자 > 숫자 > a-z > 가-힣) 순서대로 로드 한 후, 하위 폴더를 읽기 때문에
파일 이름의 첫글자에 특수문자를 추가하여 가장 먼저 로드 되게 하거나,
구현된 코드를 사용한 스크립트를 폴더에 넣어 나중에 로드되로록 세팅하셔야 합니다.
# @reflect event - advancement complete
on advancement complete:
advancement is "minecraft:story/smelt_iron"
send "철이 철철 넘쳐 발전과제 완료!"
DDang_
2021.07.12Addon - AdvancementsAddon | skUnity Forums
스크립터브혼
2021.07.13추천하는 방식은 아닙니다만.. DDang_님이 알려주신 애드온으로 안된다면 [skript-reflect]로 구현 할 수 도 있긴합니다.
reflect 애드온 추가 한 뒤 아래의 코드를 작성하시면 됩니다.
먼저 reflect로 구현한 커스텀 이벤트와 익스프레션입니다.
이 reflect 코드는 수정없이 복사 + 붙여넣기로 가져가시면 됩니다.
주의하실 부분은 reflect로 구현된 코드가 사용된 코드보다 먼저 서버에 로드되어야 합니다.
한 파일에 작성할 시 reflect 코드를 위에, 사용된 코드를 아래에 배치해야합니다.
reflect 코드를 다른 파일에 저장 할 경우는
파일을 읽는 순서가 문자(특수문자 > 숫자 > a-z > 가-힣) 순서대로 로드 한 후, 하위 폴더를 읽기 때문에
파일 이름의 첫글자에 특수문자를 추가하여 가장 먼저 로드 되게 하거나,
구현된 코드를 사용한 스크립트를 폴더에 넣어 나중에 로드되로록 세팅하셔야 합니다.
구현된 커스텀 이벤트와 익스프레션은 이렇게 사용됩니다.
event-advancement는 완료한 도전과제의 NamespacedKey를 글자로 반환합니다.
도전과제 NamespacedKey는 [Advancement Wiki]를 참고하세요.
jjambbong0209
2021.07.13감사합니다