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


API or 라이브러리

쉽게 명령어를 추가하자 - EzFramework

KingCjy 12 일 전 조회 수 95 추천 수 3
마인크래프트 버전 모두,1.5.2계열,1.8계열,1.12계열,1.15계열 
API 종속성 Bukkit,Spigot 

Ezframework

Download Maven Central Build Status License

Ezframework는 Bukkit에서 사용할 수 있는 IOC 기반 커맨드 프레임워크입니다.

사용 방법

Maven

io.github.kingcjyezframework-core1.1.1org.apache.maven.pluginsmaven-compiler-plugin1.8
                1.8-parameters

Gradle

dependencies {
    implementation 'io.github.kingcjy:ezframework-core:1.1.1'
}

compileJava.options.compilerArgs = ['-parameters']

초기화

class Main extends JavaPlugin {
    @Override
    public void onEnable() {
        EzFramework.run(this);
    }
}

커맨드 추가


@EzCommand("message")
public class MessageCommand {

// /message 
    @Command("")
    public void broadcastMessage(@PathVariable String message) {
        Bukkit.broadcastMessage(message);
    }

// /message 
    @Command("")
    public void messageToPlayer(@PathVariable String playerName, @PathVariable String message) {
        Player player = Bukkit.getPlayer(playerName);

        if(player != null) {
            player.sendMessage(message);
        }
    }
}

명령어 오류

command: /message

@EzCommand("message")
public class Send {
    @NotFound
    public void notFound(@Sender Player player) {
        player.sendMessage("[Server] -----------------------");
        player.sendMessage("[Server] /message ");
        player.sendMessage("[Server] /message ");
        player.sendMessage("[Server] -----------------------");
    }
    ...
}

파라미터 추가

@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface Sender {
}

@Component
public class SenderMethodParameterProvider implements HandlerMethodParameterProvider {
    @Override
    public boolean supportsParameter(MethodParameter parameter) {
        return parameter.getParameterAnnotation(Sender.class) != null && parameter.getParameterType().equals(Player.class);
    }

    @Override
    public Object resolveParameter(CommandArgs commandArgs, MethodParameter parameter) {
        Player player = (Player) commandArgs.getCommandSender();
        return player;
    }
}

@EzCommand("message")
public class Send {
    @Command("help")
    public void sendMessage(@Sender Player player) {
        player.sendMessage("[Server] -----------------------");
        player.sendMessage("[Server] /message ");
        player.sendMessage("[Server] /message ");
        player.sendMessage("[Server] -----------------------");
    }
    ...
}

기본 제공 파라미터

@Command("")
public void onCommand(CommandArgs commandArgs, CommandSender commandSender, Command command, @PathVariable String placeholder) {

}

@PathVariable

@Command("message send ")
public void sendMessage(@PathVariable String playerName, @PathVariable String message)

@PathVariable 은 공백 단위로 파라미터가 주입됩니다. 예시) /message send KingCjy hi -> playerName: KingCjy, message: hi

하지만 마지막 placeholdermessage 는 공백을 무시합니다. 예시) /message send KingCjy hi my name is KingCjy ->playerName: KingCjy, message: hi my name is KingCjy

이벤트 등록

@EzEvent 어노테이션을 붙이면 자동으로 이벤트에 등록됩니다.

getServer().getPluginManager().registerEvents(Listener listener, JavaPlugin javaplugin);를 대신 합니다.

@EzEvent
public class JoinEvent implements Listener {

    @EventHandler
    public void onPlayerJoin(PlayerJoinEvent event) {
        Player player = event.getPlayer();
        player.sendMessage("[TestPlugin]: 환영합니다!");
    }
}

Help 명령어 자동생성

@GenerateHelpCommand, @Description

@GenerateHelpCommand
@EzCommand("message")
public class MessageCommand {
    @Command("send ")
    @Description("플레이어에게 메세지를 보냅니다.")
    public void messageToPlayer(@PathVariable String playerName, @PathVariable String message) {
        Player player = Bukkit.getPlayer(playerName);

        if(player != null) {
            player.sendMessage(message);
        }
    }

    @Command("broadcast ")
    @Description("플레이어 전체에게 메세지를 보냅니다.")
    public void broadcastMessage(@PathVariable String message) {
        Bukkit.broadcastMessage(message);
    }
}

기본 메세지

/message help

-------- [EzFramework] --------
/message send  - 플레이어에게 메세지를 보냅니다.
/message broadcast  - 플레이어 전체에게 메세지를 보냅니다.
-------------------------------

메세지 커스텀

resource/me/kingcjy/ezframework/resource/help.ez 추가

default

-------- [EzFramework] --------§3{help.command} - {help.description}
-------------------------------

커스텀


-------------------------------
-------- [내 플러그인!!] ---------
§3{help.command} - {help.description}

-------------------------------

결과

-------------------------------
-------- [내 플러그인!!] ---------
/message send  - 플레이어에게 메세지를 보냅니다.
/message broadcast  - 플레이어 전체에게 메세지를 보냅니다.
-------------------------------

사용 예제

예제 >> GITHUB

 

 



3개의 댓글

DDang_
12 일 전

감사합니다

친절한젤리봇
12 일 전

감사합니다~

아이스틴
12 일 전

쉽.,쿤효!

고급 자료실

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

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


 

 

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

프로그래밍 일반

c언어 힙정렬 질문.. 2

배고픈상어-효묘

2020-02-17

0

사진이 없습니다.

프로그래밍 일반

파이썬 질문이여 1

레도

2020-02-16

0