aboutsummaryrefslogtreecommitdiff
path: root/azalea-brigadier/src/tree/mod.rs
diff options
context:
space:
mode:
authormat <git@matdoes.dev>2023-10-12 20:14:29 -0500
committermat <git@matdoes.dev>2023-10-12 20:14:29 -0500
commit38db231ea8fa0fb223e16637db0b6ec65b2b81ef (patch)
treef8f61b04ad0b498b85bffb133c51af1670a33ddf /azalea-brigadier/src/tree/mod.rs
parentd5f424b8c2fba9b3283aef36fe9e1e051636614c (diff)
downloadazalea-drasl-38db231ea8fa0fb223e16637db0b6ec65b2b81ef.tar.xz
brigadier usages
Diffstat (limited to 'azalea-brigadier/src/tree/mod.rs')
-rwxr-xr-xazalea-brigadier/src/tree/mod.rs20
1 files changed, 17 insertions, 3 deletions
diff --git a/azalea-brigadier/src/tree/mod.rs b/azalea-brigadier/src/tree/mod.rs
index cec972dc..8ab3526e 100755
--- a/azalea-brigadier/src/tree/mod.rs
+++ b/azalea-brigadier/src/tree/mod.rs
@@ -10,7 +10,13 @@ use crate::{
modifier::RedirectModifier,
string_reader::StringReader,
};
-use std::{collections::HashMap, fmt::Debug, hash::Hash, ptr, sync::Arc};
+use std::{
+ collections::{BTreeMap, HashMap},
+ fmt::Debug,
+ hash::Hash,
+ ptr,
+ sync::Arc,
+};
pub type Command<S> = Option<Arc<dyn Fn(&CommandContext<S>) -> i32 + Send + Sync>>;
@@ -19,7 +25,8 @@ pub type Command<S> = Option<Arc<dyn Fn(&CommandContext<S>) -> i32 + Send + Sync
pub struct CommandNode<S> {
pub value: ArgumentBuilderType,
- pub children: HashMap<String, Arc<RwLock<CommandNode<S>>>>,
+ // this is a BTreeMap because children need to be ordered when getting command suggestions
+ pub children: BTreeMap<String, Arc<RwLock<CommandNode<S>>>>,
pub literals: HashMap<String, Arc<RwLock<CommandNode<S>>>>,
pub arguments: HashMap<String, Arc<RwLock<CommandNode<S>>>>,
@@ -125,6 +132,13 @@ impl<S> CommandNode<S> {
}
}
+ pub fn usage_text(&self) -> String {
+ match &self.value {
+ ArgumentBuilderType::Argument(argument) => format!("<{}>", argument.name),
+ ArgumentBuilderType::Literal(literal) => literal.value.to_owned(),
+ }
+ }
+
pub fn child(&self, name: &str) -> Option<Arc<RwLock<CommandNode<S>>>> {
self.children.get(name).cloned()
}
@@ -216,7 +230,7 @@ impl<S> Default for CommandNode<S> {
Self {
value: ArgumentBuilderType::Literal(Literal::default()),
- children: HashMap::new(),
+ children: BTreeMap::new(),
literals: HashMap::new(),
arguments: HashMap::new(),