{"id":"hobbs04067/mechanicsmod","name":"mechanicsmod","scope":"hobbs04067","platform":"roblox","description":"Mirrored from the Wally registry.","version":"0.1.18","latest":"0.1.18","versions":["0.1.0","0.1.1","0.1.2","0.1.3","0.1.4","0.1.5","0.1.6","0.1.7","0.1.8","0.1.9","0.1.10","0.1.11","0.1.12","0.1.13","0.1.14","0.1.15","0.1.16","0.1.17","0.1.18"],"license":"MIT","licenseRating":"safe","licenseCaveats":["License identified from the packaged LICENSE file; the manifest declared none."],"licenseVerified":true,"dependencies":{"hobbs04067/bindable":{"version":"^0.1.4","alias":"bindable"},"hobbs04067/bytenet":{"version":"^0.5.6","alias":"bytenet"},"hobbs04067/noid-manager":{"version":"^0.5.17","alias":"noid-manager"},"hobbs04067/playereventsequencer":{"version":"^0.1.4","alias":"playereventsequencer"}},"integrity":"ed959d194ed6f1652949e7e57f6ba27556d4951028e45731e81ff562956d9813","likes":0,"downloads":0,"install":"forest install hobbs04067/mechanicsmod","url":"https://forest.dev/p/roblox/hobbs04067/mechanicsmod","files":"https://api.forest.dev/ai/package/roblox/hobbs04067/mechanicsmod/files","readme":"# MechanicsMod\n\nA Roblox library that layers a per-noid movement/ability system on top of [noid-manager](https://github.com/Hobbs04067/noid-manager). Register \"mechanics\" (jump, sprint, slide, emotes, or anything else) as their own `ModuleScript`s, then toggle and enable them per-instance with automatic server/client replication.\n\nBuilt with [Rojo](https://github.com/rojo-rbx/rojo) and [Wally](https://github.com/UpliftGames/wally), events use [bindable](https://github.com/hobbs04067/bindable), and lifecycle is managed by [noid-manager](https://github.com/Hobbs04067/noid-manager).\n\n**Full usage guide and API reference: [docs/USAGE.md](docs/USAGE.md)**\n**Building and contributing: [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md)**\n\n## Contents\n\n- [Features](#features)\n- [Installation](#installation)\n- [Quick start](#quick-start)\n- [License](#license)\n\n## Features\n\n- Ships as a `noid-manager` mod — attach it to any noid via `NoidManager.new(rig, { MechanicsMod(), { ...mechanicIndices } })`, no manual registration step required.\n- Register any number of mechanics as standalone `ModuleScript`s, each contributing an `Enable`/`Disable`/`Toggle` state machine with its own init, destroy, toggle, and cleanup hooks.\n- Separate `SERVER_`, `REPLICATED_`, and plain hooks per mechanic, so server logic, other clients' view of a mechanic, and the owning client's local prediction can all differ.\n- Mechanic modules and their toggle/enable state replicate automatically between server and client — no manual networking required.\n- Deterministic load order via `loadingOrder`, plus `toggledOnStart`/`enabledOnStart` defaults per mechanic.\n- `Bindable` events (`Toggled`, `Enabled`, `Disabled`) on every mechanic for hooking in UI or other systems.\n\n## Installation\n\nAdd to your `wally.toml`:\n\n```toml\n[dependencies]\nMechanicsMod = \"hobbs04067/mechanicsmod@0.1.17\"\n```\n\nThen run:\n\n```bash\nwally install\n```\n\n`MechanicsMod` depends on `noid-manager`, `bindable`, and `playereventsequencer` — Wally resolves these for you.\n\n## Quick start\n\n```lua\n-- Server: register mechanics, then spawn a noid with MechanicsMod active\nlocal NoidManager = require(ReplicatedStorage.Packages[\"noid-manager\"])\nlocal MechanicsMod = require(ReplicatedStorage.Packages.MechanicsMod)\n\nlocal jumpMechanic = MechanicsMod.RegisterMechanic(script.JumpMechanic)\nlocal sprintMechanic = MechanicsMod.RegisterMechanic(script.SprintMechanic)\n\nlocal manager = NoidManager.new(rig, {\n\tMechanicsMod(),\n\t{ jumpMechanic, sprintMechanic },\n})\n```\n\n```lua\n-- JumpMechanic.luau — returns a MechanicInfo when required with the manager as `self`\nreturn function(self)\n\treturn {\n\t\tname = \"Jump\",\n\t\tenabledOnStart = true,\n\t\tdata = {\n\t\t\tSERVER_toggleFunction = function(toggled)\n\t\t\t\t-- server-authoritative jump logic\n\t\t\tend,\n\t\t},\n\t}\nend\n```\n\n```lua\n-- Anywhere: enable/disable/toggle a mechanic on a manager\nmanager.mechanics.Jump:Enable()\nmanager.mechanics.Jump:Toggle(true)\nmanager.mechanics.Jump.Toggled:Connect(function(toggled)\n\tprint(\"Jump toggled:\", toggled)\nend)\n```\n\nSee [docs/USAGE.md](docs/USAGE.md) for the full mechanic lifecycle and the `SERVER_`/`REPLICATED_` hook semantics.\n\n## License\n\n[MIT](LICENSE)\n","readmeTruncated":false}