diff options
| author | mat <git@matdoes.dev> | 2025-11-13 12:34:47 +0930 |
|---|---|---|
| committer | mat <git@matdoes.dev> | 2025-11-13 07:04:52 +0400 |
| commit | fbaae39cdf9c5a7a34005a51a37b85f7cdd5ea00 (patch) | |
| tree | 3126fb34a4e0ac979a1103a8227a2b9a136c1553 /azalea-core/src/resource_location.rs | |
| parent | a4312599f7c04709a92b7be238dcf577bafbb14f (diff) | |
| download | azalea-drasl-fbaae39cdf9c5a7a34005a51a37b85f7cdd5ea00.tar.xz | |
rename ResourceLocation to Identifier ahead of mojmap changes
Diffstat (limited to 'azalea-core/src/resource_location.rs')
| -rw-r--r-- | azalea-core/src/resource_location.rs | 160 |
1 files changed, 0 insertions, 160 deletions
diff --git a/azalea-core/src/resource_location.rs b/azalea-core/src/resource_location.rs deleted file mode 100644 index 1591f678..00000000 --- a/azalea-core/src/resource_location.rs +++ /dev/null @@ -1,160 +0,0 @@ -//! A resource, like minecraft:stone - -use std::{ - fmt, - io::{self, Cursor, Write}, - str::FromStr, -}; - -use azalea_buf::{AzaleaRead, AzaleaWrite, BufReadError}; -use serde::{Deserialize, Deserializer, Serialize, Serializer, de}; -use simdnbt::{FromNbtTag, ToNbtTag, owned::NbtTag}; - -#[derive(Hash, Clone, PartialEq, Eq, Default)] -pub struct ResourceLocation { - pub namespace: String, - pub path: String, -} - -static DEFAULT_NAMESPACE: &str = "minecraft"; -// static REALMS_NAMESPACE: &str = "realms"; - -impl ResourceLocation { - pub fn new(resource_string: &str) -> ResourceLocation { - let sep_byte_position_option = resource_string.chars().position(|c| c == ':'); - let (namespace, path) = if let Some(sep_byte_position) = sep_byte_position_option { - if sep_byte_position == 0 { - (DEFAULT_NAMESPACE, &resource_string[1..]) - } else { - ( - &resource_string[..sep_byte_position], - &resource_string[sep_byte_position + 1..], - ) - } - } else { - (DEFAULT_NAMESPACE, resource_string) - }; - ResourceLocation { - namespace: namespace.to_string(), - path: path.to_string(), - } - } -} - -impl fmt::Display for ResourceLocation { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "{}:{}", self.namespace, self.path) - } -} -impl fmt::Debug for ResourceLocation { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "{}:{}", self.namespace, self.path) - } -} -impl FromStr for ResourceLocation { - type Err = &'static str; - - fn from_str(s: &str) -> Result<Self, Self::Err> { - Ok(ResourceLocation::new(s)) - } -} -impl From<&str> for ResourceLocation { - fn from(s: &str) -> Self { - ResourceLocation::new(s) - } -} - -impl AzaleaRead for ResourceLocation { - fn azalea_read(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> { - let location_string = String::azalea_read(buf)?; - Ok(ResourceLocation::new(&location_string)) - } -} -impl AzaleaWrite for ResourceLocation { - fn azalea_write(&self, buf: &mut impl Write) -> io::Result<()> { - self.to_string().azalea_write(buf) - } -} - -impl Serialize for ResourceLocation { - fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> - where - S: Serializer, - { - serializer.serialize_str(&self.to_string()) - } -} - -impl<'de> Deserialize<'de> for ResourceLocation { - fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> - where - D: Deserializer<'de>, - { - let s = String::deserialize(deserializer)?; - if s.contains(':') { - Ok(ResourceLocation::new(&s)) - } else { - Err(de::Error::invalid_value( - de::Unexpected::Str(&s), - &"a valid ResourceLocation", - )) - } - } -} - -impl FromNbtTag for ResourceLocation { - fn from_nbt_tag(tag: simdnbt::borrow::NbtTag) -> Option<Self> { - tag.string().and_then(|s| s.to_str().parse().ok()) - } -} - -impl ToNbtTag for ResourceLocation { - fn to_nbt_tag(self) -> NbtTag { - NbtTag::String(self.to_string().into()) - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn basic_resource_location() { - let r = ResourceLocation::new("abcdef:ghijkl"); - assert_eq!(r.namespace, "abcdef"); - assert_eq!(r.path, "ghijkl"); - } - #[test] - fn no_namespace() { - let r = ResourceLocation::new("azalea"); - assert_eq!(r.namespace, "minecraft"); - assert_eq!(r.path, "azalea"); - } - #[test] - fn colon_start() { - let r = ResourceLocation::new(":azalea"); - assert_eq!(r.namespace, "minecraft"); - assert_eq!(r.path, "azalea"); - } - #[test] - fn colon_end() { - let r = ResourceLocation::new("azalea:"); - assert_eq!(r.namespace, "azalea"); - assert_eq!(r.path, ""); - } - - #[test] - fn azbuf_resource_location() { - let mut buf = Vec::new(); - ResourceLocation::new("minecraft:dirt") - .azalea_write(&mut buf) - .unwrap(); - - let mut buf = Cursor::new(&buf[..]); - - assert_eq!( - ResourceLocation::azalea_read(&mut buf).unwrap(), - ResourceLocation::new("minecraft:dirt") - ); - } -} |
