개인 자료란 (JE)

  서버 커뮤니티

Profile NamuTree0345 대표칭호 없음
Profile

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

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

2021.08.22 조회 수 1419 추천 수 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/115/774/003/262x150.crop.jpg?20240424234825

업데이트

마인크래프트 1.20.5 정식 업데이트

학교가기싫다

2024-04-24

0

/files/thumbnails/762/770/003/262x150.crop.jpg?20240418073724

레드스톤

T.B.H (고민중독) | 노트블럭 버전 | NoteBlock Cover [한국어 영어 중국어 가사 추가]

노트블럭전문가

2024-04-18

0

/files/thumbnails/218/767/003/262x150.crop.jpg?20240412130213

레드스톤

우리의 꿈 - 원피스 오프닝

노트블럭전문가

2024-04-12

0

/files/thumbnails/505/766/003/262x150.crop.jpg?20240411122306

레드스톤

기동전사 건담 수성의 마녀 | 노트블럭 커버 1

노트블럭전문가

2024-04-11

1

/files/thumbnails/932/765/003/262x150.crop.jpg?20240410124459

레드스톤

마인크래프트 노트블록으로 만든 『 밤양갱 (Bam Yang Gang) 』

노트블럭전문가

2024-04-10

0

/files/thumbnails/403/765/003/262x150.crop.jpg?20240409190538

레드스톤

마인크래프트 노트블록으로 만든 『 밤양갱 (Bam Yang Gang) 』

Sonttukk

2024-04-09

4

/files/thumbnails/161/758/003/262x150.crop.jpg?20240331105743

레드스톤

라마 침 분수대 1

GlassesFilm

2024-03-31

0

/files/thumbnails/520/751/003/262x150.crop.jpg?20240328020349

레드스톤

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

Sonttukk

2024-03-23

3

/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