pub struct Datapack {
pub pack: PackMCMeta,
pub namespaces: BTreeMap<String, Namespace>,
}Fields§
§pack: PackMCMeta§namespaces: BTreeMap<String, Namespace>Implementations§
Source§impl Datapack
impl Datapack
pub fn new(pack_format: i32, description: Value) -> Datapack
Sourcepub fn write(&self, datapack_directory: &Path) -> Result<()>
pub fn write(&self, datapack_directory: &Path) -> Result<()>
Examples found in repository?
examples/datapack.rs (line 71)
7fn main() {
8 use std::collections::BTreeMap;
9 use std::path::Path;
10
11 let pack_meta = PackMCMeta {
12 pack: Pack {
13 description: serde_json::json!("A datapack written with Rust!"),
14 pack_format: Some(15),
15 supported_formats: Some(Format::Array(15, 20)),
16 min_format: None,
17 max_format: None,
18 },
19 features: None,
20 filter: None,
21 overlays: None,
22 language: None,
23 };
24
25 let mut my_namespace = Namespace::default();
26
27 my_namespace.functions.push(FilePathNode::File(
28 "main".to_string(),
29 "say Datapack loaded!".to_string(),
30 ));
31
32 my_namespace.functions.push(FilePathNode::Directory(
33 "utils".to_string(),
34 vec![FilePathNode::File(
35 "teleport".to_string(),
36 "tp @s ~ ~10 ~".to_string(),
37 )],
38 ));
39
40 let mut block_tags = BTreeMap::new();
41 block_tags.insert(
42 TagType::Block,
43 vec![FilePathNode::File(
44 "cool_blocks".to_string(),
45 Tag {
46 replace: Some(false),
47 values: vec![
48 TagValue::ResourceLocation(ResourceLocation::new_namespace_path(
49 "minecraft",
50 "diamond_block",
51 )),
52 TagValue::ResourceLocation(ResourceLocation::new_namespace_path(
53 "minecraft",
54 "emerald_block",
55 )),
56 ],
57 },
58 )],
59 );
60 my_namespace.tags = block_tags;
61
62 let mut namespaces = BTreeMap::new();
63 namespaces.insert("mydp".to_string(), my_namespace);
64
65 let my_datapack = Datapack {
66 pack: pack_meta,
67 namespaces,
68 };
69
70 let output_path = Path::new("my_awesome_datapack");
71 if let Err(e) = my_datapack.write(output_path) {
72 eprintln!("Failed to write datapack: {}", e);
73 }
74}pub fn get_namespace_mut(&mut self, name: &str) -> &mut Namespace
pub fn add_namespace(&mut self, name: String, namespace: Namespace)
Auto Trait Implementations§
impl Freeze for Datapack
impl RefUnwindSafe for Datapack
impl Send for Datapack
impl Sync for Datapack
impl Unpin for Datapack
impl UnwindSafe for Datapack
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more