github.com/remeliah/bakenohana
main / published Jul 13, 2025 / repository
osu! private server written on crystal-lang. (or gulag rewritten on crystal-lang)
bakenohana | WIP :tm:
packet handled:
- [x] action
- [x] pong
- [x] userid/login-reply
- [x] logout
- [x] send public/private message
- [x] channel join/info/kick/auto-join/end
- [x] user stats
- [x] user presence
- [x] spectator joined/left/frames/fellow-joined/fellow-left/cant-spectate
- [x] priv
- [x] friends list
- [x] friend add/remove
- [ ] block
- [x] server restart
- [x] account restrict
- [x] protocol version
- [ ] multi
- [ ] lobby join/leave
note:
- https://github.com/crystal-lang/crystal-mysql/issues/62
- made this outta straight boredom lul not sum super serious project, just me messin around on crystal n tryna have fun wit it.
- if it break... das prolly why
- to run: crystal run --release src/bakenohana.cr
API
- AddFriendPacket
- Ansi
- Auth
- Ava
- Bakenohana
- BanchoPacketReader
- BasePacket
- CantSpectatePacket
- Chan
- ChanRepo
- ChangeActionPacket
- ChannelSession
- Channels
- Cho
- ClientPackets
- ClientPrivileges
- CommandHandler
- Config
- Database
- Gamemode
- Geoloc
- Geolocation
- JoinChannelPacket
- LoginData
- LoginResponse
- LogoutPacket
- Message
- Middleware
- Mods
- OsuPerformanceCalculator
- PacketMap
https://github.com/osuAkatsuki/bancho.py/blob/74290910d3ce6e0284453ad9f913ede6a8555fa2/app/packets.py#L303
- Packets
- Player
- PlayerSession
- PlayerStats
- PlayerStatus
- PongPacket
- Privileges
- RelationshipRepo
- RemoveFriendPacket
- SendMessagePrivatePacket
- SendMessagePublicPacket
- Services
- SpectateFramesPacket
- StartSpectatingPacket
- StatsRepo
- StopSpectatingPacket
- UserHashRepo
- UserPresenceRequestPacket
- UserRepo
- UserStatsRequestPacket
- Web