A framework for Minecraft Forge that allows for client modifications to be scripted in JavaScript
MIT License
Bot releases are hidden (Show)
/ct modules
menu (@NoahTheNerd)Published by mattco98 over 1 year ago
Image.fromUrl
to control the cached image nameFileLib.{encodeBase64,decodeBase64}
(@Debuggingss)Gui.register{Opened,Closed}
(@DalwynWasTaken)Player.isMoving
(@realfork).setFilteredClass(Class)
for the following triggers: renderEntity
, postRenderEntity
, renderTileEntity
, postRenderTileEntity
(@Marvinschs)NBT
helper to make parsing NBT easier (@camnwalter)KeyBind.{unregisterKeyPress,unregisterKeyRelease,unregisterKeyDown}()
(@Marvinschs)Display.{unregisterClicked,unregisterHovered,unregisterMouseLeave,unregisterDragged}()
(@Marvinschs)Class<*>
objects which inherit from Forge's Event
class into the first parameter of register
. This allows you to register for arbitrary events.TextComponent
instances not being clickable (@camnwalter )ChatLib.say
not triggering messageSent
(@Debuggingss)/ct load
after a /ct unload
(@camnwalter)/ct load
after importing a module with a .jar file (@camnwalter)Published by mattco98 about 2 years ago
Image.destroy()
to clean up an image's texture from memory (@Soopyboo32)Image(java.io.File)
(@Squagward)register('packetSent', () => {}).setPacketClass(MyPacketClass.class);
register('packetSent', () => {}).setPacketClasses([A.class, B.class, C.class]);
Published by mattco98 over 2 years ago
Fix rhino-related performance issue relating to packet triggers (@Squagward)
Published by mattco98 over 2 years ago
Display
methods: removeLine
, show
, hide
(@Squagward)Published by mattco98 over 2 years ago
Fixed a significant performance issue.
Published by mattco98 over 2 years ago
Fixed not being able to call register
from new Thread
s.
Published by mattco98 over 2 years ago
Additions
Display::setRegisterType("RENDER_OVERLAY_EVENT" | "POST_GUI_RENDER_EVENT")
to control when the GUI draws (@DalwynWasTaken)Particle::getColor()
(@Debuggingss)FileLib::{delete,deleteDirectory}()
(@Squagward)Client.currentGui.getSlotUnderMouse()
, which returns a new CT Slot
wrapper class (@appable0)Item::{setName, setLore}()
(@Squagward)Renderer.drawStringWithShadow
(@Squagward)Client.connect(ip: String)
(@Squagward)end
argument to print
so the newline can be omitted (@Debuggingss)
print('a string', '')
renderTitle(title: String, subtitle: String, event: Event)
triggers when a title is drawn to the screen (@Squagward)renderSlot(slot: Slot, gui: GuiContainer, event: Event)
triggers when a slot is being drawn (@appable0)renderItemIntoGui(item: Item, x: Int, y: Int, event: Event)
triggers when an item is drawn into a gui (@appable0)renderItemOverlayIntoGui(item: Item, x: Int, y: Int, event: Event)
triggers when an item overlay (stack count/damage) is drawn into a gui (@appable0)renderHand(event: Event)
triggers for the hand drawing, can be cancelled (@Squagward)Fixes/Changes:
chatComponentClicked
no longer triggers more often than it should (@Squagward)§
character (@Squagward)gameLoad
now properly triggers on game load (previously it would only trigger on /ct load
) (@Debuggingss)Sound
(@Squagward)/generatebindings
command and associated logic (@Debuggingss)Published by mattco98 over 2 years ago
Additions:
renderScoreboard
trigger (@Squagward)Scoreboard.setTitle
(@Squagward)Player{,MP}.getTeam()
(@Squagward)World.stopAllSounds()
(@Squagward)NBTTagList.insertTag()
(@Squagward)Scoreboard.getScoreboard
() and Scoreboard.getSidebar()
(@Squagward)NBTTagCompound
setters (@Squagward)Display
to use postGuiRender
trigger (@DalwynWasTaken)Changes:
DisplayLine.addLine
now returns itself for method chaining (@DalwynWasTaken)Fixes:
Gui
scroll when open, fix NPE (@Squagward)Sound
cast error (@Squagward)Display
clicking/dragging when using alignment (@Squagward)Published by mattco98 over 2 years ago
Fix an issue with some Client
methods being unavailable.
Published by mattco98 over 2 years ago
Additions:
Text
(@Squagward)renderPortal
, renderJumpBar
, renderChat
, renderHelmet
(@Squagward)KeyBind
similar to Gui
(@Squagward)Chunk::getAllTileEntities
and Entity::getChunk
(@Squagward)Fixes:
Shape::setLine
not drawing (@Squagward)editChat
and deleteChat
not working correctly (@Squagward)Published by mattco98 almost 3 years ago
Published by mattco98 almost 3 years ago
This is the second major version release of ChatTriggers, and includes some breaking changes. The largest addition is the inclusion of Essential, which in addition to a bunch of cosmetic and social features, will always include the latest versions of Elementa and Vigilance. These modules have already been updated on the website, and are available for module authors to start using.
moduleProvidedLibs.js
Tessellator
methods, most notably pushMatrix
and popMatrix
Entity#{getMaxHP,distanceTo}
methodsPlayer#asEntity
method which returns the player as a CT Entity
objectFileLib.{exists,isDirectory}
changelog
field to metadata.json
for authors to write a basic changelog (@Squagward)NBTTagCompound#toObject
to convert NBT to a JS object
Player.getLast{X,Y,Z}
and Player.getRender{X,Y,Z}
methods (@kerbybit)ChatLib.addToSentMessageHistory
(@Squagward)EntityLivingBase
wrapper (@Squagward)TabList
's header and footer (@Squagward)Gui
for handling buttons (@Squagward)Chunk
(@Squagward)ChatLib
for deleting sent messages, much like the current methods for editing sent messagesTileEntity
wrapper (@Squagward)preItemRender
(@Squagward)renderSlotHighlight
(@Squagward)postRenderEntity
(@Debuggingss)serverConnect
/serverDisconnect
(@Squagward)guiClosed
(@Debuggingss)guiDrawBackground
(@Squagward)renderTileEntity
/postRenderTileEntity
(@Debuggingss)tick
trigger is not meant for timing. If you need precise timing control, use the step
trigger instead.step
not firing in certain GUIs.Book#{add,set}Page
crashing due to a ClassCastException
(@Maxssho13)TabList#setFooter
setting the header (@Maxssho13)package{Sent,Received}
triggers not firing properly (@Maxssho13)gameUnload
trigger during shutdownblockBreak
trigger not working (@Squagward)hitBlock
trigger always passing (0, 0, 0)
as the block's positionASMLib
's invokeJS
function accessing a non-existant propertyASMLib
having an incorrect signature for invokeDynamic
(@Squagward)Player.getSaturation
returning the player's food levelPacketReceived/Sent
triggers being unreliableDisplay
setting it's height to an incorrect value (@Squagward)dropItem
trigger not firing correctly on serversMessage
not always converting TextComponents correctly (@Squagward)Renderer
only drawing vertices if they were positioned counter-clockwise (@Squagward)Image
not deleting it's GL texture on reload, which leaked memoryBlock
API
Block
represented both the abstract idea of a block and a particular block placed in the world. These have now been separated into BlockType
and Block
(which is a particular BlockType
at a BlockPos
)moduleProvidedLibs.js
importsInventory
class is now much more null safe (@Squagward and @Debuggingss)
Item
wrapping a null ItemStack
now simply return nullRenderer.drawPlayer
and PlayerMP.draw
to allow more fine-grained control over the player rendering/ct config
GUI to use Vigilancelet
/const
use in for-each loop headinstanceof
for java classes and objects (@FalseHonesty)Proxy
incorrectly checking handler prototype for existence of trap methodsSymbol
to objecttypeof
crashing when given a Symbol
Published by mattco98 over 3 years ago
This is a quick hotfix for 1.3.1 that primarily upgrades Kotlin to 1.5.21 for compatibility with other mods, as well as updates gradle to 6.8.1.
Published by kerbybit over 3 years ago
Changed "Update Modules On Boot" to "Automatically Update Modules" in /ct settings
On top of this setting now actually working, it disables all module auto updating even on /ct load
Fixed ChatLib.getCenteredText not accounting for formatted text
Fixed Priority object in provided libs
Fixed some typos
Published by mattco98 about 4 years ago
packetReceived
triggerDropAction
to moduleProvidedLibs.js
metadata.json
can now take a helpMessage
key which is printed when a module is installed. This can be disabled in the settings.drawString
now completes the draw on newlinesSettings.skin.setLeftPantsLef
-> Settings.skin.setLeftPantsLeg
String.prototype.addFormatting
no longer calls a nonexistent functionplayerLeave
trigger now properly firesGui.registerScrolled
method. Previously, scrolls had to be detected in the Gui.registerClicked
method. This is a small breaking change, and is the reason for the minor version increment.Published by kerbybit over 4 years ago
Did the bug fixes and fixed every bug no more bugs
Published by mattco98 over 4 years ago
FileLib.append
Published by mattco98 over 4 years ago
gameLoad
/gameUnload
/worldLoad
/worldUnload
triggersPublished by mattco98 over 4 years ago