개인 자료란 (JE)

  서버 커뮤니티

Profile NamuTree0345 대표칭호 없음
Profile

자료 자바 에디션(JE) 플러그인 일반

Skript를 대체할 플러그인, Mine.js!

2021.08.22 조회 수 1287 추천 수 2
장르 개발자 툴 
게임버전 1.17, 1.17.1 
원산지 국산 
개발자 네더랄드 
저작권 저희가 직접 만들었고, 라이선스는 GPL 3.0입니다. 
자료 출처 https://github.com/Netherald/mine.js 
소스 https://github.com/Netherald/mine.js 

[주의: 이 플러그인은 완전히 개발된것이 아닙니다. 그래서 많은 이벤트들이 없습니다. 필요한 이벤트가 있다면 GitHub Issue를 남겨주세요.]


Skript를 대체할 새 플러그인, Mine.js를 소개합니다.


JavaScript(JS)를 이용해 마인크래프트 서버 프로그래밍을 할 수 있는 플러그인입니다. 또한, J2V8(Java binding of V8 Engine)을 이용해 네이티브에서 실행하게되어 스크립트 로드 시간도 더 빠릅니다.

사용 방법은 위키 를 참고하세요.


속도 측정


Skript와 Mine.js의 속도 차이를 측정해보겠습니다.


속도 측정기 소스코드입니다.

public class CommandSpeedCheck extends JavaPlugin implements CommandExecutor {

    @Override
    public void onEnable() {
        System.out.println("Enabled!!");
        getCommand("test2").setExecutor(this);
        getCommand("test").setExecutor(this);
    }

    @Override
    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
        // lol
        System.out.println("Command~!");
        if(label.startsWith("commandspeedcheck:test")) {
            sender.sendMessage(Component.text("SpeedCheck start!"));
            long startTime = System.nanoTime();
            Bukkit.dispatchCommand(sender, args[0]);
            long endTime = System.nanoTime();
            sender.sendMessage(Component.text("Speed check done! Speed: " + ((endTime - startTime) / 1000000) + "ms"));
        } else if(label.startsWith("commandspeedcheck:test2")) {
            int a = 0;
            for(int i = 0; i < 10000000; i++) {
                a += 1;
            }
            sender.sendMessage(Component.text("A: " + a));
        }
        return true;
    }
}

이제 Mine.js와 Skript 소스코드를 알아보겠습니다. 둘은 모두 1억번 연산합니다.


Mine.js

function onInit() {
    createCommand('testa', [], (args, sender) => {
        let a = 0
        for(let i = 0; i < 100000000; i++) {
            a += 1
        }
        sender.send('A: ' + a)
    })
}

Skript

command /testsk:
    trigger:
        set {_int} to 0
        loop 100000000 times:
            add 1 to {_int}
        send "IntSk: %{_int}%" to player

속도 비교를 시작해보겠습니다.

0c3253ee2188d238dd13d02180e61b03.png

오, 바로 멈췄네요. 메인 스레드가 터진것같네요. 아예 틱이 멈췄습니다 ㅋㅋㅋㅋㅋ

8f68971bd9dced175a65e3976941e2b1.png

27449ms가 걸렸습니다.


이제는 Mine.js 코드로 해보겠습니다.

9650e4e6958402dac910a511f2cdbdb8.png

?????????

4f5b6d92a23498ddd0c5880332ab1990.png

솔직히 이정도까지는 예상 못했는데.... 놀랍네요.


이로 주작 없는 속도체크는 끝났습니다. 이 두 명령어는

Skript: 27449ms

Mine.js: 870ms가 걸렸고

이를 계산해보면 약 31~32배 차이납니다.

솔직히 이 결과는 틀릴 수도 있습니다... ㅠ 저도 이렇게 빠를거라고는 예상 못했는데

아마도 네이티브에서 Interprete하는게 도움이 되었다고 봅니다.


그 뒤로 궁금해서 한번 더 테스트를 해보았습니다.

Reload 속도는 누가 더 빠를까?

코드는 이정도 변경했습니다.

ba0a87b97e2167d989e598427adfa7c4.png

실행해본 결과...

eaa999fb3e499f8d2556f53e81a72857.png

아쉽게도 Skript가 더 빨랐네요 ㅠ 그렇지만 뭐 이정도는 인정합니다 ㅋㅋ..


다운로드

다운로드(불안정 릴리즈 0.1A)  


적용법

26d684cf8ae2396ac21fe17a2c97e221.png

위에 표시된 버튼을 누른뒤 다운로드된 플러그인을 plugins에 설치하세요.

(스크립트 폴더는 plugins/script입니다)

2개의 댓글

RANK0816
2021.08.22

이정도면 조금 더 만들어지면 Skript 대체 가능할것 같네요

ingpungya
2021.08.23

이벤트 같은거 조금만 더 추가하면 Skript도 금방 잡을것 같네요!

이건 혁명이다!

뉴스 및 창작물
/files/thumbnails/766/636/003/262x150.crop.jpg?20231123013340

레드스톤

장충동 왕족발 보쌈을 노트블럭으로 (저퀄주의) 1

겜웅이

2023-11-23

2

/files/thumbnails/934/632/003/262x150.crop.jpg?20231121193420

업데이트

마인크래프트 자바 에디션 스냅샷 23w46a

학교가기싫다

2023-11-21

0

/files/thumbnails/911/626/003/262x150.crop.jpg?20231109201118

업데이트

마인크래프트 자바 에디션 스냅샷 23w45a

학교가기싫다

2023-11-09

0

/files/thumbnails/324/622/003/262x150.crop.jpg?20231102211248

스킨

[Sem;colon] 게임 캐릭터 스킨 합작 (스킨배포링크O)

RePl

2023-11-02

1

/files/thumbnails/176/622/003/262x150.crop.jpg?20231102204644

업데이트

마인크래프트 자바 에디션 스냅샷 23w44a

학교가기싫다

2023-11-02

2

/files/thumbnails/897/620/003/262x150.crop.jpg?20231031013405

레드스톤

마인크래프트 노트블럭으로 만든 『 사랑은 혼돈의 노예 』 2

Sonttukk

2023-10-31

4

/files/thumbnails/858/619/003/262x150.crop.jpg?20231029192328

독도 1

GlassesFilm

2023-10-29

3

/files/thumbnails/520/617/003/262x150.crop.jpg?20231030222751

업데이트

마인크래프트 자바 에디션 스냅샷 23w43a 4

학교가기싫다

2023-10-27

3

/files/thumbnails/746/609/003/262x150.crop.jpg?20231019005253

업데이트

마인크래프트 1.21 스냅샷 23w42a 3

BMlight

2023-10-19

1

/files/thumbnails/271/611/003/262x150.crop.jpg?20231018151431

소식

마인크래프트 라이브 2023 설문조사 개시

학교가기싫다

2023-10-18

0

/files/thumbnails/236/610/003/262x150.crop.jpg?20231016160224

소식

Minecraft Live 2023 내용 정리 3

학교가기싫다

2023-10-16

2

/files/thumbnails/847/607/003/262x150.crop.jpg?20231012145504

소식

몹 투표에 반대하는 마인크래프트 유저들 4

학교가기싫다

2023-10-12

5