- Fix certificate issue on older Java versions that caused issues with importing (@MisterCheezeCake)
- Fix modules sometimes evaluating twice when imported from different locations
- Fix trigger priorities sometimes not working correctly (@camnwalter)
- Color required modules gray in the `/ct modules` menu (@NoahTheNerd)
- Completely revamped the `Scoreboard` API to be more ergonomic
- `Score` is now mutable, and many methods have been added. Check the docs for more info
- Added `PlayerInteraction` to provided libs
- Added MIT license
- Added CT module list to crash reports
- Added a typings generator that produces a TypeScript definition file for the mod (see attachments)
- Added support for targeting non-Minecraft classes when using mixins
- Added `entityDamage` and `entityDeath` triggers
- Fixed a bunch of misc bugs
- Disallow cancelling `playerInteract` trigger if the action is `BreakBlock`
- Calling `.register()` on a trigger more than once will now do nothing
- `TextComponent` now mirrors `/tellraw` with respect to click and hover event values
- Console now prints error causes where applicable
- Fix a few more edge cases with `KeyBind`
- Fix `Shape` rendering being offset by the player's position
- Completely rewrite `TextComponent`
- It is now immutable and much more developer-friendly. See the docs for more details
- Removed `Message`; `TextComponent` now contains `chat()`/`actionBar()`/`chatLineId`/etc
- Fix not parsing JS files as UTF-8
- Add a `Toast` API, which can be used to display toasts (the thing that pops up in the top right when you get an advancement)
- Re-add ModMenu support
- Fix `Renderer.drawCircle()` causing crashes
- Fix needing to call `Renderer.rotateToCamera`/`translateToPlayer`
- Fix `Commands` API not converting Java objects to JS values
- Fix a bunch of mapping errors
- Fix `Gui` buttons not being clickable and add functions to set their text and tooltip
- Fix various `KeyBind` issues
- Fix not being to colorize `Item`'s rendering
- Fix `ChatLib.chat()` triggering chat triggers
- Fix `/ct files` on MacOS
- Fix `TextComponent` not parsing its actions correctly
- Add `TextComponent.setColor()`
- Add ability for `Commands` to redirect to the vanilla MC command dispatcher via `Commands.redirect(Commands.getDispatcherRoot()`
- Add `Renderer.lineWidth()`
- Fix `Renderer.drawCircle()` causing crashes
- Fix needing to call `Renderer.rotateToCamera`/`translateToPlayer`
- Fix `Commands` API not converting Java objects to JS values
- Fix a bunch of mapping errors
- Fix `Gui` buttons not being clickable and add functions to set their text and tooltip
- Fix various `KeyBind` issues
- Fix not being to colorize `Item`'s rendering
- Fix `ChatLib.chat()` triggering chat triggers
- Fix `/ct files` on MacOS
- Fix `TextComponent` not parsing its actions correctly
- Add `TextComponent.setColor()`
- Add ability for `Commands` to redirect to the vanilla MC command dispatcher via `Commands.redirect(Commands.getDispatcherRoot()`
- Add `Renderer.lineWidth()`
- Add 1.20.2 support
- Rhino now treats java.util.Collection objects as JS arrays
- Rhino now convert Java boxed-primitive classes to their JS equivalent primitives (i.e. converting java.lang.String into a JS string instead of a new String())
- Fix Renderer.drawLine() treating newlines incorrectly
- Fix colors not working correctly in Renderer
- Fix Renderer3d.drawString() not showing through walls (also added a parameter to control that behavior)
- Fix Renderer text not scaling properly
- Fix Inventory.getItems() sometimes causing an NPE
- Fix the CT console keybinding getting reset every time the game is launched
- Change the way `serverConnect`/`serverDisconnect`/`worldLoad`/`worldUnload` trigger with respect to each other. See [this commit](https://github.com/ChatTriggers/ctjs/commit/03a69cb27ccfcba773a59734108f71f32afd18ca) for more details.
- Remove the general console. If you need to see chat messages for criteria, use /ct dump
- Add 1.20.2 support
- Rhino now treats java.util.Collection objects as JS arrays
- Rhino now convert Java boxed-primitive classes to their JS equivalent primitives (i.e. converting java.lang.String into a JS string instead of a new String())
- Fix Renderer.drawLine() treating newlines incorrectly
- Fix colors not working correctly in Renderer
- Fix Renderer3d.drawString() not showing through walls (also added a parameter to control that behavior)
- Fix Renderer text not scaling properly
- Fix Inventory.getItems() sometimes causing an NPE
- Fix the CT console keybinding getting reset every time the game is launched
- Change the way `serverConnect`/`serverDisconnect`/`worldLoad`/`worldUnload` trigger with respect to each other. See [this commit](https://github.com/ChatTriggers/ctjs/commit/03a69cb27ccfcba773a59734108f71f32afd18ca) for more details.
- Remove the general console. If you need to see chat messages for criteria, use /ct dump
- Add 1.20.2 support
- Rhino now treats java.util.Collection objects as JS arrays
- Rhino now convert Java boxed-primitive classes to their JS equivalent primitives (i.e. converting java.lang.String into a JS string instead of a new String())
- Fix Renderer.drawLine() treating newlines incorrectly
- Fix colors not working correctly in Renderer
- Fix Renderer3d.drawString() not showing through walls (also added a parameter to control that behavior)
- Fix Renderer text not scaling properly
- Fix Inventory.getItems() sometimes causing an NPE
- Fix the CT console keybinding getting reset every time the game is launched
- Change the way `serverConnect`/`serverDisconnect`/`worldLoad`/`worldUnload` trigger with respect to each other. See [this commit](https://github.com/ChatTriggers/ctjs/commit/03a69cb27ccfcba773a59734108f71f32afd18ca) for more details.
- Remove the general console. If you need to see chat messages for criteria, use /ct dump
- Added a new `/ct migrate` command which can handle most incompatibilities when upgrading
- Reverted previous merger of `Renderer` and `Tessellator`, but `Tessellator` has been renamed to `Renderer3d`. It does not necessarily have the same API, as it now holds 3D-only methods.
- Fixed a few obscure Mixin issues
- Removed the `parameterName` option in various Mixin objects, since it will never work outside of a dev environment
- Stop converting Java `Collection`s to JS arrays. This allows `Collection` objects coming from Java to be modified
- Fix `Scoreboard.getLines()` returning empty strings
- Also made scoreboard functions return `TextComponent` instead of `string`
- Fix custom KeyBinds not being persistent between game launches and sometimes causing crashes
- Fix `Item.getLore()` triggering the Fabric tooltip event
- Fix calling `.trigger()` on a custom trigger at the top level not working
- Fix `messageSent` not propogating the leading `/` character if the message was a command
- Added a new `/ct migrate` command which can handle most incompatibilities when upgrading
- Reverted previous merger of `Renderer` and `Tessellator`, but `Tessellator` has been renamed to `Renderer3d`. It does not necessarily have the same API, as it now holds 3D-only methods.
- Fixed a few obscure Mixin issues
- Removed the `parameterName` option in various Mixin objects, since it will never work outside of a dev environment
- Stop converting Java `Collection`s to JS arrays. This allows `Collection` objects coming from Java to be modified
- Fix `Scoreboard.getLines()` returning empty strings
- Also made scoreboard functions return `TextComponent` instead of `string`
- Fix custom KeyBinds not being persistent between game launches and sometimes causing crashes
- Fix `Item.getLore()` triggering the Fabric tooltip event
- Fix calling `.trigger()` on a custom trigger at the top level not working
- Fix `messageSent` not propogating the leading `/` character if the message was a command
- Ensure top-level code runs in a consistent order. If module A requires module B, module B's entry file will be ran before module A's entry file. It is now an enforced error to have circular module requirements.
- Add middle clicks to `CPS`
- Fixed interface methods not being remapped
- Fixed `Scoreboard` not updating when the scoreboard changes
- Fixed a bunch of `Sound` issues
- Fixed a `ConcurrentModificationException` when constructing an `Image`
- Fixed console being extremely unreliable
- Fixed `serverConnect` trigger using the wrong trigger class (causing error) as well as firing when joining a single player world
- Ensure top-level code runs in a consistent order. If module A requires module B, module B's entry file will be ran before module A's entry file. It is now an enforced error to have circular module requirements.
- Add middle clicks to `CPS`
- Fixed interface methods not being remapped
- Fixed `Scoreboard` not updating when the scoreboard changes
- Fixed a bunch of `Sound` issues
- Fixed a `ConcurrentModificationException` when constructing an `Image`
- Fixed console being extremely unreliable
- Fixed `serverConnect` trigger using the wrong trigger class (causing error) as well as firing when joining a single player world
- Added extra parameter to `Image.fromUrl` to control the cached image name
- Added `FileLib.{encodeBase64,decodeBase64}` (@Debuggingss)
- Added `Gui.register{Opened,Closed}` (@DalwynWasTaken)
- Added `Player.isMoving` (@realfork)
- Added ability to filter the class type using `.setFilteredClass(Class)` for the following triggers: `renderEntity`, `postRenderEntity`, `renderTileEntity`, `postRenderTileEntity` (@Marvinschs)
- Added a top-level `NBT` helper to make parsing NBT easier (@camnwalter)
- Added `KeyBind.{unregisterKeyPress,unregisterKeyRelease,unregisterKeyDown}()` (@Marvinschs)
- Added `Display.{unregisterClicked,unregisterHovered,unregisterMouseLeave,unregisterDragged}()` (@Marvinschs)
- Added ability to pass `Class<*>` objects which inherit from Forge's `Event` class into the first parameter of `register`. This allows you to register for arbitrary events.
- Show module dependencies on the module graph GUI (@camnwalter)
- Fixed step trigger firing a bunch of extra times when registering it after a call to unregister.
- Fixed links in `TextComponent` instances not being clickable (@camnwalter )
- Fixed `ChatLib.say` not triggering `messageSent` (@Debuggingss)
- Fixed not being able to `/ct load` after a `/ct unload` (@camnwalter)
- Fixed not having to manually `/ct load` after importing a module with a .jar file (@camnwalter)