마인크래프트 플러그인 개발해보기 [10] - 광물 알람 플러그인 만들기
마인크래프트의 멀티서버를 즐겨하시는 분들이라면 ,
위 사진과 같이 유저가 광물을 발견했다는 메시지를 보신 경험이 있으실 겁니다.
광물을 발견했다는 메시지를 띄워 모든 유저들이 보게함으로,
땅 속 모든 광물을 볼 수 있는 엑스레이의 사용을 방지하는 효과도 있는
광물 알람 플러그인을 직접 만들어 보겠습니다.
import org.bukkit.Bukkit;
import org.bukkit.block.Block;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
public class Alarm implements Listener {
@EventHandler
public void onBreak(BlockBreakEvent e){
String player = e.getPlayer().getName();
Block block = e.getBlock();
Bukkit.getServer().broadcastMessage(player + " " + block.toString());
}
}
먼저, 유저가 부순 블럭을 메시지로 띄우는 것부터 시작했습니다.
String player = e.getPlayer().getName(); -> 블럭을 부순 플레이어의 이름을 player 라는 변수에 저장합니다.
Material block = e.getBlock().getType(); -> 부순 블럭의 타입을 block이라는 변수에 저장합니다.
broadcastMessage() 메서드는 해당 메시지를 서버에 접속한 모든 플레이어에게 보냅니다.
플레이어의 이름과 부순 블럭을 한줄로 출력하도록 하였습니다.
여기까지 적용한 결과입니다.
플레이어의 이름은 제대로 나오지만, 블럭이 제대로 출력되지 않고 있습니다.
자세히 보니 블럭의 타입부터, 블럭의 좌표 등등 블럭의 모든 데이터가 출력되고 있습니다.
우리가 출력할건 블럭의 type이기 때문에 코드를 아래와 같이 수정했습니다.
public void onBreak(BlockBreakEvent e){
String player = e.getPlayer().getName();
Material block = e.getBlock().getType();
Bukkit.getServer().broadcastMessage(player + " " + block.toString());
}
e.getBlock() 은 블럭의 모든 데이터를 대상으로 한다는 것을 알았고, .getType()을 붙여 타입만 출력되도록 해보겠습니다.
성공적으로 출력이 됩니다.
이제 조건문을 추가하여 광물을 부술때만 메시지를 출력하면 될 것 같습니다.
다음 글에서 이어서 하겠습니다!
'연습장 > Minecraft Plugin' 카테고리의 다른 글
마인크래프트 플러그인 개발해보기 [12] - 광물 알람 플러그인 만들기 (3) (0) | 2023.08.04 |
---|---|
마인크래프트 플러그인 개발해보기 [11] - 광물 알람 플러그인 만들기 (2) (0) | 2023.08.04 |
마인크래프트 플러그인 개발해보기 [9] - 서버 접속 알림 설정하기 (0) | 2023.08.03 |
마인크래프트 플러그인 개발해보기 [8] - motd , 서버 아이콘 , 인원 설정 (0) | 2023.08.01 |
마인크래프트 플러그인 개발해보기 [7] - 엔티티 태우기 (0) | 2023.07.27 |