강좌를 작성하시기 전에 우수 강좌 제도(바로가기) 를 확인해보세요.

플러그인

플러그인의 PlayerMoveEvent와 스크립트의 on any move를 쓰지않고 걸은 블럭수를 측정해보자!

프리 2020.02.15 조회 수 227 추천 수 1

1. 개요

마인크래프트 플러그인이나 스크립트를 개발할대 있어서 플레이어의 움직임을 감지하는 이벤트인 PlayerMoveEvent는 상당히 많은양의 렉을 초래합니다

그래서 이 이벤트를 사용하지않고 Spigot api의 Statistic 클래스를 이용하여 플레이어가 걸은 블럭수를 측정하는 방법을 알려드리도록하겠습니다

스피갓 공식 소스 홈페이지인 https://hub.spigotmc.org/ 를 참고하여찾았습니다

해당 구문은 Skript-Mirror를 이용하시면 Skript에서도 손쉽게 따라하실 수 있습니다


2. 필요한 클래스


3. 필요한 라이브러리

  • 없음


4. 코드 작성

메소드

public int getWalkBlock(Player player) {
    int totalblock;
    int fly = player.getStatistic(Statistic.valueOf("FLY_ONE_CM"));
    int fall = player.getStatistic(Statistic.valueOf("FALL_ONE_CM"));
    int walk = player.getStatistic(Statistic.valueOf("WALK_ONE_CM"));
    int sneak = player.getStatistic(Statistic.valueOf("SNEAK_ONE_CM"));
    int sprint = player.getStatistic(Statistic.valueOf("SPRINT_ONE_CM"));
    totalblock = fly + fall + walk + sneak + sprint;
    return totalblock/100;
}

플레이어의 전체 블럭수를  측정하는 메소드입니다

fly fall walk sneak sprint 를 전부 더해준이유는 각 통계값이 따로따로 저장되기때문에

전부 더해줘야만 걸은 블럭수가 나오기 때문입니다

또한 마지막 리턴값에 100을 나눠준 이유는 100을 나눠야 "블럭수"로 나오기때문입니다

아마 cm단위까지 측정이 되는듯합니다

이제 해당 메소드를 이용하여 플레이어가 걸은 블럭수를 측정하는 방법에 대해 알아봅시다

대강 눈치채셨죠?


적용

public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
	Player player = (Player) sender;
	int totalblocks = (new GetWalkedBlock()).getWalkBlock(player);
	player.sendMessage(ChatColor.GOLD + "10초동안 걸으면 걸은 블럭수가 표시됩니다");
	//대충 10초 딜레이 만들어주는 구문
	int currentblocks = totalblocks - (new GetWalkedBlock()).getWalkBlock(player);
	return false;
}

위에서 만들어준 메소드를 이용하여 이런식으로 만들어주었습니다

딜레이주는 구문은 따로 메소드가 더 필요하므로 넣지않고 주석으로만 표시했습니다

이 구문은 예시로 만들었으며 , 명령어를 입력하고 10초동안 걸으면 걸은 블럭수가 표시되는 구문입니다


자바배운지 1주가 조금넘어가는 초보입니다. 피드백은 언제나 환영입니다

1.12.2와 상위버전에 초점을 맞추어 제작되었습니다



1개의 댓글

DDang_
2020.02.16

강의 감사합니다

조회 수 제목 글쓴이
8027 [ ICY online ] [ 1.12.2 ] 귀여운 포켓몬과 함께 다양한 컨텐츠를 모두 즐겨보자! 10 Space_SG
3069 [2] [ 플렉스팜 ] [1.12.2] 마인팜서버 환생이 존재한다고? 계속되는 업데이트! 플렉스팜으로 놀... 진이블로그
811 [3] [ 냥팜서버 ] [1.12.2] 8월23일 초기화 완료! 냥팜
1196 한디포 이용 가이드! 처음 온 분은 읽어둡시다! 22 초스터
979 한디포 이용 규칙 27 초스터
20887 한마포 AD 소개 (유료 광고 서비스) 92 프리루트
27991 한마포 공식 디스코드 오픈 (알림 받아보세요!) 19 프리루트
5519 한마포 공식 서버 개발팀 팀원 구인 안내 5 프리루트
141 [기타] [HTML] 기본과 간단한 메시지 출력하기 9 시듀아
23 [기타] [네모팁] XE에서 애드온이 관리자에게만 적용되도록 하기 네모
16 [기타] [네모팁] Apache2 의 mod_rewrite 사용 시 index~ 만 Rewrite가 되지 않을 경우 네모
36 [프로그래밍 일반] [네모팁] jQuery로 Checkbox 제어하기 네모
128 [스크립트] 디스코드 연동 애드온 vixio 볼륨설정 3 워뇽이사랑해
108 [스크립트] 채팅포멧을 손상시키지않고 원하는 접두사 넣기 3 프리
227 [플러그인] 플러그인의 PlayerMoveEvent와 스크립트의 on any move를 쓰지않고 걸은 블럭수를 측정해보자! 1 프리
164 [스크립트] 나침반이 가르키는 위치를 내맘대로 설정해보자! 4 워뇽이사랑해
2300 [스크립트] 땅에 떨어져있는 아이템을 모두 제거해보자 ! 워뇽이사랑해
139 [스크립트] [ 개나소나하는 스크립트 ] 0강 OT 4 lukekeum
632 [스크립트] [ 개나소나하는 스크립트 ] 3.0 변수에 대하여(기본적인 이론) 2 lukekeum
168 [스크립트] [ 개나소나하는 스크립트 ] 2.0강 나만의 커맨드 만들기 3 lukekeum
126 [스크립트] [ 개나소나하는 스크립트 ] 1강 HelloWorld 4 lukekeum
226 [스크립트] [ 부록 ] 너도하고 나도하는 Skript : 변수를 MariaDB에 저장하자! ( #1 ) ( 데이터 주의 ) 8 BlessU_
101 [프로그래밍 일반] 판타지로 알아보는 배치파일! (작성중) 4 네모

한디포 자료란
사진이 없습니다.

스크립트

정보 스크립트 (beta)

cord

2020-09-22

0

사진이 없습니다.

유틸

[ 파이선 스크립트 ] Selenium을 이용한 자동 한마포 출석체크

NamuTree0345

2020-09-21

0