개인 자료란 (JE)

  서버 커뮤니티

Profile Skywolf46 대표칭호 없음
Profile

커뮤니티 소통 개발하기 API

ReflectedNBTWrapper / 전버전 호환 NBT 라이브러리

2020.01.09 조회 수 501 추천 수 4

ReflectedNBTWrapper은 리플렉션을 이용해 Spigot/Paper/CraftBukkit 류의 버킷에서 NBT를 쉽게 사용 가능하도록 제작된 라이브러리입니다.

"버킷 기반 모든 버킷"에서 사용이 가능합니다.

작동 확인된 버킷:

- Spigot (1.11,1.12 Tested)

- PaperSpigot (1.7,1.12 Tested)

- CatServerBukkit (1.12 Tested)

- CraftBukkit (1.5.2 Tested)


예제 - 새 NBTCompound 객체 생성하고 값 설정하기

public static ReflectedNBTCompound createSimpleCompound (){ 
  ReflectedNBTCompound comp = new ReflectedNBTCompound(); 
  comp.setValue("TestValue",1); 
  return comp; 
}

예제 - 아이템에 NBT 설정하기


public static ItemStack importTag (ItemStack item){
  ReflectedNBTCompound comp = ItemNBTExtrator.extractOrCreateNBT(item); 
  comp.setValue("TestValue",1); 
  return ItemNBTImporter.importNBT(item,comp); 
}

예제 - 아이템으로부터 NBT 추출하기


public static ReflectedNBTCompound extractAndTest (ItemStack item){ 
  ReflectedNBTCompound comp = ItemNBTExtrator.extractOrCreateNBT(item);
   ReflectedNBTInteger ref = comp.getValue("TestValue"); 
  if(ref.getValue() == 1) 
    System.out.println("Read success");
   return comp; 
}


버전 이름 클릭시 해당 버전으로 리다이렉트됩니다. (깃허브)


1.1.0 Alpha
  • NBT 클래스 상속관계(ReflectedNBTBase) 인터페이스(IReflectedNBTBase)로 변경
  • ReflectedNBTBase의 추상화 제거
  • 클래스 파일 ReflectedNBTBase의 이름을 ReflectedNBTStorage으로 변경
  • ReflectedNBTList에 네이티브 언래핑 기능 추가
1.1.1 Alpha
  • IReflectedNBTCompound#get(String) 추가
  • IReflectedNBTCompound#getNBT(IReflectedNBTBase) 추가
  • IReflectedNBTCompound#set(String,Object) 추가
  • IReflectedNBTCompound#set(String,IReflectedNBTBase) 추기
  • 패키지명 v1_1R1으로 변경
1.1.2 Alpha
  • ReflectedNBTCompound#keyset() 추가
  • 이제 ReflectedNBTList 클래스가 Iterable을 상속합니다.
  • LinearIterator 추가
  • 패키지 이름 v1_1_R2으로 변경
1.1.3 Alpha
  • IReflectedNBTCompound의 상속 안터페이스 IReflectedNBTBase<HashMap<String,Object>>으로 변경
  • IReflectedNBTBase#clear() 추가
  • IReflectedNBTBase#collapse(IReflectedNBTBase) 추가
  • 패키지 이름 v1_1R3으로 변경
1.2 Release
  • Object 메서드를 NBT로 변경해주는 NBTExchanger가 ReflectedNBTStorage 에 추가
  • 패키지 이름 v1_2으로 변경
  • 버전 안정화 완료. 릴리즈로 버전 상태 변경
1.2.1 Release
  • 이제 ReflectedNBTStorage#createReflectedNBT(Object)  파라미터가 IReflectedNBTBase을 상속할 경우 해당 파라미터를 반환합니다.
  • 패키지 이름 v1_2R1으로 변경
1.2.2 Release
  • ReflectedNBTList#add(Object)가 NBT에서 불러와진 직후, 리스트의 객체 개수가 1개 이상일때 CollectionMismatchedException이 발생하는 오류를 해결하였습니다.
  • 패키지 이름 v1_2R2으로 변경
1.2.3 Release
  • ItemNBTImporter.import(ItemStack,ReflectedNBTCompound) 호출시 정수 배열이 내부에 존재할때 오류가 발생하는 오류를 해결해였습니다.
  • 주의하세요!  정수 배열을 삽입한 후 이전 버전의 라이브러리를 사용하는 라이브러리를 사용시 오류가 발생합니다. 
  • 패키지 이름 v1_2R2으로 변경



10개의 댓글

camelCase
2020.01.09

자료실 첫글 축하드립니다!!

프리루트
2020.01.09

오.. 드디어 첫번째 자료글이.. 3년 뒤에 이 글을 보면 무슨 느낌이 들지 궁금하네요 크으..

DDang_
2020.01.09

좋은 글은 추천입니다

Skywolf46
2020.01.09
@DDang_

감사합니다 :)

아이스틴
2020.01.09

한디포 첫 자료글 ㄷㄷ

Skywolf46
2020.01.09
@아이스틴

열렸다길래 바로 와서 번역하고 작성했지요.

DDang_
2020.01.09

"Twenty years from now you will more disappointed by the things that you didn't do than do than by the ones you did do. So throw off the bowlines. Sail away from the safe harbor. Catch the trade winds in your sails. Explore. Dream. Discover."

 

- Mark Twain

지금부터 20살이 지나고 나서의 너는 남들보다 해내지 못한것에 실망할것이다 그러니 돛줄을 풀고 안전한 항구로 부터 나와 너의 무역풍을 잡거라 탐험하고 꿈꾸고 발견해라

 

되게 좋은 글이네요 알아갑니다

Skywolf46
2020.01.09
@DDang_

마인크래프트 엔딩 크래딧에 나오는 문구입니다. :)

DDang_
2020.01.09
@Skywolf46

그런 사실이 있었다니 몰랐네요 ㅇㅂㅇ

윈초
2020.01.11
@Skywolf46

아 그래요?

뉴스 및 창작물
/files/thumbnails/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 4

KHC

2024-10-25

2

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

2

/files/thumbnails/219/899/003/262x150.crop.jpg?20241009200950

건축

송전탑+도시 2

dbasd12

2024-10-09

2

/files/thumbnails/246/898/003/262x150.crop.jpg?20241008102328

레드스톤

단다단 - 오토노케(オトノケ) | 마인크래프트 노트블럭 커버

노트블럭전문가

2024-10-08

1

/files/thumbnails/348/896/003/262x150.crop.jpg?20241006103035

디도스/봇테러등등을 낚는 방법 4

물귀신

2024-10-06

3