개인 자료란 (JE)

  서버 커뮤니티

Profile 눈샘 대표칭호 없음

Nun_saem 1a94a50033f242cea79056282d346f86

Profile

질문하기 Java

중첩된 맵 안에 저장된 Itemstack 저장하는 법

2024.06.09 조회 수 77 추천 수 0
이해도 입문자 
게임버전 (JE) 관련없음 
게임버전 (BE) 관련없음 

static Map<String, Map<Integer, Map<Integer,Object>>> shopdata;

여기 Object에 ItemStack 저장합니다.


저장할 때는 이 코드를 사용하고

try (FileOutputStream fos = new FileOutputStream(Shop);
     OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8)){
    Yaml yaml = new Yaml();
    yaml.dump(shopdata, osw);
} catch (IOException e) {
    e.printStackTrace();
}

로드할 때는

try (FileInputStream fis = new FileInputStream(Shop);
     InputStreamReader isr = new InputStreamReader(fis, StandardCharsets.UTF_8)) {
    Yaml yaml = new Yaml();
    shopdata = yaml.load(isr);

} catch (IOException e) {
    e.printStackTrace();
}

if (shopdata==null){
    shopdata = new HashMap<>();
}

이 코드를 사용합니다. 저장할 때는 괜찮은데, 

로드만 하면 

2024-06-08-42.log

이런 오류 발생하면서 Shop 의 내용물 또한 날아가고 shopdata에 데이터가 들어가지도 않습니다.

아무래도 ItemStack를 불러오는 데에서 오류가 나는 것 같은데, 어떻게 하면 이 오류를 해결할 수 있을까 싶어 올려봅니다.


nms 관련은 아니라 크게 상관은 없을 것 같지만 Paper를 사용하고 있고 마인크래프트 버전은 1.20.6 기준입니다.




6개의 댓글

노을넴
2024.06.09

굳이 ItemStack을 yaml로 저장해야 할 필요가 있나욘?

눈샘
2024.06.09
@노을넴

딱히 없어요! 다른 방법을 몰라서 이러는거라 ㅠㅠ 쉬운 방법 있으면 좋죠!

노을넴
2024.06.09
@눈샘

그러면 NBT로 저장해보세욘

눈샘
2024.06.09
@노을넴

아 itemstack 대신 nbt 를 저장하라는 의미에요?

노을넴
2024.06.09
@눈샘

itemstack의 nbt를 저장하라는 뜻이에욘

눈샘
2024.06.09
@노을넴

넵 감사합니다!