Bowmap Tickets
Bowmap · bowmap.git · Tickets
Tickets for Bowmap (bowmap.git)
These tickets were written Without the use of LLMs oh my goodness I would never lol
Reports
Bugs:
- Legacy ping is unsupported
- Readers and writers are untested
- Connection handling handles both the connection level and the client level.
- Sending clientbound login success does not actually switch the client state, receiving serverbound login acknowledged does
- Protocol version number and Minecraft version number are embedded in the code.
- Connections don't have an upper bounds, and their take loop will stop taking puts after one fails. (problems with exploiting this stuff in general, will require more than just this)
Enhancements:
- Use core.async for connections and the server rather than bespoke protocols
- Yield game events from packet request/response code rather than updating the world state.
Misc:
- License
- Handle transfer?
- Split the registry into a "keep the client happy" registry vs. a the set of registries the server is actually concerned with?
Misc:
- Clarify the server as for Minecraft clients since it's much clearer than saying it's a Minecraft server, or talking about Minecraft features when I am only interested in communication with the client.
- Make client abstraction of sending and receiving packets, and make everything else an implementation detail. A server just yields these clients until it shuts down. That could be a flow input/process
Open
Additions:
Enhancements:
Reports
Additions:
Closed
Completed:
Unknown:
- bowmap-1 Channel key names are not obvious
- bowmap-2 Server List Ping
- bowmap-8 Client is an overloaded term
- bowmap-9 Improve readers and writers
Closed Without Tickets
- Adorn exceptions in
apply>with the writer and fn passed in to improve debugging - Make frames immutable and make their conversion to a ByteBuf have a clear boundary
- Keep track in the server when players join, store their uuid and username
- uuids and usernames are not protocol-level ideas, yet they are in the
protocol.schemanamespace. - Update to 26.3 following the protocol wiki pages (after bowmap-5 Send registries to client)
- Make packet handling pure
- Make a
devnamespace that: AoT compiles, starts the REPL, pulls in criterium - NBT Strings are written with their number of characters, rather than the number of UTF-8 bytes?
- Move
componentto be a game spec. The game can rely on protocol details as long as it's pretty clear when that's going on, I think. Idk how spec:*-uneven works with qualified keys, so maybe this is fine as a protocol thing. - Client does not get disconnected when
handle-packetthrows an exception - Reject NaN and infinity as when reading and writing floating point numbers
Closed reports:
- Should
enum<throw? when the value is not in the map? - Remove identifier type as it doesn't justify its complexity over using a map of name and namespace strings.
- Validate packet data against a spec before encoding? Catches problems in the server, and also forces a spec to exist which is quite helpful
- Turn the server into a channel instead of a bespoke protocol
- Make client handling properly epochal (clients/players keep building up new state, and they're passed into the packet handler directly)
See also: