개인 자료란 (JE)

  서버 커뮤니티

Profile NamuTree0345 대표칭호 없음
Profile

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

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

2021.08.22 조회 수 1588 추천 수 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/500/937/003/262x150.crop.jpg?20241210152228

상품

《마인크래프트 1일 1페이지 아이디어 북》 출간!

다코미

2024-12-10

0

/files/thumbnails/557/934/003/262x150.crop.jpg?20241206162647

상품

《마인크래프트 건축가이드 미니 프로젝트 4》 출간!

다코미

2024-12-06

0

/files/thumbnails/246/933/003/262x150.crop.jpg?20241204080049

업데이트

[마인크래프트 1.21.4 업데이트]

제작대

2024-12-04

0

/files/thumbnails/477/930/003/262x150.crop.jpg?20241201030912

레드스톤

뉴진스 - Super Shy | 마크 노트블럭 커버

노트블럭전문가

2024-12-01

0

/files/thumbnails/483/916/003/262x150.crop.jpg?20241127115329

레드스톤

[노트블럭 커버] 뉴진스 - ETA 3

노트블럭전문가

2024-11-27

1

/files/thumbnails/150/925/003/262x150.crop.jpg?20241123005717

건축

응답하라 1988 ? 2

팀뉴일리시

2024-11-23

5

/files/thumbnails/761/908/003/262x150.crop.jpg?20241207024303

건축

서울 숭례문(崇禮門) 6

KHC

2024-10-25

3

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

3

/files/thumbnails/219/899/003/262x150.crop.jpg?20241009200950

건축

송전탑+도시 2

dbasd12

2024-10-09

2

/files/thumbnails/246/898/003/262x150.crop.jpg?20241008102328

레드스톤

단다단 - 오토노케(オトノケ) | 마인크래프트 노트블럭 커버

노트블럭전문가

2024-10-08

1

/files/thumbnails/348/896/003/262x150.crop.jpg?20241006103035

디도스/봇테러등등을 낚는 방법 5

물귀신

2024-10-06

3

/files/thumbnails/839/895/003/262x150.crop.jpg?20241006021227

SRV레코드는 보안도메인이 아닙니다. [서버오픈시 필독]

물귀신

2024-10-05

4