aboutsummaryrefslogtreecommitdiff
path: root/azalea-core/src
diff options
context:
space:
mode:
Diffstat (limited to 'azalea-core/src')
-rwxr-xr-xazalea-core/src/direction.rs5
-rw-r--r--azalea-core/src/game_type.rs36
-rw-r--r--azalea-core/src/math.rs23
3 files changed, 38 insertions, 26 deletions
diff --git a/azalea-core/src/direction.rs b/azalea-core/src/direction.rs
index 0cca7aaf..6ff55615 100755
--- a/azalea-core/src/direction.rs
+++ b/azalea-core/src/direction.rs
@@ -62,7 +62,10 @@ impl Direction {
}
}
-// TODO: make azalea_block use this instead of FacingCardinal
+/// The four cardinal directions.
+///
+/// Note that azalea_block has a similar enum named `FacingCardinal` that is
+/// used for block states.
#[derive(Clone, Copy, Debug, AzBuf, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub enum CardinalDirection {
diff --git a/azalea-core/src/game_type.rs b/azalea-core/src/game_type.rs
index 5bac06d5..5d9ee8f5 100644
--- a/azalea-core/src/game_type.rs
+++ b/azalea-core/src/game_type.rs
@@ -1,6 +1,7 @@
use std::io::{Cursor, Write};
use azalea_buf::{AzaleaRead, AzaleaReadVar, AzaleaWrite, BufReadError};
+use azalea_chat::translatable_component::TranslatableComponent;
use tracing::debug;
/// A Minecraft gamemode, like survival or creative.
@@ -51,26 +52,15 @@ impl GameMode {
)
}
- pub fn short_name(&self) -> &'static str {
- // TODO: these should be translated
- // TranslatableComponent("selectWorld.gameMode." + string2)
- match self {
- GameMode::Survival => "Survival",
- GameMode::Creative => "Creative",
- GameMode::Adventure => "Adventure",
- GameMode::Spectator => "Spectator",
- }
+ /// The short translatable display name for the gamemode, like "Survival".
+ pub fn short_name(&self) -> TranslatableComponent {
+ TranslatableComponent::new(format!("selectWorld.gameMode.{}", self.name()), vec![])
}
- pub fn long_name(&self) -> &'static str {
- // TODO: These should be translated TranslatableComponent("gameMode." +
- // string2);
- match self {
- GameMode::Survival => "Survival Mode",
- GameMode::Creative => "Creative Mode",
- GameMode::Adventure => "Adventure Mode",
- GameMode::Spectator => "Spectator Mode",
- }
+ /// The long translatable display name for the gamemode, like "Survival
+ /// Mode".
+ pub fn long_name(&self) -> TranslatableComponent {
+ TranslatableComponent::new(format!("gameMode.{}", self.name()), vec![])
}
pub fn from_name(name: &str) -> GameMode {
@@ -82,6 +72,16 @@ impl GameMode {
_ => panic!("Unknown game type name: {name}"),
}
}
+
+ /// The internal name for the game mode, like "survival".
+ pub fn name(&self) -> &'static str {
+ match self {
+ GameMode::Survival => "survival",
+ GameMode::Creative => "creative",
+ GameMode::Adventure => "adventure",
+ GameMode::Spectator => "spectator",
+ }
+ }
}
impl GameMode {
diff --git a/azalea-core/src/math.rs b/azalea-core/src/math.rs
index 62215749..67ece5cc 100644
--- a/azalea-core/src/math.rs
+++ b/azalea-core/src/math.rs
@@ -1,4 +1,8 @@
-use std::{f64::consts::PI, sync::LazyLock};
+use std::{
+ f64::consts::PI,
+ ops::{Add, Div, Sub},
+ sync::LazyLock,
+};
pub const EPSILON: f64 = 1.0E-7;
@@ -24,17 +28,22 @@ pub fn cos(x: f32) -> f32 {
SIN[x]
}
-// TODO: make this generic
-pub fn binary_search(mut min: i32, max: i32, predicate: &dyn Fn(i32) -> bool) -> i32 {
+pub fn binary_search<
+ T: Ord + PartialOrd + Add<Output = T> + Sub<Output = T> + Div<Output = T> + From<u8> + Copy,
+>(
+ mut min: T,
+ max: T,
+ predicate: impl Fn(T) -> bool,
+) -> T {
let mut diff = max - min;
- while diff > 0 {
- let diff_mid = diff / 2;
+ while diff > T::from(0) {
+ let diff_mid = diff / T::from(2);
let mid = min + diff_mid;
if predicate(mid) {
diff = diff_mid;
} else {
- min = mid + 1;
- diff -= diff_mid + 1;
+ min = mid + T::from(1);
+ diff = diff - (diff_mid + T::from(1));
}
}