Skip to content
wysohn edited this page Mar 27, 2021 · 3 revisions

지명(指名) 트리거 (Named Trigger)

지명 트리거의 개념

지명 트리거란, 구문을 만들어 해당 구문에 특정한 이름을 명명하고, 타 구문에서 이름을 통해 호출하는 형식의 트리거를 말합니다.

이 트리거는 #CALL Executor에 의해서만 실행될 수 있습니다. 또한, 하나의 지명 트리거 내부에서 또다른 네임드 트리거를 불러올 수도 있습니다(하지만 한 트리거 내부에서 그 자신을 불러오지는 마십시오. 무한 루프가 일어납니다).

혹은 /trg call <지명트리거 이름> 으로 마치 커맨드 트리거에서 #CALL 을 이용한 것 처럼 명령어로 바로 사용 할 수 있습니다.

지명 트리거는 인게임에서 생성할 수 있는 방법이 없습니다. 해당 트리거를 제작하기 위해서는 외부 텍스트 에디터에서 빈 파일을 만든 후 구문을 작성하여야 합니다.

지명 트리거 사용하기

다른 트리거와 다르게, 지명 트리거는 다른 트리거에서 호출하여 '불러오는' 형식으로 실행됩니다.

구문을 불러오기 위해서는 #CALL Executor을 사용해야합니다.

예를 들어,

#CALL "Trigger1"

위 구문을 커맨드 트리거에 입력하면, Trigger1이라는 이름을 가진 지명 트리거가 실행됩니다.

하지만 타 구문이 #CALL Executor을 포함하여 한줄보다 많다면, 혼란스러울 수 있습니다.

예를들어,

#MESSAGE "HEY"
#CALL "Trigger1"
#MESSAGE "Done!"

위 구문을 입력하면 어떻게 될까요?


먼저, #MESSAGE Executor로 유저에게 " HEY " 라는 메시지를 보냅니다.

그 다음, 현재 실행되고 있던 구문은 대기모드 로 전환되고 실행 프로세스는 호출된 지명 트리거 (이 예시에서는 "Trigger1")로 이동합니다. 그리고 해당 지명 트리거를 실행하기 시작합니다.

마지막으로, 호출된 지명 트리거의 구문이 종료되면, 실행 프로세스는 본 구문으로 다시 돌아오며, 대기모드가 해제되고, 실행되고 있던 구문을 끝까지 완료합니다(이 예시에서는 " DONE! " 이 출력됩니다).


실행중인 트리거와의 변수 공유

일반적으로, 호출된 지명 트리거는 현재 실행중인 트리거와 지역변수 를 공유합니다. 이 말은 즉, 현재 실행중인 트리거에서 사용한 지역변수가 호출된 지명 트리거에서도 사용될 수 있고, 그 반대도 가능하다는걸 의미합니다.

동기/비동기 전환

지명 트리거는 동기모드로 기본 설정되어 있습니다. 만약 지명트리거를 비동기로 실행하고 싶다면, #CALL Executor 로 구문을 호출할 때, 뒤에 하나의 파라미터를 추가함으로써 비동기로 전환할 수 있습니다.

예:

#CALL "MyTrigger1" false

이 구문은 MyTrigger1을 비동기로 실행시키기 위해서 새로운 작업을 생성합니다.

하지만 위의 구문의 경우, 변수가 지명트리거로 '복사'되며, 현재 실행중인 트리거와 변수공유가 불가능 합니다.

지명 트리거 분류하기 (Grouping)

지명 트리거의 구문 수가 계속 많아지면, 충돌이 발생할 위험이 있습니다. 이를 방지하기 위해서 지명 트리거는 Named Triggers 폴더 내에 직접 여러 폴더를 만들어 구문 파일을 분류할 수 있습니다.

예:

지명 트리거 구문 파일이 Trigger1, Trigger2, Trigger3, Trigger4, Trigger5 이렇게 있다고 가정합시다. 그럼 Named Triggers 폴더 내부에 MyTriggers 라는 폴더를 만들어 그 안에 구문 파일을 저장할 수 있습니다.

새로운 폴더 또는 파일을 생성한 후에는 '/trg reload' 를 입력하는걸 절대로 잊지 마세요!

하부 폴더 내에 있는 지명트리거 불러오기


매우 간단합니다. ' : '를 사용하여 '~라는 폴더 내부에 있다' 를 나타낼 수 있습니다.


예를들어, MyTriggers라는 폴더 내에 위치한 Trigger5.trg 파일을 불러오고 싶다면

#CALL "MyTriggers:Trigger5"

으로 호출할 수 있습니다.

Plugin Description / 목차

1. Getting Started () (рус)

S.L. In-game Editor () (рус)

2. Triggers () (рус)

List and usage of Triggers / 트리거 목록과 사용 방법:

  • List of Executors / 실행자(Executor) 목록

4. Placeholders () (рус)

  • Using PlaceholderAPI / PlaceholderAPI 사용법
  • List of Placeholders / 플레이스 홀더(Placeholder) 목록

5. Conditions () (рус)

  • Creating Conditions / 조건식 만들기
    • Boolean Expressions / 부울 (Boolean) 표현 방법
  • Logical Operators / 연산자 사용법
  • IF statement / IF 조건문
  • Null Checking / Null 검사법
  • Switch Case / Switch Case 조건

6. Variables () (рус)

  • Local Variables / 지역 변수
  • Global Variables / 전역 변수

Advanced

Timings () (рус)

7. Methods () (рус)

  • Using Methods / 메소드 사용법
  • Special Data Types / 특수한 데이터 형식
  • Reading Javadocs / Javadoc 읽기
  • Handling Enum / Enum 데이터 처리
  • Lambda Expresion / Lambda(람다) 식 사용법

8. Array () (рус)

  • Creating an empty array / 빈 배열 만들기
  • Storing data into array / 배열에 데이터값 저장하기
  • Read data from array / 배열에서 데이터 읽기(불러오기)

9. Loops () (рус)

  • WHILE loop / WHILE 반복문
  • FOR loop / FOR 반복문
    • Iterating Collection / Collection 형식의 변수 순회법
    • #BREAK executor / #BREAK 실행자
    • #CONTINUE executor / #CONTINUE 실행자

10. Sync Mode () (рус)

  • #CANCELEVENT executor / #CANCELEVENT 실행자
  • Setting Sync/Async Mode / 동기, 비동기 모드 전환
    • Custom Trigger
    • Area Trigger

11. Custom Executors () (рус)

12. Plugin Access () (рус)

  • Check And Use / 플러그인 존재여부 확인
    • Get Third Party Plugin / 제 3자 플러그인 불러오기
    • Check Eligibility / 호환성 확인하기
    • Use the Plugin / 플러그인 사용하기

13. IMPORT Statement () (рус)

  • Creating new instance / 새 인스턴스 생성하기
  • Accessing static method / 종속 메소드 불러오기
  • Accessing static field / 종속 Enum 불러오기

14. IS Statement () (рус)

  • Understanding / 이해하기
    • Understanding Instance / 인스턴스 이해하기
    • Understanding Superclass / 부모클래스 이해하기
    • Understanding Subclass / 자식클래스 이해하기
  • Using IS Statement / IS조건연산자 사용하기

15. TRY-CATCH Statement () (рус)

  • Understanding TRY-CATCH Exception Handling / TRY-CATCH 예외처리 이해하기

Misc

16. Interface Casting () (рус)

module x.x does not "opens x.x" problem

  • List of Custom Events

Examples

Trigger

Trigger Example () (рус)

More Examples: Bukkit, Sponge

Case Specific

Clone this wiki locally