개인 자료란 (JE)

  서버 커뮤니티

Profile Cupelt 대표칭호 없음

Kyoee01 a88429fff0b0408e9ed2c4af2b00b5e2

Profile

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

아직도 스크립트를 쓰시나요??

2023.08.21 조회 수 2681 추천 수 1
장르 서버 관리자 툴, 개발자 툴, 정보전달 
게임버전 모든버전 
API 버킷, 스피곳, 페이퍼 
원산지 국산 
개발자 wysohn 
저작권 GNU GENERAL PUBLIC LICENSE 
자료 출처 https://github.com/TriggerReactor/TriggerReactor 

안녕하세요!

혹시 아직도 스크립트를 사용하고 계신가요?

이참에 한번 TriggerReactor 로 갈아타 보는 건 어떨까요?

뒤로 가기 버튼 누르지 말고. 최근 트리거의 엄청난 근황을 조금 알려드리고 싶어서 이렇게 글을 씁니다!



▬▬▬▬▬ 첫 번째 / 멀티스레딩을 사용한 최적화 ▬▬▬▬▬

기본적으로 Skript는 버킷의 메인 스레드에서 실행됩니다.

그 말은 즉, 코드가 복잡해 지면 복잡해 질 수록,

규모가 커지면 커질수록 서버 자체에 렉이 걸려, 유저 입장에서는 끊기는 서버를 경험하게 될 것입니다.


하지만 TriggerReactor의 이러한 멀티스레딩이 기본적으로 탑재 되어 있다면

기능 자체의 성능은 조금 무뎌질 지 몰라도, 유저가 끊기는 서버를 경험 할 일은 없을 겁니다.


▬▬▬▬▬▬▬▬ 두 번째 / 엄청난 호환성 ▬▬▬▬▬▬▬▬

Skript에서 만약 완전 처음 보는 플러그인과 연동을 하고자 한다면?

누군가 만들어 논 애드온이 없다면, 애드온을 만들지 않는 이상 호환이 안됩니다.


하지만 TriggerReactor의 베이스는 Java 이기 때문에, 그냥 살짝 플러그인을 열어볼 줄만 안다면.

또는 공식 API 설명서가 있다면, 연동은 식은 죽 먹기입니다.


이는 서버에서 사용할 수 있는 모든 라이브러리를 사용할 수 있다는 뜻 인데요.

당장 포켓몬 모드에 TriggerReactor 를 사용하고자 결정 했다면, 그냥 공식 API 설명서에 가서 조금만 뜯어보면 됩니다.


예를 들어. 아래의 포켓몬 API 에서 EXECUTED 를 가져 오고 싶다고 했을 때

https://reforged.gg/docs/1165/

import com.pixelmonmod.pixelmon.api.enums.BattleEndTaskResult

#MESSAGE BattleEndTaskResult.EXECUTED

이렇게 만 입력 한다면, 간편하게 가져올 수 있습니다.


▬▬▬▬▬▬▬▬ 세번째 / 참고할 자료가 많음 ▬▬▬▬▬▬▬▬

이게 무슨 소리지 싶으실 수도 있는데,


TriggerReactor는 Java를 Python 처럼 간편하게 만들었다는 장점이 있습니다.

그 말은 즉 Java의 예제라면 곧 TriggerReactor의 예제가 될 수 있다는 것 입니다.


예를 들어 보겠습니다. 아래는 비밀번호를 암호화 해주는 코드입니다.

import java.security.MessageDigest;
import java.lang.StringBuffer;
import java.lang.Integer;

String passward = "1234";

try {
    //여기서는 "sha-256" 알고리즘을 사용함
    MessageDigest sh = MessageDigest.getInstance("SHA-256");
    sh.update(passward.getBytes("UTF-8"));

    byte[] byteData = sh.digest();
    StringBuffer buffer = StringBuffer();

    for (int i= 0; i < byteData.length; i++) {
        sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
    }
    String hashString = sb.toString();
} catch (Exception error) {
    e.printStackTrace();
}

player.sendMessage(hashString);

이제 이 코드를 TriggerReactor로 바꿔보겠습니다.

import java.security.MessageDigest
import java.lang.StringBuffer
import java.lang.Integer

passward = "1234"

TRY
    // 여기서는 "sha-256" 알고리즘을 사용함
    sh = MessageDigest.getInstance("SHA-256")
    sh.update(passward.getByte("UTF-8"))

    byteData = sh.digest()
    buffer = StringBuffer()

    FOR i = 0:byteData.length
        buffer.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1))
    ENDFOR
    hashString = sb.toString()
CATCH e
    e.printStackTrace()
ENDTRY

player.sendMessage(hashString)

자 이렇게 보니까 비슷한 게 느껴지시나요?
오히려 좀 더 간단해진 것 같지 않나요?

▬▬▬▬▬▬▬▬ 네번째 / 생산성이 좋아졌음 ▬▬▬▬▬▬▬▬

사실 TriggerReactor가 나온 지는 좀 되었지만

지금 이렇게 글을 쓰는 이유가

TriggerReactor의 단점 중 하나였던,

함수가 없어 생산성이 어쩔 수 없이 조금 떨어졌던 문제가 해결 되었기 때문입니다.


Lambda 식이 출시하면서 변수에 Lambda를 담는 형태로 새로 생기게 되었습니다.

testFunc = LAMBDA a, b =>
    a+b
ENDLAMBDA


다음과 같은 방식으로 함수도 직접 만들어 사용할 수 있어, 생산성이 높아졌다고 할 수 있습니다.

▬▬▬▬▬ 다섯번째 / 플러그인 개발로 넘어가기 편함 ▬▬▬▬▬

솔직하게 Java는 배울게 너무 많습니다.

플러그인 개발은 너무 어려울 것 같고, 그렇지만 개발은 하고 싶으신 분들이 Skript를 많이 사용하십니다.


하지만 Skript는 독자적인 언어 체계를 가지고 있어,

오히려 타 프로그래밍 언어로 넘어가기 힘들다는 단점이 있습니다.


TriggerReactor는 위에서도 설명 하였지지만, Python의 간견함을 가지면서

마인크래프트/Java 가 베이스인 스크립팅 플러그인입니다.


TriggerReactor를 완벽히 다룰 줄 안다면, 객체 지향 언어의 체계만 공부한다면

바로 플러그인 개발에 들어갈 수 있을 정도로 Java의 경량 버전입니다.


▬▬▬▬▬ 여섯번째 / 개발자의 대다수가 한국인임 ▬▬▬▬▬

TriggerReactor의 현재 활동이 많은 순으로 관리자 목록을 조금 보여드리겠습니다.


wysohn(한국인) - 소유자

Sayakie(한국인) 

Cupelt(한국인) - 글쓴이

limulhw(한국인)

...

gerzytet(외국인)


외국인 개발자가 1명일 정도로 한국인이 많습니다.

 

개발자들이 직접 디스코드 서버에서 빠른 답변을 주기 때문에, 처음이라도 배우기 용이합니다.

하지만 너무 간단한 질문은 "위키를 확인 해 주세요." 라는 답변을 받을 수도 있으니, 위키 먼저 정독하고 오도록 합시다.


▬▬▬▬▬▬▬▬▬ 마치며 ▬▬▬▬▬▬▬▬▬

TriggerReactor에서 가깝게 있는 사람으로서, 트리거의 현 근황과

장점을 조금 알려드리고자 이렇게 글을 썻는데.


저도 코딩 자체를 TriggerReactor로 시작했을 정도로, 미래에 플러그인 개발이나, 개발자가 되고 싶다면

한번 거쳐 가기에는 충분한 멋진 플러그인이라고 생각합니다.


- 디스코드 링크 -

https://discord.gg/U3pyUYc 


- TriggerReactor 사용해보기 -

https://github.com/TriggerReactor/TriggerReactor/releases

https://github.com/Lorenzo0111/JShader/releases


※ 두 개의 플러그인을 모두 다운 받아야 정상 작동합니다! ※

9개의 댓글

세찐찐
2023.08.21

국산 플러그인 이었다니 하지만 스크립트는 제가 작성해줬던 시간이 많아 많이 고민이 되네요

Cupelt
2023.08.21
@세찐찐

아쉽긴하죠.... 근데 플러그인으로 넘어가실 계획이 있다면 저는 나쁘지 않다고 보는 바 입니다

세찐찐
2023.08.21
@Cupelt

저도 공부는 하고 있지만 새로운건 귀찮아서

Cupelt
2023.08.21
@세찐찐

ㅋㅋㅋㅋ 인정합니다

진하범
2023.08.21

그냥 플긴을 만드는게... 좋을것 같네요!

Cupelt
2023.08.21
@진하범

근데 마냥 그렇다고 말 할 수는 없는게. 처음 할 때 객체지향을 이해하는게 힘들어서, 전반적인 코딩 지식이랑 객제지향이랑 같이 공부하면 머리 터져요...

세찐찐
2023.08.23
@Cupelt

뭔말인지는 모르겠지만 플긴 만들어 볼려다

멘탈 나가서 롤 돌리다 망한 기억이..

Cupelt
2023.08.23
@세찐찐

나중에 기회되면 강좌도 해볼게요!

xAQu
2023.08.24

접근하기 쉬운순으로 나열하면 스크립트 > 트리거 > 플러그인

사용빈도순으로 나열하면 플러그인 > 스크립트 > 트리거

 

스크립트에서 플러그인으로 넘어가기 전 한번쯤 해볼만 한 시스템이긴 하네요

뉴스 및 창작물
/files/thumbnails/483/916/003/262x150.crop.jpg?20241127115329

레드스톤

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

노트블럭전문가

2024-11-27

0

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

건축

응답하라 1988 ?

팀뉴일리시

2024-11-23

4

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

건축

서울 숭례문(崇禮門) 5

KHC

2024-10-25

2

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

건축

경주 월정교 1

KHC

2024-10-10

2

/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

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

물귀신

2024-10-06

3

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

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

물귀신

2024-10-05

4

/files/thumbnails/648/892/003/262x150.crop.jpg?20241002184058

아티클

마인크래프트 라이브 2024 후기: 무성의가 느껴졌던 '절망편' 라이브

라비

2024-10-02

4

/files/thumbnails/693/890/003/262x150.crop.jpg?20241007140310

소식

[방송인 필독] 시참 컨텐츠 방송인분들께 DDoS(디도스) 공격을 퍼붓는 용의자 특정중, 예방 & 대처법 정리 9

해그

2024-10-01

1

사진이 없습니다.

레드스톤

[노트블럭 패러디] 신창섭 - 모장이 다해줬잖아

노트블럭전문가

2024-09-28

0

/files/thumbnails/677/856/003/262x150.crop.jpg?20240913205849

아티클

마인크래프트 개발의 미래

학교가기싫다

2024-09-13

2