diff options
| author | Ubuntu <github@matdoes.dev> | 2022-01-13 00:43:09 +0000 |
|---|---|---|
| committer | Ubuntu <github@matdoes.dev> | 2022-01-13 00:43:09 +0000 |
| commit | eb111be1f107696939b994f5de6e060cf972a732 (patch) | |
| tree | 055deab4179088c5e91a179bfe465a7859c45ab6 /azalea-brigadier/src/arguments | |
| parent | 270507736af57aae6801dc9eb3c3132139d0d07b (diff) | |
| download | azalea-drasl-eb111be1f107696939b994f5de6e060cf972a732.tar.xz | |
a
Diffstat (limited to 'azalea-brigadier/src/arguments')
7 files changed, 18 insertions, 31 deletions
diff --git a/azalea-brigadier/src/arguments/argument_type.rs b/azalea-brigadier/src/arguments/argument_type.rs index 890cdea0..3d1b1168 100644 --- a/azalea-brigadier/src/arguments/argument_type.rs +++ b/azalea-brigadier/src/arguments/argument_type.rs @@ -7,19 +7,6 @@ use crate::{ }; use dyn_clonable::*; -#[clonable] -// This should be applied to an Enum -pub trait Types: Clone { - fn bool(value: bool) -> Self - where - Self: Sized; - - /// Get the less specific ArgumentType from this enum - fn inner<T>(&self) -> Box<dyn ArgumentType<T>> - where - Self: Sized; -} - /* #[derive(Types)] enum BrigadierTypes { @@ -45,10 +32,8 @@ impl Types for BrigadierTypes { */ #[clonable] -pub trait ArgumentType<T: ?Sized>: Clone -where - T: Types, -{ +pub trait ArgumentType: Clone { + type Into; // T parse(StringReader reader) throws CommandSyntaxException; // default <S> CompletableFuture<Suggestions> listSuggestions(final CommandContext<S> context, final SuggestionsBuilder builder) { @@ -59,17 +44,16 @@ where // return Collections.emptyList(); // } - fn parse(&self, reader: &mut StringReader) -> Result<Box<T>, CommandSyntaxException>; + fn parse(&self, reader: &mut StringReader) -> Result<Self::Into, CommandSyntaxException>; fn list_suggestions<S>( &self, - context: &CommandContext<S, T>, + context: &CommandContext<S>, builder: &mut SuggestionsBuilder, ) -> Result<Suggestions, CommandSyntaxException> where Self: Sized, - S: Sized, - T: Sized; + S: Sized; fn get_examples(&self) -> Vec<String>; } diff --git a/azalea-brigadier/src/arguments/bool_argument_type.rs b/azalea-brigadier/src/arguments/bool_argument_type.rs index b04488c1..c06f40c1 100644 --- a/azalea-brigadier/src/arguments/bool_argument_type.rs +++ b/azalea-brigadier/src/arguments/bool_argument_type.rs @@ -5,27 +5,25 @@ use crate::{ suggestion::{suggestions::Suggestions, suggestions_builder::SuggestionsBuilder}, }; -use super::argument_type::{ArgumentType, Types}; +use super::argument_type::ArgumentType; #[derive(Clone)] pub struct BoolArgumentType {} -impl<T> ArgumentType<T> for BoolArgumentType -where - T: Types, -{ - fn parse(&self, reader: &mut StringReader) -> Result<T, CommandSyntaxException> { - Ok(T::bool(reader.read_boolean()?)) +impl ArgumentType for BoolArgumentType { + type Into = bool; + + fn parse(&self, reader: &mut StringReader) -> Result<Self::Into, CommandSyntaxException> { + Ok(reader.read_boolean()?) } fn list_suggestions<S>( &self, - context: &CommandContext<S, T>, + context: &CommandContext<S>, builder: &mut SuggestionsBuilder, ) -> Result<Suggestions, CommandSyntaxException> where S: Sized, - T: Sized, { // if ("true".startsWith(builder.getRemainingLowerCase())) { // builder.suggest("true"); @@ -55,7 +53,7 @@ impl BoolArgumentType { Self {} } - fn get_bool<S, T>(context: CommandContext<S, T>, name: String) { + fn get_bool<S>(context: CommandContext<S>, name: String) { context.get_argument::<bool>(name) } } diff --git a/azalea-brigadier/src/arguments/double_argument_type.rs b/azalea-brigadier/src/arguments/double_argument_type.rs index e69de29b..8b137891 100644 --- a/azalea-brigadier/src/arguments/double_argument_type.rs +++ b/azalea-brigadier/src/arguments/double_argument_type.rs @@ -0,0 +1 @@ + diff --git a/azalea-brigadier/src/arguments/float_argument_type.rs b/azalea-brigadier/src/arguments/float_argument_type.rs index e69de29b..8b137891 100644 --- a/azalea-brigadier/src/arguments/float_argument_type.rs +++ b/azalea-brigadier/src/arguments/float_argument_type.rs @@ -0,0 +1 @@ + diff --git a/azalea-brigadier/src/arguments/integer_argument_type.rs b/azalea-brigadier/src/arguments/integer_argument_type.rs index e69de29b..8b137891 100644 --- a/azalea-brigadier/src/arguments/integer_argument_type.rs +++ b/azalea-brigadier/src/arguments/integer_argument_type.rs @@ -0,0 +1 @@ + diff --git a/azalea-brigadier/src/arguments/long_argument_type.rs b/azalea-brigadier/src/arguments/long_argument_type.rs index e69de29b..8b137891 100644 --- a/azalea-brigadier/src/arguments/long_argument_type.rs +++ b/azalea-brigadier/src/arguments/long_argument_type.rs @@ -0,0 +1 @@ + diff --git a/azalea-brigadier/src/arguments/string_argument_type.rs b/azalea-brigadier/src/arguments/string_argument_type.rs index e69de29b..8b137891 100644 --- a/azalea-brigadier/src/arguments/string_argument_type.rs +++ b/azalea-brigadier/src/arguments/string_argument_type.rs @@ -0,0 +1 @@ + |
