분야 | 플러그인 |
---|---|
게임버전 | 모든버전 |
여러분 안녕하세요! 새해 복 많이 받으세요! m(_ _)m !오늘 할 강좌는 칼 우클릭 시 화염구를 발사하도록 만들어 보겠습니다.
0.새 프로젝트 생성
먼저 새 프로젝트를 만들어 주도록 합니다.
File -> New -> JavaProject -> 프로젝트 이름 설정 뒤 Finish -> 스피곳 Build Path하기(모르시는 분은 2강 참조) -> 패키지, 클래스 생성
저는 패키지 이름을 test이라고 하고 클래스 이름을 Main이라고 하겠습니다.
1.코드 적기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | package test;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Fireball; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent;
public class Main extends JavaPlugin implements Listener{
@Override public void onEnable() { System.out.println("TEST PLUGIN"); System.out.println("PLUGIN IS ACTIVATED"); Bukkit.getPluginManager().registerEvents(this, this); } @Override public void onDisable() { System.out.println("PLUGIN DISACTIVATED"); }
@EventHandler public void rightClick1(PlayerInteractEvent e) { Player p = e.getPlayer(); Action a = e.getAction();
if(a == Action.RIGHT_CLICK_AIR) { if(p.getItemInHand().getType() == Material.IRON_SWORD) { Fireball fb = p.launchProjectile(Fireball.class); fb.setVelocity(p.getLocation().getDirection().multiply(5)); } } } } | cs |
2.코드 해석
이번 코드에는 별로 어려운 것이 없습니다.
일단 onEnable과 onDisable은 넘어가겠습니다.
이번 이벤트는 플레이어가 동작 할 때 생기는 이벤트입니다.
Player p = e.getPlayer();
Action a = e.getAction();
위의 두개는 플레이어와 액션을 각각 지정해 준 것입니다.
if(a == Action.RIGHT_CLICK_AIR)
요것은 만약에 플레이어가 지정해준 아이템을 우클릭을 하였을 때를 말합니다.
if(p.getItemInHand().getType() == Material.IRON_SWORD)
아까 플레이어를 p로 정의 하였습니다.
그러면 Player = p 가 되겠습니다.
그래서 플레이어가 들고 있는 아이템의 값을 받아서 그것이 만약 철 칼이라면 이라는 뜻이 되겠습니다.
Fireball fb = p.launchProjectile(Fireball.class);
fb.setVelocity(p.getLocation().getDirection().multiply(5));
요 구문은 쉽게 설명하자면 화염구를 fb라 정의 하였고 버킷에 Fireball.class 파일이 있습니다.
그 파일을 사용하겠다고 정의 한 후 그 화염구를 어디로 쏠지 정의 해주는 구문이라고 생각하시면 될 것 같습니다.
3. plugin.yml 작성하기
자, 이제 마지막 단계입니다.
프로젝트 우클릭 -> New -> File-> plugin.yml입력하고 엔터
name: test
version: 1.0
main: test.Main
저는 플러그인에 설명을 쓰지 않도록 하겠습니다.
다른것은 몰라도 main은 패키지 이름.클래스 이름이라고 써주셔야 하고 commands에는 꼭 커맨드 이름에 맞춰서 써주셔야 합니다.
4.Jar Export
이제 마지막 단계인 프로젝트를 내보내도록 하겠습니다.
프로젝트 우클릭 -> Export -> Java 폴더에서 JAR file 선택 후 Next -> 자신의 프로잭트 선택, Jar 파일을 어느 폴더에다가 둘지 설정하기 -> Finish 누르면 끝.
그리고 자신이 만든 프로젝트를 버킷 서버의 plugins 폴더에 넣고 버킷을 실행시켜 줍니다.
콘솔에서 pl이라고 적어서 플러그인이 정상적으로 실행 되는 지 확인하고 게임에서
철 칼이나 여러분이 선택하신 아이템을 들고 하늘이나 땅에 우클릭이나 좌클릭(선택하신 대로) 하셔서 잘 실행 되는지 확인해봅니다.
만약 결과를 보고 싶으시다면 이 링크를 누르시면 됩니다 --------------------------->플러그인 작동 영상
궁금하시거나 안 되는 것들은 댓글에다가 적어주시면 감사하겠습니다:D
오늘도 부족한 제 강좌를 봐주셔서 감사합니다!
틈틈서버부활중
2020.01.25새해복 많이 받으셔요
JSD-ITHAN
2020.01.25트틈 서버부활중님도 새해 복 많이 받으세요!
JSWH77
2020.11.21......틈틈 아닌가요?
윈초
2020.01.25해석을 안해도 이해가 된다아
저도 이렇게 강좌 써보고 싶은데에
DDang_
2020.01.26님아 사랑합니다
JSD-ITHAN
2020.01.26윈초
2020.01.26글쓰는 실력이 ㄷㄷ
+ 플러그인 만드는 실력도 ㄷㄷ
+ 해석하는 실력도 ㄷㄷ
-한마디로 능력자
+ 엄청난 사람!!!
JSD-ITHAN
2020.01.26그정도는 아닌데..하핫..감사합니다!
윈초
2020.01.26(아,,아닌가?ㅋㅋ)
JSD-ITHAN
2020.01.26ㅋㅋㅋㅋㅋㅋㅋ
엠군
2020.01.27코드랑 코드 설명을 색이나 폰트 크기로 구분해서 보다 더 잘 구분이 되었음 좋겠습니다!
* projectile 은 모드에서 밖에 안써봤는데 플긴으로 보니까 신기하네용
JSD-ITHAN
2020.01.27피드백 감사합니다!
DRDTF
2020.02.27부족한 강좌라뇨 너무 좋은강좌에요
아글
2020.06.17PlayerInteractEvent는 무슨 이벤트인가요?
Machinegun
2020.10.06혹시 multiply(5)가 뭘 뜻하는건지 알수 있나요?
네이첼0821
2020.10.09와 정말 좋은 강의에요
호유
2020.10.19특정이름을 가진 아이템만 가능하게 할수있나요?
Cubicic
2021.06.04이거 if(p.getItemInHand().getType() == Material.IRON_SWORD) 에서 getItemInHand()에 줄이 쳐지는데 왜이런가요?