개인 자료란 (JE)

  서버 커뮤니티

Profile Skywolf46 대표칭호 없음
Profile

커뮤니티 소통 개발하기 유틸

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

2020.01.25 조회 수 234 추천 수 1

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개의 댓글

윈초
2020.01.25

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

Skywolf46
2020.01.26
@윈초

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

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

윈초
2020.01.26
@Skywolf46

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

DDang_
2020.01.26

감사합니다

뉴스 및 창작물
/files/thumbnails/520/751/003/262x150.crop.jpg?20240328020349

레드스톤

마인크래프트 노트블록으로 만든 『 Bling‐Bang‐Bang‐Born 』 1

Sonttukk

2024-03-23

1

/files/thumbnails/467/742/003/262x150.crop.jpg?20240311163123

레드스톤

[노트블럭커버] MILGRAM -ミルグラム(밀그램)- / 아마네 「숙청 행진」 제 2심 2

리비온

2024-03-11

0

/files/thumbnails/846/741/003/262x150.crop.jpg?20240310221214

레드스톤

워든 vs 라마 200마리 1

GlassesFilm

2024-03-10

0

/files/thumbnails/542/739/003/262x150.crop.jpg?20240309070457

레드스톤

[고인의 명복을 빕니다][노트블럭]드래곤볼 GT 오프닝 - 점점 마음이 끌려

리비온

2024-03-09

0

/files/thumbnails/326/738/003/262x150.crop.jpg?20240328020414

레드스톤

마인크래프트 노트블록으로 만든 『 Build Our Machine 』

Sonttukk

2024-03-07

0