Skip to content

Commit 94ab073

Browse files
committed
Implement camera facing
1 parent 1013bf6 commit 94ab073

File tree

4 files changed

+26
-3
lines changed

4 files changed

+26
-3
lines changed

src/minecraft/bedrock_edition.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use std::future::Future;
77
use crate::minecraft::java_edition::TargetSelector;
88
use crate::minecraft::{parse_response, Entity, Error, Serialize};
99
use crate::Minecraft;
10+
pub use camera::Target;
1011

1112
/// Extension trait for `Source RCON` clients for the `Minecraft: Bedrock Edition`.
1213
pub trait BedrockEdition: Minecraft {

src/minecraft/bedrock_edition/camera.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use std::borrow::Cow;
22

33
pub use color::Color;
4+
pub use set::Target;
45
pub use time::Time;
56

67
use crate::minecraft::{Error, Serialize};
@@ -18,7 +19,7 @@ pub struct Proxy<'client, T> {
1819
}
1920

2021
impl<'client, T> Proxy<'client, T> {
21-
pub(crate) fn new(client: &'client mut T, args: Vec<Cow<'client, str>>) -> Self {
22+
pub(crate) const fn new(client: &'client mut T, args: Vec<Cow<'client, str>>) -> Self {
2223
Self { client, args }
2324
}
2425

src/minecraft/bedrock_edition/camera/set.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
use crate::minecraft::Error;
1+
use crate::minecraft::{Error, Serialize};
22
use crate::RCon;
33
use std::borrow::Cow;
4+
pub use target::Target;
45

56
mod target;
67

@@ -39,5 +40,15 @@ where
3940
.map_err(Into::into)
4041
}
4142

43+
/// Set camera facing.
44+
pub async fn facing(mut self, target: Target) -> Result<String, Error> {
45+
self.args
46+
.extend([Cow::Borrowed("facing"), target.serialize()]);
47+
self.client
48+
.run_utf8(self.args.join(" "))
49+
.await
50+
.map_err(Into::into)
51+
}
52+
4253
// TODO: Implement further sub-commands.
4354
}

src/minecraft/bedrock_edition/camera/set/target.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use crate::minecraft::java_edition::TargetSelector;
2-
use crate::minecraft::Entity;
2+
use crate::minecraft::{Entity, Serialize};
3+
use std::borrow::Cow;
34

45
/// Facing target.
56
#[derive(Clone, Debug, PartialEq)]
@@ -9,3 +10,12 @@ pub enum Target {
910
/// Facing a position. Parameters in order are `x`, `y` and `z`.
1011
Position(f32, f32, f32),
1112
}
13+
14+
impl Serialize for Target {
15+
fn serialize(self) -> Cow<'static, str> {
16+
match self {
17+
Target::Entity(entity) => entity.serialize(),
18+
Target::Position(x, y, z) => format!("{x} {y} {z}").into(),
19+
}
20+
}
21+
}

0 commit comments

Comments
 (0)