aboutsummaryrefslogtreecommitdiff
path: root/azalea-brigadier/src
diff options
context:
space:
mode:
authormat <27899617+mat-1@users.noreply.github.com>2022-08-29 20:41:01 -0500
committerGitHub <noreply@github.com>2022-08-29 20:41:01 -0500
commitf42d630544165d11a544224ac273d6aaf89d8095 (patch)
tree94bd73771ecb582d89a87cdca8e21b2d6573ef12 /azalea-brigadier/src
parent2ea804401f54a45765860201d10d0569d07862ec (diff)
downloadazalea-drasl-f42d630544165d11a544224ac273d6aaf89d8095.tar.xz
Physics (#11)
* Put physics module in azalea-entity * port aabb * add more stuff to PositionXYZ * azalea-physics * important collision things * more physics stuff * backup because i'm about to delete shapes * more shape stuff * CubeVoxelShape * no compile errors??? insane * impl VoxelShape for ArrayVoxelShape * Shapes stuff * collide_x but it doesn't work yet * binary_search * it compiles * Entity has bounding box * Update discrete_voxel_shape.rs * Entity::make_bounding_box * ok i'm about to merge az-entity and az-world might be a terrible idea which is why i'm committing first * ok so i moved entity to world * on_pos and move_entity compiles * add send_position * move collision stuff to collision module in az-physics * dimension is no longer an Option * start trying to do collision for the client * collision works :tada: * start adding palette resizing * get_and_set (pain) * it compiles but probably won't work * add a test * remove printlns * add more tests for palette stuff * ClientboundMoveVec3Packet -> ClientboundMoveEntityPosPacket i think i changed this on accident once * palette resizing works todo: remove the printlns * Remove printlns in palette.rs * fix issues from merge * fixes + work a bit more on physics * Better entities (#19) * well it compiles * add tests to entity storage * add suggestions in azalea-brigadier * this probably causes ub * fix brigadiersuggestions * get rid of entityid * test From<EntityMut> for EntityRef * don't mention other libraries since there's too many * fix warnings * do todos in brigadier suggestions * work on physics * more physics stuff * remove trait feature on az-block i think rust gets confused and compiles the macro without the feature * bump ahash * aes tests in az-crypto * optimize aes's deps * fix crashes * fix section_index for negative numbers and test * fix BlockPos protocol implementation * remove some debug prints * prepare to add ai_step * make ai step work * clippy
Diffstat (limited to 'azalea-brigadier/src')
-rwxr-xr-xazalea-brigadier/src/lib.rs1
-rw-r--r--azalea-brigadier/src/suggestion/mod.rs1
-rw-r--r--azalea-brigadier/src/suggestion/suggestions.rs21
3 files changed, 18 insertions, 5 deletions
diff --git a/azalea-brigadier/src/lib.rs b/azalea-brigadier/src/lib.rs
index a294eb19..c2ac7e14 100755
--- a/azalea-brigadier/src/lib.rs
+++ b/azalea-brigadier/src/lib.rs
@@ -8,3 +8,4 @@ pub mod modifier;
pub mod parse_results;
pub mod string_reader;
pub mod tree;
+pub mod suggestion;
diff --git a/azalea-brigadier/src/suggestion/mod.rs b/azalea-brigadier/src/suggestion/mod.rs
index ab3a5964..4c9a9547 100644
--- a/azalea-brigadier/src/suggestion/mod.rs
+++ b/azalea-brigadier/src/suggestion/mod.rs
@@ -1,6 +1,7 @@
mod suggestions;
use crate::{context::StringRange, message::Message};
+pub use suggestions::*;
#[derive(Debug, Clone, Hash, Eq, PartialEq)]
pub struct Suggestion {
diff --git a/azalea-brigadier/src/suggestion/suggestions.rs b/azalea-brigadier/src/suggestion/suggestions.rs
index 6c325039..1fe361f1 100644
--- a/azalea-brigadier/src/suggestion/suggestions.rs
+++ b/azalea-brigadier/src/suggestion/suggestions.rs
@@ -13,18 +13,18 @@ impl Suggestions {
if input.is_empty() {
return Suggestions::default();
} else if input.len() == 1 {
- return input[0];
+ return input[0].clone();
};
- let texts = HashSet::new();
+ let mut texts = HashSet::new();
for suggestions in input {
- texts.extend(suggestions.suggestions);
+ texts.extend(suggestions.suggestions.clone());
}
- Suggestions::create(command, texts)
+ Suggestions::create(command, &texts)
}
- pub fn create(command: &str, suggestions: &[Suggestions]) {
+ pub fn create(command: &str, suggestions: &HashSet<Suggestion>) -> Self {
if suggestions.is_empty() {
return Suggestions::default();
};
@@ -34,5 +34,16 @@ impl Suggestions {
start = suggestion.range.start().min(start);
end = suggestion.range.end().max(end);
}
+ let range = StringRange::new(start, end);
+ let mut texts = HashSet::new();
+ for suggestion in suggestions {
+ texts.insert(suggestion.expand(command, &range));
+ }
+ let mut sorted: Vec<Suggestion> = texts.into_iter().collect();
+ sorted.sort_by(|a, b| a.text.cmp(&b.text));
+ Suggestions {
+ range,
+ suggestions: sorted,
+ }
}
}