* WIP: Add unreal2 protocol
* Add/Update badge
* protocols/unreal2: Update doc comments and TODOs
* protocols/unreal2: Don't pre-allocate as many bot players
* protocols/unreal2: Use "encoding-rs" for decoding unreal2 strings
* Add/Update badge
* protocols/unreal2: Add constants for player pre-allocation.
Also improve some doc comments and update PACKET_SIZE.
* protocols/unreal2: Early break when enough players have been parsed
Add a fast-path to avoid waiting for packet timeout when we have parsed
as many players as specified in the server info packet.
* protocols/unreal2: Use HashSet to store mutators
* protocols/unreal2: Handle server sending multiple values for a rule
* protocols/unreal2: Add GatheringSettings to control what to query
GatheringSettings allows skipping querying rules and/or players which
can make the query return much faster. This also required moving each
individual query into its own helper.
* protocols/unreal2: Add more derives to types
* protocols/unreal2: Simplify ServerInfo::parse()
Co-Authored-By: CosminPerRam <cosmin.p@live.com>
* Docs: Add unreal2 protocol documentation
I used a website to generate the markdown RESPONSES table, the save file
from this website is included to make updating the table easier in the
future.
https://www.tablesgenerator.com/markdown_tables
* Add/Update badge
* protocols/unreal2: Use the correct encoding for UCS2 strings
* Docs: Remove unnecessary TGN file
---------
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: CosminPerRam <cosmin.p@live.com>
* [Generic] Add struct for all extra request settings
Adds a new struct `ExtraRequestSettings` that contains all possible
extra settings for all protocols, and can be implicitly converted with
`.into()` into each protocol's extra settings type.
This is then used in a new query method
`query_with_timeout_and_extra_settings()` that passes the object on to
the selected protocol.
This also updates the generic example to set some of these generic
settings so that it can be used for certain queries like
"mc.hypixel.net".
* [Minecraft] Add `request_settings` parameter to auto query
This allows generic queries to pass through request settings when using
the `mc` game so that servers like `mc.hypixel.net` will still work when
using auto query.
* Fix generic examples tests (and enable example tests in pre-commit)
* Define games as structs
* Create table of response types
* Ensure serde is always included
* Remove server_ prefix in GenericResponse
* Make players online/max non-optional in generic response
* Use already existing minecraft server enum
* Implement ExtraResponses to prevent cloning when creating generic
* Add game definitions
* Add doc comments to generic types
* Include players in gamespy extra responses
* Add custom response types for TheShip and FFOW
* Cargo format differing files
* Final cleanup
* [Protocol] Initial packet receive implementation
* [Protocol] Add key extraction
* [Protocol] Fix new Ipv4Addr query address and get string with unended
* [Protocol] Properly parse the received data
* [Protocol] Add parse players
* [Protocol] Add bots
* [Protocol] Extract into functions
* [Protocol] Remove quotes from player name
* [Protocol] Add two and three files
* [Protocol] Make quake queries very modular
* [Protocol] Remove the need of a client instance
* [Protocol] Revesed if statement
* [Protocol] Apply clippy fixes and replace String by &str in get send header
* [Protocol] Add one and three implementations
* [Protocol] Add quake2 and quake3 to master_querant
* [Protocol] Fix Q2 implementation
* [Protocol] Change from Ipv4Addr to IpAddr
* [Protocol] Fix Q3 response header
* [Protocol] Fix Q3 response
* [Crate] Add Q1, 2 and 3 to changelog and protocols
* [Protocol] Extract client into separate file and add some docs
* chore: add standard for formatting
* chore: manually tidy up imports and format
* chore: remove vscode and add to gitignore
* chore: alphabetically order and fix
* chore: format
* chore: fix format issue with payload
* chore: format as merge had unformatted code
* [format] Fix comments, change max width and binop operator
---------
Co-authored-by: CosminPerRam <cosmin.p@live.com>
* Initial files + unreal tournament
* Fix master_querant
* Split by delimiter and collect into hashmap
* Furter port to accept more packets
* Improve getting the server's values
* Some initial players parsing
* Players parsing
* Add error handling
* Add some more fields
* Add Battlefield 1942 support.
* Add query_vars and some docs
* Initial minecraft support
* Made previews_chat an option
* Better error handling and removed version structure
* Minecraft Server types
* Fixed compilation and renamed stuff
* 'extract till you drop!' extracted sockets
* extracted java version and fixed socket udp receive
* Legacy 1.4 and 1.6 implementation (incomplete)
* Furter implementation
* Implementations work
* Protocol beta v1.8+ implemented
* Removed bedrock support
* Added auto query
* Renamed minecraft to mc and added to md's
* Docs, renames and small optimization changes
* Changed java version to be able to return None on players sample