이해도 | 입문자 |
---|---|
게임버전 (JE) | 1.20.1 |
게임버전 (BE) | 관련없음 |
startupevents로 인벤세이브권과 마을귀환서의 아이템 깡통은 구현했는데, 기능을 넣는 과정에서 코드 작성에 어려움이 있습니다.
원하는 기능은 다음과 같습니다.
인벤세이브권: 소지한 채 사망 시 해당 플레이어의 인벤토리를 확인해서 인벤세이브권이 있으면 1개 차감하여 인벤토리 및 경험치를 보호하고, 안내문구 출력
귀환주문서: 들고 우클릭 시 1개 차감하여 해당 플레이어를 월드스폰으로 텔레포트
현재 작성중인(작동은 하지 않습니다) 코드는 다음과 같습니다.
EntityEvents.death(event => {
let entity = event.entity;
if (entity.isPlayer()) {
let player = entity;
let inventory = player.inventory;
let ticket = inventory.find(Item => Item.id == 'kubejs:invsaver');
if (ticket) {
event.keepInventory = true;
event.keepXP = true;
event.player.tell("인벤보호권이 차감되어 인벤토리 및 경험치가 유지되었습니다.");
// 티켓을 1개 차감
event.item.shrink(1)
}
}});
ItemEvents.rightClicked(event => {
let item = event.item;
// 플레이어가 귀환서를 들고 있는지 확인
if (event.item.id == "kubejs:recallscroll") {
let player = event.player;
let worldSpawn = player.level.getSpawnPoint(); // 월드 스폰 위치 가져오기
// 플레이어를 월드 스폰으로 텔레포트
event.player.teleportTo([0, 0, 0]);
player.tell("귀환주문서를 사용하여 귀환하였습니다.");
// 귀환서를 1개 차감
event.item.shrink(1)
event.cancel(); // 우클릭 이벤트 차단 (기타 동작 방지)
}
});
챗지피티 기반으로 작성했는데, keepInventory나 keepXP등의 명령어(이런걸 뭐라 부르는지 몰라서 일단 명령어라 하겠습니다)가 존재하는건지 모르겠고, probejs를 이용해서 자동완성 기능으로 찾아보려하니 inventory, xp(exp), save같은 키워드로는 뭐가 없더라구요.
원하는 기능을 구현하기 위해서 어떻게 수정해야하는지 알고싶습니다.
windy_wind
2 시간 전이거는 플러그인 구문 같습니다.
스크립트로 하실려면 SKRIPT-REFLECT 쓰는 수 밖에 없을 것 같네요.
근데 정작 그 플러그인을 몰라서 도움 드리기 힘들 것 같습니다..ㅠㅠ
whani
1 시간 전skript나 플러그인은 네오포지에서 못쓰는걸로 알아서...
해당 구문 자체는 kubejs에서 사용되는 예제를 일부 변형한건데, 그 일부 변형하는 과정에서 kubejs 문법에 없는 구문을 작성해서 그렇게 보이신 걸 수 도 있을 것 같습니다