Skip to content
Pro_Snape edited this page Jan 29, 2019 · 4 revisions

In-game Editor

In-game Editor는 TR의 대표적인 기능중 하나입니다. 기존에 사용하던 여러 스크립팅 플러그인들은 구문을 한줄한줄 추가하고 view 커맨드를 통해서 확인하거나, 아얘 게임 내에서 작성이 불가능했습니다. 이 방법은 구문을 몇줄 추가하고 확인하는 과정을 반복하기 때문에 매우 번거로웠습니다. 이를 이미 알고있는 우리 개발자들은 이러한 단점을 보완하기 위하여 인게임에서도 채팅을 이용하여 윈도우의 메모장처럼 구문을 자유롭게 작성하고, 지울 수 있는, 이른바 "인게임 에디터"를 선보였습니다.

In-game Editor은 어디서 볼 수 있나요?

In-game Editor는 사용자가 구문작성을 더욱 편리하게 할 수 있도록 만들어 주기 위해 탄생하였습니다. 즉, In-game Editor는 인게임에서 구문을 작성하는 트리거를 만들 경우, 바로 사용할 수 있도록 설정되어 있습니다.

인게임에서 대부분 구문을 작성하는 트리거는 다음과 같습니다:

  • 클릭 트리거
  • 워크 트리거
  • 커맨드 트리거
  • 커스텀 트리거

사실 Named Trigger 이외에는 전부 인게임 에디터를 사용합니다. 하지만 제시된 4개의 트리거를 가장 많이 사용하기에 해당 본문에 서술한 점 양해 부탁드립니다.

In-game Editor 사용하기

가장 In-game Editor 사용빈도가 높은 Click Trigger 을 예시로 하여 설명하도록 하겠습니다.

먼저, 구문을 입력하기 위해서 다음과 같이 입력합니다.

/trg c

입력하면, In-game Editor는 나오지도 않고 알 수 없는 영어만 길게 채팅창에 나오는 것이 보일겁니다:

In edit mode, you cannot receive any message from the other users. 
You can type save or exit anytime to escape from the edit mode. 
If the code is more than one line, you can go up or down by typing u and d. 
When you are doing so, you can provide number of lines to skip(for example, d 10 will move down 10 lines). 
If you don't provide the number, the default value 1 will be used instead. 
il to insert a new line and dl to delete current line. 
Look for << sign to see where you are currently at. 
You can also type anything and press Tab key to copy the code where the cursor is pointing. 
Because of how minecraft client is made, you need to specify space with ^ to insert spaces. 
For example, you might can add four spaces before the code like this: ^^^^#MESSAGE "Hi"
Now enter anything to continue.

윗 내용을 전부 번역하면 아래와 같습니다.

에디트 모드에서는, 다른 플레이어의 채팅을 볼 수 없으며 채팅을 보낼 수도 없습니다.
save 또는 exit을 입력하여 언제든지 에디트 모드에서 빠져나갈 수 있습니다.
만약 입력할 구문이 1줄보다 더 길다면 u 와 d 를 사용하여 윗줄로 가거나 아랫줄로 갈 수 있습니다.
u 와 d 를 사용할때는, 몇줄을 이동할건지 직접 숫자를 제공해 줄 수도 있습니다(예를들어, d 10 은 10줄 아래로 내려가기)
만약 u 와 d 를 사용할 때, 몇줄을 이동할 건지 숫자를 제공하지 않으면, 기본값인 1줄이 이동됩니다.
il은 insert line의 줄임말로 "줄 추가" 이며, dl은 delete line의 줄임말로 "줄 삭제" 입니다.
<< 표시를 통해 현재 본인이 수정하고 있는 줄이 어딘지 확인할 수 있습니다.
아무거나 입력하고 Tab을 누르면 현재 수정중인 줄 (<<표시 있는 줄) 전체를 입력창에 복사합니다.
마인크래프트 클라이언트의 디자인 형식때문에, 공백을 입력할때는 스페이스바가 아닌 ^ 를 입력해야 합니다.
예를들어, 코드 앞쪽에 4칸의 공백을 넣고싶다면, ^^^^#MESSAGE "Hi" 라고 입력해야 합니다.
아무거나 입력하여 In-game Editor로 이동합니다.

내용이 너무 많은가요? 괜찮습니다. 이제부터 차근차근 설명해 드릴겁니다.


1. 장문의 영어가 나온후 아무거나 입력하고 엔터해보세요.

위에서 말한 장문의 영어가 나온 뒤에, 채팅에 아무거나 입력하시면,

save, exit Click Trigger
-----------------------------------------------------------------------
1. <<















----------------------------------------------------------------------
u <lines>, d <lines>, il, dl

위와 같이 표시될 것 입니다. 지금 보고 계신것이 바로 인게임 에디터입니다. 마치 매모장처럼 공백이 많은 것을 볼 수 있으며, 위 공백에 줄을 추가하고 구문을 입력하는등의 모든 것이 가능합니다.


채팅에 아무거나 입력해보세요.

채팅에 아무거나 입력하고 (슬래쉬 '/' 없이) 엔터를 치면, (예시에서는 ABC를 입력했습니다)

save, exit Click Trigger
-----------------------------------------------------------------------
1. ABC <<















----------------------------------------------------------------------
u <lines>, d <lines>, il, dl

보시는 바와 같이, 에디터 상태에서는 채팅에 입력하는 모든 내용은 전부 수정중인 줄에 입력됩니다.

이상태에서 채팅에 CEF를 입력하면,

save, exit Click Trigger
-----------------------------------------------------------------------
1. CEF <<















----------------------------------------------------------------------
u <lines>, d <lines>, il, dl

위와 같이 입력됩니다. 즉 기존에 있던 ABC뒤에 붙는것이 아닌 CEF만 있습니다. "덮어쓰기의 개념" 으로 보시면 됩니다.


이렇게 구문을 입력하기까지의 과정을 보았습니다. 하지만, 우리는 한줄이 아닌 여러줄의 구문을 입력합니다.

즉, 한줄만이 아닌 여러줄의 구문을 입력하는 방법을 알아봅시다.


채팅에 il을 입력해보세요.

채팅에 il을 입력하면,

save, exit Click Trigger
-----------------------------------------------------------------------
1. CEF <<
2.














----------------------------------------------------------------------
u <lines>, d <lines>, il, dl

위와 같이 1. 만 있던 공백에 2. 가 추가되어 있는 것을 볼 수 있습니다. 앞에서 언급했듯이, il은 "insert line" 의 줄임말이며, 줄을 추가합니다. 즉, 1. 만 있던 구문에 줄을 추가하여 2. 가 생긴 것으로 볼 수 있습니다.

il은 현재 커서 <<가 있는 줄 바로 아래에 줄을 생성합니다.


하지만 줄을 추가했다고 해서 그 줄로 이동하지는 않습니다. 이상태에서 어떻게 2번 줄로 이동할까요?


채팅에 d 를 입력해보세요.

채팅에 d 를 입력해보면

save, exit Click Trigger
-----------------------------------------------------------------------
1. CEF
2. <<














----------------------------------------------------------------------
u <lines>, d <lines>, il, dl

위와 같이 2번줄로 << 표시가 이동된 것을 확인할 수 있습니다. 하지만 착각하지 마세요! d 는 "새롭게 만든 줄로 이동한다" 가 아닙니다!

앞에서 언급했듯이, d는 "down" 의 줄임말이며, 뒤에 숫자를 입력하지 않은 이상 1줄 아래로 이동합니다. 만약 d 2를 입력한다면 2줄 아래로 이동합니다.


이와 반대로, 다시 위쪽으로 이동하고 싶다면 어떻게 해야할까요?


채팅에 u 를 입력해보세요.

채팅에 u 를 입력해보면,

save, exit Click Trigger
-----------------------------------------------------------------------
1. CEF <<
2.














----------------------------------------------------------------------
u <lines>, d <lines>, il, dl

위와 같이 1번 줄로 << 표시가 이동한 것을 볼 수 있습니다. 앞에서 언급했듯이, **u는 "up" 의 줄임말이며, 뒤에 숫자를 입력하지 않은 이상 1줄 위로 이동합니다.

만약 u 2를 입력한다면 2줄 위로 이동합니다.**


지금까지 우리는 il로 줄을 추가하고 u, d로 줄이동을 했습니다. 그럼 이제 줄을 삭제하는 방법은 뭘까요?


채팅에 dl 을 입력해보세요.

커서가 1. CEF << 에 있다고 가정합니다. 이상태에서 채팅에 dl 을 입력하면,

save, exit Click Trigger
-----------------------------------------------------------------------
1. <<















----------------------------------------------------------------------
u <lines>, d <lines>, il, dl

위와 같이 라인 하나가 삭제됩니다. 즉, dl은 현재 커서 << 가 위치한 줄을 삭제시켜 버리며, 구문 역시 함께 삭제됩니다.


자 이제 구문 입력을 완료했다고 칩시다. 그럼 이제 입력한 구문을 저장해야겠죠? 구문 저장은 어떻게 할까요?


채팅에 save 를 입력해보세요.

채팅에 save 를 입력해보면,

save

위와 같이 입력한 save가 그대로 출력됩니다. 이 메시지가 나오면 저장에 성공했다는 뜻 입니다.

즉, save는 말그대로 저장을 의미합니다.


에디터 모드에 잘못 들어갔거나, 구문을 입력했는데 저장하지 않고 모두 삭제하여 지우고싶다면 어떡할까요?


채팅에 exit 을 입력해보세요.

채팅에 exit 을 입력하면,

Are you sure to exit? Unsaved data will be deleted! Type yes to exit or type anything to cancel.

위와 같이 영어로 뜨는데 해석해보자면,

에디터 모드를 종료하는 것이 확실합니까? 저장되지 않은 데이터(구문)은 삭제될 것 입니다!
'yes'를 입력하면 에디터 모드를 종료하고 원래 채팅으로 돌아갑니다. 종료를 취소하려면 '아무거나' 입력하세요.

위와 같습니다.

번역한 내용과 같이 yes를 입력하면 에디터 모드에서 나올 수 있으며, 작성 중인 구문은 전부 삭제됩니다.

yes를 제외한 다른 내용을 입력하면 종료를 취소합니다.


지금까지 In-game Editor 에서의 구문작성 요령을 알아보았습니다. 한번 익히면 매우 유익하니 꼭 기억하시길 바랍니다.

[Be written by Pro_Snape]

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