개인 자료란 (JE)

  서버 커뮤니티

Profile 프리 대표칭호 없음

BabyMandarinDuck c9790e9be5ed4d70b2e2270970bc8049

Profile

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

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

2020.02.15 조회 수 1427 추천 수 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와 상위버전에 초점을 맞추어 제작되었습니다





2개의 댓글

DDang_
2020.02.16

강의 감사합니다

haejeok
2021.10.26

와 엄청 참신한거같네여

뉴스 및 창작물
/files/thumbnails/520/751/003/262x150.crop.jpg?20240328020349

레드스톤

마인크래프트 노트블록으로 만든 『 Bling‐Bang‐Bang‐Born 』 1

Sonttukk

2024-03-23

1

/files/thumbnails/467/742/003/262x150.crop.jpg?20240311163123

레드스톤

[노트블럭커버] MILGRAM -ミルグラム(밀그램)- / 아마네 「숙청 행진」 제 2심 2

리비온

2024-03-11

0

/files/thumbnails/846/741/003/262x150.crop.jpg?20240310221214

레드스톤

워든 vs 라마 200마리 1

GlassesFilm

2024-03-10

0

/files/thumbnails/542/739/003/262x150.crop.jpg?20240309070457

레드스톤

[고인의 명복을 빕니다][노트블럭]드래곤볼 GT 오프닝 - 점점 마음이 끌려

리비온

2024-03-09

0

/files/thumbnails/326/738/003/262x150.crop.jpg?20240328020414

레드스톤

마인크래프트 노트블록으로 만든 『 Build Our Machine 』

Sonttukk

2024-03-07

0

/files/thumbnails/952/735/003/262x150.crop.jpg?20240303230423

소식

복잡한 설치 없이 마크 애드온을 즐겨보세요! 새로운 블록, 몹, 조합법 등!

도라

2024-03-03

0

/files/thumbnails/212/735/003/262x150.crop.jpg?20240303113438

레드스톤

성장속도 실험

GlassesFilm

2024-03-03

3