yog-cli 0.45.0

Yog build tool — `yog build` compiles a mod and packages it as .yog.
# warning: resources/Items.ru_ru.yres: 1 text(s) not translated (shown in en_us): ruby.desc
# warning: content has blocks/items, but src/ never calls `yog_api::content!();` — they get models but aren't registered
# resources: Items.g.rs
/// The resources of `resources/Items.yres`.
#[allow(dead_code)]
pub struct Items;

#[allow(dead_code, non_snake_case, clippy::all)]
impl Items {
    /// Translation key of [`Self::ruby`]: `item.gm.ruby`.
    pub const RUBY_KEY: &'static str = "item.gm.ruby";
    /// Looks up a localized string similar to "Ruby".
    ///
    /// `ruby` (resources/Items.yres:2)
    pub fn ruby() -> ::std::string::String {
        ::yog_api::tr(Self::RUBY_KEY)
    }
    /// Translation key of [`Self::ruby_desc`]: `item.gm.ruby.desc`.
    pub const RUBY_DESC_KEY: &'static str = "item.gm.ruby.desc";
    /// Looks up a localized string similar to "Shiny and {b|red}".
    ///
    /// `ruby.desc` — tooltip (resources/Items.yres:3)
    pub fn ruby_desc() -> ::std::string::String {
        ::yog_api::tr(Self::RUBY_DESC_KEY)
    }
    /// Translation key of [`Self::apple`]: `item.gm.apple`.
    pub const APPLE_KEY: &'static str = "item.gm.apple";
    /// Looks up a localized string similar to "Golden Apple".
    ///
    /// `apple` (resources/Items.yres:7)
    pub fn apple() -> ::std::string::String {
        ::yog_api::tr(Self::APPLE_KEY)
    }
}

# content.g.rs
// <auto-generated>
//     Generated by `yog build` from content/** — don't edit, it's rewritten
//     on every build. Included by `yog_api::content!()`.
// </auto-generated>
include!(concat!(env!("CARGO_MANIFEST_DIR"), "/generated/content/blocks.g.rs"));
include!(concat!(env!("CARGO_MANIFEST_DIR"), "/generated/content/items.g.rs"));
include!(concat!(env!("CARGO_MANIFEST_DIR"), "/generated/content/register.g.rs"));

# content/blocks.g.rs
// <auto-generated>
//     Generated by `yog build` from content/** — don't edit, it's rewritten
//     on every build. Included by `yog_api::content!()`.
// </auto-generated>

/// The blocks of `content/`: the id and a [`::yog_api::BlockDef`] of each.
#[allow(dead_code)]
pub struct Blocks;

#[allow(dead_code, clippy::all)]
impl Blocks {
}

# content/items.g.rs
// <auto-generated>
//     Generated by `yog build` from content/** — don't edit, it's rewritten
//     on every build. Included by `yog_api::content!()`.
// </auto-generated>

/// The items of `content/`: the id and a [`::yog_api::ItemDef`] of each.
#[allow(dead_code)]
pub struct Items;

#[allow(dead_code, clippy::all)]
impl Items {
    /// `gm:apple` — `content/apple.yitem`.
    pub const APPLE: &'static str = "gm:apple";
    /// The definition from `content/apple.yitem` (name and tooltip come from the lang files).
    pub fn apple() -> ::yog_api::ItemDef {
        ::yog_api::ItemDef::new(Self::APPLE)
            .fuel(200)
            .food(::yog_api::FoodDef::new(4, 1.2).can_always_eat())
    }
    /// `gm:ruby` — `content/ruby.yitem`.
    pub const RUBY: &'static str = "gm:ruby";
    /// The definition from `content/ruby.yitem` (name and tooltip come from the lang files).
    pub fn ruby() -> ::yog_api::ItemDef {
        ::yog_api::ItemDef::new(Self::RUBY)
            .max_stack(16)
    }
    /// `gm:ruby_sword` — `content/tools/ruby_sword.yitem`.
    pub const RUBY_SWORD: &'static str = "gm:ruby_sword";
    /// The definition from `content/tools/ruby_sword.yitem` (name and tooltip come from the lang files).
    pub fn ruby_sword() -> ::yog_api::ItemDef {
        ::yog_api::ItemDef::new(Self::RUBY_SWORD)
            .max_damage(500)
            .fire_resistant()
    }
}

# content/register.g.rs
// <auto-generated>
//     Generated by `yog build` from content/** — don't edit, it's rewritten
//     on every build. Included by `yog_api::content!()`.
// </auto-generated>

/// Registers every block and item of `content/` whose file doesn't say
/// `"register": "manual"` — `yog_api::content!()` calls it after
/// `Mod::register`.
#[allow(unused_variables)]
pub fn register(registry: &mut ::yog_api::Registry) {
    registry.register_item(Items::apple());
    registry.register_item(Items::ruby());
    registry.register_item(Items::ruby_sword());
}

// Runs when the mod's library loads: `export_mod!` calls `register` after
// `Mod::register`.
#[::yog_api::ctor::ctor(unsafe, crate_path = ::yog_api::ctor)]
fn __yog_content_auto_register() {
    ::yog_api::__yog_content_registrars()
        .lock()
        .unwrap_or_else(|e| e.into_inner())
        .push(register);
}

# assets/gm/items/apple.json
{
  "model": {
    "model": "gm:item/apple",
    "type": "minecraft:model"
  }
}
# assets/gm/items/ruby.json
{
  "model": {
    "model": "gm:item/ruby",
    "type": "minecraft:model"
  }
}
# assets/gm/items/ruby_sword.json
{
  "model": {
    "model": "gm:item/ruby_sword",
    "type": "minecraft:model"
  }
}
# assets/gm/lang/en_us.json
{
  "item.gm.apple": "Golden Apple",
  "item.gm.ruby": "Ruby",
  "item.gm.ruby.desc": "Shiny and {b|red}",
  "item.gm.ruby_sword": "Ruby Sword"
}
# assets/gm/lang/ru_ru.json
{
  "item.gm.apple": "Золотое яблоко",
  "item.gm.ruby": "Рубин"
}
# assets/gm/models/item/apple.json
{
  "parent": "minecraft:item/generated",
  "textures": {
    "layer0": "minecraft:item/apple"
  }
}
# assets/gm/models/item/ruby.json
{
  "parent": "minecraft:item/generated",
  "textures": {
    "layer0": "minecraft:item/emerald"
  }
}
# assets/gm/models/item/ruby_sword.json
{
  "parent": "minecraft:item/handheld",
  "textures": {
    "layer0": "minecraft:item/diamond_sword"
  }
}