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


유틸

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

Skywolf46 23 일 전 조회 수 81 추천 수 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개의 댓글

친절한젤리봇
22 일 전

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

Skywolf46
22 일 전
@친절한젤리봇

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

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

친절한젤리봇
22 일 전
@Skywolf46

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

DDang_
22 일 전

감사합니다

고급 자료실

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

마인크래프트 버전
API 종속성


 

 

개발자 최신글
사진이 없습니다.

프로그래밍 일반

c언어 힙정렬 질문.. 2

배고픈상어-효묘

2020-02-17

0

사진이 없습니다.

프로그래밍 일반

파이썬 질문이여 1

레도

2020-02-16

0