Instead of parsing pumpkin-data for everyone who compiles lets have it as static files, pumpkin-codegen is a standalone parser now
323 lines
13 KiB
Rust
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,
|
|
}
|
|
}
|
|
}
|