개인 자료란 (JE)

  서버 커뮤니티

Profile JSD-ITHAN 대표칭호 없음
Profile

강좌 자바 에디션(JE) 플러그인 개발

[3강]마인크래프트 플러그인 개발하기 - 날씨 바꾸기

2020.01.21 조회 수 1244 추천 수 4
분야 플러그인 
게임버전 모든버전 

a8fedec2611886138403570a0e36be01.png


안녕하세요! 오늘은 마인크래프트 플러그인 개발하기 3강으로 돌아왔습니다.

평소에 마인크래프트에서 날씨를 바꾸려면 "/weather clear", "/weather rain"등을 입력해야 하는 데 너무 귀찮습니다.

그래서 명령어를 만들도록 하겠습니다.

0.새 프로젝트 생성

먼저 새 프로젝트를 만들어 주도록 합니다. 

File -> New -> JavaProject ->  프로젝트 이름 설정 뒤 Finish -> 스피곳 Build Path하기(모르시는 분은 2강 참조) -> 패키지, 클래스 생성 

저는 패키지 이름을 changeweather이라고 하고 클래스 이름을 Main이라고 하겠습니다.


1.코드 적기

package changeweather;

import org.bukkit.ChatColor;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {
   public boolean onCommand(CommandSender sender, Command cmd, String s, String[] a) {
      Player player = (Player) sender;
      if(cmd.getName().equalsIgnoreCase("w")) {
            if(0 < a.length) {
                World world = player.getWorld();
                if(a[0].equalsIgnoreCase("Sun")) {
                    world.setStorm(false);
                    world.setThundering(false);
                } else if(a[0].equalsIgnoreCase("rain")) {
                    world.setStorm(true);
                    world.setThundering(false);
                } else if(a[0].equalsIgnoreCase("storm")) {
                    world.setStorm(true);
                    world.setThundering(true);
                } else {
                   player.sendMessage(ChatColor.RED + "날씨를 입력하시오");
                }
           }
       return false;
     }
}



2.코드 해석

자 이제 코드를 해석해 드리겠습니다.

Command Sender와 Command  cmd같은 경우는 2강에서 설명해드렸습니다.

명령하는 자(플레이어 혹은 콘솔 창)

Player은 말그대로 게임 안에서의 플레이어 입니다. World는 플레이어가 있는 월드를 정의 해준 것입니다.


만약 플레이어가 "/w sun"이라고 친다면 맑은 날씨가 됩니다. "sun" 코드에는 world.setStorm과      world.setThundering에 false가 들어가 있습니다. 이 말은 즉 비도 안 오고 천둥도 안 치고, 번개도 안 친다는 말입니다.




그 다음은 플레이어가 "/w rain"이라고 친다면 비가 내린다가 됩니다. "rain"코드에는                                 world.setStorm은 true 지만 world.setThundering은 false라고 되어있습니다.  

이 뜻은 플레이어가 커맨드를 쳤을 때 비와 천둥소리만 나고 번개는 치지 않는다는 것입니다.




마지막으로 플레이어가" /w storm"이라고 친다면 비도 내리고 천둥소리도 나고, 번개도 친다는 것입니다. "storm"코드에는 world.setStorm과 world.setThundering 모두 true입니다. 이때는 아까 말한 것처럼 모든 것이 적용됩니다.




이제  진짜 마지막으로 player.sendMessage(ChatColor.RED + "날씨를 입력하시오");이라는 구문이 있습니다.

이 말은 플레이어가 /w만 치고 날씨를 입력하지 않으면 빨간 글씨로 날씨를 입력하라고 문장을 출력합니다.

3. plugin.yml 작성하기

자, 이제 마지막 단계입니다.

프로젝트 우클릭 -> New -> File-> plugin.yml입력하고 엔터

 
name: ChangeWeather
version: 1.0
main: changeweather.Main
commands:
  w:

저는 플러그인에 설명을 쓰지 않도록 하겠습니다.

다른것은 몰라도 main은 패키지 이름.클래스 이름이라고 써주셔야 하고 commands에는 꼭 커맨드 이름에 맞춰서 써주셔야 합니다.


4.Jar Export

이제 마지막 단계인 프로젝트를 내보내도록 하겠습니다.

프로젝트 우클릭 -> Export -> Java 폴더에서 JAR file 선택 후 Next -> 자신의 프로잭트 선택, Jar 파일을 어느 폴더에다가 둘지 설정하기 -> Finish 누르면 끝.

그리고 자신이 만든 프로젝트를 버킷 서버의 plugins 폴더에 넣고 버킷을 실행시켜 줍니다.

741491c9a3c77cd7f362b03e7807f459.png


콘솔에서 pl이라고 적어서 플러그인이 정상적으로 실행 되는 지 확인하고 게임에서 "/w sun"를 치시거나 " /w rain" , "/w storm"를 치셔서 플러그인이 잘 실행 되는지 확인합니다.

궁금하시거나 안 되는 것들은 댓글에다가 적어주시면 감사하겠습니다:D

오늘도 부족한 제 강좌를 봐주셔서 감사합니다!





12개의 댓글

MinsooM2
2020.01.21

플러그인.. 강좌 최고네요.. 잘볼께요!

JSD-ITHAN
2020.01.21
@MinsooM2

감사합니다!!

MinsooM2
2020.01.22
@JSD-ITHAN

특정 월드를 지정하고싶을때는 어떻게 해야하나요?

JSD-ITHAN
2020.01.22
@MinsooM2

한 번 알아보고 알려드리겠습니다!

JSD-ITHAN
2020.01.23
@MinsooM2

찾아 보았는데 PerWorldPlugin이라는 플러그인이 있더라고요...

그 플러그인을 사용하시면 특정 월드에만 선택한 플러그인을 사용 할 수 있을 겁니다:D

https://dev.bukkit.org/projects/perworldplugins

DDang_
2020.01.22

플러그인 강좌 감사합니다

JSD-ITHAN
2020.01.22
@DDang_

저야 말로 제 강좌를 봐주셔서 감사합니다!!

히리지
2020.01.22

강좌 보기가 너무편안하네요!!!

JSD-ITHAN
2020.01.22
@히리지

앞으로도 보기 편하시고 이해하기 쉽게 강좌를 하겠습니다!!

 

아이스틴
2020.01.22

좋은 강좌 감사합니다~

JSD-ITHAN
2020.01.22
@아이스틴

앞으로도 더 좋은 강좌가 되도록 노력하겠습니다!

 

DRDTF
2020.02.27

좋은강좌감사합니다 보기좋네요

뉴스 및 창작물
/files/thumbnails/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 4

KHC

2024-10-25

2

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

2

/files/thumbnails/219/899/003/262x150.crop.jpg?20241009200950

건축

송전탑+도시 2

dbasd12

2024-10-09

2

/files/thumbnails/246/898/003/262x150.crop.jpg?20241008102328

레드스톤

단다단 - 오토노케(オトノケ) | 마인크래프트 노트블럭 커버

노트블럭전문가

2024-10-08

1

/files/thumbnails/348/896/003/262x150.crop.jpg?20241006103035

디도스/봇테러등등을 낚는 방법 4

물귀신

2024-10-06

3

/files/thumbnails/839/895/003/262x150.crop.jpg?20241006021227

SRV레코드는 보안도메인이 아닙니다. [서버오픈시 필독]

물귀신

2024-10-05

4

/files/thumbnails/648/892/003/262x150.crop.jpg?20241002184058

아티클

마인크래프트 라이브 2024 후기: 무성의가 느껴졌던 '절망편' 라이브

라비

2024-10-02

4