From c36c87c3db311cea0b373501c370c12edc6d051f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20H=C3=B6lting?= <87192362+moritz-hoelting@users.noreply.github.com> Date: Mon, 10 Mar 2025 14:37:02 +0100 Subject: [PATCH] make sure that scoreboards get registered before all other functions --- examples/basic.rs | 2 +- src/datapack/mod.rs | 12 ++++++++---- src/datapack/tag.rs | 10 ++++++++-- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/examples/basic.rs b/examples/basic.rs index ac44740..a54ae76 100644 --- a/examples/basic.rs +++ b/examples/basic.rs @@ -7,7 +7,7 @@ fn main() { // create a new datapack let mut dp = Datapack::new("example", 16).with_supported_formats(16..=20); - dp.register_scoreboard("example_scoreboard", Some("dummy"), None); + dp.register_scoreboard("example_scoreboard", None::<&str>, None::<&str>); // get the namespace "example" let namespace = dp.namespace_mut("example"); diff --git a/src/datapack/mod.rs b/src/datapack/mod.rs index a1b1060..a53da14 100644 --- a/src/datapack/mod.rs +++ b/src/datapack/mod.rs @@ -195,10 +195,14 @@ impl Datapack { minecraft_namespace .to_mut() .tag_mut("load", tag::TagType::Function) - .add_value(tag::TagValue::Simple(format!( - "{}:sb/register_scoreboards", - self.main_namespace_name - ))); + .values_mut() + .insert( + 0, + tag::TagValue::Simple(format!( + "{}:sb/register_scoreboards", + self.main_namespace_name + )), + ); } if let Some(uninstall_commands) = uninstall_commands { diff --git a/src/datapack/tag.rs b/src/datapack/tag.rs index ee95cdd..5da9902 100644 --- a/src/datapack/tag.rs +++ b/src/datapack/tag.rs @@ -37,10 +37,16 @@ impl Tag { /// Get the values of the tag. #[must_use] - pub fn get_values(&self) -> &Vec { + pub fn values(&self) -> &[TagValue] { &self.values } + /// Get a mutable reference to the values of the tag. + #[must_use] + pub fn values_mut(&mut self) -> &mut Vec { + &mut self.values + } + /// Add a value to the tag. pub fn add_value(&mut self, value: TagValue) { self.values.push(value); @@ -186,7 +192,7 @@ mod tests { required: true, }); - assert_eq!(tag.get_values().len(), 2); + assert_eq!(tag.values().len(), 2); let compiled = tag.compile(&CompileOptions::default(), &MutCompilerState::default());