{"id":"thepigeonsstudio/networker","name":"networker","scope":"thepigeonsstudio","platform":"roblox","description":"A lightweight, type-safe networking library for Roblox.","version":"2.0.1","latest":"2.0.1","versions":["2.0.1"],"license":"MIT","licenseRating":"safe","licenseCaveats":["License identified from the packaged LICENSE file; the manifest declared none."],"licenseVerified":true,"dependencies":{},"integrity":"0dede9aea1d881348245b44c9e1362cdfdcea0e4e6a8a15f33ab00fee665b1d9","likes":0,"downloads":0,"install":"forest install thepigeonsstudio/networker","url":"https://forest.dev/p/roblox/thepigeonsstudio/networker","files":"https://api.forest.dev/ai/package/roblox/thepigeonsstudio/networker/files","readme":"# Networker\r\n\r\nA lightweight, type-safe communication library for Roblox built with **Strict Luau**.\r\n\r\nNetworker provides a clean, object-oriented wrapper around Roblox's `RemoteEvent` and `UnreliableRemoteEvent`, making networking simple, organized, and easy to use.\r\n\r\n<p align=\"center\">\r\n  <a href=\"#features\">Features</a> •\r\n  <a href=\"#installation\">Installation</a> •\r\n  <a href=\"#remotes\">Remotes</a> •\r\n  <a href=\"#api\">API</a> •\r\n  <a href=\"#license\">License</a>\r\n</p>\r\n\r\n---\r\n\r\n## Features\r\n\r\n- 🚀 Lightweight and easy to use\r\n- 🔒 Written in `--!strict`\r\n- 📡 Supports `RemoteEvent`\r\n- ⚡ Supports `UnreliableRemoteEvent`\r\n- 🔄 Client and server compatible\r\n- 📨 Fire events between the client and server\r\n- 🔗 Built-in event connection helpers\r\n- 🛡️ Runtime validation with descriptive error messages\r\n- 📦 Wally package support\r\n\r\n---\r\n\r\n# Installation\r\n\r\nInstall using Wally:\r\n\r\n```toml\r\n[dependencies]\r\nNetworker = \"thepigeonsstudio/networker@2.0.1\"\r\n```\r\n\r\nThen install your dependencies:\r\n\r\n```bash\r\nwally install\r\n```\r\n\r\n---\r\n\r\n# Remotes\r\n\r\nNetworker supports both **RemoteEvent** and **UnreliableRemoteEvent** with the same simple API.\r\n\r\n## RemoteEvent\r\n\r\n### Creating a Remote\r\n\r\n**Server**\r\n\r\n```lua\r\nlocal Networker = require(Packages.Networker)\r\n\r\nNetworker.init()\r\n\r\nlocal Chat = Networker.newRemote(\"Chat\")\r\n```\r\n\r\n### Getting a Remote\r\n\r\n**Client**\r\n\r\n```lua\r\nlocal Networker = require(Packages.Networker)\r\n\r\nNetworker.init()\r\n\r\nlocal Chat = Networker.getRemote(\"Chat\")\r\n```\r\n\r\n### Sending Events\r\n\r\n```lua\r\n-- Client → Server\r\nChat:FireServer(\"Hello Server!\")\r\n\r\n-- Server → Client\r\nChat:FireClient(player, \"Hello Client!\")\r\n\r\n-- Server → All Clients\r\nChat:FireAllClients(\"Welcome!\")\r\n```\r\n\r\n### Listening for Events\r\n\r\n**Server**\r\n\r\n```lua\r\nChat:OnServerEvent(function(player, message)\r\n\tprint(player.Name, message)\r\nend)\r\n```\r\n\r\n**Client**\r\n\r\n```lua\r\nChat:OnClientEvent(function(message)\r\n\tprint(message)\r\nend)\r\n```\r\n\r\n---\r\n\r\n## UnreliableRemoteEvent\r\n\r\n`UnreliableRemoteEvent` is designed for high-frequency data where occasional packet loss is acceptable.\r\n\r\nExamples include:\r\n\r\n- Character movement\r\n- Camera updates\r\n- Aim direction\r\n- Visual effects\r\n- Cosmetic updates\r\n\r\n### Creating an Unreliable Remote\r\n\r\n**Server**\r\n\r\n```lua\r\nlocal Position = Networker.newUnreliableRemoteEvent(\"Position\")\r\n```\r\n\r\n### Getting an Unreliable Remote\r\n\r\n**Client**\r\n\r\n```lua\r\nlocal Position = Networker.getUnreliableRemote(\"Position\")\r\n```\r\n\r\n### Sending Events\r\n\r\n```lua\r\nPosition:FireServer(...)\r\n\r\nPosition:FireClient(player, ...)\r\n\r\nPosition:FireAllClients(...)\r\n```\r\n\r\n### Listening for Events\r\n\r\n**Server**\r\n\r\n```lua\r\nPosition:OnServerEvent(function(player, ...)\r\n\tprint(player)\r\nend)\r\n```\r\n\r\n**Client**\r\n\r\n```lua\r\nPosition:OnClientEvent(function(...)\r\n\tprint(...)\r\nend)\r\n```\r\n\r\n---\r\n\r\n# API\r\n\r\n| Function | Description |\r\n|----------|-------------|\r\n| `Networker.init()` | Initializes Networker. |\r\n| `Networker.newRemote(name)` | Creates a new `RemoteEvent`. |\r\n| `Networker.getRemote(name)` | Gets an existing `RemoteEvent`. |\r\n| `Networker.newUnreliableRemoteEvent(name)` | Creates a new `UnreliableRemoteEvent`. |\r\n| `Networker.getUnreliableRemote(name)` | Gets an existing `UnreliableRemoteEvent`. |\r\n| `:FireServer(...)` | Fires an event to the server. |\r\n| `:FireClient(player, ...)` | Fires an event to a specific client. |\r\n| `:FireAllClients(...)` | Fires an event to every client. |\r\n| `:OnServerEvent(callback)` | Connects a callback to `OnServerEvent`. |\r\n| `:OnClientEvent(callback)` | Connects a callback to `OnClientEvent`. |\r\n\r\n---\r\n\r\n# Contributing\r\n\r\nContributions, bug reports, feature requests, and pull requests are welcome!\r\n\r\nIf you discover a bug or have an idea for improving Networker, feel free to open an issue or submit a pull request.\r\n\r\n---\r\n\r\n# License\r\n\r\nThis project is licensed under the **MIT License**.\r\n\r\n---\r\n\r\nMade with ❤️ by **ThePigeonsStudio**","readmeTruncated":false}