mirror of
https://github.com/mat-1/azalea.git
synced 2025-08-02 06:16:04 +00:00
* start updating to 1.21.4 * fix block codegen and stop using block data from burger * rename packet related modules and structs to be simpler * ItemSlot -> ItemStack for more consistency with mojmap * .get() -> .into_packet() * simplify declare_state_packets by removing packet ids * rename read_from and write_into to azalea_read and azalea_write * rename McBufReadable and McBufWritable to AzaleaRead and AzaleaWrite * McBuf -> AzBuf * remove most uses of into_variant * update codegen and use resourcelocation names for packets * implement #[limit(i)] attribute for AzBuf derive macro * fixes for 1.21.4 * fix examples * update some physics code and fix ChatType * remove unused imports in codegen * re-add some things to migrate.py and update +mc version numbers automatically * downgrade to 1.21.3 lol
88 lines
2 KiB
Rust
Executable file
88 lines
2 KiB
Rust
Executable file
use azalea_buf::{AzBuf, AzaleaRead, AzaleaWrite};
|
|
use azalea_chat::FormattedText;
|
|
use azalea_protocol_macros::ClientboundGamePacket;
|
|
|
|
#[derive(Clone, Debug, ClientboundGamePacket, AzBuf)]
|
|
pub struct ClientboundMapItemData {
|
|
#[var]
|
|
pub map_id: u32,
|
|
pub scale: u8,
|
|
pub locked: bool,
|
|
pub decorations: Option<Vec<MapDecoration>>,
|
|
pub color_patch: OptionalMapPatch,
|
|
}
|
|
|
|
#[derive(Clone, Debug, AzBuf)]
|
|
pub struct MapDecoration {
|
|
pub decoration_type: DecorationType,
|
|
pub x: i8,
|
|
pub y: i8,
|
|
/// Minecraft does & 15 on this value, azalea-protocol doesn't. I don't
|
|
/// think it matters.
|
|
pub rot: i8,
|
|
pub name: Option<FormattedText>,
|
|
}
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub struct OptionalMapPatch(pub Option<MapPatch>);
|
|
|
|
impl AzaleaRead for OptionalMapPatch {
|
|
fn azalea_read(buf: &mut std::io::Cursor<&[u8]>) -> Result<Self, azalea_buf::BufReadError> {
|
|
let pos = buf.position();
|
|
Ok(Self(if u8::azalea_read(buf)? == 0 {
|
|
None
|
|
} else {
|
|
buf.set_position(pos);
|
|
Some(MapPatch::azalea_read(buf)?)
|
|
}))
|
|
}
|
|
}
|
|
|
|
impl AzaleaWrite for OptionalMapPatch {
|
|
fn azalea_write(&self, buf: &mut impl std::io::Write) -> Result<(), std::io::Error> {
|
|
match &self.0 {
|
|
None => 0u8.azalea_write(buf),
|
|
Some(m) => m.azalea_write(buf),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Debug, Clone, AzBuf)]
|
|
pub struct MapPatch {
|
|
pub width: u8,
|
|
pub height: u8,
|
|
pub start_x: u8,
|
|
pub start_y: u8,
|
|
pub map_colors: Vec<u8>,
|
|
}
|
|
|
|
#[derive(Clone, Copy, Debug, AzBuf)]
|
|
pub enum DecorationType {
|
|
Player,
|
|
Frame,
|
|
RedMarker,
|
|
BlueMarker,
|
|
TargetX,
|
|
TargetPoint,
|
|
PlayerOffMap,
|
|
PlayerOffLimits,
|
|
Mansion,
|
|
Monument,
|
|
BannerWhite,
|
|
BannerOrange,
|
|
BannerMagenta,
|
|
BannerLightBlue,
|
|
BannerYellow,
|
|
BannerLime,
|
|
BannerPink,
|
|
BannerGray,
|
|
BannerLightGray,
|
|
BannerCyan,
|
|
BannerPurple,
|
|
BannerBlue,
|
|
BannerBrown,
|
|
BannerGreen,
|
|
BannerRed,
|
|
BannerBlack,
|
|
RedX,
|
|
}
|