{"id":"reimakesgames/crystal","name":"crystal","scope":"reimakesgames","platform":"roblox","description":"Mirrored from the Wally registry.","version":"0.1.0","latest":"0.1.0","versions":["0.1.0"],"license":"BSD-3-Clause","licenseRating":"safe","licenseCaveats":["The copyright notice must be preserved in copies. The author's name may not be used to promote your product.","License identified from the packaged LICENSE file; the manifest declared none."],"licenseVerified":true,"dependencies":{"evaera/promise":{"version":"^4.0.0","alias":"promise"}},"integrity":"0043a5ea424487ea2d2b1c34bcf21f07558701875c77658bcbe063d5b3942c39","likes":0,"downloads":0,"install":"forest install reimakesgames/crystal","url":"https://forest.dev/p/roblox/reimakesgames/crystal","files":"https://api.forest.dev/ai/package/roblox/reimakesgames/crystal/files","readme":"# Crystal\r\nA simple, lightweight, Godot and Knit-like framework.\r\n\r\n## Why Crystal?\r\nI don't know. This framework was tailored to my needs.\r\n\r\n## Features\r\n* Easily create and use Controllers\r\n* Allows Tree-like structure of Controllers\r\n* Similar to Godot's scripting API\r\n\r\n# API\r\n\r\n### Crystal (Service)\r\nThe main runner for the Crystal framework.\r\n\r\nMethods:\r\n\r\n| Method | Description |\r\n| ------ | ----------- |\r\n| `Crystal.new()` | Creates a new Controller. |\r\n| `Crystal.run()` | Runs the Crystal framework and Controllers. |\r\n\r\nProperties:\r\n\r\n| Property | Description |\r\n| ------ | ----------- |\r\n| `Crystal.Controllers` | The list of Controllers. |\r\n\r\n### Controllers\r\nThe controllers are the individual components of the framework.\r\n\r\nLifecycle Hooks:\r\n\r\n| Hook | Description |\r\n| ------ | ----------- |\r\n| `Controller._init()` | Called when `Crystal.Run()` gets called |\r\n| `Controller._ready()` | Called when the Controller is ready to be used. |\r\n| `Controller._render()` | Called when `RunService.RenderStepped()` is emitted. |\r\n| `Controller._step()` | Called when `RunService.Stepped()` is emitted. |\r\n| `Controller._beat()` | Called when `RunService.Heartbeat()` is emitted. |","readmeTruncated":false}