mirror of
https://github.com/italicsjenga/valence.git
synced 2024-12-23 14:31:30 +11:00
6338fc6300
## Description - Reorganize `valence_nbt` and feature flag the different parts. SNBT and binary serialization are each behind their own flags. - Add optional serde support to `valence_nbt` behind the `serde` flag. This is useful for end users working with `valence_nbt` and allows us to simplify some code in `valence_biome` and `valence_dimension`. Note that this includes a `Serializer` and `Deserializer` for `Compound` and _not_ the binary and SNBT formats. In other words, it's not possible to go directly from an arbitrary data format to binary NBT and vice versa, but it _is_ possible to go to and from `Compound` and finish the (de)serialization this way. I consider this an acceptable compromise because writing fast and correct serialization routines for `Compound` becomes more difficult when serde is in the way. Besides, the intermediate `Compound` often needs to be created anyway. - Fixed unsound uses of `std::mem::transmute` in `valence_nbt` and elsewhere. Using `transmute` to cast between slice types is unsound because slices are `#[repr(Rust)]` and the layouts are not guaranteed. `slice::from_raw_parts` is used as the replacement. |
||
---|---|---|
.. | ||
valence | ||
valence_advancement | ||
valence_anvil | ||
valence_biome | ||
valence_block | ||
valence_build_utils | ||
valence_client | ||
valence_core | ||
valence_core_macros | ||
valence_dimension | ||
valence_entity | ||
valence_instance | ||
valence_inventory | ||
valence_nbt | ||
valence_network | ||
valence_player_list | ||
valence_registry | ||
valence_spatial_index | ||
README.md |
Crates
The standard crates used in Valence projects.
All crates here are exported by the main valence
crate. valence
is the intended interface for both end users and plugin authors.
Crates are versioned in lockstep with the exception of valence_nbt
.
Ignoring transitive dependencies and valence_core
, the dependency graph can be described like this:
graph TD
network --> client
client --> instance
biome --> registry
dimension --> registry
instance --> biome
instance --> dimension
instance --> entity
player_list --> client
inventory --> client
anvil --> instance
entity --> block
advancement --> client