Refactor recipe parsing minecraft: prefix, related to #155
This commit is contained in:
parent
5467304bcf
commit
3bbab7a128
|
@ -2480,7 +2480,7 @@ pub struct Recipe {
|
||||||
|
|
||||||
impl Serializable for Recipe {
|
impl Serializable for Recipe {
|
||||||
fn read_from<R: io::Read>(buf: &mut R) -> Result<Self, Error> {
|
fn read_from<R: io::Read>(buf: &mut R) -> Result<Self, Error> {
|
||||||
let (id, ty, namespace) = {
|
let (id, ty) = {
|
||||||
let a = String::read_from(buf)?;
|
let a = String::read_from(buf)?;
|
||||||
let b = String::read_from(buf)?;
|
let b = String::read_from(buf)?;
|
||||||
|
|
||||||
|
@ -2491,33 +2491,26 @@ impl Serializable for Recipe {
|
||||||
let ty = a;
|
let ty = a;
|
||||||
let id = b;
|
let id = b;
|
||||||
|
|
||||||
if let Some(at) = ty.find(':') {
|
if ty.find(':').is_some() {
|
||||||
let (namespace, ty) = ty.split_at(at + 1);
|
(id, ty)
|
||||||
let ty: String = ty.into();
|
|
||||||
let namespace: String = namespace.into();
|
|
||||||
(id, ty, namespace)
|
|
||||||
} else {
|
} else {
|
||||||
(id, ty, "minecraft:".to_string())
|
(id, format!("minecraft:{}", ty))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let ty = b;
|
let ty = b;
|
||||||
let id = a;
|
let id = a;
|
||||||
(id, ty, "minecraft:".to_string())
|
(id, format!("minecraft:{}", ty))
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if namespace != "minecraft:" {
|
|
||||||
panic!("unrecognized recipe type namespace: {}", namespace);
|
|
||||||
}
|
|
||||||
|
|
||||||
let data =
|
let data =
|
||||||
match ty.as_ref() {
|
match ty.as_ref() {
|
||||||
"crafting_shapeless" => RecipeData::Shapeless {
|
"minecraft:crafting_shapeless" => RecipeData::Shapeless {
|
||||||
group: Serializable::read_from(buf)?,
|
group: Serializable::read_from(buf)?,
|
||||||
ingredients: Serializable::read_from(buf)?,
|
ingredients: Serializable::read_from(buf)?,
|
||||||
result: Serializable::read_from(buf)?,
|
result: Serializable::read_from(buf)?,
|
||||||
},
|
},
|
||||||
"crafting_shaped" => {
|
"minecraft:crafting_shaped" => {
|
||||||
let width: VarInt = Serializable::read_from(buf)?;
|
let width: VarInt = Serializable::read_from(buf)?;
|
||||||
let height: VarInt = Serializable::read_from(buf)?;
|
let height: VarInt = Serializable::read_from(buf)?;
|
||||||
let group: String = Serializable::read_from(buf)?;
|
let group: String = Serializable::read_from(buf)?;
|
||||||
|
@ -2532,49 +2525,49 @@ impl Serializable for Recipe {
|
||||||
|
|
||||||
RecipeData::Shaped { width, height, group, ingredients, result }
|
RecipeData::Shaped { width, height, group, ingredients, result }
|
||||||
}
|
}
|
||||||
"crafting_special_armordye" => RecipeData::ArmorDye,
|
"minecraft:crafting_special_armordye" => RecipeData::ArmorDye,
|
||||||
"crafting_special_bookcloning" => RecipeData::BookCloning,
|
"minecraft:crafting_special_bookcloning" => RecipeData::BookCloning,
|
||||||
"crafting_special_mapcloning" => RecipeData::MapCloning,
|
"minecraft:crafting_special_mapcloning" => RecipeData::MapCloning,
|
||||||
"crafting_special_mapextending" => RecipeData::MapExtending,
|
"minecraft:crafting_special_mapextending" => RecipeData::MapExtending,
|
||||||
"crafting_special_firework_rocket" => RecipeData::FireworkRocket,
|
"minecraft:crafting_special_firework_rocket" => RecipeData::FireworkRocket,
|
||||||
"crafting_special_firework_star" => RecipeData::FireworkStar,
|
"minecraft:crafting_special_firework_star" => RecipeData::FireworkStar,
|
||||||
"crafting_special_firework_star_fade" => RecipeData::FireworkStarFade,
|
"minecraft:crafting_special_firework_star_fade" => RecipeData::FireworkStarFade,
|
||||||
"crafting_special_repairitem" => RecipeData::RepairItem,
|
"minecraft:crafting_special_repairitem" => RecipeData::RepairItem,
|
||||||
"crafting_special_tippedarrow" => RecipeData::TippedArrow,
|
"minecraft:crafting_special_tippedarrow" => RecipeData::TippedArrow,
|
||||||
"crafting_special_bannerduplicate" => RecipeData::BannerDuplicate,
|
"minecraft:crafting_special_bannerduplicate" => RecipeData::BannerDuplicate,
|
||||||
"crafting_special_banneraddpattern" => RecipeData::BannerAddPattern,
|
"minecraft:crafting_special_banneraddpattern" => RecipeData::BannerAddPattern,
|
||||||
"crafting_special_shielddecoration" => RecipeData::ShieldDecoration,
|
"minecraft:crafting_special_shielddecoration" => RecipeData::ShieldDecoration,
|
||||||
"crafting_special_shulkerboxcoloring" => RecipeData::ShulkerBoxColoring,
|
"minecraft:crafting_special_shulkerboxcoloring" => RecipeData::ShulkerBoxColoring,
|
||||||
"crafting_special_suspiciousstew" => RecipeData::SuspiciousStew,
|
"minecraft:crafting_special_suspiciousstew" => RecipeData::SuspiciousStew,
|
||||||
"smelting" => RecipeData::Smelting {
|
"minecraft:smelting" => RecipeData::Smelting {
|
||||||
group: Serializable::read_from(buf)?,
|
group: Serializable::read_from(buf)?,
|
||||||
ingredient: Serializable::read_from(buf)?,
|
ingredient: Serializable::read_from(buf)?,
|
||||||
result: Serializable::read_from(buf)?,
|
result: Serializable::read_from(buf)?,
|
||||||
experience: Serializable::read_from(buf)?,
|
experience: Serializable::read_from(buf)?,
|
||||||
cooking_time: Serializable::read_from(buf)?,
|
cooking_time: Serializable::read_from(buf)?,
|
||||||
},
|
},
|
||||||
"blasting" => RecipeData::Blasting {
|
"minecraft:blasting" => RecipeData::Blasting {
|
||||||
group: Serializable::read_from(buf)?,
|
group: Serializable::read_from(buf)?,
|
||||||
ingredient: Serializable::read_from(buf)?,
|
ingredient: Serializable::read_from(buf)?,
|
||||||
result: Serializable::read_from(buf)?,
|
result: Serializable::read_from(buf)?,
|
||||||
experience: Serializable::read_from(buf)?,
|
experience: Serializable::read_from(buf)?,
|
||||||
cooking_time: Serializable::read_from(buf)?,
|
cooking_time: Serializable::read_from(buf)?,
|
||||||
},
|
},
|
||||||
"smoking" => RecipeData::Smoking {
|
"minecraft:smoking" => RecipeData::Smoking {
|
||||||
group: Serializable::read_from(buf)?,
|
group: Serializable::read_from(buf)?,
|
||||||
ingredient: Serializable::read_from(buf)?,
|
ingredient: Serializable::read_from(buf)?,
|
||||||
result: Serializable::read_from(buf)?,
|
result: Serializable::read_from(buf)?,
|
||||||
experience: Serializable::read_from(buf)?,
|
experience: Serializable::read_from(buf)?,
|
||||||
cooking_time: Serializable::read_from(buf)?,
|
cooking_time: Serializable::read_from(buf)?,
|
||||||
},
|
},
|
||||||
"campfire" | "campfire_cooking" => RecipeData::Campfire {
|
"minecraft:campfire" | "minecraft:campfire_cooking" => RecipeData::Campfire {
|
||||||
group: Serializable::read_from(buf)?,
|
group: Serializable::read_from(buf)?,
|
||||||
ingredient: Serializable::read_from(buf)?,
|
ingredient: Serializable::read_from(buf)?,
|
||||||
result: Serializable::read_from(buf)?,
|
result: Serializable::read_from(buf)?,
|
||||||
experience: Serializable::read_from(buf)?,
|
experience: Serializable::read_from(buf)?,
|
||||||
cooking_time: Serializable::read_from(buf)?,
|
cooking_time: Serializable::read_from(buf)?,
|
||||||
},
|
},
|
||||||
"stonecutting" => RecipeData::Stonecutting {
|
"minecraft:stonecutting" => RecipeData::Stonecutting {
|
||||||
group: Serializable::read_from(buf)?,
|
group: Serializable::read_from(buf)?,
|
||||||
ingredient: Serializable::read_from(buf)?,
|
ingredient: Serializable::read_from(buf)?,
|
||||||
result: Serializable::read_from(buf)?,
|
result: Serializable::read_from(buf)?,
|
||||||
|
|
Loading…
Reference in New Issue