Skip to content

Commit 8a584f6

Browse files
committed
fix cmds for locator, start impl in executor, wait for locator bar api
Signed-off-by: illyrius666 <28700752+illyrius666@users.noreply.github.com>
1 parent 3bc3b1c commit 8a584f6

1 file changed

Lines changed: 28 additions & 12 deletions

File tree

src/modules/mechanics/locator.rs

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
use crate::module::Module;
2-
use pumpkin::command::args::ConsumedArgs;
2+
use pumpkin::command::args::simple::SimpleArgConsumer;
3+
use pumpkin::command::args::{Arg, ConsumedArgs};
34
use pumpkin::command::dispatcher::CommandError;
4-
use pumpkin::command::tree::builder::{argument, literal};
5+
use pumpkin::command::dispatcher::CommandError::CommandFailed;
56
use pumpkin::command::tree::CommandTree;
7+
use pumpkin::command::tree::builder::{argument, literal};
68
use pumpkin::command::{CommandExecutor, CommandSender};
79
use pumpkin::server::Server;
810
use pumpkin_util::permission::{Permission, PermissionDefault};
11+
use pumpkin_util::text::TextComponent;
912
use serde::{Deserialize, Serialize};
1013
use std::collections::HashSet;
14+
use std::pin::Pin;
1115

1216
/// Represents handling locator mechanics within the system.
1317
pub struct Locator {
@@ -32,9 +36,9 @@ impl Module for Locator {
3236
["locator", "lc"],
3337
"Allows players to personalise their locator bar",
3438
)
35-
.then(argument("color", ArgumentC).execute(LocatorExecutor))
36-
.then(argument("hex", ArgumentC).execute(LocatorExecutor))
37-
.then(literal("reset").execute(LocatorExecutor))])
39+
.then(argument("color", SimpleArgConsumer).execute(LocatorExecutor))
40+
.then(argument("hex", SimpleArgConsumer).execute(LocatorExecutor))
41+
.then(literal("reset").execute(LocatorExecutor))])
3842
}
3943

4044
fn perms(&self) -> HashSet<Permission> {
@@ -53,16 +57,28 @@ impl CommandExecutor for LocatorExecutor {
5357
&self,
5458
sender: &mut CommandSender,
5559
_: &Server,
56-
_: &ConsumedArgs<'a>,
57-
) -> Result<(), CommandError> {
60+
args: &ConsumedArgs<'a>,
61+
) -> Pin<Box<dyn Future<Output = Result<(), CommandError>> + Send + 'a>> {
5862
Box::pin(async move {
59-
let arg_0 = self.0;
60-
let arg_1 = self.1;
61-
let arg_2 = self.2;
62-
let player = sender.as_player().unwrap();
63+
let player = match sender.as_player() {
64+
Some(p) => p,
65+
None => {
66+
return Err(CommandFailed(TextComponent::text(
67+
"Only players can use this command",
68+
)));
69+
}
70+
};
6371

64-
player //TODO
72+
// TODO: figure out the api to adjust the locator bar.
6573

74+
if let Some(Arg::Simple(value)) = args.get("color") {
75+
let color: &str = value;
76+
player;
77+
}
78+
if let Some(Arg::Simple(value)) = args.get("hex") {
79+
let hex: &str = value;
80+
player;
81+
}
6682
Ok(())
6783
})
6884
}

0 commit comments

Comments
 (0)