Skip to main content

pumpkinplus/modules/recipes/
diamond_recycle.rs

1//! Diamond armor/tool recycling recipes.
2//!
3//! Provides blast-furnace recipes that recycle damaged or unwanted diamond
4//! gear back into raw diamonds.
5//!
6//! ## Recipe
7//!
8//! | Input | Output | XP | Time (ticks) |
9//! |-------|--------|----|--------------|
10//! | Any diamond tool or armor (see list) | 1× Diamond | 1.0 | 100 |
11//!
12//! ## Supported Inputs
13//!
14//! `diamond_axe`, `diamond_boots`, `diamond_chestplate`, `diamond_helmet`,
15//! `diamond_hoe`, `diamond_horse_armor`, `diamond_leggings`,
16//! `diamond_nautilus_armor`, `diamond_pickaxe`, `diamond_shovel`,
17//! `diamond_spear`, `diamond_sword`
18
19use crate::modules::recipes::recipe::{CookingKind, CookingRecipe, Ingredient, ItemStack, Recipe};
20
21/// Handles diamond gear recycling via blast furnace.
22#[derive(Default)]
23pub struct DiamondRecycle;
24
25impl Recipe for DiamondRecycle {
26    fn cooking(&self) -> Vec<CookingRecipe> {
27        let inputs: Vec<&str> = vec![
28            "minecraft:diamond_axe",
29            "minecraft:diamond_boots",
30            "minecraft:diamond_chestplate",
31            "minecraft:diamond_helmet",
32            "minecraft:diamond_hoe",
33            "minecraft:diamond_horse_armor",
34            "minecraft:diamond_leggings",
35            "minecraft:diamond_nautilus_armor",
36            "minecraft:diamond_pickaxe",
37            "minecraft:diamond_shovel",
38            "minecraft:diamond_spear",
39            "minecraft:diamond_sword",
40        ];
41
42        inputs
43            .into_iter()
44            .map(|id| CookingRecipe {
45                id: format!(
46                    "pumpkinplus:diamond_recycle_{}",
47                    id.rsplit_once(':').map(|(_, s)| s).unwrap_or(id)
48                ),
49                ingredient: Ingredient::Item { id: id.into() },
50                result: ItemStack {
51                    id: "minecraft:diamond".into(),
52                    count: 1,
53                },
54                cook_time: 100,
55                experience: 1.0,
56                kind: CookingKind::Blasting,
57            })
58            .collect()
59    }
60}