Files
ts3j/README.md
T
2018-07-23 16:03:33 -04:00

19 lines
1.4 KiB
Markdown

# ts3j
A open-source Java Teamspeak 3 client library using the TS3 full client protocol
This is a work in progress. I am working from Splamy's TS3Client project. This project is aiming to be a rewrite of
that codebase in Java. I'm leaving the door open for future server support, if that's even possible (we don't know what
a lot of the handshake params are I don't think, and clients may require they be specific somehow).
Most of the code is written quite flexibly.
Client and server headers are abstract, and share a command PacketHeader class. Packets mutate their input and output
behavior based on the assumed role of the packet. Together, they transport over the wire in the form of a NetworkPacket
object. This object can be re-constructed automatically through the use of a PacketType enum, meaning I/O is pretty
simple through the use of each packet's getters/setters and the read() and write() calls to NetworkPacket.
The client code is split into pieces: Socket and Client. Since Teamspeak3 relies on a UDP socket, I decided to make
a base Taemspeak3Socket class which does the generic I/O ops which both the server and client should share in common.
Teamspeak3Client is a class which wraps the Teamspeak3Socket class and provides more client-oriented behavior and methods.
This setup is a state machine, so the client connection and connection setup logic is based on a series of handlers
which correspond to the state the client is in.