- Completely revamped the
Scoreboard
API to be more ergonomicScore
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
andentityDeath
triggers - Fixed a bunch of misc bugs
- Disallow cancelling
playerInteract
trigger if the action isBreakBlock
- 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 containschat()
/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
Update to 1.20.4 and Fabric loader 0.15.3. This version should still work with old Fabric loaders.
- 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 viaCommands.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 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
andTessellator
, butTessellator
has been renamed toRenderer3d
. 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 allowsCollection
objects coming from Java to be modified - Fix
Scoreboard.getLines()
returning empty strings- Also made scoreboard functions return
TextComponent
instead ofstring
- Also made scoreboard functions return
- 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 anImage
- 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'sEvent
class into the first parameter ofregister
. 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 triggeringmessageSent
(@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)