-
-
Notifications
You must be signed in to change notification settings - Fork 17
Import_kr
ℹ️ | 트리거리액터를 최신 버전으로 유지하세요. 이 문서에 기술된 내용 중 일부는 버전에 따라 작동하지 않을 수도 있으며, 이에 대한 기능 지원을 받을 수 없습니다.
IMPORT문(Statement)은 런타임에 등록된 자바 클래스에 접근할 수 있도록 설계한 구문(Syntax)입니다.
이러한 구문이 추가되기 이전의 트리거리액터는 자바 클래스의 정적 메소드(Static method)를 호출하거나 새로운 인스턴스를 생성하려면 트리거리액터에서 제공하는 빌트인 함수(Builtin functions)인 CommandFunctions API만을 사용해야 했습니다.
트리거리액터 팀은 이러한 문제를 인지하고 2018년 1월 v2.0.2 베타 릴리즈로 IMPORT문을 공개했습니다.
IMPORT <클래스 전체 경로>
특정 클래스를 불러오려면, 먼저 트리거에 클래스가 위치한 전체 경로를 처음부터 끝까지 제공해주어야 합니다.
예:
IMPORT org.bukkit.entity.Player
불러온 클래스를 사용하기 위해서, 불러왔던 클래스 전체 경로에서 가장 마지막에 위치한 클래스 이름을 이용합니다.
위 예시에서 불러온 버킷 플레이어 클래스는 변수 Player
를 통해서 접근할 수 있습니다.
클래스를 불러온 후 그 클래스 이름 뒤에 괄호(()
)를 이어 붙여 새 인스턴스를 생성합니다.
IMPORT java.util.Random
rand = Random()
만약 생성자(Constructor)가 매개 변수를 필요로 한다면, 괄호 안에 적절한 매개 변수를 제공할 수 있습니다.
IMPORT java.util.Random
rand = Random(1) // RNG Seed로 1을 전달
클래스 이름 뒤에 마침표(.
)를 이어 붙여 정적 메소드에 접근할 수 있습니다.
IMPORT org.bukkit.GameMode
player.setGameMode(GameMode.valueOf("CREATIVE"))
위 예시의 경우 버킷의 GameMode 값을 문자열에서 가져오는 GameMode#valueOf(String)
메소드에 접근해 호출합니다.
ℹ️ 참고 | Enum은 실질적으로 종속된 필드와 같습니다.
IMPORT org.bukkit.GameMode
player.setGameMode(GameMode.CREATIVE)
위 예시의 경우 이전 예시의 정적 메소드를 통해 접근하는 것이 아닌 직접 정적 필드(Static field)에 접근해 값을 가져옵니다.
ℹ️ 참고 |
$
를 통해 접근할 수 있습니다.
IMPORT org.spongepowered.api.event.network.ClientConnectionEvent$Login
IMPORT java.util.Random
rand = Random()
#MESSAGE "Some random integer: " + rand.nextInt()
IMPORT org.bukkit.util.Vector
objectiveCoord = Vector(318, 77, -548)
playerCoord = player.getLocation().toVector()
distance = playerCoord.distance(objectiveCoord)
#MESSAGE "목표물까지 " + distance + " 블록 남았습니다."
IMPORT문이 사용된 위치에 따라 불러온 클래스를 사용하지 못하고 오류가 발생할 수도 있습니다.
예를 들어:
rand = Random()
#MESSAGE "Some random integer: " + rand.nextInt()
IMPORT java.util.Random
위 구문은 오류가 발생합니다. 처음에 인스턴스를 생성하고 rand
변수에 할당하기 위해 Random()
을 호출하였지만, 아직 3번 줄에 위치한 IMPORT문이 실행되지 않은 상태였습니다. 인스턴트 생성 당시 트리거는 아직 Random()
이 뭔지 모르는 상태라 오류를 발생시키게 됩니다.
IMPORT문은 클래스 이름이 같으면 이전에 불러왔던 클래스는 덮어씌워집니다.
예를 들어:
IMPORT org.bukkit.GameMode
IMPORT com.somelibrary.GameMode
위 구문은 두 개의 MyClass라는 클래스가 이름이 겹쳐 불러와진 상태인데, com.somelibrary.GameMode
보다 먼저 불러와진 org.bukkit.GameMode
는 덮어씌워져 사라져 버리고 com.somelibrary.GameMode
만 불러와 사용할 수 있게 됩니다.
트리거리액터는 이러한 문제를 해결하기 위해 AS
절을 추가하였습니다.
ℹ️ 참고 |
AS
절은 v3.3.0.8-beta 버전 이후에서만 작동합니다.
위 예시문의 충돌을 AS절을 이용해 피한다면 아래와 같이 해결할 수 있습니다:
IMPORT org.bukkit.GameMode AS BukkitGameMode
IMPORT com.somelibrary.GameMode AS LibraryGameMode
player.setGameMode(BukkitGameMode.CREATIVE)
Basic Syntax (한) (рус)
1. Getting Started (한) (рус)
S.L. In-game Editor (한) (рус)
List and usage of Triggers / 트리거 목록과 사용 방법:
- Click/Walk Trigger (한) (рус)
- Command Trigger (한) (рус)
- Area Trigger (한) (рус)
- Named Trigger (한) (рус)
- Custom Trigger (한) (рус)
- Inventory Trigger (한) (рус)
- Repeating Trigger (한) (рус)
- 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 조건
- Local Variables / 지역 변수
- Global Variables / 전역 변수
S.L. Understanding Exceptions (한) (рус)
- Using Methods / 메소드 사용법
- Special Data Types / 특수한 데이터 형식
- Reading Javadocs / Javadoc 읽기
- Handling Enum / Enum 데이터 처리
- Lambda Expresion / Lambda(람다) 식 사용법
- Creating an empty array / 빈 배열 만들기
- Storing data into array / 배열에 데이터값 저장하기
- Read data from array / 배열에서 데이터 읽기(불러오기)
- WHILE loop / WHILE 반복문
- FOR loop / FOR 반복문
- Iterating Collection / Collection 형식의 변수 순회법
- #BREAK executor / #BREAK 실행자
- #CONTINUE executor / #CONTINUE 실행자
- #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 예외처리 이해하기
16. Interface Casting (한) (рус)
module x.x does not "opens x.x" problem
- List of Custom Events