분야 | 플러그인 |
---|---|
게임버전 | 모든버전 |
0.준비 할 것
스피곳 버킷 Build Path 하기
이클립스 프로그램
자바 8 버전(스피곳에서 8버전을 사용해야 안정적임)
1.새 프로젝트 만들기
먼저 1강 처럼 새 프로젝트를 하나 만들어줍니다.
그다음에 프로젝트를 우클릭에서 BuildPath를 누르시고 Add External Archives를 눌러줍니다. 만약 이렇게 하면 파일을 고르라는 창이 하나 뜰 것입니다. 그 때 스피곳 버킷을 추가 해주시면 됩니다.
https://getbukkit.org/download/spigot
여기서 자신의 마인크래프트 버전에 맞게 스피곳 버킷을 다운로드 해주시면 됩니다.
이클립스에서
프로젝트를 더블클릭 -> src 폴더 우클릭 -> New Package 만들기 -> 자신이 만든 패키지 우클릭 -> Class 만들기를 해주시면 됩니다.
저는 패키지 이름을 test라고 하였고 클래스 이름을 Main이라고 하였습니다. 그래서 코드를 보여 드릴 건데 복사 붙여넣기 하실 분들은 패키지와 클래스 이름을 바꾸시면 될 것 같습니다.
그럼 모든 준비는 다 끝났습니다.
2. 코드 적기
package test; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.plugin.java.JavaPlugin; public class Main extends JavaPlugin{ @Override public void onEnable() { System.out.println("Plugin is Activated"); } @Override public void onDisable() { System.out.println("Plugin is DisActivated"); } @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String [] args) { if(cmd.getName().equalsIgnoreCase("t")) { if(args.length == 0) { sender.sendMessage(ChatColor.RED + "Type the command to execute."); } else if(args[0].equalsIgnoreCase("info")) { sender.sendMessage(ChatColor.YELLOW + "This Plugin is Made By JSD-ITHAN"); } else { sender.sendMessage(ChatColor.RED + "Command is not correct."); } return true; } }
3. 코드 해석
위의 코드를 간단하게 해석 해들겠습니다. 먼저 boolean은 자바에서 논리형으로서, 뒤에 return true/false를 꼭 써주셔야 합니다.
CommandSender sender은 커맨드를 입력한 사람입니다. 이것은 플레이어가 될 수도 있고 콘솔 창도 될 수 있습니다.
Command command cmd는 커맨드를 말하는 것입니다.
그리고 위의 코드는 long command라고 해서 "t" 로 여러가지 명령어를 수행 할 수 있습니다.
예를 들어서 /t info를 쓸 수 있고 명령어를 더 추가해 준다면 "/t 수행할 명령어" 이렇게 여러가지 명령을 수행 할 수 있습니다.
"if(args.length == 0)"은 플레이어가 /t 까지만 입력하고 뒤에 명령을 안 썼다면 빨간색으로 수행할 명령을 입력하라고 플레이어에게 메세지를 보내는 것입니다.
"else if(args[0].equalsIgnoreCase("info"))" 는 /t info라고 쳤을 때 노란색으로 "이 프로그램을 만든 사람은 JSD-ITHAN입니다"라고 영어로 출력해 줍니다.
마지막으로 else는 /t 뒤에 정확한 명령어가 아닌 잘못 된 명령을 입력하였을 때 "명령어가 정확하지 않습니다." 라고 플레이어에게 메세지를 보냅니다.
4.plugin.yml
마지막 단계는 plugin.yml 파일을 만들어야 합니다.
모든 마인크래프트 플러그인에는 plugin.yml 파일이 들어 있어야 합니다. 만약 없다면 실행 시킬 대 invalid plugin.yml이 뜨거나
plugin.yml이 없다고 뜹니다.
프로젝트 우클릭 -> New -> File -> 이름에다가 plugin.yml이라고 적어주시면 됩니다.
먼저 plugin.yml에는 이름, 버전, 메인, 커맨드가 있는 경우는 커맨드까지 써주셔야 합니다. 그리고 Description이라고 설명글을 쓸 수 있는데 여기서 한글을 쓰면 오류가 날 수도 있습니다.
name: TestPlugin version: 1.0 main: test.Main commands: t: description: "About Plugin"
이렇게 써주시면 됩니다. description, name, version에는 마음대로 하시면 됩니다. 하지만 main에는 "패키지이름.클래스이름"
꼭! 이렇게 써주셔야 합니다. 저 같은 경우는 패키지 이름이 test이고 클래스 이름이 Main이기 때문에 test.Main이라고 했습니다.
5.Export Jar
자 이제 모든 것이 끝났습니다.
이제 프로젝트를 Jar 파일로 빼냅시다.
프로젝트 우클릭 -> Export -> Java 폴더에서 JAR file 선택 후 Next -> 자신의 프로잭트 선택, Jar 파일을 어느 폴더에다가 둘지 설정하기 -> Finish 누르면 끝.
그리고 자신이 만든 프로젝트를 버킷 서버의 plugins 폴더에 넣고 버킷을 실행시켜 줍니다.
콘솔에서 pl이라고 적어서 플러그인이 정상적으로 실행 되는 지 확인하고 게임에서 /t info를 치시거나 /t 를 치셔서 플러그인이 잘 실행 되는지 확인합니다.
궁금하시거나 안 되는 것들은 댓글에다가 적어주시면 감사하겠습니다:D
DDang_
2020.01.22감사합니다 선생님
JSD-ITHAN
2020.01.22:D
아이스틴
2020.01.22좀 어렵네요 ㅠㅅㅠ
JSD-ITHAN
2020.01.22음...제가 다음 강좌에서는 쉽게 설명해드리도록 하겠습니닷!
피드백 감사합니다!
아이스틴
2020.01.22처음배워서 어려운것 같아요. 나중에는 익숙해지겠죠!
JSD-ITHAN
2020.01.22그러겠죠! 저도 처음에 어려워서 포기하려고 했던 적 많은데 지금은 많이 익숙해졌어요:D
inecraft_player
2020.02.01그냥 스크립트에 있어야겠다..
JSD-ITHAN
2020.02.01문법은 스크립트가 더 쉽긴 해요...
저도 요즘 스크립트에 빠져 살고 있어요 ㅋㅋㅋ
귤이
2020.02.10코드적기 부분 리턴 위치 잘못되있는거 같아요..!
JSD-ITHAN
2020.03.26어느 부분이요??
DRDTF
2020.02.27어려워보이지만 저도 한번 만들어볼게요
이엘
2020.03.13저는 위에랑 똑같이 적었는데도 왜 안 될까요
JSD-ITHAN
2020.06.08제가 오타가 나서 그럴겁니다 ㅠㅠ
Dreamer_
2020.04.13import 부분 import org.bukkit.commmand.CommandSender; 여기에 오타 있습니다
commmand라 적혀있어요
package test test 뒤에 ;이거 들어가야 하지 않나요??
JSD-ITHAN
2020.06.08수정했습니다
Dreamer_
2020.04.13나중에 IntelliJ이걸로도 해주세요
JSD-ITHAN
2020.04.15알겠습니다~
도개미
2020.06.05특정한 위치에 블럭을 놓는건 어떻게 하나요?
단와시
2020.06.11OnEnable 이 아니라 onEnable 이에엽
그리고 마지막에 있는 } 이거 오류로 뜨던데
김레유
2020.12.17Could not load 'plugins\MSJ.jar' in folder 'plugins'
org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml
at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPluginLoader.java:162) ~[patched_1.16.4.jar:git-Paper-318]
at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:148) ~[patched_1.16.4.jar:git-Paper-318]
at org.bukkit.craftbukkit.v1_16_R3.CraftServer.loadPlugins(CraftServer.java:389) ~[patched_1.16.4.jar:git-Paper-318]
at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:206) ~[patched_1.16.4.jar:git-Paper-318]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:936) ~[patched_1.16.4.jar:git-Paper-318]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:178) ~[patched_1.16.4.jar:git-Paper-318]
at java.lang.Thread.run(Thread.java:832) [?:?]
Caused by: java.io.FileNotFoundException: Jar does not contain plugin.yml
... 7 more
라고 오류가 뜨고 yml파일을 계속 수정하고 모니터링 해봐도 안나오는데 어디가 문제인건가요?ㅠㅠ