{"id":"brunnogames3776/kravasnet","name":"kravasnet","scope":"brunnogames3776","platform":"roblox","description":"Mirrored from the Wally registry.","version":"0.5.0","latest":"0.5.0","versions":["0.1.0","0.2.0","0.3.0","0.4.0","0.5.0"],"license":"MIT","licenseRating":"safe","licenseCaveats":["The package archive does not include its license text; the license is declared in its manifest metadata."],"licenseVerified":false,"dependencies":{"ffrostflame/bytenet":{"version":"^0.4.6","alias":"bytenet"}},"integrity":"6523295637e914df6af81c1ac37615a40ef68e1c315dbbb73e2c5512a85b9553","likes":0,"downloads":0,"install":"forest install brunnogames3776/kravasnet","url":"https://forest.dev/p/roblox/brunnogames3776/kravasnet","files":"https://api.forest.dev/ai/package/roblox/brunnogames3776/kravasnet/files","readme":"# KravasNet\n\nA lightweight abstraction layer over [ByteNet](https://github.com/ffrostfall/ByteNet) for Roblox, built to simplify networking inside Kravas.\n\nGroup related packets into **Namespaces**, define **Channels** with a clean chainable API, and get built-in **middleware** and **reliability** controls — without writing raw `ByteNet.definePacket` boilerplate everywhere.\n\n📖 **Full documentation:** [kravasnet-docs.vercel.app](https://kravasnet-docs.vercel.app)\n\n---\n\n## Installation\n\nAdd KravasNet to your `wally.toml`:\n\n```toml\n[dependencies]\nKravasNet = \"brunnogames3776/kravasnet@0.5.0\"\n```\n\nThen run:\n\n```bash\nwally install\n```\n\n## Quick Example\n\n```lua\nlocal ReplicatedStorage = game:GetService(\"ReplicatedStorage\")\nlocal KravasNet = require(ReplicatedStorage.Packages.KravasNet)\n\nlocal CombatNet = KravasNet.createNamespace(\"Combat\")\n\t:add(\"Damage\",   { amount = KravasNet.float32, target = KravasNet.inst })\n\t:add(\"Position\", { pos = KravasNet.vec3 }, { reliability = \"unreliable\" })\n\nCombatNet:build() -- registers everything with ByteNet right now\n\n-- Server\nCombatNet.Damage:sendTo(player, { amount = 50, target = someCharacter })\n\n-- Client\nCombatNet.Position:on(function(data)\n\tprint(data.pos)\nend)\n```\n\nFor the full Quick Start guide, API reference, middleware/reliability details, supported data types, and best practices, see the **[documentation](https://kravasnet-docs.vercel.app)**.\n\n## Features\n\n- **Namespaces & Channels** — organize related packets under one named container instead of scattering `definePacket` calls across scripts.\n- **Unified Channel API** — `sendTo`, `sendToAll`, `sendToAllExcept`, `send`, `on` — context-aware for server and client automatically.\n- **Middleware pipeline** — validate, sanitize, or reject incoming packets before your handler runs.\n- **Reliability options** — `reliable` / `unreliable` per channel.\n- **Direct ByteNet access** — drop down to `KravasNet.ByteNet` whenever you need something the abstraction doesn't cover.\n\n## Requirements\n\n- [ByteNet](https://github.com/ffrostfall/ByteNet) `0.4.x` (installed automatically as a dependency via Wally)\n- Roblox Luau\n\n## License\n\nMIT","readmeTruncated":false}