1
0
Mirror von https://github.com/Chaoscaot/schemsearch synchronisiert 2024-07-01 08:38:05 +02:00

idk what im doing

Dieser Commit ist enthalten in:
Chaoscaot 2023-04-14 17:56:28 +02:00
Ursprung d1a01dc0c1
Commit 246927d840

Datei anzeigen

@ -15,7 +15,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
use std::collections::HashMap; use std::collections::hash_map::{HashMap};
use std::io::Read; use std::io::Read;
use std::path::PathBuf; use std::path::PathBuf;
use fastnbt::error::Error; use fastnbt::error::Error;
@ -105,20 +105,22 @@ impl SchematicVersioned {
} }
} }
impl From<SchematicRaw> for SchematicVersioned { impl TryFrom<SchematicRaw> for SchematicVersioned {
fn from(value: SchematicRaw) -> Self { type Error = Error;
fn try_from(value: SchematicRaw) -> Result<Self, Self::Error> {
match value.version { match value.version {
1 => { 1 => {
let schematic: SpongeV1Schematic = SpongeV1Schematic::deserialize(MapDeserializer::new(value.data.into_iter())).unwrap(); let schematic: SpongeV1Schematic = fastnbt::from_value(&fastnbt::to_value(value.data)?)?;
return SchematicVersioned::V1(schematic); return Ok(SchematicVersioned::V1(schematic));
}, },
2 => { 2 => {
let schematic: SpongeV2Schematic = SpongeV2Schematic::deserialize(MapDeserializer::new(value.data.into_iter())).unwrap(); let schematic: SpongeV2Schematic = fastnbt::from_value(&fastnbt::to_value(value.data)?)?;
return SchematicVersioned::V2(schematic); return Ok(SchematicVersioned::V2(schematic));
}, },
3 => { 3 => {
let schematic: SpongeV3Schematic = SpongeV3Schematic::deserialize(MapDeserializer::new(value.data.into_iter())).unwrap(); let schematic: SpongeV3Schematic = fastnbt::from_value(&fastnbt::to_value(value.data)?)?;
return SchematicVersioned::V3(schematic); return Ok(SchematicVersioned::V3(schematic));
} }
_ => panic!("Unknown Schematic Version: {}", value.version), _ => panic!("Unknown Schematic Version: {}", value.version),
} }
@ -212,7 +214,7 @@ pub struct Entity {
impl SchematicVersioned { impl SchematicVersioned {
pub fn load_data<R>(data: R) -> Result<SchematicVersioned, Error> where R: Read { pub fn load_data<R>(data: R) -> Result<SchematicVersioned, Error> where R: Read {
let raw: SchematicRaw = fastnbt::from_reader(GzDecoder::new(data))?; let raw: SchematicRaw = fastnbt::from_reader(GzDecoder::new(data))?;
Ok(SchematicVersioned::from(raw)) SchematicVersioned::try_from(raw)
} }
pub fn load(path: &PathBuf) -> Result<SchematicVersioned, Error> { pub fn load(path: &PathBuf) -> Result<SchematicVersioned, Error> {