aboutsummaryrefslogtreecommitdiff
path: root/azalea-brigadier/src/builder/argument_builder.rs
diff options
context:
space:
mode:
authorUbuntu <github@matdoes.dev>2022-01-20 00:49:10 +0000
committerUbuntu <github@matdoes.dev>2022-01-20 00:49:10 +0000
commit30a86e1de5d8bf302f05d091b0a7b4cc6721d911 (patch)
tree96b316ccfa29c74f6d37625dd1b72844ff36a49b /azalea-brigadier/src/builder/argument_builder.rs
parent760816c81fab414cc42ab1e75506fc816bcf9681 (diff)
downloadazalea-drasl-30a86e1de5d8bf302f05d091b0a7b4cc6721d911.tar.xz
bbbbbbbbbbbb
Diffstat (limited to 'azalea-brigadier/src/builder/argument_builder.rs')
-rw-r--r--azalea-brigadier/src/builder/argument_builder.rs36
1 files changed, 23 insertions, 13 deletions
diff --git a/azalea-brigadier/src/builder/argument_builder.rs b/azalea-brigadier/src/builder/argument_builder.rs
index 8c30bd44..ec2756ca 100644
--- a/azalea-brigadier/src/builder/argument_builder.rs
+++ b/azalea-brigadier/src/builder/argument_builder.rs
@@ -29,14 +29,11 @@ where
}
impl<'a, S> BaseArgumentBuilder<'a, S> {
- pub fn then(
- &mut self,
- command: Box<dyn ArgumentBuilder<S, Self>>,
- ) -> Result<&mut Self, String> {
+ pub fn then(&mut self, argument: Box<dyn CommandNode<S>>) -> Result<&mut Self, String> {
if self.target.is_some() {
return Err("Cannot add children to a redirected node".to_string());
}
- self.command = Some(command);
+
Ok(self)
}
@@ -44,25 +41,25 @@ impl<'a, S> BaseArgumentBuilder<'a, S> {
&self.arguments.get_children()
}
- pub fn executes(&mut self, command: dyn Command<S>) -> &mut Self {
- self.command = command;
+ pub fn executes(&mut self, command: Box<dyn Command<S>>) -> &mut Self {
+ self.command = Some(command);
self
}
- pub fn command(&self) -> dyn Command<S> {
+ pub fn command(&self) -> Option<Box<dyn Command<S>>> {
self.command
}
- pub fn requires(&mut self, requirement: &dyn Fn(&S) -> bool) -> &mut Self {
+ pub fn requires(&mut self, requirement: Box<dyn Fn(&S) -> bool>) -> &mut Self {
self.requirement = requirement;
self
}
- pub fn requirement(&self) -> dyn Fn(&S) -> bool {
+ pub fn requirement(&self) -> Box<dyn Fn(&S) -> bool> {
self.requirement
}
- pub fn redirect(&mut self, target: &dyn CommandNode<S>) -> &mut Self {
+ pub fn redirect(&mut self, target: Box<dyn CommandNode<S>>) -> &mut Self {
self.forward(target, None, false)
}
@@ -85,8 +82,8 @@ impl<'a, S> BaseArgumentBuilder<'a, S> {
pub fn forward(
&mut self,
- target: &dyn CommandNode<S>,
- modifier: Option<&dyn RedirectModifier<S>>,
+ target: Box<dyn CommandNode<S>>,
+ modifier: Option<Box<dyn RedirectModifier<S>>>,
fork: bool,
) -> Result<&mut Self, String> {
if !self.arguments.get_children().is_empty() {
@@ -130,3 +127,16 @@ impl<'a, S> BaseArgumentBuilder<'a, S> {
result
}
}
+
+impl<S> Default for BaseArgumentBuilder<'_, S> {
+ fn default() -> Self {
+ Self {
+ arguments: Default::default(),
+ command: Default::default(),
+ requirement: Default::default(),
+ target: Default::default(),
+ modifier: Default::default(),
+ forks: Default::default(),
+ }
+ }
+}