Pumpkin/pumpkin-data/src/generated/enchantments.rs
Alexander Medvedev f60a77c5d9 chore: decrease compile time
Instead of parsing pumpkin-data for everyone who compiles lets have it as static files, pumpkin-codegen is a standalone parser now
2026-02-09 15:52:46 +01:00

323 lines
13 KiB
Rust

#[derive(Debug)]
pub struct Enchantment {
anvil_cost: u32,
supported_items: String,
max_level: i32,
slots: &[AttributeModifierSlot],
}
pub enum AttributeModifierSlot {
Any,
MainHand,
OffHand,
Feet,
Legs,
Chest,
Head,
Body,
Saddle,
}
impl Enchantment {
pub const MINECRAFT_PIERCING: Enchantment = Enchantment {
anvil_cost: 1u32,
supported_items: "#minecraft:enchantable/crossbow",
max_level: 4i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_PROJECTILE_PROTECTION: Enchantment = Enchantment {
anvil_cost: 2u32,
supported_items: "#minecraft:enchantable/armor",
max_level: 4i32,
slots: &[AttributeModifierSlot::Armor],
};
pub const MINECRAFT_PUNCH: Enchantment = Enchantment {
anvil_cost: 4u32,
supported_items: "#minecraft:enchantable/bow",
max_level: 2i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_DEPTH_STRIDER: Enchantment = Enchantment {
anvil_cost: 4u32,
supported_items: "#minecraft:enchantable/foot_armor",
max_level: 3i32,
slots: &[AttributeModifierSlot::Feet],
};
pub const MINECRAFT_IMPALING: Enchantment = Enchantment {
anvil_cost: 4u32,
supported_items: "#minecraft:enchantable/trident",
max_level: 5i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_MENDING: Enchantment = Enchantment {
anvil_cost: 4u32,
supported_items: "#minecraft:enchantable/durability",
max_level: 1i32,
slots: &[AttributeModifierSlot::Any],
};
pub const MINECRAFT_MULTISHOT: Enchantment = Enchantment {
anvil_cost: 4u32,
supported_items: "#minecraft:enchantable/crossbow",
max_level: 1i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_LOOTING: Enchantment = Enchantment {
anvil_cost: 4u32,
supported_items: "#minecraft:enchantable/sword",
max_level: 3i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_BREACH: Enchantment = Enchantment {
anvil_cost: 4u32,
supported_items: "#minecraft:enchantable/mace",
max_level: 4i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_SHARPNESS: Enchantment = Enchantment {
anvil_cost: 1u32,
supported_items: "#minecraft:enchantable/sharp_weapon",
max_level: 5i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_SILK_TOUCH: Enchantment = Enchantment {
anvil_cost: 8u32,
supported_items: "#minecraft:enchantable/mining_loot",
max_level: 1i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_THORNS: Enchantment = Enchantment {
anvil_cost: 8u32,
supported_items: "#minecraft:enchantable/armor",
max_level: 3i32,
slots: &[AttributeModifierSlot::Any],
};
pub const MINECRAFT_QUICK_CHARGE: Enchantment = Enchantment {
anvil_cost: 2u32,
supported_items: "#minecraft:enchantable/crossbow",
max_level: 3i32,
slots: &[
AttributeModifierSlot::MainHand,
AttributeModifierSlot::OffHand,
],
};
pub const MINECRAFT_WIND_BURST: Enchantment = Enchantment {
anvil_cost: 4u32,
supported_items: "#minecraft:enchantable/mace",
max_level: 3i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_RIPTIDE: Enchantment = Enchantment {
anvil_cost: 4u32,
supported_items: "#minecraft:enchantable/trident",
max_level: 3i32,
slots: &[AttributeModifierSlot::Hand],
};
pub const MINECRAFT_KNOCKBACK: Enchantment = Enchantment {
anvil_cost: 2u32,
supported_items: "#minecraft:enchantable/sword",
max_level: 2i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_FIRE_PROTECTION: Enchantment = Enchantment {
anvil_cost: 2u32,
supported_items: "#minecraft:enchantable/armor",
max_level: 4i32,
slots: &[AttributeModifierSlot::Armor],
};
pub const MINECRAFT_FLAME: Enchantment = Enchantment {
anvil_cost: 4u32,
supported_items: "#minecraft:enchantable/bow",
max_level: 1i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_BLAST_PROTECTION: Enchantment = Enchantment {
anvil_cost: 4u32,
supported_items: "#minecraft:enchantable/armor",
max_level: 4i32,
slots: &[AttributeModifierSlot::Armor],
};
pub const MINECRAFT_VANISHING_CURSE: Enchantment = Enchantment {
anvil_cost: 8u32,
supported_items: "#minecraft:enchantable/vanishing",
max_level: 1i32,
slots: &[AttributeModifierSlot::Any],
};
pub const MINECRAFT_LURE: Enchantment = Enchantment {
anvil_cost: 4u32,
supported_items: "#minecraft:enchantable/fishing",
max_level: 3i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_CHANNELING: Enchantment = Enchantment {
anvil_cost: 8u32,
supported_items: "#minecraft:enchantable/trident",
max_level: 1i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_EFFICIENCY: Enchantment = Enchantment {
anvil_cost: 1u32,
supported_items: "#minecraft:enchantable/mining",
max_level: 5i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_UNBREAKING: Enchantment = Enchantment {
anvil_cost: 2u32,
supported_items: "#minecraft:enchantable/durability",
max_level: 3i32,
slots: &[AttributeModifierSlot::Any],
};
pub const MINECRAFT_SWIFT_SNEAK: Enchantment = Enchantment {
anvil_cost: 8u32,
supported_items: "#minecraft:enchantable/leg_armor",
max_level: 3i32,
slots: &[AttributeModifierSlot::Legs],
};
pub const MINECRAFT_FIRE_ASPECT: Enchantment = Enchantment {
anvil_cost: 4u32,
supported_items: "#minecraft:enchantable/fire_aspect",
max_level: 2i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_BINDING_CURSE: Enchantment = Enchantment {
anvil_cost: 8u32,
supported_items: "#minecraft:enchantable/equippable",
max_level: 1i32,
slots: &[AttributeModifierSlot::Armor],
};
pub const MINECRAFT_SOUL_SPEED: Enchantment = Enchantment {
anvil_cost: 8u32,
supported_items: "#minecraft:enchantable/foot_armor",
max_level: 3i32,
slots: &[AttributeModifierSlot::Feet],
};
pub const MINECRAFT_SMITE: Enchantment = Enchantment {
anvil_cost: 2u32,
supported_items: "#minecraft:enchantable/weapon",
max_level: 5i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_FEATHER_FALLING: Enchantment = Enchantment {
anvil_cost: 2u32,
supported_items: "#minecraft:enchantable/foot_armor",
max_level: 4i32,
slots: &[AttributeModifierSlot::Armor],
};
pub const MINECRAFT_INFINITY: Enchantment = Enchantment {
anvil_cost: 8u32,
supported_items: "#minecraft:enchantable/bow",
max_level: 1i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_BANE_OF_ARTHROPODS: Enchantment = Enchantment {
anvil_cost: 2u32,
supported_items: "#minecraft:enchantable/weapon",
max_level: 5i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_PROTECTION: Enchantment = Enchantment {
anvil_cost: 1u32,
supported_items: "#minecraft:enchantable/armor",
max_level: 4i32,
slots: &[AttributeModifierSlot::Armor],
};
pub const MINECRAFT_AQUA_AFFINITY: Enchantment = Enchantment {
anvil_cost: 4u32,
supported_items: "#minecraft:enchantable/head_armor",
max_level: 1i32,
slots: &[AttributeModifierSlot::Head],
};
pub const MINECRAFT_FORTUNE: Enchantment = Enchantment {
anvil_cost: 4u32,
supported_items: "#minecraft:enchantable/mining_loot",
max_level: 3i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_FROST_WALKER: Enchantment = Enchantment {
anvil_cost: 4u32,
supported_items: "#minecraft:enchantable/foot_armor",
max_level: 2i32,
slots: &[AttributeModifierSlot::Feet],
};
pub const MINECRAFT_POWER: Enchantment = Enchantment {
anvil_cost: 1u32,
supported_items: "#minecraft:enchantable/bow",
max_level: 5i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_DENSITY: Enchantment = Enchantment {
anvil_cost: 2u32,
supported_items: "#minecraft:enchantable/mace",
max_level: 5i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_LOYALTY: Enchantment = Enchantment {
anvil_cost: 2u32,
supported_items: "#minecraft:enchantable/trident",
max_level: 3i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_SWEEPING_EDGE: Enchantment = Enchantment {
anvil_cost: 4u32,
supported_items: "#minecraft:enchantable/sword",
max_level: 3i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub const MINECRAFT_RESPIRATION: Enchantment = Enchantment {
anvil_cost: 4u32,
supported_items: "#minecraft:enchantable/head_armor",
max_level: 3i32,
slots: &[AttributeModifierSlot::Head],
};
pub const MINECRAFT_LUCK_OF_THE_SEA: Enchantment = Enchantment {
anvil_cost: 4u32,
supported_items: "#minecraft:enchantable/fishing",
max_level: 3i32,
slots: &[AttributeModifierSlot::MainHand],
};
pub fn from_name(name: &str) -> Option<&'static Self> {
match name {
"minecraft:piercing" => Some(&Self::MINECRAFT_PIERCING),
"minecraft:projectile_protection" => Some(&Self::MINECRAFT_PROJECTILE_PROTECTION),
"minecraft:punch" => Some(&Self::MINECRAFT_PUNCH),
"minecraft:depth_strider" => Some(&Self::MINECRAFT_DEPTH_STRIDER),
"minecraft:impaling" => Some(&Self::MINECRAFT_IMPALING),
"minecraft:mending" => Some(&Self::MINECRAFT_MENDING),
"minecraft:multishot" => Some(&Self::MINECRAFT_MULTISHOT),
"minecraft:looting" => Some(&Self::MINECRAFT_LOOTING),
"minecraft:breach" => Some(&Self::MINECRAFT_BREACH),
"minecraft:sharpness" => Some(&Self::MINECRAFT_SHARPNESS),
"minecraft:silk_touch" => Some(&Self::MINECRAFT_SILK_TOUCH),
"minecraft:thorns" => Some(&Self::MINECRAFT_THORNS),
"minecraft:quick_charge" => Some(&Self::MINECRAFT_QUICK_CHARGE),
"minecraft:wind_burst" => Some(&Self::MINECRAFT_WIND_BURST),
"minecraft:riptide" => Some(&Self::MINECRAFT_RIPTIDE),
"minecraft:knockback" => Some(&Self::MINECRAFT_KNOCKBACK),
"minecraft:fire_protection" => Some(&Self::MINECRAFT_FIRE_PROTECTION),
"minecraft:flame" => Some(&Self::MINECRAFT_FLAME),
"minecraft:blast_protection" => Some(&Self::MINECRAFT_BLAST_PROTECTION),
"minecraft:vanishing_curse" => Some(&Self::MINECRAFT_VANISHING_CURSE),
"minecraft:lure" => Some(&Self::MINECRAFT_LURE),
"minecraft:channeling" => Some(&Self::MINECRAFT_CHANNELING),
"minecraft:efficiency" => Some(&Self::MINECRAFT_EFFICIENCY),
"minecraft:unbreaking" => Some(&Self::MINECRAFT_UNBREAKING),
"minecraft:swift_sneak" => Some(&Self::MINECRAFT_SWIFT_SNEAK),
"minecraft:fire_aspect" => Some(&Self::MINECRAFT_FIRE_ASPECT),
"minecraft:binding_curse" => Some(&Self::MINECRAFT_BINDING_CURSE),
"minecraft:soul_speed" => Some(&Self::MINECRAFT_SOUL_SPEED),
"minecraft:smite" => Some(&Self::MINECRAFT_SMITE),
"minecraft:feather_falling" => Some(&Self::MINECRAFT_FEATHER_FALLING),
"minecraft:infinity" => Some(&Self::MINECRAFT_INFINITY),
"minecraft:bane_of_arthropods" => Some(&Self::MINECRAFT_BANE_OF_ARTHROPODS),
"minecraft:protection" => Some(&Self::MINECRAFT_PROTECTION),
"minecraft:aqua_affinity" => Some(&Self::MINECRAFT_AQUA_AFFINITY),
"minecraft:fortune" => Some(&Self::MINECRAFT_FORTUNE),
"minecraft:frost_walker" => Some(&Self::MINECRAFT_FROST_WALKER),
"minecraft:power" => Some(&Self::MINECRAFT_POWER),
"minecraft:density" => Some(&Self::MINECRAFT_DENSITY),
"minecraft:loyalty" => Some(&Self::MINECRAFT_LOYALTY),
"minecraft:sweeping_edge" => Some(&Self::MINECRAFT_SWEEPING_EDGE),
"minecraft:respiration" => Some(&Self::MINECRAFT_RESPIRATION),
"minecraft:luck_of_the_sea" => Some(&Self::MINECRAFT_LUCK_OF_THE_SEA),
_ => None,
}
}
}