이 게시판에 글을 작성하시려면 인증 개발자 권한이 필요합니다. 언제든지 지원해주세요(바로가기).

유틸

IntegratedMessageUtil / 전버전 호환 메시지/플레이스홀더 관리 유틸

Skywolf46 2020.01.25 조회 수 130 추천 수 1
마인크래프트 버전 모두,1.5.2계열,1.8계열,1.12계열,1.15계열 
API 종속성 Bukkit,Spigot,Paper 

IntegratedMessageUtil은 메시지와 플레이스 홀더를 쉽게 사용하고, 서로 공유해 사용할수 있는 통합 메시지 관리 유틸입니다.


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

작동 확인된 버킷:

- Spigot (1.11,1.12 Tested)


사용 방법

1. 마지막 안정 빌드를 내려받습니다. (현재 빌드: [1.0](https://github.com/milkyway0308/IntegratedMessageUtil/releases/tag/1.0))

2. 다운로드 받은 플러그인을 참조(디펜덴시) 목록에 추가합니다.

3. plugin.yml의 softdepend 목록에 IntegratedMessageUtil을 추가합니다.

4. 서버 플러그인 폴더에 완성된 플러그인과 IntegratedMessageUtil의 마지막 빌드를 넣어야 합니다.
   IntegratedMessageUtil은 API가 아닌 라이브러리 플러그인이기 때문에, 플러그인 형식으로 동작합니다.

사용 예제

public class MainClass extends JavaPlugin {
   
 @Override
 public void onLoad(){
     // <>식의 플레이스 홀더 등록
     // 플레이스 홀더는 반드시 onLoad에서 등록되어야만 합니다.
     PlaceHolderStorage phs = IntegratedMessageUtil.getHolderStorage('<','>');
     // 플레이스 홀더 <testHolder> 등록 
     phs.registerPlaceHolder("testHolder",new TestPlayerNameHolder());
     // 플레이스 홀더 <testHolder2> 등록
     phs.registerPlaceHolder("testHolder2",new TestHelloWorldHolder());
 }
 
 @Override
 public void onEnable(){
     // 문장 등록 예제.
     // 부분은 강제되는 부분이 아니지만, 원하신다면 사용할 수 있습니다.
     File file = new File(getDataFolder(), "message.yml");
     // 파일에서 문장을 불러옵니다.
     PreparsedSentenceStorage storage = IntegratedMessageUtil.loadSentenceStorage("TestPlugin", file);
     // 문장은  PreparsedDataSentence 혹은 String 파라미터로 등록할 수 있습니다.
     // 두가지 방법은 내부적으로 완전히 같게 동작하지만, 원하시는 방법으로 사용할수 있습니다.
     storage.addSentenceIfnotExists("HELLO_WORLD", "Hello, <testHolder2>!");
     storage.addSentenceIfnotExists("HELLO_PLAYER", new PreparsedDataSentence("Hello, <testHolder>!"));
     // 만약 저장이 필요하다면, 저장합니다.
     if(storage.isRequireSave())
         storage.writeToFile(file);
     // 문장을 가져온 다음,
     PreparsedDataSentence sent = IntegratedMessageUtil.getSentence("TestPlugin","HELLO_WORLD");
     // 출력합니다.
     Bukkit.getConsoleSender().sendMessage(
             sent.toString(
                     // 플레이어 관련 플레이스 홀더를 사용하려면 이 메서드의 파라미터에 Player 객체를 넣어야 합니다.
                     ParameterWrapper.of()
             )
     );
 }
 
 public class TestPlayerNameHolder implements IPlaceHolder {
     @Override
     public String replaceHolder(ParameterWrapper param) {
         // 플레이스 홀더 재배치 부분입니다.
         // 만약 플레이어 객체가 존재하지 않는다면,
         // "재배치되지 않음"을 알리기 위해 플레이스 홀더의 이름을 반환하는것이 좋습니다.
         if(param.getParameter(Player.class) == null)
             return "<testHolder>";
          return param.getParameter(Player.class).getName();
     }
     
      @Override
      public IPlaceHolder getWrappedHolder(String s) {
         // 메서드에서는 플레이스 홀더의 인스턴스를 반환해야 합니다.
         // 파라미터 's'는 입력된 플레이스 홀더의 전체 부분입니다.
         // 만약 "<testHolder:15>"식으로 플레이스 홀더를 입력했을 경우,
         // 파라미터 's'는 "testHolder:15"의 값을 가지게 됩니다.
         return new TestPlayerNameHolder();
      }
 }
 
     
 public class TestHelloWorldHolder implements IPlaceHolder {
     @Override
     public String replaceHolder(ParameterWrapper param) {
          return "World";
     }
     
      @Override
      public IPlaceHolder getWrappedHolder(String s) {
         // 메서드에서는 플레이스 홀더의 인스턴스를 반환해야 합니다.
         // 파라미터 's'는 입력된 플레이스 홀더의 전체 부분입니다.
         // 만약 "<testHolder2:15>"식으로 플레이스 홀더를 입력했을 경우,
         // 파라미터 's'는 "testHolder2:15"의 값을 가지게 됩니다.
         return new TestHelloWorldHolder();
      }
 }
}

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


1.0 Release

  • 기능 안정화 완료.


4개의 댓글

DDang_
2020.01.26

감사합니다

WintChoco
2020.01.25

플레이어 관리 플러그인 이군요!

Skywolf46
2020.01.26
@WintChoco

아닙니다, 메시지 관리 유틸리티입니다.

플레이스 홀더 관리와 메시지 관리를 용이하게 만드는것인 라이브러리 플러그인입니다 :)

WintChoco
2020.01.26
@Skywolf46

앗! 그렇군요 한번 써봐야겠어요

고급 자료실

인증 개발자 분들이 창작하신 고급 자료들을 만나보실 수 있습니다!

마인크래프트 버전
API 종속성
조회 수 제목 글쓴이
1759 [1] [뉴플래닛] 유저와 함께 성장하는 서버, 그곳에는 저희가 있습니다! 14 루타카
696 [2] [HK] 마인크래프트 개발 디스코드 - 컨텐츠를 만들고 서버 어드민이 되어보자! 5 DC
356 [3] [베개서버] [신생] 인생약탈 서버가 상위버전에서 활보 중이라구요? 2 오리야
68 모델링 공방 : 커뮤니티 개편 기념 공모전 개최!! U 박동백
863 새로워진 한마포 창작자로 수익과 함께 활동해보세요! 10 U 프리루트
269 유저 커뮤니티 개설 신청을 다시 받기 시작했습니다! 6 U 프리루트
745 일부 SNS 로그인 지원 중단 및 안내 가이드 (카카오, 트위터) 14 프리루트
850 한디포 이용 가이드! 처음 온 분은 읽어둡시다! 20 초스터
658 한디포 이용 규칙 25 초스터
701 한마포 AD : 새로운 게시판 공지 광고 안내 7 프리루트
381 [유틸] [1.12.2] 간편 버킷 실행기 1 레도
339 [유틸] [1.15.2] 간편 버킷 실행기 2 레도
332 [플러그인] TrafficLogger 1.0 / 서버 트래픽을 최적화해봅시다 4 Skywolf46
124 [API or 라이브러리] MCVersions: 마인크래프트 버전 정보 라이브러리 5 HeartPattern
94 [기타] Exhibitionism: 클래스,메서드,필드를 노출시키는 프로그램 2 HeartPattern
192 [API or 라이브러리] CommandAnnotation / 명령어 등록을 더 쉽고 편리하게. 3 Skywolf46
238 [기타] MC-Remapper: 마인크래프트 난독화 제거 툴 5 HeartPattern
196 [API or 라이브러리] 쉽게 명령어를 추가하자 - EzFramework 3 KingCjy
1 [API or 라이브러리] MCVersions: 마인크래프트 버전 정보 라이브러리 HeartPattern
130 [유틸] IntegratedMessageUtil / 전버전 호환 메시지/플레이스홀더 관리 유틸 4 Skywolf46
258 [API or 라이브러리] ReflectedNBTWrapper / 전버전 호환 NBT 라이브러리 10 Skywolf46

개발자 최신글
https://www.koreaminecraft.net/files/thumbnails/647/773/001/262x150.crop.jpg
버그를... 발견한거 같..습니다?

WintChoco

2020-06-05

0

https://www.koreaminecraft.net/files/thumbnails/572/773/001/262x150.crop.jpg

스크린샷

마크하다 예뻐서 찍어봄 ㅇㅅㅇ 2

재협

2020-06-05

0