Skip to content

Commit

Permalink
repare valence_advancement + check pass
Browse files Browse the repository at this point in the history
  • Loading branch information
Bafbi committed Aug 2, 2023
1 parent 3a3ca8c commit c5ca16b
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 28 deletions.
6 changes: 2 additions & 4 deletions crates/valence_advancement/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,7 @@ use valence_core::protocol::raw::RawBytes;
use valence_core::protocol::var_int::VarInt;
use valence_core::protocol::Encode;
use valence_core::text::Text;
use valence_packet::packets::play::{
advancement_update_s2c as packet, AdvancementUpdateS2c, SelectAdvancementTabS2c,
};
use valence_packet::packets::play::{advancement_update_s2c as packet, SelectAdvancementTabS2c};
use valence_packet::protocol::encode::WritePacket;
use valence_packet::protocol::{packet_id, Packet, PacketSide, PacketState};

Expand Down Expand Up @@ -224,7 +222,7 @@ impl<'w, 's, 'a> Encode for AdvancementUpdateEncodeS2c<'w, 's, 'a> {
reset,
} = &self.client_update;

let mut pkt = AdvancementUpdateS2c {
let mut pkt = packet::GenericAdvancementUpdateS2c {
reset: *reset,
advancement_mapping: vec![],
identifiers: vec![],
Expand Down
6 changes: 3 additions & 3 deletions crates/valence_entity/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -413,7 +413,7 @@ pub struct PacketByteRange(pub Range<usize>);
/// Cache for all the tracked data of an entity. Used for the
/// [`EntityTrackerUpdateS2c`][packet] packet.
///
/// [packet]: valence_packet::entity::EntityTrackerUpdateS2c
/// [packet]: valence_packet::packets::play::EntityTrackerUpdateS2c
#[derive(Component, Default, Debug)]
pub struct TrackedData {
init_data: Vec<u8>,
Expand All @@ -428,7 +428,7 @@ impl TrackedData {
/// [`EntityTrackerUpdateS2c`][packet] packet. This is used when the entity
/// enters the view of a client.
///
/// [packet]: valence_packet::entity::EntityTrackerUpdateS2c
/// [packet]: valence_packet::packets::play::EntityTrackerUpdateS2c
pub fn init_data(&self) -> Option<&[u8]> {
if self.init_data.len() > 1 {
Some(&self.init_data)
Expand All @@ -441,7 +441,7 @@ impl TrackedData {
/// [`EntityTrackerUpdateS2c`][packet] packet. This is used when tracked
/// data is changed and the client is already in view of the entity.
///
/// [packet]: valence_packet::entity::EntityTrackerUpdateS2c
/// [packet]: valence_packet::packets::play::EntityTrackerUpdateS2c
pub fn update_data(&self) -> Option<&[u8]> {
if self.update_data.len() > 1 {
Some(&self.update_data)
Expand Down
45 changes: 24 additions & 21 deletions crates/valence_packet/src/packets/play/advancement_update_s2c.rs
Original file line number Diff line number Diff line change
@@ -1,20 +1,29 @@
use super::*;

pub type AdvancementUpdateS2c<'a> =
GenericAdvancementUpdateS2c<'a, (Ident<Cow<'a, str>>, Advancement<'a, Option<ItemStack>>)>;

#[derive(Clone, Debug, Encode, Decode, Packet)]
#[packet(id = packet_id::ADVANCEMENT_UPDATE_S2C)]
pub struct AdvancementUpdateS2c<'a> {
pub struct GenericAdvancementUpdateS2c<'a, AM: 'a> {
pub reset: bool,
pub advancement_mapping: Vec<(Ident<Cow<'a, str>>, Advancement<'a, Option<ItemStack>>)>,
pub advancement_mapping: Vec<AM>,
pub identifiers: Vec<Ident<Cow<'a, str>>>,
pub progress_mapping: Vec<(Ident<Cow<'a, str>>, Vec<AdvancementCriteria<'a>>)>,
}

#[derive(Clone, PartialEq, Debug, Encode, Decode)]
pub struct Advancement<'a, I> {
pub parent_id: Option<Ident<Cow<'a, str>>>,
pub display_data: Option<AdvancementDisplay<'a, I>>,
pub criteria: Vec<(Ident<Cow<'a, str>>, ())>,
pub requirements: Vec<AdvancementRequirements<'a>>,
pub sends_telemetry_data: bool,
}

#[derive(Clone, PartialEq, Eq, Debug, Encode, Decode)]
pub struct AdvancementCriteria<'a> {
pub criterion_identifier: Ident<Cow<'a, str>>,
/// If present, the criteria has been achieved at the
/// time wrapped; time represented as millis since epoch
pub criterion_progress: Option<i64>,
pub struct AdvancementRequirements<'a> {
pub requirement: Vec<&'a str>,
}

#[derive(Clone, PartialEq, Debug)]
Expand All @@ -29,6 +38,14 @@ pub struct AdvancementDisplay<'a, I> {
pub y_coord: f32,
}

#[derive(Clone, PartialEq, Eq, Debug, Encode, Decode)]
pub struct AdvancementCriteria<'a> {
pub criterion_identifier: Ident<Cow<'a, str>>,
/// If present, the criteria has been achieved at the
/// time wrapped; time represented as millis since epoch
pub criterion_progress: Option<i64>,
}

impl<I: Encode> Encode for AdvancementDisplay<'_, I> {
fn encode(&self, mut w: impl Write) -> anyhow::Result<()> {
self.title.encode(&mut w)?;
Expand Down Expand Up @@ -78,17 +95,3 @@ impl<'a, I: Decode<'a>> Decode<'a> for AdvancementDisplay<'a, I> {
})
}
}

#[derive(Clone, PartialEq, Debug, Encode, Decode)]
pub struct Advancement<'a, I> {
pub parent_id: Option<Ident<Cow<'a, str>>>,
pub display_data: Option<AdvancementDisplay<'a, I>>,
pub criteria: Vec<(Ident<Cow<'a, str>>, ())>,
pub requirements: Vec<AdvancementRequirements<'a>>,
pub sends_telemetry_data: bool,
}

#[derive(Clone, PartialEq, Eq, Debug, Encode, Decode)]
pub struct AdvancementRequirements<'a> {
pub requirement: Vec<&'a str>,
}

0 comments on commit c5ca16b

Please sign in to comment.