* [Protocol] Standardize The Ship fields
* [Protocol] Standardize FFOW fields
* [Protocol] Rename Valve's protocol field to protocol_version
* [Protocol] Rename Minecraft's version_protocol field to protocol_version
* [Protocol] Rename Valve's version field to game_version
* [Protocol] Rename Minecraft java version_name to game_version
* [Crate] Reformat RESPONSES.md
* [Protocol] Renamed Minecraft Java players_sample to players
* [Protocol] Rename Quake (1,2,3) version field to game_version
* [Protocol] Rename quake (1 and 2) game_type field to game_mode
* [Protocol] Rename Valve, FFOW, TS game field to game_mode
* [Generics] Rename game field/function to game_mode
* [Protocol] Change players_minimum, _maximum and _bots from those who werent u8 or u32 to u32
* [Protocol] Change instances of player score field type from u32 to i32
* [Crate] Nicer gramar in CHANGELOG
* [Protocol] Apply clippy fixes
* Add rich error type with source and backtrace
Adds a rich error type that will take a backtrace and allow capturing
the source of the error. The best way to use this is with the included
helpers that will automatically capture the backtrace and convert the
source error:
```
GDRichError::packet_bad_from_into("Reason packet was bad")
```
* [Crate] Bump MSRV to 1.65.0
This is required for backtraces in rich errors.
* Remove leftover debug logging
* [Errors] Replace variant overloads with single .rich method on kind enum
This overhaul replaces the exhaustive impls of each variant as multiple
methods on the rich error type with a singular .rich() method on the
kind enum. This consumes the variant and converts it to a rich error
with a source (.into() can be used if a source is not needed).
I also took the liberty of replacing all usages with the this new method
as I saw fit (adding various error messages) and converting a few
PacketBad errors to TypeParse errors when they are the result of parse
failing.
* Fix problem with rustdoc
* Remove BadGame's owned string
* Rename GDError to GDErrorKind
* Rename GDRichError to GDError
* Remove error impl from GDErrorKind
* Fix tests not passing
* Use error context everywhere map_err is used
* Improve GDError display formatter
* Add tests for new error type
* Implement generic response as enum
* First draft of implementing into_common()
* Make common response type generic
* Use macros and generics to reduce repetition
* [Games] Add dynamically dispatched CommonResponse trait
This adds two traits: "CommonResponse", and "CommonPlayer", when the
generic game query function returns a response it returns a pointer to
its original response type that implements "CommonResponse".
Both common traits require that "as_original()" be implemented, this
returns an enum containing a pointer to the original type.
Both traits have a concrete method "as_json()" that returns a struct
containing data fetched from all of its methods as. This struct
implements serde and can hence be serialized as required.
The traits require a few other methods be implemented, those being the
fields that are common across all types. All other methods have a
default None implementation so that each response type only needs to
implement methods for fields that it has.
* [Game] Implement common traits for JCMP2 response
* [Fmt] Run cargo fmt
* Fix doctest failing
* Run cargo fmt
Replace usages of Ipv4Addr with IpAddr which allows the use of either Ipv4 or Ipv6.
This patch essentially consists of running:
"sed -i 's/Ipv4Addr/IpAddr/g' src/**/*.rs examples/*"
and fixing the errors.
* 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 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