TriggerReactor icon

TriggerReactor -----

Stop wasting time making plugins from scratch




Hotfix
  • Fix for Inventory Trigger not sharing variables between different contexts: "open" "click" "close"
핫픽스
  • 인벤토리 트리거의 변수가 각각 trigger 타입 ("open" "click" "close") 에 따라 공유되지 않던 문제 수정
----------, Nov 27, 2023

Hotfix
  • Adds missing classes as part of the TRG jar to support some hybrid servers (Magna)
핫픽스
  • TRG jar에 일부 추가적인 클래스 추가 (일부 하이브리드 서버 지원: Magna 등)
----------, Nov 19, 2023

Please ignore version 3, which was a mistake.

---

Fixes
  • Drops support for MySQL 5.7. It's very very old and pretty sure nobody uses it anymore
  • Issue of saving non-English characters in TRG script causing problem fixed
문제해결
  • MySQL 5.7 지원이 완전히 중단됩니다 MySQL 8 이상만 가능합니다
  • 영문자가 아닌 문자를 trg 스크립트에 저장시 문자가 깨지는 문제 해결
----------, Nov 4, 2023

Hotfix
  • Fix for trg script being only partially saved for a long script
  • Fix for .json config to be occasionally deleted in the Windows environment
핫 픽스
  • trg 스크립트가 매우 긴 경우 일부만 저장되는 문제 수정
  • Windows 환경에서 가끔 .json 설정이 삭제되는 문제 수정
----------, Oct 29, 2023

# Fix

*Fix for #MYSQL executor throwing NoClassDefFoundError

# 핫픽스

*#MYSQL이 NoClassDefFoundError을 출력하는 오류 수정
----------, Oct 8, 2023

TriggerReactor 3.4.1 Release
Notable Changes:

  • Timings enhancement (/trg timings)
    • Now you can track SYNC and ASYNC in timings properly.
    • For SYNC, it's divided into WAITING and RUNNING to show the difference between 'waiting for completion' and the actual execution of the SYNC block.
  • Global variable improvement
    • Access to a global variable is now up to 7 times faster compared to before the update.
    • You are still advised to use global variables as sparingly as possible because accessing a global variable is 'blocking.'
    • Global variables now save snapshots and then rename them to the actual var.json file. This way, if something goes wrong, you can still maintain a copy of the previous state of the global variables without losing them.
    • Rigorously tested Global Variables for data loss and fixed all the issues found.
    • By turning on /trg debug, you can now see all global variable delete requests to troubleshoot global variables being removed.
  • Enhanced support with PlaceholderAPI
    • Now you can use %trg_run_<expression>% to achieve even greater flexibility.
    • Example: %trg_run_"Player name is "+$playername%
  • InventoryTrigger can be configured to allow users to pick up/drop items from/into the inventory. @Cupelt
  • Interface casting feature
    • To mitigate the problem introduced by Module since Java 9 and to avoid the 'xxx is not open to xxx' issue, you must explicitly cast the value to the instance that is open for use. Check the link for more details.
  • Improved Exception
    • Customized stack information about the trigger is now added to enhance readability.
  • Overall Stability Enhancement and bug fixes
    • Complete rework of Executors/Placeholders #486 @ioloolo
    • Fixes for Executors/Placeholder issues here and there @ioloolo
  • LAMBDA function can now be stored as a variable and invoked #566 @Sayakie @Cupelt
  • RepeatingTrigger change
    • RepeatingTrigger always shares variable space for all triggers ("init," "repeat," "stop").
    • Bug fixes for stability.
  • Trigger loading changes
    • Area, Command, and Custom triggers can now load triggers in subfolders.
  • SWITCH statement added #567 @Sayakie
  • Enhanced FOR loop operators #563 @Sayakie
  • Hex color support for #MESSAGE #LOG and #BROADCAST #564 @Sayakie
  • New CommandTrigger tab completion method #501 @rkdrns4747
  • Placeholders can be placed under subfolders like Executors do #424 @ioloolo
  • Inventory Custom Title support #423 @ioloolo
  • Minecarts can be detected in AreaTrigger #404 @chickiyeah
  • Unary increment/decrement #408 @Kuiprux
TriggerReactor 3.4.1 릴리스
중요 변경 사항:

  • Timings 개선 (/trg timings)
    • 이제 타이밍에서 SYNC 및 ASYNC을 제대로 추적할 수 있습니다.
    • SYNC의 경우, '대기 중인 완료'와 SYNC 블록의 실제 실행 간의 차이를 보여주기 위해 '대기 중'과 '실행 중'으로 나누어집니다.
  • 전역 변수 개선
    • 전역 변수에 액세스하는 것은 이제 이전 업데이트와 비교하여 최대 7배 빠릅니다.
    • 전역 변수에 액세스는 'blocking' 합니다. 따라서 전역 변수의 사용을 가능한 한 작게 유지하는 것이 좋습니다.
    • 전역 변수는 이제 먼저 스냅샷을 저장하고 실제 var.json 파일로 이름을 변경합니다. 이렇게 하면 문제가 발생한 경우 전역 변수의 이전 상태 사본을 유지하면서 데이터를 손실하지 않을 수 있습니다.
    • 데이터 손실에 대한 엄격한 테스트를 수행하고 발견된 모든 문제를 수정했습니다.
    • /trg debug를 활성화하면 전역 변수가 제거되는 요청을 모두 볼 수 있어 전역 변수 제거 문제를 해결하는 데 도움이 됩니다.
  • PlaceholderAPI와의 향상된 지원
    • 이제 %trg_run_<식>%을 사용하여 더 큰 유연성을 가질 수 있습니다.
    • 예) %trg_run_"플레이어 이름은 "+$playername%
  • InventoryTrigger를 구성하여 사용자가 인벤토리에서 항목을 집거나 내릴 수 있습니다. @Cupelt
  • 인터페이스 캐스팅 기능
    • Java 9 이후 모듈 도입으로 인한 "xxx is not open to xxx" 문제를 완화하려면 값을 사용 가능한 인스턴스로 명시적으로 캐스팅해야 합니다. 자세한 내용은 링크를 확인하세요.
  • 개선된 예외
    • 트리거에 대한 사용자 정의 스택 정보가 추가되어 가독성을 향상시킵니다.
  • 전반적인 안정성 향상 및 버그 수정
    • Executors/Placeholders #486의 완전한 재작업 @ioloolo
    • 여기저기 Executors/Placeholder 문제를 해결합니다. @ioloolo
  • LAMBDA 함수를 변수로 저장하고 호출할 수 있습니다. #566 @Sayakie @Cupelt
  • RepeatingTrigger 변경
    • RepeatingTrigger는 항상 모든 트리거에 대한 변수 공간을 공유합니다 ("init", "repeat", "stop").
    • 안정성을 위한 버그 수정
  • 트리거 로딩 변경 사항
    • Area, Command 및 사용자 지정 트리거는 이제 하위 폴더에서 트리거를 로드할 수 있습니다.
  • SWITCH 문 추가 #567 @Sayakie
  • 향상된 FOR 루프 연산자 #563 @Sayakie
  • #MESSAGE #LOG 및 #BROADCAST에 대한 16진수 색상 지원 #564 @Sayakie
  • 새로운 CommandTrigger 탭 완성 방법 #501 @rkdrns4747
  • Placeholder는 Executor와 마찬가지로 하위 폴더에 배치할 수 있습니다. #424 @ioloolo
  • IntentoryTrigger 커스텀 제목 지원 #423 @ioloolo
  • AreaTrigger에서 마인카트를 감지합니다. #404 @chickiyeah
  • 단항 증가/감소 #408 @Kuiprux
----------, Sep 23, 2023

+ Fixing Click/Walk trigger showing wrong information when bone inspection is used
+ Fixed LambdaFunction NPE problem
+ Embed JShader to the .jar file (no longer need to download JShader separately)
+ Fix compatibility issue with Spigot forks (ex Paper). Please report to us if the version you use still have the problem
----------, May 15, 2023

- Fixed where setting temporary global variable to null doesn't delete it but setting it to literal 'null'
----------, Nov 28, 2022

What's Changed
  • fix for AreaTrigger not saving in the proper location by @wysohn in #532
Full Changelog: 3.3.2-Release...3.3.3-Release
----------, Nov 14, 2022

# 3.3.2

*Fixed the bug where #GUI executor not working properly
----------, Oct 29, 2022

3.3.1 Release
+Added LAMBDA expression

  • Check out the link for the description
*TriggerReactor no longer checks for dead codes. This was necessary to utilize the LAMBDA function, yet hopefully, we can add some dead code detection in the future.
*And some other lots of internal refactorings
+Sub-directory support for placeholders just like the executors. #424
+Inventory Trigger now can have custom titles as it opens. #423
*Fixes the #429, the NPE problem of Repeating Trigger
+IMPORT ... AS ... statement added
*Fix #466 - fixed the case when instantiating a new object, the exception was not caught by the CATCH statement
*fix: Inconsistent behavior of literal string "true"/"false"

Notice
We have some major update in how we assign the 'keys' for the json files used for the configuration of each triggers. There were inconsistent keys being used throughout the different types of trigger, and now they all use the same.

Though, because we already have those keys used in the previous versions, it will be simply written without deleting the previous configuration and will stay as that. (Will print warning in the console)

3.3.1 출시
+LAMBDA 식 추가

  • 링크 에서 확인하세요
*TriggerReactor 에서 이제 '죽은 코드' 를 확인하지 않습니다. 나중에 가능하면 검사 기능을 추가 할 수 있도록 해보겠습니다.
*여러가지 내부적인 코드 변경
+Placeholder에도 Executor처럼 하위 폴더 형식을 지원합니다. 다만 : 는 이미 사용중이기 때문에 경로에는 : 대신 @ 을 사용합니다. #424
+인벤토리 트리거에 이제 커스텀 타이틀이 사용 가능합니다. #423
* #429 의 Reapting Trigger 로드시 NPE 발생 버그 수정
+IMPORT ... AS ... 문 추가
* #466 수정 - 새 인스턴스 생성시 예외가 CATCH문에서 처리되지 않던 버그 수정
*수정: String 인 "true" 와 "false" 가 Boolean 으로 처리되는 버그 수정

공지
트리거들의 설정을 저장하는 json파일을 키값들이 대체적으로 변경되었습니다. 이전에 다른 타입의 트리거에서 같은 설정에 다른 키를 사용하는 경우가 있었는데 이제 모두 통합됩니다.

다만 이전 버전에서 이미 생성된 설정들이 있기때문에 만약 그 설정들이 존재한다면 새 키와 값이 써지되 이전의 설정들은 섹제되지 않고 중복된 채로 그대로 유지됩니다. (이는 콘솔에 경고가 표시될것입니다.)
----------, Oct 15, 2022

Changes
+External JS engine support

  • You now can use TriggerReactor in stock JVM 16 given that you have the third-party JS engine provider added. It was tested with the JShader as the author earnestly contacted me first, yet if you prefer, other providers should work just fine. If doesn't, let us know.
변경사항
+외부 JS 엔진 호환

  • 이제 트리거 리엑터를 순정 JVM 16 에서 사용 할 수 있습니다. 다만 이 경우 따로 제 3자 플러그인을 설치 해 주어야 합니다. JShader 의 제작자가 직접 저에게 연락을 주어 사용을 권장하였기 때문에 이 플러그인을 사용해서 테스트 했습니다. 다만 원한다면 다른 JS 엔진을 제공하는 플러그인을 사용하여도 문제는 없을 것 입니다. 만약 작동하지 않는다면 저희에게 연락주세요.
----------, Aug 1, 2021

Updates
This is official support for Java 16. However, you have to use GraalVM in order to use the plugin for now. We hopefully will bring back the stock JVM support in the next version.

+Added pre/post increment/decrement (++, --) @Kuiprux
+Player on a vehicle to be detected by AreaTriggers @chickiyeah
*DROPITEM to show error when invalid arguments are passed
*isnumber is fixed to working
*Added $ sign escape test code. It was reported that $ sign cannot be escaped, but somehow the code was already there. We will see.
*When you use placeholderAPI support, now you can dynamically assign uuid in it.

/trg run #MESSAGE "%tr_my_global_variable__value%"
*MESSAGE now prints "null" instead of throwing an exception if null is passed as the parameter
*Refactorred $round placeholder and address some issues with it

업데이트
자바 16을 지원하는 공식 버전입니다. 다만 이 버전은 JVM 대신 GraalVM 을 자바 16 런타임으로 사용해야 합니다. 이후 버전에서 따로 기본 JVM 버전되게 지원 할 예정입니다.

+연산자 추가 (++, --) @Kuiprux
+탈것에 탄 유저도 AreaTrigger에 감지되게 변경 @chickiyeah
*DROPITEM에 잘못된 인자를 넣는경우 에러를 출력하게 수정
*isnumber 수정
*$ 이스케이프 테스트. $를 이스케이프 할 수 없다는 리포트가 있었으나 코드가 해당 코드가 이미 존재 했습니다. 여전히 작동이 안된다면 신고 해주세요
*PlaceholderAPI 지원 사용시 uuid를 동적으로 사용 할 수 있습니다.

/trg run #MESSAGE "%tr_my_global_variable__value%"
*MESSAGE 에 null을 인자로 넣는경우 에러가 발생하지않고 "null" 이라는 문자열로 나오게 수정
*$round 코드 리팩토링 및 일부 문제 해결
----------, Jul 23, 2021

3.2.0.5

Regarding the versioning
Sorry for the confusion on the versioning. You may probably already noticed that the version is 3.2.0.5 instead of 3.2.5, and it has a reason for it: the third digit of the version had to be reserved for the bugfix for the releases, yet I carelessly used that in the beta version as well. So the previous beta versions, 3.2.0 ~ 3.2.4, are not correctly named, so they should've been 3.2.0.0 ~ 3.2.0.4 instead.

버전 이름 관련
유감스럽게도 이전 베타 버전의 이름이 잘못되어 있어서 부득이하게 이번 버전부터 바꾸게 되었습니다. 아마 이미 눈치 채셨겠지만 이전 버전에 3.2.0~3.2.4 임에도 불구하고 이번 버전은 3.2.0.5 로 책정되었습니다. 그 이유는 세번째 번호는 공식 릴리즈 버전의 버그 수정에 쓰여야 하지만 제가 임의로 이것을 베타버전에도 동일하게 사용하여 생긴 일 입니다. 즉 이전의 베타 버전들, 3.2.0 ~ 3.2.4, 는 사실상 3.2.0.0 ~ 3.2.0.4 여야 했습니다.

Updates
Nothing too much externally, but mostly internal changes, to support Spigot/Paper 1.17~ which uses Java 16.

Notice
  1. The codes are compiled in JDK 16, so you will not be able to use this plugin in any Spigot/Paper version less than 1.17. Stick with the 3.1.x version if you are using those old versions. (However, you can still run any Spigot/Paper version in Java 16, and so is TriggerReactor. The same rule applies for legacy and the latest version in this case: a legacy for 1.5.2~1.12.2, and latest for 1.13~)

  2. This version requires you to install and use GraaVM as your JVM, so the stock JVM 16 will not work. We are still looking for a way to provide a separate plugin that would add the Nashorn script engine, which was removed in the latest JVM, yet we haven't got a bit of luck yet. The plugin is tested and seems to be running with stock JVM 8, so if we somehow find a way to load the Nashorn script engine in Spigot/Paper server, we are good to go. But until then, only GraalVM is supported.
업데이트
외부적인 변화는 거희 없고 주로 내부적인 내용들 입니다. Spigot/Paper 1.17 이상 을 지원합니다.

알림
  1. 해당 플러그인은 JDK 16 로 컴파일 되었으며 그로인해 자바 16을 사용중이지 않는경우 사용 할 수 없습니다. 만약 구버전의 자바를 사용중이라면 3.1.x 을 계속 하여 사용하세요. (하지만 구버전의 Spigot/Paper 는 여전히 사용 가능합니다 단순히 GraalVM의 자바 버전만 16이면 됩니다. 이 경우 여전히 1.5.2~1.12.2 는 legacy를 1.13~ 은 latest를 사용합니다)

  2. 이 버전을 사용 하려면 GraalVM 을 설치 해야 합니다. 일반 자바 16에서는 작동하지 않습니다. 이 문제를 해결하기 위해 따로 Nashorn 스크립트 엔진을 버킷에 로드 할 수 있는 플러그인을 찾고 있으나 아직까지는 운이 없었습니다. 만약에 방법을 찾게 된다면 따로 같이 업로드 되도록 하겠습니다. 하지만 그때까지는 GraalVM을 사용 해야만 TriggerReactor 를 최신버전에서 사용 할 수 있습니다.
3.2.0.4

Updates
+Added pre/post increment/decrement (++, --) @Kuiprux
+Player on a vehicle to be detected by AreaTriggers @chickiyeah

업데이트
+연산자 추가 (++, --) @Kuiprux
+탈것에 탄 유저도 AreaTrigger에 감지되게 변경 @chickiyeah

3.2.0.3

Updates/Fixes
*This is updates/fixes of 3.1.9 compiled with Java 11
+Removed annoying Nashorn Deprecation Warnings. This is for 3.2.x

업데이트/수정
*3.1.9의 업데이트/수정 내용을 자바 11로 컴파일 한 버전 입니다.
+Nashorn Deprecation Warning 이라 뜨는 경고문 제거. 3.2.x 만 해당

3.2.0.2

Bug Fixes
This is ported version of 3.1.8 bug fixes into java 11

업데이트
3.1.8의 버그 수정 내용을 자바 11 로 컴파일 한 버전 입니다

3.2.0.1

Updates
This is exact same update from version 3.1.7 but compiled in Java 11

업데이트
3.1.7의 업데이트 내용을 자바 11로 컴파일 한 버전 입니다.

3.2.0.0

Updates
*This is basically an identical version from 3.1.6, but it is compiled and tested in Java 11. Probably, it shouldn't make any trouble, but use it with caution.

*For the sponge server, stick with the 3.1.x versions. Later, if the sponge is updated to support Java 11, we will do so too.

업데이트
*사실상 3.1.6 버전을 자바 11 로 컴파일 한 후 테스트 한 것 외에는 차이가 없습니다. 다만 자바 버전이 달라져서 생기는 문제가 혹시 있을수는 있으니 주의해서 사용 해 주세요.

*스폰지 서버의 경우 3.1.x 버전을 계속해서 사용 하시면 됩니다. 나중에 스폰지 서버가 자바 11을 지원하게 되면 플러그인도 그에 맞게 업데이트 될것입니다.
----------, Jul 9, 2021

3.1.10

Updates

+added $getSlot placeholder for sponge
+Various operators

  • Arithmetic operation with assignment: +=, -=, *=, /=, %=
  • Bitwise operators: <<, >>, >>>, &, ^, |, ~
(Thanks @Kuiprux for the hard works)

업데이트
+$getSlot Placeholder 스펀지에 추가
+각종 연산자들 추가

  • 사칙연산후 대입: +=, -=, *=, /=, %=
  • 비트 연산: <<, >>, >>>, &, ^, |, ~
(작업해주신 @Kuiprux 님 에게 감사드립니다)

3.1.9

Updates/Fixes

*Fixed where ConfigurationSerialzable (such as ItemStack or Location) are saved successfully in the vars.json, yet they couldn't be loaded back from it
*For the legacy-bukkit version, the old-style CommandTrigger is back. Instead of registering the command, it will intercept the command event, just as we did back in TRG2.x.x
+Removed annoying Nashorn Deprecation Warnings. This is for 3.2.x
*Various fixes for Executors and Placeholders.

업데이트/수정
*ConfigurationSerializable(예를들어 ItemStack 이나 Location) 을 광역변수에 저장하는경우 vars.json 에 저장은 되나 불러오기에 실패하던 버그 수정
*레거시 버킷 버전에서 커맨트 트리거를 직접 버킷에 등록하는게 아니 이전에 2.x.x 버전에서 하던것 처럼 직접 커맨드 이벤트를 처리하는 식으로 복귀.
+Nashorn Deprecation Warning 이라 뜨는 경고문 제거. 3.2.x 만 해당
*각종 Executor 및 Placeholder 버그 수정

3.1.8

Bug Fixes

*Added missing validators: UUID, SimpleLocation, and SimpleChunkLocation

버그 수정
*없어진 직렬화 검사 구문을 추가했습니다: UUID, SimpleLocation, SimpleChunkLocation
----------, May 18, 2021

Update

*For the prior versions, there was no check for 'serializable' instance. This means that you can save any value into the global variable and TRG will accept it regardless of it is a proper type or not. This leads to the loss of the entire vars.json file, and this will no longer happen.

업데이트

*이전 버전의 경우 전역 변수에 값을 넣을때 이 값이 직렬화가 가능한지의 여부를 체크 하지 않았습니다. 즉 전역변수에 넣은 값이 직렬화가 불가능 한 경우 vars.json 의 값이 모두 소멸되는 문제가 있었습니다. 이 버전에서 그 문제가 해결 되었습니다.
----------, Mar 19, 2021

* Resolve #351 - windows path uses backslash

This conflicts with the regex escape character, backslash, so it has to be escaped.
NamedTrigger will now load normally in Windows environments too.

* Do tests separately on Windows and Linux environment
----------, Jan 2, 2021

* Resolve #348 - $cmdline fix

the Placeholder expect to see the command event, so mimic the behavior

* Sponge API doesn't use prefix (slash)

* fix for sponge $cmdline

* version change

* typo fix

* Resolve #347 - Fix for NamedTrigger name issue

The path symbol should be OS independent
----------, Dec 30, 2020

Updates
*Fixed #345 - Failing to locate commandMap ended up completely disable command triggers in legacy versions. This is now fixed.

업데이트
* #345 수정 - 레거시 버전에서 커맨드 트리거 로딩 실패 시 커맨드 트리거 자체가 불통이 되는 버그 수정
----------, Dec 23, 2020

ver | jar
1.5.2 ~ 1.12.2 bukkit | bukkit-legacy
1.13 ~ latest bukkit | bukkit-latest
sponge | sponge

Notice / 안내사항
From 3.2.x, because the plugin will be compiled using Java 11, support for Sponge implementation will be dropped until it supports Java 11. This is because there is no easy way to support both platforms using different java versions, so temporarily, no updates will be provided since 3.2.x. However, 3.1.x will be keep maintained to provide bug fixes for Sponge too.

3.2.x 버전부터 자바 11 지원을 위해 스폰지 버전의 개발이 임시 중단됩니다. 이는 스폰지가 자바 11을 지원하기 전 까지는 버킷과 스펀지 두개의 플랫폼을 동시에 다른 자바 버전을 사용해서 지원 할 방법이 없기 때문에 그렇습니다. 그러므로 3.2.x 부터는 스펀지 버전은 업데이트 되지 않습니다. 하지만 3.1.x 버전의 경우 스펀지 버전 역시 지속적으로 버그 수정이 제공 될 예정 입니다.

Updates
Please back up everything before updating.
We've tried our best to support smooth transition, but unexpected things may occur. Report to us when that happens to you.

+/trg call is added. Similar to /trg run or /trg sudo, you can now directly invoke NamedTrigger through command. This greatly increases compatibility with many of other plugins that uses commands at the end of execution. As always, use /trg help for more info. (Thanks MidnightSugar for the idea)
+/trg i <name> edititems command is added to support InventoryTrigger item editing with the actual inventory. (Thanks to @gerzytet for the efforts) #220
+CommandTrigger now is now directly registered as an actual command.

  • Because of this change, you now can use tab-completion feature with CommandTrigger. Check CommandTrigger Wiki for update.
*Config file reworks

  • This is the main reason why you have to back-up your works. Conversion is all automatic, but to make sure everything is safe, make a copy for all of your works in TriggerReactor folder.

  • Config files no longer use yaml, but use json.

  • If you save Set in a global variable, they will be stored as simple array. This means that when you retrieve it back from the global variable, it will be a List, not Set.

  • To make your life easier, few methods were added.

    • arrayOf("a", "b", "c", ...) directly build an array
    • listOf("a", "b", "c", ...) same as arrayOf, but this build a List
    • set(Collection) you can make set from any Collections. List is one example. set(listOf("a", "b", "c", ...))
*Some rework for reflection helper

  • Fixed problem related to IMPORT #260
  • Most direct access to constructor/method will work without problems
*Fixed #ROTATEBLOCK 62234f7 (Thanks @rkdrns4747)
*Fixed where plugin doesn't load in Sponge when config folder of trigger doesn't exist
*Fixed where /trg i edititem command may freeze after the user unexpectedly log off
*Fix for tab completer: No longer has to restart the server to see the change
+Added /trg cmd settab command. See #309 for details
*Fixed where deleting a trigger caused entire triggers to stop saving new data.
*Fixed where an exception is thrown by the method with no-arguments cause ArrayIndexOutOfBoundException
*Quick fix to address TriggerReactor start/stop event not being called for bukkit
*Now assigning null value to global variable does not throw NPE
*Remove the annoying exception related to EntityTrackingThread
*Tab completion no longer expose the trigger names to the players without the permissions
*Aliases now register/unregister upon command usage

업데이트/추가사항
업데이트전에 모든 설정을 백업 하세요.
가능한 아무 문제가 없게 하려고 노력 하였지만 예상밖의 문제가 생길 수 있습니다. 업데이트전에 꼭 모든 TriggerReactor 내용물의 복사본을 만드시고 문제가 발생했다면 알려주세요.

+/trg call 가 추가되었습니다. /trg run 나 /trg sudo 와 사용법은 비슷하지만 이 명령어의 경우 NamedTrigger 를 직접 실행합니다. 이로인해 명령어 실행을 기반으로 하는 다른 플러그인과 호환성에서 매우 유리해졌습니다. /trg help 로 더 자세한 설명을 보세요. (Thanks MidnightSugar for the idea)
+/trg i <name> edititems 명령어로 이제 InventoryTrigger의 내용물을 일일히 수정하지 않고 인벤토리로 손쉽게 수정 가능합니다. (Thanks to @gerzytet for the efforts) #220
+CommandTrigger 가 이제 실제 명령어로 등록됩니다.

  • 이 명령어로 인해 tab-completion CommandTrigger 로 탭 완성 기능이 사용 가능 해 졌습니다. CommandTrigger 위키에서 자세한 설명을 참조 하세요.
*설정 파일 리워크

  • 업데이트전 백업을 해야 하는 이유 입니다. 전환작업은 모두 자동이며 만전을 기하기 위해 꼭 TriggerReactor 폴더를 미리 백업 해 두시기 바랍니다.
  • 설정 파일들이 이제 yaml 이 아닌 json을 사용합니다.
  • Set 을 전역변수에 저장하는경우 일반 배열로 저장됩니다. 이런 이유로 전역변수에서 저장된 Set을 불러오는경우 Set 이 아닌 List로 불러와 집니다.
  • 그래서 몇가지 메소드가 추가되었습니다.
    • arrayOf("a", "b", "c", ...) 배열을 쉽게 만듭니다
    • listOf("a", "b", "c", ...) List 를 쉽게 만듭니다
    • set(Collection) 쉽게 Collection 을 Set으로 변경 합니다. 예) set(listOf("a", "b", "c", ...))
*reflection helper 개선

  • IMPORT 사용시 생성자가 제대로 선택되지 않던 버그 수정 #260
  • 이제 왼만한 메소드/생성자는 제대로 작동합니다.
*#ROTATEBLOCK 가 수정되었습니다. 62234f7 ( @rkdrns4747 님에게 감사 드립니다.)
*스폰지 에서 사용 시 트리거의 폴더가 존재 하지 않는경우 플러그인 자체가 로드되지 않던 버그 수정
*/trg i edititem 명령어로 아이템을 수정 하던 도중 강제 종료되는경우 더이상 명령어가 작동하지 않던 버그 수정
*이제 서버를 재시작 하지 않아도 커맨드 트리거가 정상적으로 탭 완성 기능에 등록 됩니다.
+/trg cmd settab 명령어를 추가 했습니다. #309 를 보세요
*트리거 하나를 삭제 시 모든 트리거의 저장 기능이 마비되던 버그 수정.
*값을 받지 않는 메소드에서 에러 발생 시 ArrayIndexOutOfBoundException 가 발생하는 버그 수정
*버킷에서 사용 시 트리거 start/stop 이벤트가 실행되지 않던 버그 수정
*커맨드 트리거 동기화 실패시 NPE가 발생하던 버그 수정. #328
*서버 종료시 EntityTrackerThread 관련 워닝이 나오던것을 수정
*이제 권한이 없는 유저가 탭 완성 기능으로 트리거 이름을 확인 할 수 없습니다.
*CommandTrigger 동의어 설정시 명령어 사용 직후 바로 적용되게 수정
----------, Dec 20, 2020

Compiled for 1.16.1
No specific changes required. Tested in 1.16.1 Spigot.
It seems like there were no major changes in API

nothing has changed for bukkit-legacy and sponge

1.16.1 로 컴파일
특별히 바뀐점은 없습니다. 1.16.1 스피갓 에서 테스트 됨.

sponge 나 bukkit-legacy 버전은 변화가 없습니다.
----------, Jun 30, 2020

BugFixes

*Semicolon no longer counted as rows (gerzytet)
*Fix for ASYNC block hangs when #WAIT is used (gerzytet)
*Fix for #SETGAMEMODE (rkdrns4747)
----------, Mar 17, 2020

Hotfix for #BREAK

Fixed where the code interpretation still continues final iteration passing the #BREAK statement by.
----------, Jan 19, 2020

Forgot to include the bugfix I did earlier. Oopsy


*Make IMPORT to accept underscores.
----------, Dec 20, 2019

Notice

Files are now separated into three: bukkit-legacy, bukkit-latest, and sponge.

  • For 1.5.2 ~ 1.12.2 server, use bukkit-legacy
  • For 1.13 ~ 1.15.1 server, use bukkit-latest
  • For sponge server, sponge
이제 파일이 세가지 형태로 배포 됩니다: bukkit-legacy, bukkit-latest, 와 sponge.

  • 서버 버전 1.5.2 ~ 1.12.2: bukkit-legacy
  • 서버 버전 1.13 ~ 1.15.1: bukkit-latest
  • 스폰지 서버: sponge

New

+Compiled and tested in 1.15 and 1.15.1
+Placeholder in String now will be parsed by the TriggerReactor automatically.

  • Notice: if your code contains $ in String, make sure to escape it with \ so that it will not be treated as Placeholder. ("you got $1000" -> "you got \$1000")
+Predefined CustomTrigger name, onBlockMultiPlace, is added
+Dedicated timings support can be accessed via /trg timings command
+New Executors: #KICK, #CLEARCHAT
+Deprecated code warning system (internal change)
+/trg version command
+/trg debug now shows feedback
+$packlist Placeholder
+$firstgroup Placeholder
+$killername, $entityname, $cmdline Placeholder
+$helditem, $offhanditem, $playerinv:{slot}, $id:{item}, $name:{item}, $lore:{item}, $idname:{item}
+$slot{index} (works only in InventoryTrigger)
+#sethelditem {item}
+#setslot {slot}, {item}
+#setoffhand {item}
+#setplayerinv {slot}, {item}
+#setlore {lore}, {item}
+#setname {name}, {item}
+PAPI Expansion (%tr_var_{variable name}%, %tr_version%)
+$isnumber Placeholder
+Interner change to avoid javascript failuer regarding null values

+1.15 와 1.15.1 로 컴파일 하고 테스트 되었습니다.
+ 문자열 내의 Placeholder 가 이제 자동으로 변환됩니다.

  • 주의: 만약 문자열 내에 $ 를 사용중이라면 꼭 \ 를 이용해서 escape 해주어야 합니다. ("돈이 $1000 있습니다" -> "돈이 \$1000 있습니다")
+새로운 CustomTrigger 이벤트명 onBlockMultiPlace 가 추가되었습니다. (침대등의 2칸블록 설치 이벤트)
+이제 /trg timings 로 TriggerReactor의 타이밍을 따로 확인 할 수 있습니다.
+새로운 Executor: #KICK, #CLEARCHAT
+Deprecated code warning system (internal change)
+/trg version 명령어 추가
+/trg debug 사용시 메시지 추가
+$packlist Placeholder
+$firstgroup Placeholder
+$killername, $entityname, $cmdline Placeholder
+$helditem, $offhanditem, $playerinv:{slot}, $id:{item}, $name:{item}, $lore:{item}, $idname:{item}
+$slot{index} (InventoryTrigger 에서만 사용 가능)
+#sethelditem {item}
+#setslot {slot}, {item}
+#setoffhand {item}
+#setplayerinv {slot}, {item}
+#setlore {lore}, {item}
+#setname {name}, {item}
+PAPI 지원 (%tr_var_{variable name}%, %tr_version%)
+$isnumber Placeholder
+Interner change to avoid javascript failuer regarding null values

Update
*Placeholder no longer return its name when null has to be returned
*You may now use prefix for AreaTrigger, ClickTrigger, and Walk Trigger. (For example, [email protected],2,3 -> [email protected],2,3)

  • If there are two locations for different prefixes, the behavior is undefined. Please avoid it if possible.
*Added missing files, which caused TriggerReactor to not loaded properly for the first time users.
*#GAMEMODE now support both String and its numerical counterpart argument
*(Bukkit) Third party plugin now can access javaPluginBridge field so that it can access the internal methods of TriggerReactor
*Fixed where direct constructor calling using IMPORT statement sometimes doesn't work.
*Fixed Compatibility issue with PaperSpigot
*Improved command interfaces for InventoryTrigger
*Placeholder and Executor are no longer case sensitive

*Placeholder 가 이제 문제 발생시 자신의 이름 대신 null 을 반환합니다.
*AreaTrigger, ClickTrigger, 와 Walk Trigger 의 이름앞에 접두사를 사용 할 수 있습니다. (예를들어, [email protected],2,3 -> [email protected],2,3)

  • 만약 두개의 같은 좌표가 다른 접두사를 가지고 있는 경우는 상정되지 않았습니다. 가능하면 피해주세요.
*삭제된 파일 추가. 새로운 유저중 플러그인 로드가 안되던 것 수정.
*#GAMEMODE 에 이제 문자열은 물론 그에 상응하는 숫자도 사용 가능합니다. survival 혹은 0
*(Bukkit) 제 3자 플러그인에서 javaPluginBridge 필드에 접근 가능 해 졌습니다.
*IMPORT 를 사용한 생성자 접근이 종종 문제가 있던 것 수정.
*PaperSpigot 호환성 문제 해결
*InventoryTrigger 의 명령어 보완
*Placeholder 와 Executor 가 이제 대소문자를 구분하지 않습니다.
----------, Dec 18, 2019

Note
Files are now separated into three: bukkit-legacy, bukkit-latest, and sponge.

  • For 1.5.2 ~ 1.12.2 server, use bukkit-legacy
  • For 1.13 ~ 1.14.4 server, use bukkit-latest
  • For sponge server, sponge (obviously)
Changes
Mostly refactoring and tests to minimize the impact of porting 1.12.2 codes to 1.13 compatible codes

*#MODIFYPLAYER is separated into multiple, dedicated executors.
*Bug fixes for various executors (thanks to @gerzytet for the efforts)
*Now constructor calling with IMPORT statement is fixed.
*Fixed where .jar is extended twice after the file name
+/trg debug now shows message
+/trg version is added
*Fixed where trg command completely stopped working on Sponge server
+Dollar sign($) can be escaped with backslash(). This is to prepare for the future update: #137
+Deprecation message to warn users that dollar sign in the string will cause the problem in the future version
*Added missing file (config.yml) in jar. Now the plugin should work for Paper spigot.
*Fixed where Placeholder and Executor folders not copied to the data folder.
*#MODIFYPLAYER is separated into multiple, dedicated executors.
*Bug fixes for various executors (thanks to @gerzytet for the efforts)
+Dollar sign($) can be escaped with backslash(). This is to prepare for the future update: #137
+New executor #KICK #195
*Now #CLEARCHAT accepts Player instance #195
*Fix API support not properly loaded


공지
이제 파일이 세가지 형태로 배포 됩니다: bukkit-legacy, bukkit-latest, 와 sponge.

  • 서버 버전 1.5.2 ~ 1.12.2: bukkit-legacy
  • 서버 버전 1.13 ~ 1.14.4: bukkit-latest
  • 스폰지 서버: sponge
변경 사항
주로 1.12.2 코드에서 1.13 버전으로 넘어가는 내용으로 바뀐점은 많이 없습니다

*#MODIFYPLAYER 가 개별적인 Executor들로 나누어졌습니다. 하지만 기존 Executor역시 유지됩니다.
*여러가지 Executor들의 버그 수정 ( @gerzytet 에게 감사 드립니다)
*이제 IMPORT 를 이용한 객체 생성 버그가 수정되었습니다.
*파일 명 뒤에 .jar이 두번 붙는것이 수정 되었습니다
+/trg debug 를 치면 이제 메시지가 나옵니다
+/trg version 이 추가되었습니다
*Sponge에서 trg 명령어 작동이 완전히 되지 않던것을 다시 복구했습니다
+달러 표시($) 가 이제 백슬래쉬(\) 로 escape할 수 있습니다. 3.0.0 버전부터는 #137 업데이트 때문에 $ 표시에 꼭 \를 붙여야 합니다
+위에서 상기한 업데이트 관련 메시지가 나오도록 수정했습니다.
*jar 파일 내 없어진 파일 추가(config.yml). 이제 Paper spigot 에서도 작동합니다.
*폴더에 Placeholder 와 Executor가 복사되지 않는 버그 수정
*#MODIFYPLAYER 가 개별적인 Executor들로 나누어졌습니다. 하지만 기존 Executor역시 유지됩니다.
*여러가지 Executor들의 버그 수정 ( @gerzytet 에게 감사 드립니다)
+달러 표시($) 가 이제 백슬래쉬(\) 로 escape할 수 있습니다. 3.0.0 버전부터는 #137 업데이트 때문에 $ 표시에 꼭 \를 붙여야 합니다
+#KICK Executor가 추가되었습니다. #195
*이제 #CLEARCHAT 에 Player 인스턴스를 줄 수 있습니다. #195
*API 연동 기능이 로드되지 않았던 점을 수정했습니다.
----------, Oct 12, 2019

2.1.8



Note:

- In the future versions, the version will start at 3.0.0, and different Jar will be distributed depending on platforms, Bukkit-legacy(1.5.2 to 1.12.2), Bukkit-latest(1.13 to latest), and Sponge.

- 2.1.8 probably would work in 1.13 and 1.14 if Spigot supports backward compatibility, but there is no guarantee.



* Pressing TAB in in-game editor no longer cause exception

+ Added SYNC/ASYNC statement (See Wiki for details)

* Fix for IF ELSE statement not working as intended

* Fixed that CustomTrigger stopped working with Sponge

+ $packlist Placeholder is added (pro_snape)

+ Now non-default constructors can be used with IMPORT statement (it worked only with the default constructor)

* Fix for concurrency issue where /trg reload command and global variable saving thread can interfere

* NPE fix for Sponge where non-player interacting with the block wasn't properly handled

+ $firstgroup Placeholder is added

* Some effort to fix URI Fragment error which prevents this plugin to be used in PaperSpigot or any fork versions of Spigot

* Click/Walk trigger set on the WALL_SIGN and SIGN_POST will be now checked separately

* Fixed the problem where variable assignment to array copies the name of the variable instead of copying the content of variable into the array.
----------, Jun 25, 2019

+$blockname placeholder
xCouldn't reproduce the global variable not saving problem
*Support for spigot 1.13.2
*Better global variable saving logic
*Fix for onStart and onStop Custom Trigger for Sponge
*Now in-game script editor will save the code upon 'save' regardless of syntax error
*location() of Bukkit now accept decimals
+temporary global variable
*command trigger can be set sync/async
*#WAIT now accept decimal seconds
+$round placeholder
*Adding pitch and yaw to #TP
+#BREAK and #CONTINUE statement
*Some more trials to make error messages more clean to read
*#SETBLOCK now can be used without location info (so that it can use the block in triggering event)
*Fix for non-player related error showing not useful information
+#ROTATEBLOCK
+Command Trigger now has dedicated permission support
+Command Trigger now has dedicated alias support
+/trg list command to show all triggers
*Fix for using non-numeric value in /trg help causing exception
*Command Trigger is now case insensitive
xAuto Complete feature cannot be implemented in 1.13 or later. It's due to client change.
*#CMD and #CMDOP can now execute the command created by Command Trigger
*Addressed backward compatibility issue with version <= 1.12.2
*Removed this plugin's alias 'trigger'

+$blockname placeholder
x전역 변수에 null 저장시 삭제되지 않는 문제는 재현 할 수 없었습니다.
*spigot 1.13.2 호환
*전역 변수 저장 방식 개선
*onStart 와 onStop 이 스펀지에서 제대로 작동하지 않는 것 수정
*이제 게임 내 에디터에서 save를 할 때 코드에 문제가 있더라도 무조건 저장합니다
*Bukkit쪽의 location()이 이제 소숫점도 받습니다
+임시 광역 변수 추가
*command trigger 를 동기/비동기 가능하게 하는 명령어 추가
*#WAIT 이 이제 소숫점도 받습니다
+$round placeholder
*pitch yaw 를 #TP 에 추가
+#BREAK 와 #CONTINUE 문
*에러 메시지를 조금 더 개선했습니다
*#SETBLOCK 이 이제 좌표를 지정하지 않아도 사용 가능합니다(물론 사용하는 트리거가 블록 관련인경우만)
*플레이어와 관련되지 않은 에러가 발생 시 문제 해결에 유용하지 않은 에러가 뜨는 문제 수정
+#ROTATEBLOCK
+Command Trigger 가 이제 독자적인 퍼미션을 지원합니다
+Command Trigger 가 이제 독자적인 동음어를 지원합니다
+/trg list 명령어로 모든 트리거를 볼 수 있게 추가
*숫자가 아닌값을 /trg help 에 넣는 경우 에러가 발생하던 것 수정
*Command Trigger 가 이제 대소문자를 구분하지 않습니다
x탭으로 자동완성 기능이 1.13 혹은 이후부터 지원되지 않습니다. 클라이언트 쪽 변경 입니다.
*#CMD #CMDOP 가 Command Trigger 로 생성된 명령어도 실행 가능해졌습니다
*버전 <= 1.12.2 에서 문제가 발생하던 것 수정
*이 플러그인의 동음어중 하나인 'trigger' 를 삭제 했습니다
----------, Dec 27, 2018

Sorry for skipping 2.1.5. Forgot to upload it.



2.1.6

- Fixed the 'player' variable not found error

- Error message rework. The exceptions will show only if debug mode is on. (/trg debug)

- Fixed the problem where a number in the IMPORT statement wasn't properly parsed.

- Added line break (\n) for String

- Added carriage return (\r) for String (by Alex4386)

- Addressed (-1, -1) error message as it's not useful.



2.1.5

- Logical comparison with null no longer throw NPE. (EX. x == null is now valid statement even if x is null)

- The unrecognizable character now will catch it appropriately and throw exception accordingly.

- Error messages are again revamped for better readability.

- Fixed where random return decimal value even integer input was used.

- New custom events (onStart, onStop) check Wiki for details

- Fixed the problem where using String for the place of enum didn't work properly

- [Sponge] Fixed the critical problem where the last player's reference was reused in other trigger executions.

- Fixed where some variables were not properly extracted for the Executor/Placeholder to use

- Fixed where GUI icons were wiped on reload

- Fixed where AreaTrigger throwing random exceptions
----------, Dec 16, 2018

2.1.4

- Comparing uninitialized value (null) doesn't throw NullPointerException anymore. Expression such as null == null or null != null works.
- Fixed where Lexer just stops without any additional information when encountered with unrecognizable character.
- Some more efforts to make error message more clean to read
- Fixed where calling the method with same name with different parameter type would result in ambiguous result. For example, random(1,10) would return decimal value when it has to return integer value. TRG now uses most specific method that matches the parameters.
- Custom Events for TRG start and stop. Check out CustomTrigger Wiki
- Fixed where enum conversion support for method with enum didn't work
- Fixed where extracted variables used in previous ScriptEngine left and could be used in next execution.

- Now support 1.13

- Fixed where Placeholder and Executor didn't work properly in 1.13
----------, Sep 3, 2018

2.1.3

  • New internal variable ‘click’ is added to Click Trigger. See wiki for more info.
  • ‘item’ internal variable of Inventory Trigger now uses the clicked item in the actual inventory GUI, not the item saved in the trigger itself.
  • Little bit more clear exception messages
  • /trg sudo command to let console to execute script for specified player (similar to /trg run but you can specify the target)
  • Fixed where some nested IF statement was not correctly parsed
  • Fixed where you couldn’t check global variable via command
  • Fixed where you couldn’t save primitive types(String, Integer, Decimal) into global variable via command
  • Fixed where clicking outside of Inventory Trigger’s GUI caused IndexOutOfBoundException.
----------, Aug 23, 2018

2.1.1

- Fixed where the wrong syntax can actually pass the Parser and cause serious impact on server.

- FOR loop's iterator now can be complex (For example, using variables or expression for the initial number or limit number)


2.1.2

- Fixed where TRG doesn't load if space is included in the path.
----------, Aug 4, 2018

2.1.0
- Seems to be stabilized, so now publishing it as release version.
- Fixed that setting a global variable to null cause error instead of deleting it.
- If tab is pressed in in-game editor, now it replaces spaces to ^
- Added safety feature for WHILE loop if it runs in server thread.
- Performing arithmetic operation on non-number types now throw appropriate exception, not the ambiguous ClassCastException
- Separated help page into multiple pages
----------, Aug 1, 2018

2.0.3.3


- You now can use IMPORT statement to directly use class (read WIKI)


2.0.0


There were quite a lot of refactoring involving both Bukkit API and Sponge API. I designed carefully so that you do not lose your scripts, yet I highly recommend to back up all your data.



* Common

- Now CommonFunctions has shared part. The parent CommonFunctions is dedicated to neither Sponge or Bukkit. Methods in this parent CommonFunctions can be used by both Sponge and Bukkit side.

- Supposedly fixed duplicating .trg files alongside the plain files.

- Now CustomTrigger register listener individually. Each Trigger now owns individual listeners.



* Sponge

- Now officially supports Sponge API 7. Did not tested on prior versions, and there is no guarantee if it will work for prior versions too.



* Bukkit

- Refactoring of bukkit related codes together with refactoring of core codes.
----------, Jul 26, 2018

1.4.5



- New features for AreaTrigger

-- Now AreaTrigger tracks entities inside their region

-- You may use getEntitiesInArea("myArea") to get all the entities inside that AreaTrigger

- #MESSAGE now can print any variable types.

- #VELOCITY now recognizes decimal numbers. (TheRedPlanet)

- Some more useful functions in CommonFunctions. The Javadoc is updated accordingly. (TheBestNightSky)

- Some bug fixes for CommonFunctions. (TheBestNightSky)

- #ACTIONBAR executor is added (TheBestNightSky)
----------, Jul 3, 2018

1.4.4



- Fixed where interaction (such as clicking the block) doesn't work properly in older versions

- Add Mysql support. You may have to change config in config.yml

- New Executors and Placeholders. Check out Wiki
----------, Mar 6, 2018

1.4.3



- Fixed that assigning null to the global variable get saved as String "null" instead of deleting it.

- Placeholder now accept only factors(variable, number, boolean, String)

- Fixed where returned value of placeholder becomes decimal regardless of the placeholder type

- For example $random:7 should return integer value between 0~6, but it returned 0.0~6.0 instead.

- ELSEIF statement is newly added.

- New Executors. Check out Wiki

- Fixed where /reload command deletes the current location of player. Though, /reload is not recommended still. Use /trg reload if you need to reload new scripts
----------, Feb 21, 2018

1.4.2



- #POTION level argument now starting from 1 instead of 0.

- More placeholders. Check out wiki

- Fixed where InventoryTrigger's icons not loaded properly.

- Fixed the bug that AreaTrigger wasn't loaded/saved properly
----------, Feb 11, 2018

1.4.1



- #MESSAGE no longer merge arguments but print them in multiple lines.

- Now newly created trigger will use extension .trg

* Previous file will be read without the extension, yet it will be saved with .trg extension added.

* If there are both file with extension .trg and without extension .trg, the one with .trg extension has the priority.

* Automatic conversion does not delete the previous flat file.

- Bunch of more new Executors and Placeholders. Check out WIKI!

- Fixed the bug where $ in the in-game editor is replaced with the white-space. Now you can use ^ instead of $ to insert white-space

- Short Circuit feature for boolean operation is added. Check out Logic section of WIKI

- Unary minus bug is fixed.
----------, Jan 30, 2018

1.4.0



- fixed where newInstance() function couldn't find the appropriate constructor

- /trg run now can be used in console

- fixed where the icon lores of inventory trigger get deleted

- Major change) Placeholder is added. You may want to check Wiki for the details

- Wiki has updated. (Huge thanks to MidnightSugar for the efforts)
----------, Jan 19, 2018

1.3.4

- Fixed the logical error of WHILE statement in 1.3.3

- Error messages became less ambiguous (Now show the row and column where the error happened.)

- Fixed the plugin doesn't work with fork version of Bukkit (Like Kauldron or Thermos)

- New functions to create player head in CommonFunctions

- Added descriptions for CommonFunctions

- New function to create enum value manually.
----------, Nov 11, 2017

1.3.3

- Exception for failing to convert String to enum when calling a function with enum argument

- Lag issue with the PermissionCheckEvent is addressed now

- Some bug fixes in AreaTrigger

- InventoryTrigger now also saves the MetaData. The displayName and lore section of .yml file is now deprecated yet not deleted for backward compatibility (read only). MetaData includes enchantments, displayname, lore, etc.

- WHILE statement now show proper message upon error not just weird class cast exception

- Some new functions to create head items from name or base64 in CommonFunctions. Check out javadoc

- Some examples are added to the CommonFunctions' javadoc
----------, Oct 28, 2017

1.3.1



- Fixed the Executor wasn't synchronized when it should be regardless of the state of the Trigger which called the Executor

- Fixed the very bad deadlock situation. Report me if you find any other issue.


1.3.2


- Some moderate efforts to address lag issue in old version like 1.5.2

- Added the safety mechanism to protect var.yml on unexpected server stop.

- Now you can use Enum contained functions. (Check out Wiki: Trigger -> Functions -> Enum handling)

- PermissionManager related issue was addressed. Please contact me if something still happens.
----------, Sep 29, 2017

1.3.0



- Fixed the major bug in Area Trigger. There was a little miscalculation where it causes the part of Area Trigger to be not detected occasionally.

- Now IF statement for any variable returns true if it's not null. For example, if a variable named test exists, IF test; will be always true.

- Few more data structure for common functions. Addition to array(), now you can create your own Set, List, and Map in trigger.

- Some minor bug fix for FOR loop iteration

- Now fully supports various versions. Should work find for versions through 1.5.2 to the latest version.

- Added ConfigurationSerialization setup for Location class specifically for 1.5.2 (As the old Location class didn't implement ConfigurationSerializable)

- Now supports varargs functions. This was an issue when you actually trying to use staticMethod function.

- #SOUNDALL is fixed. (soliddanii)

- Some fix for WORLD and new Executor group EFFECT (soliddanii)

- Fixed the #CALL. Now NamedTrigger will truly run sync/async depends on the parameter provided upon execution.

- Possible fix for Thread Safety issue in older version like 1.5.2.

- Lexical analyzer now aware of escape sequence. You may add " or \ in your string using escape sequence '\'. For example, #MESSAGE "Hey the message is \"HI\"" will show message Hey the message is "HI"
----------, Sep 9, 2017

1.2.2



- Somehow EntitySpawnEvent doesn't exist in some of the different versions of Bukkit API. I decided to just delete this abbreviation. I contacted md_5 about it, but he seems to be not counting on it.

- Fixed where bungee ChatColor was used instead of Bukkit's ChatColor

1.2.3



- Found another bungee ChatColor class. Changed to Bukkit one

- Removed onEntitySpawn abbreviation. This is because EntitySpawnEvent somehow doesn't exist in some Bukkit APIs

- Added old version support for getOnlinePlayer(). Should work fine one versions like 1.5.2


1.2.4

- Fixed the malfunctioning Area Trigger. Works flawlessly now (Thank you for the report, Noy)

- Now Named Trigger can be specified sync/async on run-time. #CALL "SomeNamedTrigger" true for sync, and #CALL "SomeNamedTrigger" false for async. Not providing second parameter will set it to be true(sync) by default.

- EntityLook packet for protocollib support.

- Removed the handlerlist checking for Custom Triggers. It seems the events of Bukkit API doesn't really need it to be working properly.
----------, Aug 25, 2017

1.2.1



- Fixed #BROADCAST and checked it working.

- Added support where older Bukkit versions (like 1.7.10) are upset about the click trigger (as only one hand can be handled in older versions)

- Possibly fixed where Executor file has created instead of Executor folder (this happens randomly for some environments but can't figure what really happened yet. Report it to me if you see this problem again.)
----------, Jul 25, 2017

1.2.0: From 1.2.0, I will start focusing on the accessibility of plugin unless I find any critical bugs.



- Added more information in exceptions. Usually it was really hard to debug the code as Exceptions were too vague, but I am currently trying to give much better feedback to help debugging the code.

- Now Executors will be overridden by the Executors in the .jar file. So if you have your own codes in the predefined Executors, you must back them up before starting up the server. However, the Executors that does not have same name as the Executors in the .jar file will not be affected.

- #BROADCAST will now use the receiver as the 'target player' when it's parsing the placeholder through PlaceholderAPI.

- Now you can edit Triggers while you are in the game. You can do that by shift+right click on the Click/Walk trigger while holding bone, just using the same name for the Trigger you've created, or for some special Triggers like InventoryTrigger, you use /trg i <name> edit command to start editing the code. Generally, if you have created a Command Trigger with /trg cmd test blah blah, then editing it will be /trg cmd test. Same for most of the triggers.

- Fixed where dot next to dot creates unexpected result.

- Added overloaded method in InventoryTrigger so that #GUI Executor doesn't have to deal with the complex problems.

- Fixed where saving codes using in-game editor make it Linux style.

- Now tab used in the text editor will be automatically replaced with four spaces (which is standard.)
----------, Jul 12, 2017

1.1.6



- Let interpreter to throw more useful information than just NullPointerException

- Make error messages a little less ambiguous.

- Fixed sendEntitySpawn doesn't set pitch,yaw,headpitch proper
----------, Jul 7, 2017

1.1.5



- Fixed where NamedTrigger runs asynchronously when it shouldn't

- Fxied #SERVER executor
----------, Jul 7, 2017

1.1.4



- Fixed sendEquip packet didn't work properly

- Now arguments for Executor can be separated by ',' as well. (For example, #SOMETHING a, b, c or #SOMETHING a b c)

- Fixed #CMD #CMDOP #CMDCON where the 'true' parameter didn't work. You should delete them before server restart to get the updated Executors.

- New Executor #TPPOS

- Fixed where Repeating Trigger using Executor run it asynchronously, not synchronously.

- Fixed where Named Trigger using Executor run it asynchronously, not synchronously.
----------, Jul 3, 2017

1.1.3



- Some fix in protocollib.

- 12 New Executors for World Editing

- Fixed where length field wasn't usable for the array

- A new function in CommonFunctions

- Better way to show Exceptions in game. This will help you debugging.

- New command /trg run is added.
----------, Jun 29, 2017

1.1.2



- Fixed where IF statement cannot handle numbers correctly. Now it will treat 0 as false and other numbers as true. (it makes sense as if you get any number from global variable, it will be something other than 0 in usual cases.

- Repeat Trigger is newly introduced! Check out Wiki for more info.

- #LOG no longer put ugly Message: or "enter." Just like always, to update Executor, you have to manually delete the Executor you want to update before server starts. (Or copy it from github source code directly)
----------, Jun 26, 2017

1.1.1


- Removed Guava dependency. This allows backward compatibility back to 1.7.10. (Actually only tested in 1.7.10 but should work for all bettwen 1.7.10 and latest minecraft servers)

- Fixed some bugs with FOR loop.

- Fixed where boolean negation cannot handle Numbers well. Now it treats 0 as false and other numbers as true.

- Now nullvalues are real 'null' instead of just null String.

- Some new functions to CommonFunctions. Check out for Wiki(or Javadoc)

- Fixed that failing walk/click trigger makes the coder stuck in un-clickable state.

- ProtocolLib support is added. Only partial methods are added, yet some more can be added too

- Now you can access static field/methods using new functions introduced in CommonFunctions. (Check out javadoc)

- Fixed that NamedTrigger uses wrong variable map. Now it correctly handles the variable map of its caller.

- #WAIT can accept decimals now. (it doesn't work well though)
----------, Jun 25, 2017

1.1.0: Syntax are looking good. Versioning up!



- Fixed that %(MOD) operator was not recognized by parser.

- Added Placeholder support for #BROADCAST executor

- Factions support. Use 'factions' variable.

- Coreprotect support. Use 'coreprotect' variable.

- You now can access any plugins using plugin() function. (Very limited but better than nothing)
----------, Jun 22, 2017

(Again, make sure to check if the version is 1.0.3 as uploading to bukkit site take some time while under review.)


1.0.3


- Fixed where failing to load API also fails the plugin

- Fixed where Permission Injection didn't compatible with the permission management plugins(like PEX)

- Fixed where changing true to false of Intercept option in config.yml throw exception

- new functions hasLore(), getLore(), and formatCurrency(). Check out wiki

- Fixed ID to ID assignment fails. (like somevariable = someother)

- Added placeholderAPI support. ('placeholder' variable)

- Click/Walk trigger copy/cut now remains in clipboard after pasting

- #MESSAGE executor now support placeholderAPI. (you should delete the MESSAGE.js in Executor folder before restart)
----------, Jun 20, 2017

Notice: Sometimes the upload takes time until Bukkit team review the jar file. Make sure to check it is 1.0.2 before downloading it. (If you are to update)

1.0.2



- Fixed where NPE thrown when a single line code with assignment statement

- Some of the logical mistakes about boolean negations are fixed

- Accessing global variable that doesn't exist will no longer throw exception but results null

- Boolean negation thread null value as false. (so !null is true)

- Now you can use semi-colon as statement separator.

#MESSAGE "HI"

#MESSAGE "HELLO"

is equivalent to

#MESSAGE "HI"; #MESSAGE "HELLO"



- hasLore() is added to CommonFunctions

- Fixed where config.yml get reseted when the server restarts.
----------, Jun 18, 2017

0.1.8

- Huge design change in Inventory Trigger (Sorry about the people who already made Inventory Trigger; you should rewrite them somewhat :/)

- Check out Wiki's Trigger section's Inventory Link for details

- Also will upload example in More Examples

- Added capability to insert space in the in-game Script Editor. Use $ sign to indicate space. Read usage

- Fixed(but not sure) where the syntax error fails the plugin to load

- Added few functions to BungeeHelper

- Added few functions to CommonFunctions



1.0.0

Not sure if all the bugs are fixed, but it seems most of them are functioning well. I will upload it as Release starting from now.



- Two new Executors are added: #SPAWN and #GIVE

- Fixed(?) where random NPE occur via PlayerLocationManager. Please report to me if you see this happen

- Added MCMMO support. Similar usage as 'vault.' Will look forward to add support for popular plugins like Factions, etc.

- CustomTrigger now can hook third party plugins' events. Use full class name for eventName, so TriggerReactor can look for the event.

- For example, if you want to hook JobsJoinEvent of Jobs Reborn Plugin, then event name should be com.gamingmesh.jobs.api.JobsJoinEvent.

- Added the Event object itself to the local variable with name 'event.' So using the JobsJoinEvent as example again, you have access to JobsJoinEvent event.

- Few new functions in CommonFunctions.


1.0.1

- Few new functions to CommonFunctions. See the Variable section of Trigger in Wiki

- Fixed where using integer value for 'vault' related functions didn't work

- #SOUND and #SOUNDALL executor fix (you need to manually delete them before starting server, so it can be copied from the jar)

- Argument merge function no longer add extra space at the end of String.

- Fixed where /trg reload might can duplicates Listeners for CustomTrigger.

- Fixed parser where list of logics didn't parse properly

- Added boolean negation operator. See wiki's Logic for more info

- Added custom event PlayerPermissionCheckEvent. You can see more info in the Wiki's CustomEvents under Misc
----------, Jun 17, 2017

Tested in Spigot 1.12



0.1.7

- Fixed the #SERVER executor.

- More detailed information when NullPointerException throws

- Added Custom Trigger. You can hook Bukkit Events for your trigger. Check out Wiki's Trigger section for more information

- Added right to left String append. ("test"+1 worked but 1+"test" was not. Now you can use it both way)
----------, Jun 10, 2017

0.1.1

- Changed gvar usage. Now you have to use String instead of just id. See WIKI's Trigger section for more details

- Fixed where Executor folder doesn't copy well for different environment(hopefully fixed)

- Fixed where non-literal type unwrapping throw exception

0.1.2



- Huge performance improvement for Executors (about 8 times faster now)

- New trigger type "Named Trigger"

- #CALL now only can use triggers in NamedTrigger folder

- You can modulate the NamedTriggers by creating a new folder.


0.1.3

- Inventory Trigger is added (see Wiki's Trigger section for more information)

- #GUI executor is added.

- Wiki's Trigger section is updated a lot.

0.1.4



- CMD related Executors now can append arguments (see Executor section of Wiki for example)

- fixed where /reload doesn't reload Executors

- Added argslength variable to Command Trigger

0.1.4v2 (no version change)



- It's a hot fix for possible game breaking issue (there was a logical mistake)

0.1.5

- Added Area Trigger. You can find more information in Wiki's Trigger section.

0.1.6



- Introducing Array to TriggerReactor.

- For loop is added.

- Sync/Async mode is added to Area Trigger

- Fixed where the Inventory Trigger with size less than 45 caused Exception

- Added some more functions to CommonFunctions

- Command Trigger's args0, args1, ... variables are now combined in array 'args'

- Fixed where /trg a <name> create command doesn't check existing Area Trigger
----------, Jun 4, 2017

Resource Information
Author:
----------
Total Downloads: 16,058
First Release: May 18, 2017
Last Update: Nov 27, 2023
Category: ---------------
All-Time Rating:
15 ratings
Find more info at github.com...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings