From b39360d14f17ea5c8fbb632c5d2e18a70be03c8d Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 01:57:42 +0100 Subject: [PATCH 001/111] Add ZombieHorse --- minecraft-server/src/entities/mod.rs | 4 ++++ minecraft-server/src/entities/zombie_horse.rs | 8 ++++++++ 2 files changed, 12 insertions(+) create mode 100644 minecraft-server/src/entities/zombie_horse.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 5034ae64..17e9c54f 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -38,6 +38,8 @@ mod abstract_horse; pub use abstract_horse::*; mod display; pub use display::*; +mod zombie_horse; +pub use zombie_horse::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -81,6 +83,7 @@ pub enum AnyEntity { Animal(Animal), Sniffer(Sniffer), AbstractHorse(AbstractHorse), + ZombieHorse(ZombieHorse), } #[allow(clippy::single_match)] @@ -116,6 +119,7 @@ impl AnyEntity { AnyEntity::Animal(animal) => animal.get_entity(), AnyEntity::Sniffer(sniffer) => sniffer.get_entity(), AnyEntity::AbstractHorse(abstract_horse) => abstract_horse.get_entity(), + AnyEntity::ZombieHorse(zombie_horse) => zombie_horse.get_entity(), } } diff --git a/minecraft-server/src/entities/zombie_horse.rs b/minecraft-server/src/entities/zombie_horse.rs new file mode 100644 index 00000000..f44af3e8 --- /dev/null +++ b/minecraft-server/src/entities/zombie_horse.rs @@ -0,0 +1,8 @@ +use super::*; + +#[derive(Default)] +#[inherit(AbstractHorse, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct ZombieHorse { + pub abstract_horse: AbstractHorse, +} + From 66a5a0de042adac652386589fe797e7f97ebf616 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 01:59:05 +0100 Subject: [PATCH 002/111] Add Horse --- minecraft-server/src/entities/horse.rs | 9 +++++++++ minecraft-server/src/entities/mod.rs | 4 ++++ 2 files changed, 13 insertions(+) create mode 100644 minecraft-server/src/entities/horse.rs diff --git a/minecraft-server/src/entities/horse.rs b/minecraft-server/src/entities/horse.rs new file mode 100644 index 00000000..6e0aba28 --- /dev/null +++ b/minecraft-server/src/entities/horse.rs @@ -0,0 +1,9 @@ +use super::*; + +#[derive(Default)] +#[inherit(AbstractHorse, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Horse { + pub abstract_horse: AbstractHorse, + pub variant: usize, +} + diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 17e9c54f..b0a7c159 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -40,6 +40,8 @@ mod display; pub use display::*; mod zombie_horse; pub use zombie_horse::*; +mod horse; +pub use horse::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -83,6 +85,7 @@ pub enum AnyEntity { Animal(Animal), Sniffer(Sniffer), AbstractHorse(AbstractHorse), + Horse(Horse), ZombieHorse(ZombieHorse), } @@ -120,6 +123,7 @@ impl AnyEntity { AnyEntity::Sniffer(sniffer) => sniffer.get_entity(), AnyEntity::AbstractHorse(abstract_horse) => abstract_horse.get_entity(), AnyEntity::ZombieHorse(zombie_horse) => zombie_horse.get_entity(), + AnyEntity::Horse(horse) => horse.get_entity(), } } From c9fc8886765dbb146785aff6c8aee5a2a44f57ed Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:02:02 +0100 Subject: [PATCH 003/111] Add SkeletonHorse --- minecraft-server/src/entities/horse.rs | 9 --------- minecraft-server/src/entities/horses.rs | 20 +++++++++++++++++++ minecraft-server/src/entities/mod.rs | 8 ++++---- minecraft-server/src/entities/zombie_horse.rs | 8 -------- 4 files changed, 24 insertions(+), 21 deletions(-) delete mode 100644 minecraft-server/src/entities/horse.rs create mode 100644 minecraft-server/src/entities/horses.rs delete mode 100644 minecraft-server/src/entities/zombie_horse.rs diff --git a/minecraft-server/src/entities/horse.rs b/minecraft-server/src/entities/horse.rs deleted file mode 100644 index 6e0aba28..00000000 --- a/minecraft-server/src/entities/horse.rs +++ /dev/null @@ -1,9 +0,0 @@ -use super::*; - -#[derive(Default)] -#[inherit(AbstractHorse, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] -pub struct Horse { - pub abstract_horse: AbstractHorse, - pub variant: usize, -} - diff --git a/minecraft-server/src/entities/horses.rs b/minecraft-server/src/entities/horses.rs new file mode 100644 index 00000000..0cb2cdbf --- /dev/null +++ b/minecraft-server/src/entities/horses.rs @@ -0,0 +1,20 @@ +use super::*; + +#[derive(Default)] +#[inherit(AbstractHorse, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Horse { + pub abstract_horse: AbstractHorse, + pub variant: usize, +} + +#[derive(Default)] +#[inherit(AbstractHorse, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct ZombieHorse { + pub abstract_horse: AbstractHorse, +} + +#[derive(Default)] +#[inherit(AbstractHorse, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct SkeletonHorse { + pub abstract_horse: AbstractHorse, +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index b0a7c159..0a30ac35 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -38,10 +38,8 @@ mod abstract_horse; pub use abstract_horse::*; mod display; pub use display::*; -mod zombie_horse; -pub use zombie_horse::*; -mod horse; -pub use horse::*; +mod horses; +pub use horses::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -87,6 +85,7 @@ pub enum AnyEntity { AbstractHorse(AbstractHorse), Horse(Horse), ZombieHorse(ZombieHorse), + SkeletonHorse(SkeletonHorse), } #[allow(clippy::single_match)] @@ -124,6 +123,7 @@ impl AnyEntity { AnyEntity::AbstractHorse(abstract_horse) => abstract_horse.get_entity(), AnyEntity::ZombieHorse(zombie_horse) => zombie_horse.get_entity(), AnyEntity::Horse(horse) => horse.get_entity(), + AnyEntity::SkeletonHorse(skeleton_horse) => skeleton_horse.get_entity(), } } diff --git a/minecraft-server/src/entities/zombie_horse.rs b/minecraft-server/src/entities/zombie_horse.rs deleted file mode 100644 index f44af3e8..00000000 --- a/minecraft-server/src/entities/zombie_horse.rs +++ /dev/null @@ -1,8 +0,0 @@ -use super::*; - -#[derive(Default)] -#[inherit(AbstractHorse, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] -pub struct ZombieHorse { - pub abstract_horse: AbstractHorse, -} - From 4db0e4ea5793f1e087b847860ba9863a275cbd4a Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:04:30 +0100 Subject: [PATCH 004/111] Add Camel --- minecraft-server/src/entities/horses.rs | 8 ++++++++ minecraft-server/src/entities/mod.rs | 2 ++ 2 files changed, 10 insertions(+) diff --git a/minecraft-server/src/entities/horses.rs b/minecraft-server/src/entities/horses.rs index 0cb2cdbf..010827f8 100644 --- a/minecraft-server/src/entities/horses.rs +++ b/minecraft-server/src/entities/horses.rs @@ -18,3 +18,11 @@ pub struct ZombieHorse { pub struct SkeletonHorse { pub abstract_horse: AbstractHorse, } + +#[derive(Default)] +#[inherit(AbstractHorse, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Camel { + pub abstract_horse: AbstractHorse, + pub is_dashing: bool, + pub last_pose_change_tick: usize, +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 0a30ac35..89ea618c 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -86,6 +86,7 @@ pub enum AnyEntity { Horse(Horse), ZombieHorse(ZombieHorse), SkeletonHorse(SkeletonHorse), + Camel(Camel), } #[allow(clippy::single_match)] @@ -124,6 +125,7 @@ impl AnyEntity { AnyEntity::ZombieHorse(zombie_horse) => zombie_horse.get_entity(), AnyEntity::Horse(horse) => horse.get_entity(), AnyEntity::SkeletonHorse(skeleton_horse) => skeleton_horse.get_entity(), + AnyEntity::Camel(camel) => camel.get_entity(), } } From f40f542052086140332d813aa4801f860a012005 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:06:17 +0100 Subject: [PATCH 005/111] Add ChestedHorse --- minecraft-server/src/entities/horses.rs | 7 +++++++ minecraft-server/src/entities/mod.rs | 2 ++ 2 files changed, 9 insertions(+) diff --git a/minecraft-server/src/entities/horses.rs b/minecraft-server/src/entities/horses.rs index 010827f8..f646b56e 100644 --- a/minecraft-server/src/entities/horses.rs +++ b/minecraft-server/src/entities/horses.rs @@ -26,3 +26,10 @@ pub struct Camel { pub is_dashing: bool, pub last_pose_change_tick: usize, } + +#[derive(Default)] +#[inherit(AbstractHorse, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct ChestedHorse { + pub abstract_horse: AbstractHorse, + pub has_chest: bool, +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 89ea618c..d3a7bbb5 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -87,6 +87,7 @@ pub enum AnyEntity { ZombieHorse(ZombieHorse), SkeletonHorse(SkeletonHorse), Camel(Camel), + ChestedHorse(ChestedHorse), } #[allow(clippy::single_match)] @@ -126,6 +127,7 @@ impl AnyEntity { AnyEntity::Horse(horse) => horse.get_entity(), AnyEntity::SkeletonHorse(skeleton_horse) => skeleton_horse.get_entity(), AnyEntity::Camel(camel) => camel.get_entity(), + AnyEntity::ChestedHorse(chested_horse) => chested_horse.get_entity(), } } From abe851e716febb4026b44e61f89a2bb4b111cac4 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:11:05 +0100 Subject: [PATCH 006/111] Add Donkey --- minecraft-server/src/entities/donkey.rs | 7 +++++++ minecraft-server/src/entities/horses.rs | 1 + minecraft-server/src/entities/mod.rs | 4 ++++ 3 files changed, 12 insertions(+) create mode 100644 minecraft-server/src/entities/donkey.rs diff --git a/minecraft-server/src/entities/donkey.rs b/minecraft-server/src/entities/donkey.rs new file mode 100644 index 00000000..0e734fb3 --- /dev/null +++ b/minecraft-server/src/entities/donkey.rs @@ -0,0 +1,7 @@ +use super::*; + +#[derive(Default)] +#[inherit(ChestedHorse, AbstractHorse, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Donkey { + pub chested_horse: ChestedHorse, +} diff --git a/minecraft-server/src/entities/horses.rs b/minecraft-server/src/entities/horses.rs index f646b56e..ed073fe7 100644 --- a/minecraft-server/src/entities/horses.rs +++ b/minecraft-server/src/entities/horses.rs @@ -28,6 +28,7 @@ pub struct Camel { } #[derive(Default)] +#[inheritable] #[inherit(AbstractHorse, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] pub struct ChestedHorse { pub abstract_horse: AbstractHorse, diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index d3a7bbb5..006ca409 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -40,6 +40,8 @@ mod display; pub use display::*; mod horses; pub use horses::*; +mod donkey; +pub use donkey::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -88,6 +90,7 @@ pub enum AnyEntity { SkeletonHorse(SkeletonHorse), Camel(Camel), ChestedHorse(ChestedHorse), + Donkey(Donkey), } #[allow(clippy::single_match)] @@ -128,6 +131,7 @@ impl AnyEntity { AnyEntity::SkeletonHorse(skeleton_horse) => skeleton_horse.get_entity(), AnyEntity::Camel(camel) => camel.get_entity(), AnyEntity::ChestedHorse(chested_horse) => chested_horse.get_entity(), + AnyEntity::Donkey(donkey) => donkey.get_entity(), } } From 20ea7d9174f18778f1e8026b0542cac1bbe4359f Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:14:47 +0100 Subject: [PATCH 007/111] Add Llama --- minecraft-server/src/entities/llama.rs | 23 +++++++++++++++++++++++ minecraft-server/src/entities/mod.rs | 4 ++++ 2 files changed, 27 insertions(+) create mode 100644 minecraft-server/src/entities/llama.rs diff --git a/minecraft-server/src/entities/llama.rs b/minecraft-server/src/entities/llama.rs new file mode 100644 index 00000000..6a55d901 --- /dev/null +++ b/minecraft-server/src/entities/llama.rs @@ -0,0 +1,23 @@ +use super::*; + +#[inheritable] +#[inherit(ChestedHorse, AbstractHorse, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Llama { + pub chested_horse: ChestedHorse, + /// Strength (number of columns of 3 slots in the llama's inventory once a chest is equipped) + pub stength: u8, + /// Carpet color (a dye color, or -1 if no carpet equipped) + pub carpet_color: i16, + pub variant: u8, +} + +impl Default for Llama { + fn default() -> Self { + Self { + chested_horse: ChestedHorse::default(), + stength: 0, + carpet_color: -1, + variant: 0, + } + } +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 006ca409..4a4b2890 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -42,6 +42,8 @@ mod horses; pub use horses::*; mod donkey; pub use donkey::*; +mod llama; +pub use llama::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -91,6 +93,7 @@ pub enum AnyEntity { Camel(Camel), ChestedHorse(ChestedHorse), Donkey(Donkey), + Llama(Llama), } #[allow(clippy::single_match)] @@ -132,6 +135,7 @@ impl AnyEntity { AnyEntity::Camel(camel) => camel.get_entity(), AnyEntity::ChestedHorse(chested_horse) => chested_horse.get_entity(), AnyEntity::Donkey(donkey) => donkey.get_entity(), + AnyEntity::Llama(llama) => llama.get_entity(), } } From ab50e705c1e74b21d31837b583501ee29902fbb0 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:17:25 +0100 Subject: [PATCH 008/111] Add Trader Llama --- minecraft-server/src/entities/llama.rs | 6 ++++++ minecraft-server/src/entities/mod.rs | 2 ++ 2 files changed, 8 insertions(+) diff --git a/minecraft-server/src/entities/llama.rs b/minecraft-server/src/entities/llama.rs index 6a55d901..5658c1de 100644 --- a/minecraft-server/src/entities/llama.rs +++ b/minecraft-server/src/entities/llama.rs @@ -21,3 +21,9 @@ impl Default for Llama { } } } + +#[derive(Default)] +#[inherit(Llama, ChestedHorse, AbstractHorse, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct TraderLlama { + pub llama: Llama, +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 4a4b2890..76a7c8b6 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -94,6 +94,7 @@ pub enum AnyEntity { ChestedHorse(ChestedHorse), Donkey(Donkey), Llama(Llama), + TraderLlama(TraderLlama), } #[allow(clippy::single_match)] @@ -136,6 +137,7 @@ impl AnyEntity { AnyEntity::ChestedHorse(chested_horse) => chested_horse.get_entity(), AnyEntity::Donkey(donkey) => donkey.get_entity(), AnyEntity::Llama(llama) => llama.get_entity(), + AnyEntity::TraderLlama(trader_llama) => trader_llama.get_entity(), } } From 93f4f37a57566522c26b2a8649843ddda33b3c57 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:18:40 +0100 Subject: [PATCH 009/111] Add Mule --- minecraft-server/src/entities/horses.rs | 7 +++++++ minecraft-server/src/entities/mod.rs | 2 ++ 2 files changed, 9 insertions(+) diff --git a/minecraft-server/src/entities/horses.rs b/minecraft-server/src/entities/horses.rs index ed073fe7..00056ae4 100644 --- a/minecraft-server/src/entities/horses.rs +++ b/minecraft-server/src/entities/horses.rs @@ -34,3 +34,10 @@ pub struct ChestedHorse { pub abstract_horse: AbstractHorse, pub has_chest: bool, } + +#[derive(Default)] +#[inheritable] +#[inherit(ChestedHorse, AbstractHorse, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Mule { + pub chested_horse: ChestedHorse, +} \ No newline at end of file diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 76a7c8b6..0aedea72 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -95,6 +95,7 @@ pub enum AnyEntity { Donkey(Donkey), Llama(Llama), TraderLlama(TraderLlama), + Mule(Mule), } #[allow(clippy::single_match)] @@ -138,6 +139,7 @@ impl AnyEntity { AnyEntity::Donkey(donkey) => donkey.get_entity(), AnyEntity::Llama(llama) => llama.get_entity(), AnyEntity::TraderLlama(trader_llama) => trader_llama.get_entity(), + AnyEntity::Mule(mule) => mule.get_entity(), } } From 83e758b41534c8795bf2cb8b6437cbc42ec66092 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:21:59 +0100 Subject: [PATCH 010/111] Add axolot --- minecraft-server/src/entities/axolot.rs | 10 ++++++++++ minecraft-server/src/entities/mod.rs | 4 ++++ 2 files changed, 14 insertions(+) create mode 100644 minecraft-server/src/entities/axolot.rs diff --git a/minecraft-server/src/entities/axolot.rs b/minecraft-server/src/entities/axolot.rs new file mode 100644 index 00000000..c3f9d7d8 --- /dev/null +++ b/minecraft-server/src/entities/axolot.rs @@ -0,0 +1,10 @@ +use super::*; + +#[derive(Default)] +#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Axolot { + pub animal: Animal, + pub variant: u8, + pub playing_dead: bool, + pub spawn_from_bucket: bool, +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 0aedea72..bfe99490 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -44,6 +44,8 @@ mod donkey; pub use donkey::*; mod llama; pub use llama::*; +mod axolot; +pub use axolot::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -96,6 +98,7 @@ pub enum AnyEntity { Llama(Llama), TraderLlama(TraderLlama), Mule(Mule), + Axolot(Axolot), } #[allow(clippy::single_match)] @@ -140,6 +143,7 @@ impl AnyEntity { AnyEntity::Llama(llama) => llama.get_entity(), AnyEntity::TraderLlama(trader_llama) => trader_llama.get_entity(), AnyEntity::Mule(mule) => mule.get_entity(), + AnyEntity::Axolot(axolot) => axolot.get_entity(), } } From 57590c54962c5add767a47b75ca9c2c41be98651 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:23:29 +0100 Subject: [PATCH 011/111] Add bee --- minecraft-server/src/entities/bee.rs | 9 +++++++++ minecraft-server/src/entities/mod.rs | 4 ++++ 2 files changed, 13 insertions(+) create mode 100644 minecraft-server/src/entities/bee.rs diff --git a/minecraft-server/src/entities/bee.rs b/minecraft-server/src/entities/bee.rs new file mode 100644 index 00000000..4f6e32dc --- /dev/null +++ b/minecraft-server/src/entities/bee.rs @@ -0,0 +1,9 @@ +use super::*; + +#[derive(Default)] +#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Bee { + pub animal: Animal, + pub flag: u8, + pub anger_time: usize, +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index bfe99490..7fbe8cd3 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -46,6 +46,8 @@ mod llama; pub use llama::*; mod axolot; pub use axolot::*; +mod bee; +pub use bee::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -99,6 +101,7 @@ pub enum AnyEntity { TraderLlama(TraderLlama), Mule(Mule), Axolot(Axolot), + Bee(Bee), } #[allow(clippy::single_match)] @@ -144,6 +147,7 @@ impl AnyEntity { AnyEntity::TraderLlama(trader_llama) => trader_llama.get_entity(), AnyEntity::Mule(mule) => mule.get_entity(), AnyEntity::Axolot(axolot) => axolot.get_entity(), + AnyEntity::Bee(bee) => bee.get_entity(), } } From dc5062feee75382e196ae7171883befa53f6dcce Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:26:00 +0100 Subject: [PATCH 012/111] Add Fox --- minecraft-server/src/entities/fox.rs | 12 ++++++++++++ minecraft-server/src/entities/mod.rs | 4 ++++ 2 files changed, 16 insertions(+) create mode 100644 minecraft-server/src/entities/fox.rs diff --git a/minecraft-server/src/entities/fox.rs b/minecraft-server/src/entities/fox.rs new file mode 100644 index 00000000..678e0fc5 --- /dev/null +++ b/minecraft-server/src/entities/fox.rs @@ -0,0 +1,12 @@ +use minecraft_protocol::packets::UUID; +use super::*; + +#[derive(Default)] +#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Fox { + pub animal: Animal, + pub variant: u8, + pub mask: u8, + pub first_uuid: Option, + pub second_uuid: Option, +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 7fbe8cd3..3a248f1e 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -48,6 +48,8 @@ mod axolot; pub use axolot::*; mod bee; pub use bee::*; +mod fox; +pub use fox::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -102,6 +104,7 @@ pub enum AnyEntity { Mule(Mule), Axolot(Axolot), Bee(Bee), + Fox(Fox), } #[allow(clippy::single_match)] @@ -148,6 +151,7 @@ impl AnyEntity { AnyEntity::Mule(mule) => mule.get_entity(), AnyEntity::Axolot(axolot) => axolot.get_entity(), AnyEntity::Bee(bee) => bee.get_entity(), + AnyEntity::Fox(fox) => fox.get_entity(), } } From c449488f6014244002f94c567ad074230e822692 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:29:06 +0100 Subject: [PATCH 013/111] Frog --- minecraft-server/src/entities/frog.rs | 10 ++++++++++ minecraft-server/src/entities/mod.rs | 4 ++++ 2 files changed, 14 insertions(+) create mode 100644 minecraft-server/src/entities/frog.rs diff --git a/minecraft-server/src/entities/frog.rs b/minecraft-server/src/entities/frog.rs new file mode 100644 index 00000000..63115498 --- /dev/null +++ b/minecraft-server/src/entities/frog.rs @@ -0,0 +1,10 @@ +use minecraft_protocol::packets::UUID; +use super::*; + +#[derive(Default)] +#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Frog { + pub animal: Animal, + pub variant: u8, + pub tongue_target: Option, +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 3a248f1e..572e8d9f 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -50,6 +50,8 @@ mod bee; pub use bee::*; mod fox; pub use fox::*; +mod frog; +pub use frog::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -105,6 +107,7 @@ pub enum AnyEntity { Axolot(Axolot), Bee(Bee), Fox(Fox), + Frog(Frog), } #[allow(clippy::single_match)] @@ -152,6 +155,7 @@ impl AnyEntity { AnyEntity::Axolot(axolot) => axolot.get_entity(), AnyEntity::Bee(bee) => bee.get_entity(), AnyEntity::Fox(fox) => fox.get_entity(), + AnyEntity::Frog(frog) => frog.get_entity(), } } From a5e7092751969dc430fcf1ee95177444860f3c5a Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:31:10 +0100 Subject: [PATCH 014/111] Add Ocelot --- minecraft-server/src/entities/mod.rs | 4 ++++ minecraft-server/src/entities/ocelot.rs | 9 +++++++++ 2 files changed, 13 insertions(+) create mode 100644 minecraft-server/src/entities/ocelot.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 572e8d9f..d8586650 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -52,6 +52,8 @@ mod fox; pub use fox::*; mod frog; pub use frog::*; +mod ocelot; +pub use ocelot::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -108,6 +110,7 @@ pub enum AnyEntity { Bee(Bee), Fox(Fox), Frog(Frog), + Ocelot(Ocelot), } #[allow(clippy::single_match)] @@ -156,6 +159,7 @@ impl AnyEntity { AnyEntity::Bee(bee) => bee.get_entity(), AnyEntity::Fox(fox) => fox.get_entity(), AnyEntity::Frog(frog) => frog.get_entity(), + AnyEntity::Ocelot(ocelot) => ocelot.get_entity(), } } diff --git a/minecraft-server/src/entities/ocelot.rs b/minecraft-server/src/entities/ocelot.rs new file mode 100644 index 00000000..8fdf3bfb --- /dev/null +++ b/minecraft-server/src/entities/ocelot.rs @@ -0,0 +1,9 @@ +use minecraft_protocol::packets::UUID; +use super::*; + +#[derive(Default)] +#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Ocelot { + pub animal: Animal, + pub is_trusting: bool, +} From 77cdf1b236e0b437d3a81474d0319a6870d41171 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:35:43 +0100 Subject: [PATCH 015/111] Add Panda --- minecraft-server/src/entities/mod.rs | 4 ++++ minecraft-server/src/entities/panda.rs | 14 ++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 minecraft-server/src/entities/panda.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index d8586650..7a6f0cfb 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -54,6 +54,8 @@ mod frog; pub use frog::*; mod ocelot; pub use ocelot::*; +mod panda; +pub use panda::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -111,6 +113,7 @@ pub enum AnyEntity { Fox(Fox), Frog(Frog), Ocelot(Ocelot), + Panda(Panda), } #[allow(clippy::single_match)] @@ -160,6 +163,7 @@ impl AnyEntity { AnyEntity::Fox(fox) => fox.get_entity(), AnyEntity::Frog(frog) => frog.get_entity(), AnyEntity::Ocelot(ocelot) => ocelot.get_entity(), + AnyEntity::Panda(panda) => panda.get_entity(), } } diff --git a/minecraft-server/src/entities/panda.rs b/minecraft-server/src/entities/panda.rs new file mode 100644 index 00000000..eaf8f55b --- /dev/null +++ b/minecraft-server/src/entities/panda.rs @@ -0,0 +1,14 @@ +use minecraft_protocol::packets::UUID; +use super::*; + +#[derive(Default)] +#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Panda { + pub animal: Animal, + pub breed_timer: u16, + pub sneeze_timer: u16, + pub eat_timer: u16, + pub main_gene: u8, + pub hidden_gene: u8, + pub action_mask: u8, +} From dd1948d978f8e9f4bd3ad1f892e0b824a4c67023 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:37:47 +0100 Subject: [PATCH 016/111] Add Pig --- minecraft-server/src/entities/mod.rs | 4 ++++ minecraft-server/src/entities/pig.rs | 10 ++++++++++ 2 files changed, 14 insertions(+) create mode 100644 minecraft-server/src/entities/pig.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 7a6f0cfb..37a2a2c4 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -56,6 +56,8 @@ mod ocelot; pub use ocelot::*; mod panda; pub use panda::*; +mod pig; +pub use pig::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -114,6 +116,7 @@ pub enum AnyEntity { Frog(Frog), Ocelot(Ocelot), Panda(Panda), + Pig(Pig), } #[allow(clippy::single_match)] @@ -164,6 +167,7 @@ impl AnyEntity { AnyEntity::Frog(frog) => frog.get_entity(), AnyEntity::Ocelot(ocelot) => ocelot.get_entity(), AnyEntity::Panda(panda) => panda.get_entity(), + AnyEntity::Pig(pig) => pig.get_entity(), } } diff --git a/minecraft-server/src/entities/pig.rs b/minecraft-server/src/entities/pig.rs new file mode 100644 index 00000000..ee221442 --- /dev/null +++ b/minecraft-server/src/entities/pig.rs @@ -0,0 +1,10 @@ +use minecraft_protocol::packets::UUID; +use super::*; + +#[derive(Default)] +#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Pig { + pub animal: Animal, + pub has_saddle: bool, + pub boost_time: u16, +} From 2f73aaf709e64b67f0d55116a0d0a58071e2c87c Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:39:05 +0100 Subject: [PATCH 017/111] Add Rabit --- minecraft-server/src/entities/mod.rs | 4 ++++ minecraft-server/src/entities/pig.rs | 1 - minecraft-server/src/entities/rabbit.rs | 8 ++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 minecraft-server/src/entities/rabbit.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 37a2a2c4..198917c4 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -58,6 +58,8 @@ mod panda; pub use panda::*; mod pig; pub use pig::*; +mod rabbit; +pub use rabbit; pub use minecraft_server_derive::{inherit, inheritable}; @@ -117,6 +119,7 @@ pub enum AnyEntity { Ocelot(Ocelot), Panda(Panda), Pig(Pig), + Rabbit(Rabbit), } #[allow(clippy::single_match)] @@ -168,6 +171,7 @@ impl AnyEntity { AnyEntity::Ocelot(ocelot) => ocelot.get_entity(), AnyEntity::Panda(panda) => panda.get_entity(), AnyEntity::Pig(pig) => pig.get_entity(), + AnyEntity::Rabbit(rabbit) => rabbit.get_entity(), } } diff --git a/minecraft-server/src/entities/pig.rs b/minecraft-server/src/entities/pig.rs index ee221442..2f209af3 100644 --- a/minecraft-server/src/entities/pig.rs +++ b/minecraft-server/src/entities/pig.rs @@ -1,4 +1,3 @@ -use minecraft_protocol::packets::UUID; use super::*; #[derive(Default)] diff --git a/minecraft-server/src/entities/rabbit.rs b/minecraft-server/src/entities/rabbit.rs new file mode 100644 index 00000000..2d39d9c1 --- /dev/null +++ b/minecraft-server/src/entities/rabbit.rs @@ -0,0 +1,8 @@ +use super::*; + +#[derive(Default)] +#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Rabbit { + pub animal: Animal, + pub variant: u16, +} From 96d7173b6b573dcc0a553d252f0aa46ba91744ed Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:41:25 +0100 Subject: [PATCH 018/111] Add Turtle --- minecraft-server/src/entities/mod.rs | 6 +++++- minecraft-server/src/entities/turtle.rs | 12 ++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 minecraft-server/src/entities/turtle.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 198917c4..8ee2ce67 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -59,7 +59,9 @@ pub use panda::*; mod pig; pub use pig::*; mod rabbit; -pub use rabbit; +pub use rabbit::*; +mod turtle; +pub use turtle::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -120,6 +122,7 @@ pub enum AnyEntity { Panda(Panda), Pig(Pig), Rabbit(Rabbit), + Turtle(Turtle), } #[allow(clippy::single_match)] @@ -172,6 +175,7 @@ impl AnyEntity { AnyEntity::Panda(panda) => panda.get_entity(), AnyEntity::Pig(pig) => pig.get_entity(), AnyEntity::Rabbit(rabbit) => rabbit.get_entity(), + AnyEntity::Turtle(turtle) => turtle.get_entity(), } } diff --git a/minecraft-server/src/entities/turtle.rs b/minecraft-server/src/entities/turtle.rs new file mode 100644 index 00000000..75fb2028 --- /dev/null +++ b/minecraft-server/src/entities/turtle.rs @@ -0,0 +1,12 @@ +use super::*; + +#[derive(Default)] +#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Turtle { + pub animal: Animal, + pub block_position: BlockPosition, + pub has_egg: bool, + pub is_laying_egg: bool, + pub travel_position: Option, + pub is_going_home: bool, +} From 8c0148a59ab9f7bfe69f6c17ea14ebe9d4130ae1 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:42:16 +0100 Subject: [PATCH 019/111] Add Default derive to BlockPosition --- minecraft-server/src/position.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/minecraft-server/src/position.rs b/minecraft-server/src/position.rs index db524ef7..f6228a51 100644 --- a/minecraft-server/src/position.rs +++ b/minecraft-server/src/position.rs @@ -1,3 +1,4 @@ +#[derive(Default)] pub struct BlockPosition { pub x: i32, pub y: i32, From 9d8235126c58db8c2c31c15cb6847355f5e404ee Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:43:51 +0100 Subject: [PATCH 020/111] Add PolarBear --- minecraft-server/src/entities/mod.rs | 4 ++++ minecraft-server/src/entities/polar_bear.rs | 8 ++++++++ 2 files changed, 12 insertions(+) create mode 100644 minecraft-server/src/entities/polar_bear.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 8ee2ce67..d800b2de 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -62,6 +62,8 @@ mod rabbit; pub use rabbit::*; mod turtle; pub use turtle::*; +mod polar_bear; +pub use polar_bear::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -123,6 +125,7 @@ pub enum AnyEntity { Pig(Pig), Rabbit(Rabbit), Turtle(Turtle), + PolarBear(PolarBear), } #[allow(clippy::single_match)] @@ -176,6 +179,7 @@ impl AnyEntity { AnyEntity::Pig(pig) => pig.get_entity(), AnyEntity::Rabbit(rabbit) => rabbit.get_entity(), AnyEntity::Turtle(turtle) => turtle.get_entity(), + AnyEntity::PolarBear(polar_bear) => polar_bear.get_entity(), } } diff --git a/minecraft-server/src/entities/polar_bear.rs b/minecraft-server/src/entities/polar_bear.rs new file mode 100644 index 00000000..23c933d8 --- /dev/null +++ b/minecraft-server/src/entities/polar_bear.rs @@ -0,0 +1,8 @@ +use super::*; + +#[derive(Default)] +#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct PolarBear { + pub animal: Animal, + pub is_standing: bool, +} From 12ff0c73994fb02a14333fb49021c617a0395ab3 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:45:10 +0100 Subject: [PATCH 021/111] Add Cow & Chicken --- minecraft-server/src/entities/chicken.rs | 7 +++++++ minecraft-server/src/entities/cow.rs | 7 +++++++ minecraft-server/src/entities/mod.rs | 8 ++++++++ 3 files changed, 22 insertions(+) create mode 100644 minecraft-server/src/entities/chicken.rs create mode 100644 minecraft-server/src/entities/cow.rs diff --git a/minecraft-server/src/entities/chicken.rs b/minecraft-server/src/entities/chicken.rs new file mode 100644 index 00000000..4ecb19a6 --- /dev/null +++ b/minecraft-server/src/entities/chicken.rs @@ -0,0 +1,7 @@ +use super::*; + +#[derive(Default)] +#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Chicken { + pub animal: Animal, +} diff --git a/minecraft-server/src/entities/cow.rs b/minecraft-server/src/entities/cow.rs new file mode 100644 index 00000000..8e87ae1e --- /dev/null +++ b/minecraft-server/src/entities/cow.rs @@ -0,0 +1,7 @@ +use super::*; + +#[derive(Default)] +#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Cow { + pub animal: Animal, +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index d800b2de..88062109 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -64,6 +64,10 @@ mod turtle; pub use turtle::*; mod polar_bear; pub use polar_bear::*; +mod chicken; +pub use chicken::*; +mod cow; +pub use cow::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -126,6 +130,8 @@ pub enum AnyEntity { Rabbit(Rabbit), Turtle(Turtle), PolarBear(PolarBear), + Chicken(Chicken), + Cow(Cow), } #[allow(clippy::single_match)] @@ -180,6 +186,8 @@ impl AnyEntity { AnyEntity::Rabbit(rabbit) => rabbit.get_entity(), AnyEntity::Turtle(turtle) => turtle.get_entity(), AnyEntity::PolarBear(polar_bear) => polar_bear.get_entity(), + AnyEntity::Chicken(chicken) => chicken.get_entity(), + AnyEntity::Cow(cow) => cow.get_entity(), } } From 9ede508d9399dfd75155b0599ac5fde498bc46db Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:46:35 +0100 Subject: [PATCH 022/111] Add Hoglin --- minecraft-server/src/entities/hoglin.rs | 9 +++++++++ minecraft-server/src/entities/mod.rs | 4 ++++ 2 files changed, 13 insertions(+) create mode 100644 minecraft-server/src/entities/hoglin.rs diff --git a/minecraft-server/src/entities/hoglin.rs b/minecraft-server/src/entities/hoglin.rs new file mode 100644 index 00000000..dfa35664 --- /dev/null +++ b/minecraft-server/src/entities/hoglin.rs @@ -0,0 +1,9 @@ +use minecraft_protocol::packets::UUID; +use super::*; + +#[derive(Default)] +#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Hoglin { + pub animal: Animal, + pub is_immune: bool, +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 88062109..a05dc0df 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -68,6 +68,8 @@ mod chicken; pub use chicken::*; mod cow; pub use cow::*; +mod hoglin; +pub use hoglin::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -132,6 +134,7 @@ pub enum AnyEntity { PolarBear(PolarBear), Chicken(Chicken), Cow(Cow), + Hoglin(Hoglin), } #[allow(clippy::single_match)] @@ -188,6 +191,7 @@ impl AnyEntity { AnyEntity::PolarBear(polar_bear) => polar_bear.get_entity(), AnyEntity::Chicken(chicken) => chicken.get_entity(), AnyEntity::Cow(cow) => cow.get_entity(), + AnyEntity::Hoglin(hoglin) => hoglin.get_entity(), } } From 8bf3df8e114b00e4465658a8bbe08170966b153e Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:48:30 +0100 Subject: [PATCH 023/111] Add Mooshroom --- minecraft-server/src/entities/cow.rs | 9 +++++++++ minecraft-server/src/entities/mod.rs | 2 ++ 2 files changed, 11 insertions(+) diff --git a/minecraft-server/src/entities/cow.rs b/minecraft-server/src/entities/cow.rs index 8e87ae1e..c89b8f81 100644 --- a/minecraft-server/src/entities/cow.rs +++ b/minecraft-server/src/entities/cow.rs @@ -1,7 +1,16 @@ use super::*; #[derive(Default)] +#[inheritable] #[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] pub struct Cow { pub animal: Animal, } + +#[derive(Default)] +#[inherit(Cow, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] + +pub struct Mooshroom { + pub cow: Cow, + pub variant: u8, // In the doc it is a string +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index a05dc0df..56630f92 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -135,6 +135,7 @@ pub enum AnyEntity { Chicken(Chicken), Cow(Cow), Hoglin(Hoglin), + Mooshroom(Mooshroom), } #[allow(clippy::single_match)] @@ -192,6 +193,7 @@ impl AnyEntity { AnyEntity::Chicken(chicken) => chicken.get_entity(), AnyEntity::Cow(cow) => cow.get_entity(), AnyEntity::Hoglin(hoglin) => hoglin.get_entity(), + AnyEntity::Mooshroom(mooshroom) => mooshroom.get_entity(), } } From c48e4137536ae9b318cb50ecc9c214dd092d8a6e Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:51:05 +0100 Subject: [PATCH 024/111] Add Sheep --- minecraft-server/src/entities/mod.rs | 4 ++++ minecraft-server/src/entities/sheep.rs | 9 +++++++++ 2 files changed, 13 insertions(+) create mode 100644 minecraft-server/src/entities/sheep.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 56630f92..2f1cf219 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -70,6 +70,8 @@ mod cow; pub use cow::*; mod hoglin; pub use hoglin::*; +mod sheep; +pub use sheep::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -136,6 +138,7 @@ pub enum AnyEntity { Cow(Cow), Hoglin(Hoglin), Mooshroom(Mooshroom), + Sheep(Sheep), } #[allow(clippy::single_match)] @@ -194,6 +197,7 @@ impl AnyEntity { AnyEntity::Cow(cow) => cow.get_entity(), AnyEntity::Hoglin(hoglin) => hoglin.get_entity(), AnyEntity::Mooshroom(mooshroom) => mooshroom.get_entity(), + AnyEntity::Sheep(sheep) => sheep.get_entity(), } } diff --git a/minecraft-server/src/entities/sheep.rs b/minecraft-server/src/entities/sheep.rs new file mode 100644 index 00000000..ef16d152 --- /dev/null +++ b/minecraft-server/src/entities/sheep.rs @@ -0,0 +1,9 @@ +use super::*; + +#[derive(Default)] +#[inheritable] +#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Sheep { + pub animal: Animal, + pub mask_style: u8, +} From 6f73aad40824e49320c4c3ed40a8d6daf4d5d9a6 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:52:36 +0100 Subject: [PATCH 025/111] Add Strider --- minecraft-server/src/entities/mod.rs | 4 ++++ minecraft-server/src/entities/strider.rs | 11 +++++++++++ 2 files changed, 15 insertions(+) create mode 100644 minecraft-server/src/entities/strider.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 2f1cf219..0c5ac3c4 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -72,6 +72,8 @@ mod hoglin; pub use hoglin::*; mod sheep; pub use sheep::*; +mod strider; +pub use strider::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -139,6 +141,7 @@ pub enum AnyEntity { Hoglin(Hoglin), Mooshroom(Mooshroom), Sheep(Sheep), + Strider(Strider), } #[allow(clippy::single_match)] @@ -198,6 +201,7 @@ impl AnyEntity { AnyEntity::Hoglin(hoglin) => hoglin.get_entity(), AnyEntity::Mooshroom(mooshroom) => mooshroom.get_entity(), AnyEntity::Sheep(sheep) => sheep.get_entity(), + AnyEntity::Strider(strider) => strider.get_entity(), } } diff --git a/minecraft-server/src/entities/strider.rs b/minecraft-server/src/entities/strider.rs new file mode 100644 index 00000000..91f95a5c --- /dev/null +++ b/minecraft-server/src/entities/strider.rs @@ -0,0 +1,11 @@ +use super::*; + +#[derive(Default)] +#[inheritable] +#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Strider { + pub animal: Animal, + pub boost_time: u16, + pub is_shaking: bool, + pub has_saddle: bool, +} From b2cd164c35c861b7879c77a463ed019db798685b Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:54:37 +0100 Subject: [PATCH 026/111] Add TameableAnimal --- minecraft-server/src/entities/mod.rs | 4 ++++ minecraft-server/src/entities/tameable_animal.rs | 12 ++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 minecraft-server/src/entities/tameable_animal.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 0c5ac3c4..8559a48f 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -74,6 +74,8 @@ mod sheep; pub use sheep::*; mod strider; pub use strider::*; +mod tameable_animal; +pub use tameable_animal::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -142,6 +144,7 @@ pub enum AnyEntity { Mooshroom(Mooshroom), Sheep(Sheep), Strider(Strider), + TameableAnimal(TameableAnimal), } #[allow(clippy::single_match)] @@ -202,6 +205,7 @@ impl AnyEntity { AnyEntity::Mooshroom(mooshroom) => mooshroom.get_entity(), AnyEntity::Sheep(sheep) => sheep.get_entity(), AnyEntity::Strider(strider) => strider.get_entity(), + AnyEntity::TameableAnimal(tameable_animal) => tameable_animal.get_entity(), } } diff --git a/minecraft-server/src/entities/tameable_animal.rs b/minecraft-server/src/entities/tameable_animal.rs new file mode 100644 index 00000000..77507c4b --- /dev/null +++ b/minecraft-server/src/entities/tameable_animal.rs @@ -0,0 +1,12 @@ +use minecraft_protocol::packets::UUID; + +use super::*; + +#[derive(Default)] +#[inheritable] +#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct TameableAnimal { + pub animal: Animal, + pub action_mask: u8, + pub owner: Option, +} From 269437334586ee96b39236129a3816d14bf575d9 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:56:40 +0100 Subject: [PATCH 027/111] Add Cat --- minecraft-server/src/entities/cat.rs | 23 +++++++++++++++++++++++ minecraft-server/src/entities/mod.rs | 4 ++++ 2 files changed, 27 insertions(+) create mode 100644 minecraft-server/src/entities/cat.rs diff --git a/minecraft-server/src/entities/cat.rs b/minecraft-server/src/entities/cat.rs new file mode 100644 index 00000000..b6d64859 --- /dev/null +++ b/minecraft-server/src/entities/cat.rs @@ -0,0 +1,23 @@ +use super::*; + +#[derive(Default)] +#[inherit(TameableAnimal, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Cat { + pub tameable_animal: TameableAnimal, + pub variant: u8, + pub is_lying: bool, + pub is_relaxed: bool, + pub collar_color: u8, +} + +impl Default for Cat { + fn default() -> Self { + Self { + tameable_animal: Default::default(), + variant: 0, + is_lying: false, + is_relaxed: false, + collar_color: 14, + } + } +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 8559a48f..e77647f4 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -76,6 +76,8 @@ mod strider; pub use strider::*; mod tameable_animal; pub use tameable_animal::*; +mod cat; +pub use cat::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -145,6 +147,7 @@ pub enum AnyEntity { Sheep(Sheep), Strider(Strider), TameableAnimal(TameableAnimal), + Cat(Cat), } #[allow(clippy::single_match)] @@ -206,6 +209,7 @@ impl AnyEntity { AnyEntity::Sheep(sheep) => sheep.get_entity(), AnyEntity::Strider(strider) => strider.get_entity(), AnyEntity::TameableAnimal(tameable_animal) => tameable_animal.get_entity(), + AnyEntity::Cat(cat) => cat.get_entity(), } } From c463fa3a034fe418496217f98042505b332f186e Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:57:13 +0100 Subject: [PATCH 028/111] Remove Default derive for Cat --- minecraft-server/src/entities/cat.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/minecraft-server/src/entities/cat.rs b/minecraft-server/src/entities/cat.rs index b6d64859..8e111c4f 100644 --- a/minecraft-server/src/entities/cat.rs +++ b/minecraft-server/src/entities/cat.rs @@ -1,6 +1,5 @@ use super::*; -#[derive(Default)] #[inherit(TameableAnimal, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] pub struct Cat { pub tameable_animal: TameableAnimal, From 2b1317fe4dc0db222eed7185991c89665f4fce6a Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 02:59:07 +0100 Subject: [PATCH 029/111] Add Wolf --- minecraft-server/src/entities/mod.rs | 4 ++++ minecraft-server/src/entities/wolf.rs | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 minecraft-server/src/entities/wolf.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index e77647f4..a1977d53 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -78,6 +78,8 @@ mod tameable_animal; pub use tameable_animal::*; mod cat; pub use cat::*; +mod wolf; +pub use wolf::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -148,6 +150,7 @@ pub enum AnyEntity { Strider(Strider), TameableAnimal(TameableAnimal), Cat(Cat), + Wolf(Wolf), } #[allow(clippy::single_match)] @@ -210,6 +213,7 @@ impl AnyEntity { AnyEntity::Strider(strider) => strider.get_entity(), AnyEntity::TameableAnimal(tameable_animal) => tameable_animal.get_entity(), AnyEntity::Cat(cat) => cat.get_entity(), + AnyEntity::Wolf(wolf) => wolf.get_entity(), } } diff --git a/minecraft-server/src/entities/wolf.rs b/minecraft-server/src/entities/wolf.rs new file mode 100644 index 00000000..9fc0a3a4 --- /dev/null +++ b/minecraft-server/src/entities/wolf.rs @@ -0,0 +1,20 @@ +use super::*; + +#[inherit(TameableAnimal, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Wolf { + pub tameable_animal: TameableAnimal, + pub is_begging: bool, + pub collar_color: u8, + pub anger: u16, +} + +impl Default for Wolf { + fn default() -> Self { + Self { + tameable_animal: Default::default(), + is_begging: false, + collar_color: 14, + anger: 0, + } + } +} From 0353f37f2646ed6273def349d2844749a0b4b28d Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 03:00:06 +0100 Subject: [PATCH 030/111] Add Parrot --- minecraft-server/src/entities/mod.rs | 4 ++++ minecraft-server/src/entities/parrot.rs | 9 +++++++++ 2 files changed, 13 insertions(+) create mode 100644 minecraft-server/src/entities/parrot.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index a1977d53..e0bdd3aa 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -80,6 +80,8 @@ mod cat; pub use cat::*; mod wolf; pub use wolf::*; +mod parrot; +pub use parrot::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -151,6 +153,7 @@ pub enum AnyEntity { TameableAnimal(TameableAnimal), Cat(Cat), Wolf(Wolf), + Parrot(Parrot), } #[allow(clippy::single_match)] @@ -214,6 +217,7 @@ impl AnyEntity { AnyEntity::TameableAnimal(tameable_animal) => tameable_animal.get_entity(), AnyEntity::Cat(cat) => cat.get_entity(), AnyEntity::Wolf(wolf) => wolf.get_entity(), + AnyEntity::Parrot(parrot) => parrot.get_entity(), } } diff --git a/minecraft-server/src/entities/parrot.rs b/minecraft-server/src/entities/parrot.rs new file mode 100644 index 00000000..86aebd5b --- /dev/null +++ b/minecraft-server/src/entities/parrot.rs @@ -0,0 +1,9 @@ +use super::*; + +#[derive(Default)] +#[inherit(TameableAnimal, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Parrot { + pub tameable_animal: TameableAnimal, + pub variant: u8, +} + From 6f19e267206ced048672f766d0fe2f369e15da67 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 03:03:27 +0100 Subject: [PATCH 031/111] Add Villager & AbstractVillager --- minecraft-server/src/entities/mod.rs | 6 ++++++ minecraft-server/src/entities/villagers.rs | 16 ++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 minecraft-server/src/entities/villagers.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index e0bdd3aa..33fb7c7a 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -82,6 +82,8 @@ mod wolf; pub use wolf::*; mod parrot; pub use parrot::*; +mod villagers; +pub use villagers::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -154,6 +156,8 @@ pub enum AnyEntity { Cat(Cat), Wolf(Wolf), Parrot(Parrot), + AbstractVillager(AbstractVillager), + Villager(Villager), } #[allow(clippy::single_match)] @@ -218,6 +222,8 @@ impl AnyEntity { AnyEntity::Cat(cat) => cat.get_entity(), AnyEntity::Wolf(wolf) => wolf.get_entity(), AnyEntity::Parrot(parrot) => parrot.get_entity(), + AnyEntity::AbstractVillager(abstract_villager) => abstract_villager.get_entity(), + AnyEntity::Villager(villager) => villager.get_entity(), } } diff --git a/minecraft-server/src/entities/villagers.rs b/minecraft-server/src/entities/villagers.rs new file mode 100644 index 00000000..d376b4ab --- /dev/null +++ b/minecraft-server/src/entities/villagers.rs @@ -0,0 +1,16 @@ +use super::*; + +#[derive(Default)] +#[inheritable] +#[inherit(AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct AbstractVillager { + pub ageable_mob: AgeableMob, + pub head_shake_timer: u32, +} + +#[derive(Default)] +#[inherit(AbstractVillager, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Villager { + pub abstract_villager: AbstractVillager, + pub villager_data: Vec, +} From 06eef03a6f6c663aafc24d185f0bbbca444322d6 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 03:05:37 +0100 Subject: [PATCH 032/111] Add WanderingTrader --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/villagers.rs | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 33fb7c7a..4ee14b27 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -158,6 +158,7 @@ pub enum AnyEntity { Parrot(Parrot), AbstractVillager(AbstractVillager), Villager(Villager), + WanderingTrader(WanderingTrader), } #[allow(clippy::single_match)] @@ -224,6 +225,7 @@ impl AnyEntity { AnyEntity::Parrot(parrot) => parrot.get_entity(), AnyEntity::AbstractVillager(abstract_villager) => abstract_villager.get_entity(), AnyEntity::Villager(villager) => villager.get_entity(), + AnyEntity::WanderingTrader(wandering_trader) => wandering_trader.get_entity(), } } diff --git a/minecraft-server/src/entities/villagers.rs b/minecraft-server/src/entities/villagers.rs index d376b4ab..696971f4 100644 --- a/minecraft-server/src/entities/villagers.rs +++ b/minecraft-server/src/entities/villagers.rs @@ -14,3 +14,9 @@ pub struct Villager { pub abstract_villager: AbstractVillager, pub villager_data: Vec, } + +#[derive(Default)] +#[inherit(AbstractVillager, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct WanderingTrader { + pub abstract_villager: AbstractVillager, +} From 6254dca8e9507975086615c748742b56686ae713 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 03:07:16 +0100 Subject: [PATCH 033/111] Add AbstractGolem --- minecraft-server/src/entities/golemns.rs | 8 ++++++++ minecraft-server/src/entities/mod.rs | 4 ++++ 2 files changed, 12 insertions(+) create mode 100644 minecraft-server/src/entities/golemns.rs diff --git a/minecraft-server/src/entities/golemns.rs b/minecraft-server/src/entities/golemns.rs new file mode 100644 index 00000000..93de69b8 --- /dev/null +++ b/minecraft-server/src/entities/golemns.rs @@ -0,0 +1,8 @@ +use super::*; + +#[derive(Default)] +#[inheritable] +#[inherit(PathfinderMob, Mob, LivingEntity, Entity)] +pub struct AbstractGolem { + pub pathfinder_mob: PathfinderMob, +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 4ee14b27..6834ad89 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -84,6 +84,8 @@ mod parrot; pub use parrot::*; mod villagers; pub use villagers::*; +mod golemns; +pub use golemns::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -159,6 +161,7 @@ pub enum AnyEntity { AbstractVillager(AbstractVillager), Villager(Villager), WanderingTrader(WanderingTrader), + AbstractGolem(AbstractGolem), } #[allow(clippy::single_match)] @@ -226,6 +229,7 @@ impl AnyEntity { AnyEntity::AbstractVillager(abstract_villager) => abstract_villager.get_entity(), AnyEntity::Villager(villager) => villager.get_entity(), AnyEntity::WanderingTrader(wandering_trader) => wandering_trader.get_entity(), + AnyEntity::AbstractGolem(abstract_golem) => abstract_golem.get_entity(), } } From f1f6999d46c7253d64e5fe587e10066bd7cc27c8 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 03:08:49 +0100 Subject: [PATCH 034/111] Add IronGolem --- minecraft-server/src/entities/golemns.rs | 7 +++++++ minecraft-server/src/entities/mod.rs | 2 ++ 2 files changed, 9 insertions(+) diff --git a/minecraft-server/src/entities/golemns.rs b/minecraft-server/src/entities/golemns.rs index 93de69b8..25ac21c9 100644 --- a/minecraft-server/src/entities/golemns.rs +++ b/minecraft-server/src/entities/golemns.rs @@ -6,3 +6,10 @@ use super::*; pub struct AbstractGolem { pub pathfinder_mob: PathfinderMob, } + +#[derive(Default)] +#[inherit(AbstractGolem, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct IronGolem { + pub abstract_golem: AbstractGolem, + pub is_player_created: bool, +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 6834ad89..1595ffe5 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -162,6 +162,7 @@ pub enum AnyEntity { Villager(Villager), WanderingTrader(WanderingTrader), AbstractGolem(AbstractGolem), + IronGolem(IronGolem), } #[allow(clippy::single_match)] @@ -230,6 +231,7 @@ impl AnyEntity { AnyEntity::Villager(villager) => villager.get_entity(), AnyEntity::WanderingTrader(wandering_trader) => wandering_trader.get_entity(), AnyEntity::AbstractGolem(abstract_golem) => abstract_golem.get_entity(), + AnyEntity::IronGolem(iron_golem) => iron_golem.get_entity(), } } From 09cc590b83af071a8b56fdd9e5aa5ac93c019233 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 03:09:45 +0100 Subject: [PATCH 035/111] Add SnowGolem --- minecraft-server/src/entities/golemns.rs | 8 ++++++++ minecraft-server/src/entities/mod.rs | 2 ++ 2 files changed, 10 insertions(+) diff --git a/minecraft-server/src/entities/golemns.rs b/minecraft-server/src/entities/golemns.rs index 25ac21c9..cd2b3934 100644 --- a/minecraft-server/src/entities/golemns.rs +++ b/minecraft-server/src/entities/golemns.rs @@ -13,3 +13,11 @@ pub struct IronGolem { pub abstract_golem: AbstractGolem, pub is_player_created: bool, } + +#[derive(Default)] +#[inherit(AbstractGolem, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct SnowGolem { + pub abstract_golem: AbstractGolem, + pub has_pumpkin_hat: bool, +} + diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 1595ffe5..2ee4756b 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -163,6 +163,7 @@ pub enum AnyEntity { WanderingTrader(WanderingTrader), AbstractGolem(AbstractGolem), IronGolem(IronGolem), + SnowGolem(SnowGolem), } #[allow(clippy::single_match)] @@ -232,6 +233,7 @@ impl AnyEntity { AnyEntity::WanderingTrader(wandering_trader) => wandering_trader.get_entity(), AnyEntity::AbstractGolem(abstract_golem) => abstract_golem.get_entity(), AnyEntity::IronGolem(iron_golem) => iron_golem.get_entity(), + AnyEntity::SnowGolem(snow_golem) => snow_golem.get_entity(), } } From 9b450ca3378a65534ffb2b8f84cc525cf62520d4 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 03:13:09 +0100 Subject: [PATCH 036/111] Add Shulker --- minecraft-server/src/entities/mod.rs | 4 ++++ minecraft-server/src/entities/shulker.rs | 11 +++++++++++ 2 files changed, 15 insertions(+) create mode 100644 minecraft-server/src/entities/shulker.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 2ee4756b..11c226de 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -86,6 +86,8 @@ mod villagers; pub use villagers::*; mod golemns; pub use golemns::*; +mod shulker; +pub use shulker::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -164,6 +166,7 @@ pub enum AnyEntity { AbstractGolem(AbstractGolem), IronGolem(IronGolem), SnowGolem(SnowGolem), + Shulker(Shulker), } #[allow(clippy::single_match)] @@ -234,6 +237,7 @@ impl AnyEntity { AnyEntity::AbstractGolem(abstract_golem) => abstract_golem.get_entity(), AnyEntity::IronGolem(iron_golem) => iron_golem.get_entity(), AnyEntity::SnowGolem(snow_golem) => snow_golem.get_entity(), + AnyEntity::Shulker(shulker) => shulker.get_entity(), } } diff --git a/minecraft-server/src/entities/shulker.rs b/minecraft-server/src/entities/shulker.rs new file mode 100644 index 00000000..c26c56f4 --- /dev/null +++ b/minecraft-server/src/entities/shulker.rs @@ -0,0 +1,11 @@ +use super::*; + +#[derive(Default)] +#[inherit(AbstractGolem, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Shulker { + pub abstract_golem: AbstractGolem, + pub attach_face: u8, + pub attach_position: Option, + pub shield_height: u8, + pub color: u8, +} From c7f9652efed86ebabd415324c65612d62900a652 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 03:14:48 +0100 Subject: [PATCH 037/111] Add Monster --- minecraft-server/src/entities/mod.rs | 4 ++++ minecraft-server/src/entities/monster/mod.rs | 8 ++++++++ 2 files changed, 12 insertions(+) create mode 100644 minecraft-server/src/entities/monster/mod.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 11c226de..2b634bbf 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -88,6 +88,8 @@ mod golemns; pub use golemns::*; mod shulker; pub use shulker::*; +mod monster; +pub use monster::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -167,6 +169,7 @@ pub enum AnyEntity { IronGolem(IronGolem), SnowGolem(SnowGolem), Shulker(Shulker), + Monster(Monster), } #[allow(clippy::single_match)] @@ -238,6 +241,7 @@ impl AnyEntity { AnyEntity::IronGolem(iron_golem) => iron_golem.get_entity(), AnyEntity::SnowGolem(snow_golem) => snow_golem.get_entity(), AnyEntity::Shulker(shulker) => shulker.get_entity(), + AnyEntity::Monster(monster) => monster.get_entity(), } } diff --git a/minecraft-server/src/entities/monster/mod.rs b/minecraft-server/src/entities/monster/mod.rs new file mode 100644 index 00000000..d1df0874 --- /dev/null +++ b/minecraft-server/src/entities/monster/mod.rs @@ -0,0 +1,8 @@ +use super::*; + +#[derive(Default)] +#[inheritable] +#[inherit(PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Monster { + pub pathfinder_mob: PathfinderMob, +} From 17b4f3227d684470e9e43ad5c93592cf399920d0 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 03:17:14 +0100 Subject: [PATCH 038/111] Add BasePiglin --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/monster/base_piglin.rs | 9 +++++++++ minecraft-server/src/entities/monster/mod.rs | 3 +++ 3 files changed, 14 insertions(+) create mode 100644 minecraft-server/src/entities/monster/base_piglin.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 2b634bbf..26c5af06 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -170,6 +170,7 @@ pub enum AnyEntity { SnowGolem(SnowGolem), Shulker(Shulker), Monster(Monster), + BasePiglin(BasePiglin), } #[allow(clippy::single_match)] @@ -242,6 +243,7 @@ impl AnyEntity { AnyEntity::SnowGolem(snow_golem) => snow_golem.get_entity(), AnyEntity::Shulker(shulker) => shulker.get_entity(), AnyEntity::Monster(monster) => monster.get_entity(), + AnyEntity::BasePiglin(base_piglin) => base_piglin.get_entity(), } } diff --git a/minecraft-server/src/entities/monster/base_piglin.rs b/minecraft-server/src/entities/monster/base_piglin.rs new file mode 100644 index 00000000..b72ef2e7 --- /dev/null +++ b/minecraft-server/src/entities/monster/base_piglin.rs @@ -0,0 +1,9 @@ +use super::*; + +#[derive(Default)] +#[inheritable] +#[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct BasePiglin { + pub monster: Monster, + pub is_immune: bool, +} diff --git a/minecraft-server/src/entities/monster/mod.rs b/minecraft-server/src/entities/monster/mod.rs index d1df0874..5280bf2b 100644 --- a/minecraft-server/src/entities/monster/mod.rs +++ b/minecraft-server/src/entities/monster/mod.rs @@ -1,5 +1,8 @@ use super::*; +mod base_piglin; +pub use base_piglin::*; + #[derive(Default)] #[inheritable] #[inherit(PathfinderMob, Mob, LivingEntity, Entity)] From a23e0485d219f0ea1acf43d7d2f2cf6434477dcc Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 03:19:43 +0100 Subject: [PATCH 039/111] Add Piglin & PiglinBrute --- minecraft-server/src/entities/mod.rs | 4 ++++ minecraft-server/src/entities/monster/mod.rs | 2 ++ minecraft-server/src/entities/monster/piglin.rs | 16 ++++++++++++++++ 3 files changed, 22 insertions(+) create mode 100644 minecraft-server/src/entities/monster/piglin.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 26c5af06..fcea41b6 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -171,6 +171,8 @@ pub enum AnyEntity { Shulker(Shulker), Monster(Monster), BasePiglin(BasePiglin), + Piglin(Piglin), + PiglinBrute(PiglinBrute), } #[allow(clippy::single_match)] @@ -244,6 +246,8 @@ impl AnyEntity { AnyEntity::Shulker(shulker) => shulker.get_entity(), AnyEntity::Monster(monster) => monster.get_entity(), AnyEntity::BasePiglin(base_piglin) => base_piglin.get_entity(), + AnyEntity::Piglin(piglin) => piglin.get_entity(), + AnyEntity::PiglinBrute(piglin_brute) => piglin_brute.get_entity(), } } diff --git a/minecraft-server/src/entities/monster/mod.rs b/minecraft-server/src/entities/monster/mod.rs index 5280bf2b..61e7da73 100644 --- a/minecraft-server/src/entities/monster/mod.rs +++ b/minecraft-server/src/entities/monster/mod.rs @@ -2,6 +2,8 @@ use super::*; mod base_piglin; pub use base_piglin::*; +mod piglin; +pub use piglin::*; #[derive(Default)] #[inheritable] diff --git a/minecraft-server/src/entities/monster/piglin.rs b/minecraft-server/src/entities/monster/piglin.rs new file mode 100644 index 00000000..b5e97192 --- /dev/null +++ b/minecraft-server/src/entities/monster/piglin.rs @@ -0,0 +1,16 @@ +use super::*; + +#[derive(Default)] +#[inherit(BasePiglin, Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Piglin { + pub base_piglin: BasePiglin, + pub is_baby: bool, + pub is_charging_crossbow: bool, + pub is_dancing: bool, +} + +#[derive(Default)] +#[inherit(BasePiglin, Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct PiglinBrute { + pub base_piglin: BasePiglin, +} From 02d7f6c4fe10a1c226521729038199e5209598fe Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 03:21:11 +0100 Subject: [PATCH 040/111] Add Blaze --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/monster/blaze.rs | 8 ++++++++ minecraft-server/src/entities/monster/mod.rs | 2 ++ 3 files changed, 12 insertions(+) create mode 100644 minecraft-server/src/entities/monster/blaze.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index fcea41b6..72d3b9ab 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -173,6 +173,7 @@ pub enum AnyEntity { BasePiglin(BasePiglin), Piglin(Piglin), PiglinBrute(PiglinBrute), + Blaze(Blaze), } #[allow(clippy::single_match)] @@ -248,6 +249,7 @@ impl AnyEntity { AnyEntity::BasePiglin(base_piglin) => base_piglin.get_entity(), AnyEntity::Piglin(piglin) => piglin.get_entity(), AnyEntity::PiglinBrute(piglin_brute) => piglin_brute.get_entity(), + AnyEntity::Blaze(blaze) => blaze.get_entity(), } } diff --git a/minecraft-server/src/entities/monster/blaze.rs b/minecraft-server/src/entities/monster/blaze.rs new file mode 100644 index 00000000..94b9a585 --- /dev/null +++ b/minecraft-server/src/entities/monster/blaze.rs @@ -0,0 +1,8 @@ +use super::*; + +#[derive(Default)] +#[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Blaze { + pub monster: Monster, + pub is_on_fire: bool, +} diff --git a/minecraft-server/src/entities/monster/mod.rs b/minecraft-server/src/entities/monster/mod.rs index 61e7da73..0ac9e4e2 100644 --- a/minecraft-server/src/entities/monster/mod.rs +++ b/minecraft-server/src/entities/monster/mod.rs @@ -4,6 +4,8 @@ mod base_piglin; pub use base_piglin::*; mod piglin; pub use piglin::*; +mod blaze; +pub use blaze::*; #[derive(Default)] #[inheritable] From cd5f003df15c031f1c6e63020c64211d721ca3a1 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 03:22:37 +0100 Subject: [PATCH 041/111] Add Creeper --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/monster/creeper.rs | 10 ++++++++++ minecraft-server/src/entities/monster/mod.rs | 2 ++ 3 files changed, 14 insertions(+) create mode 100644 minecraft-server/src/entities/monster/creeper.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 72d3b9ab..0c78609f 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -174,6 +174,7 @@ pub enum AnyEntity { Piglin(Piglin), PiglinBrute(PiglinBrute), Blaze(Blaze), + Creeper(Creeper), } #[allow(clippy::single_match)] @@ -250,6 +251,7 @@ impl AnyEntity { AnyEntity::Piglin(piglin) => piglin.get_entity(), AnyEntity::PiglinBrute(piglin_brute) => piglin_brute.get_entity(), AnyEntity::Blaze(blaze) => blaze.get_entity(), + AnyEntity::Creeper(creeper) => creeper.get_entity(), } } diff --git a/minecraft-server/src/entities/monster/creeper.rs b/minecraft-server/src/entities/monster/creeper.rs new file mode 100644 index 00000000..fe4f7d8d --- /dev/null +++ b/minecraft-server/src/entities/monster/creeper.rs @@ -0,0 +1,10 @@ +use super::*; + +#[derive(Default)] +#[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Creeper { + pub monster: Monster, + pub state: i8, + pub is_charged: bool, + pub is_ignited: bool, +} diff --git a/minecraft-server/src/entities/monster/mod.rs b/minecraft-server/src/entities/monster/mod.rs index 0ac9e4e2..950b23dc 100644 --- a/minecraft-server/src/entities/monster/mod.rs +++ b/minecraft-server/src/entities/monster/mod.rs @@ -6,6 +6,8 @@ mod piglin; pub use piglin::*; mod blaze; pub use blaze::*; +mod creeper; +pub use creeper::*; #[derive(Default)] #[inheritable] From 37f727671105439ea7b2324b76058f637bec67de Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 03:24:35 +0100 Subject: [PATCH 042/111] Add Endermite & fix Creeper default --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/monster/creeper.rs | 12 +++++++++++- minecraft-server/src/entities/monster/endermite.rs | 7 +++++++ minecraft-server/src/entities/monster/mod.rs | 2 ++ 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 minecraft-server/src/entities/monster/endermite.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 0c78609f..fe13a368 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -175,6 +175,7 @@ pub enum AnyEntity { PiglinBrute(PiglinBrute), Blaze(Blaze), Creeper(Creeper), + Endermite(Endermite), } #[allow(clippy::single_match)] @@ -252,6 +253,7 @@ impl AnyEntity { AnyEntity::PiglinBrute(piglin_brute) => piglin_brute.get_entity(), AnyEntity::Blaze(blaze) => blaze.get_entity(), AnyEntity::Creeper(creeper) => creeper.get_entity(), + AnyEntity::Endermite(endermite) => endermite.get_entity(), } } diff --git a/minecraft-server/src/entities/monster/creeper.rs b/minecraft-server/src/entities/monster/creeper.rs index fe4f7d8d..797edbae 100644 --- a/minecraft-server/src/entities/monster/creeper.rs +++ b/minecraft-server/src/entities/monster/creeper.rs @@ -1,6 +1,5 @@ use super::*; -#[derive(Default)] #[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] pub struct Creeper { pub monster: Monster, @@ -8,3 +7,14 @@ pub struct Creeper { pub is_charged: bool, pub is_ignited: bool, } + +impl Default for Creeper { + fn default() -> Self { + Self { + monster: Monster::default(), + state: -1, + is_charged: false, + is_ignited: false, + } + } +} \ No newline at end of file diff --git a/minecraft-server/src/entities/monster/endermite.rs b/minecraft-server/src/entities/monster/endermite.rs new file mode 100644 index 00000000..b5da89cc --- /dev/null +++ b/minecraft-server/src/entities/monster/endermite.rs @@ -0,0 +1,7 @@ +use super::*; + +#[derive(Default)] +#[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Endermite { + pub monster: Monster, +} diff --git a/minecraft-server/src/entities/monster/mod.rs b/minecraft-server/src/entities/monster/mod.rs index 950b23dc..0ffd477a 100644 --- a/minecraft-server/src/entities/monster/mod.rs +++ b/minecraft-server/src/entities/monster/mod.rs @@ -8,6 +8,8 @@ mod blaze; pub use blaze::*; mod creeper; pub use creeper::*; +mod endermite; +pub use endermite::*; #[derive(Default)] #[inheritable] From ce6952ca23ff1b10688007f4b2cf00f131468f79 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 03:25:31 +0100 Subject: [PATCH 043/111] Add Giant --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/monster/giant.rs | 7 +++++++ minecraft-server/src/entities/monster/mod.rs | 2 ++ 3 files changed, 11 insertions(+) create mode 100644 minecraft-server/src/entities/monster/giant.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index fe13a368..8db708a6 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -176,6 +176,7 @@ pub enum AnyEntity { Blaze(Blaze), Creeper(Creeper), Endermite(Endermite), + Giant(Giant), } #[allow(clippy::single_match)] @@ -254,6 +255,7 @@ impl AnyEntity { AnyEntity::Blaze(blaze) => blaze.get_entity(), AnyEntity::Creeper(creeper) => creeper.get_entity(), AnyEntity::Endermite(endermite) => endermite.get_entity(), + AnyEntity::Giant(giant) => giant.get_entity(), } } diff --git a/minecraft-server/src/entities/monster/giant.rs b/minecraft-server/src/entities/monster/giant.rs new file mode 100644 index 00000000..f773f6a1 --- /dev/null +++ b/minecraft-server/src/entities/monster/giant.rs @@ -0,0 +1,7 @@ +use super::*; + +#[derive(Default)] +#[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Giant { + pub monster: Monster, +} diff --git a/minecraft-server/src/entities/monster/mod.rs b/minecraft-server/src/entities/monster/mod.rs index 0ffd477a..278b9607 100644 --- a/minecraft-server/src/entities/monster/mod.rs +++ b/minecraft-server/src/entities/monster/mod.rs @@ -10,6 +10,8 @@ mod creeper; pub use creeper::*; mod endermite; pub use endermite::*; +mod giant; +pub use giant::*; #[derive(Default)] #[inheritable] From 77578d4a5880a343cd999c009db5d17e7fc66535 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 03:29:31 +0100 Subject: [PATCH 044/111] move animals into a module --- minecraft-server/src/entities/animal.rs | 8 --- .../entities/{ => animal}/abstract_horse.rs | 0 .../src/entities/{ => animal}/axolot.rs | 0 .../src/entities/{ => animal}/bee.rs | 0 .../src/entities/{ => animal}/cat.rs | 0 .../src/entities/{ => animal}/chicken.rs | 0 .../src/entities/{ => animal}/cow.rs | 0 .../src/entities/{ => animal}/donkey.rs | 0 .../src/entities/{ => animal}/fox.rs | 0 .../src/entities/{ => animal}/frog.rs | 0 .../src/entities/{ => animal}/hoglin.rs | 0 .../src/entities/{ => animal}/horses.rs | 0 .../src/entities/{ => animal}/llama.rs | 0 minecraft-server/src/entities/animal/mod.rs | 58 +++++++++++++++++++ .../src/entities/{ => animal}/ocelot.rs | 0 .../src/entities/{ => animal}/panda.rs | 0 .../src/entities/{ => animal}/parrot.rs | 0 .../src/entities/{ => animal}/pig.rs | 0 .../src/entities/{ => animal}/polar_bear.rs | 0 .../src/entities/{ => animal}/rabbit.rs | 0 .../src/entities/{ => animal}/sheep.rs | 0 .../src/entities/{ => animal}/sniffer.rs | 0 .../src/entities/{ => animal}/strider.rs | 0 .../entities/{ => animal}/tameable_animal.rs | 0 .../src/entities/{ => animal}/turtle.rs | 0 .../src/entities/{ => animal}/wolf.rs | 0 .../src/entities/{golemns.rs => golems.rs} | 0 minecraft-server/src/entities/mod.rs | 52 +---------------- 28 files changed, 60 insertions(+), 58 deletions(-) delete mode 100644 minecraft-server/src/entities/animal.rs rename minecraft-server/src/entities/{ => animal}/abstract_horse.rs (100%) rename minecraft-server/src/entities/{ => animal}/axolot.rs (100%) rename minecraft-server/src/entities/{ => animal}/bee.rs (100%) rename minecraft-server/src/entities/{ => animal}/cat.rs (100%) rename minecraft-server/src/entities/{ => animal}/chicken.rs (100%) rename minecraft-server/src/entities/{ => animal}/cow.rs (100%) rename minecraft-server/src/entities/{ => animal}/donkey.rs (100%) rename minecraft-server/src/entities/{ => animal}/fox.rs (100%) rename minecraft-server/src/entities/{ => animal}/frog.rs (100%) rename minecraft-server/src/entities/{ => animal}/hoglin.rs (100%) rename minecraft-server/src/entities/{ => animal}/horses.rs (100%) rename minecraft-server/src/entities/{ => animal}/llama.rs (100%) create mode 100644 minecraft-server/src/entities/animal/mod.rs rename minecraft-server/src/entities/{ => animal}/ocelot.rs (100%) rename minecraft-server/src/entities/{ => animal}/panda.rs (100%) rename minecraft-server/src/entities/{ => animal}/parrot.rs (100%) rename minecraft-server/src/entities/{ => animal}/pig.rs (100%) rename minecraft-server/src/entities/{ => animal}/polar_bear.rs (100%) rename minecraft-server/src/entities/{ => animal}/rabbit.rs (100%) rename minecraft-server/src/entities/{ => animal}/sheep.rs (100%) rename minecraft-server/src/entities/{ => animal}/sniffer.rs (100%) rename minecraft-server/src/entities/{ => animal}/strider.rs (100%) rename minecraft-server/src/entities/{ => animal}/tameable_animal.rs (100%) rename minecraft-server/src/entities/{ => animal}/turtle.rs (100%) rename minecraft-server/src/entities/{ => animal}/wolf.rs (100%) rename minecraft-server/src/entities/{golemns.rs => golems.rs} (100%) diff --git a/minecraft-server/src/entities/animal.rs b/minecraft-server/src/entities/animal.rs deleted file mode 100644 index 901bfd35..00000000 --- a/minecraft-server/src/entities/animal.rs +++ /dev/null @@ -1,8 +0,0 @@ -use super::*; - -#[derive(Default)] -#[inheritable] -#[inherit(AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] -pub struct Animal { - pub ageable_mob: AgeableMob, -} diff --git a/minecraft-server/src/entities/abstract_horse.rs b/minecraft-server/src/entities/animal/abstract_horse.rs similarity index 100% rename from minecraft-server/src/entities/abstract_horse.rs rename to minecraft-server/src/entities/animal/abstract_horse.rs diff --git a/minecraft-server/src/entities/axolot.rs b/minecraft-server/src/entities/animal/axolot.rs similarity index 100% rename from minecraft-server/src/entities/axolot.rs rename to minecraft-server/src/entities/animal/axolot.rs diff --git a/minecraft-server/src/entities/bee.rs b/minecraft-server/src/entities/animal/bee.rs similarity index 100% rename from minecraft-server/src/entities/bee.rs rename to minecraft-server/src/entities/animal/bee.rs diff --git a/minecraft-server/src/entities/cat.rs b/minecraft-server/src/entities/animal/cat.rs similarity index 100% rename from minecraft-server/src/entities/cat.rs rename to minecraft-server/src/entities/animal/cat.rs diff --git a/minecraft-server/src/entities/chicken.rs b/minecraft-server/src/entities/animal/chicken.rs similarity index 100% rename from minecraft-server/src/entities/chicken.rs rename to minecraft-server/src/entities/animal/chicken.rs diff --git a/minecraft-server/src/entities/cow.rs b/minecraft-server/src/entities/animal/cow.rs similarity index 100% rename from minecraft-server/src/entities/cow.rs rename to minecraft-server/src/entities/animal/cow.rs diff --git a/minecraft-server/src/entities/donkey.rs b/minecraft-server/src/entities/animal/donkey.rs similarity index 100% rename from minecraft-server/src/entities/donkey.rs rename to minecraft-server/src/entities/animal/donkey.rs diff --git a/minecraft-server/src/entities/fox.rs b/minecraft-server/src/entities/animal/fox.rs similarity index 100% rename from minecraft-server/src/entities/fox.rs rename to minecraft-server/src/entities/animal/fox.rs diff --git a/minecraft-server/src/entities/frog.rs b/minecraft-server/src/entities/animal/frog.rs similarity index 100% rename from minecraft-server/src/entities/frog.rs rename to minecraft-server/src/entities/animal/frog.rs diff --git a/minecraft-server/src/entities/hoglin.rs b/minecraft-server/src/entities/animal/hoglin.rs similarity index 100% rename from minecraft-server/src/entities/hoglin.rs rename to minecraft-server/src/entities/animal/hoglin.rs diff --git a/minecraft-server/src/entities/horses.rs b/minecraft-server/src/entities/animal/horses.rs similarity index 100% rename from minecraft-server/src/entities/horses.rs rename to minecraft-server/src/entities/animal/horses.rs diff --git a/minecraft-server/src/entities/llama.rs b/minecraft-server/src/entities/animal/llama.rs similarity index 100% rename from minecraft-server/src/entities/llama.rs rename to minecraft-server/src/entities/animal/llama.rs diff --git a/minecraft-server/src/entities/animal/mod.rs b/minecraft-server/src/entities/animal/mod.rs new file mode 100644 index 00000000..a54cdbcf --- /dev/null +++ b/minecraft-server/src/entities/animal/mod.rs @@ -0,0 +1,58 @@ +use super::*; + +mod sniffer; +pub use sniffer::*; +mod abstract_horse; +pub use abstract_horse::*; +mod horses; +pub use horses::*; +mod donkey; +pub use donkey::*; +mod llama; +pub use llama::*; +mod axolot; +pub use axolot::*; +mod bee; +pub use bee::*; +mod fox; +pub use fox::*; +mod frog; +pub use frog::*; +mod ocelot; +pub use ocelot::*; +mod panda; +pub use panda::*; +mod pig; +pub use pig::*; +mod rabbit; +pub use rabbit::*; +mod turtle; +pub use turtle::*; +mod polar_bear; +pub use polar_bear::*; +mod chicken; +pub use chicken::*; +mod cow; +pub use cow::*; +mod hoglin; +pub use hoglin::*; +mod sheep; +pub use sheep::*; +mod strider; +pub use strider::*; +mod tameable_animal; +pub use tameable_animal::*; +mod cat; +pub use cat::*; +mod wolf; +pub use wolf::*; +mod parrot; +pub use parrot::*; + + +#[derive(Default)] +#[inheritable] +#[inherit(AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Animal { + pub ageable_mob: AgeableMob, +} diff --git a/minecraft-server/src/entities/ocelot.rs b/minecraft-server/src/entities/animal/ocelot.rs similarity index 100% rename from minecraft-server/src/entities/ocelot.rs rename to minecraft-server/src/entities/animal/ocelot.rs diff --git a/minecraft-server/src/entities/panda.rs b/minecraft-server/src/entities/animal/panda.rs similarity index 100% rename from minecraft-server/src/entities/panda.rs rename to minecraft-server/src/entities/animal/panda.rs diff --git a/minecraft-server/src/entities/parrot.rs b/minecraft-server/src/entities/animal/parrot.rs similarity index 100% rename from minecraft-server/src/entities/parrot.rs rename to minecraft-server/src/entities/animal/parrot.rs diff --git a/minecraft-server/src/entities/pig.rs b/minecraft-server/src/entities/animal/pig.rs similarity index 100% rename from minecraft-server/src/entities/pig.rs rename to minecraft-server/src/entities/animal/pig.rs diff --git a/minecraft-server/src/entities/polar_bear.rs b/minecraft-server/src/entities/animal/polar_bear.rs similarity index 100% rename from minecraft-server/src/entities/polar_bear.rs rename to minecraft-server/src/entities/animal/polar_bear.rs diff --git a/minecraft-server/src/entities/rabbit.rs b/minecraft-server/src/entities/animal/rabbit.rs similarity index 100% rename from minecraft-server/src/entities/rabbit.rs rename to minecraft-server/src/entities/animal/rabbit.rs diff --git a/minecraft-server/src/entities/sheep.rs b/minecraft-server/src/entities/animal/sheep.rs similarity index 100% rename from minecraft-server/src/entities/sheep.rs rename to minecraft-server/src/entities/animal/sheep.rs diff --git a/minecraft-server/src/entities/sniffer.rs b/minecraft-server/src/entities/animal/sniffer.rs similarity index 100% rename from minecraft-server/src/entities/sniffer.rs rename to minecraft-server/src/entities/animal/sniffer.rs diff --git a/minecraft-server/src/entities/strider.rs b/minecraft-server/src/entities/animal/strider.rs similarity index 100% rename from minecraft-server/src/entities/strider.rs rename to minecraft-server/src/entities/animal/strider.rs diff --git a/minecraft-server/src/entities/tameable_animal.rs b/minecraft-server/src/entities/animal/tameable_animal.rs similarity index 100% rename from minecraft-server/src/entities/tameable_animal.rs rename to minecraft-server/src/entities/animal/tameable_animal.rs diff --git a/minecraft-server/src/entities/turtle.rs b/minecraft-server/src/entities/animal/turtle.rs similarity index 100% rename from minecraft-server/src/entities/turtle.rs rename to minecraft-server/src/entities/animal/turtle.rs diff --git a/minecraft-server/src/entities/wolf.rs b/minecraft-server/src/entities/animal/wolf.rs similarity index 100% rename from minecraft-server/src/entities/wolf.rs rename to minecraft-server/src/entities/animal/wolf.rs diff --git a/minecraft-server/src/entities/golemns.rs b/minecraft-server/src/entities/golems.rs similarity index 100% rename from minecraft-server/src/entities/golemns.rs rename to minecraft-server/src/entities/golems.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 8db708a6..b3cef48e 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -32,60 +32,12 @@ mod ageable_mob; pub use ageable_mob::*; mod animal; pub use animal::*; -mod sniffer; -pub use sniffer::*; -mod abstract_horse; -pub use abstract_horse::*; mod display; pub use display::*; -mod horses; -pub use horses::*; -mod donkey; -pub use donkey::*; -mod llama; -pub use llama::*; -mod axolot; -pub use axolot::*; -mod bee; -pub use bee::*; -mod fox; -pub use fox::*; -mod frog; -pub use frog::*; -mod ocelot; -pub use ocelot::*; -mod panda; -pub use panda::*; -mod pig; -pub use pig::*; -mod rabbit; -pub use rabbit::*; -mod turtle; -pub use turtle::*; -mod polar_bear; -pub use polar_bear::*; -mod chicken; -pub use chicken::*; -mod cow; -pub use cow::*; -mod hoglin; -pub use hoglin::*; -mod sheep; -pub use sheep::*; -mod strider; -pub use strider::*; -mod tameable_animal; -pub use tameable_animal::*; -mod cat; -pub use cat::*; -mod wolf; -pub use wolf::*; -mod parrot; -pub use parrot::*; mod villagers; pub use villagers::*; -mod golemns; -pub use golemns::*; +mod golems; +pub use golems::*; mod shulker; pub use shulker::*; mod monster; From 2ba91a90e076968ca2809143890a4364006679cf Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 03:30:36 +0100 Subject: [PATCH 045/111] rename to plurial --- .../src/entities/{animal => animals}/abstract_horse.rs | 0 .../src/entities/{animal => animals}/axolot.rs | 0 minecraft-server/src/entities/{animal => animals}/bee.rs | 0 minecraft-server/src/entities/{animal => animals}/cat.rs | 0 .../src/entities/{animal => animals}/chicken.rs | 0 minecraft-server/src/entities/{animal => animals}/cow.rs | 0 .../src/entities/{animal => animals}/donkey.rs | 0 minecraft-server/src/entities/{animal => animals}/fox.rs | 0 minecraft-server/src/entities/{animal => animals}/frog.rs | 0 .../src/entities/{animal => animals}/hoglin.rs | 0 .../src/entities/{animal => animals}/horses.rs | 0 .../src/entities/{animal => animals}/llama.rs | 0 minecraft-server/src/entities/{animal => animals}/mod.rs | 0 .../src/entities/{animal => animals}/ocelot.rs | 0 .../src/entities/{animal => animals}/panda.rs | 0 .../src/entities/{animal => animals}/parrot.rs | 0 minecraft-server/src/entities/{animal => animals}/pig.rs | 0 .../src/entities/{animal => animals}/polar_bear.rs | 0 .../src/entities/{animal => animals}/rabbit.rs | 0 .../src/entities/{animal => animals}/sheep.rs | 0 .../src/entities/{animal => animals}/sniffer.rs | 0 .../src/entities/{animal => animals}/strider.rs | 0 .../src/entities/{animal => animals}/tameable_animal.rs | 0 .../src/entities/{animal => animals}/turtle.rs | 0 minecraft-server/src/entities/{animal => animals}/wolf.rs | 0 minecraft-server/src/entities/mod.rs | 8 ++++---- .../src/entities/{monster => monsters}/base_piglin.rs | 0 .../src/entities/{monster => monsters}/blaze.rs | 0 .../src/entities/{monster => monsters}/creeper.rs | 0 .../src/entities/{monster => monsters}/endermite.rs | 0 .../src/entities/{monster => monsters}/giant.rs | 0 .../src/entities/{monster => monsters}/mod.rs | 0 .../src/entities/{monster => monsters}/piglin.rs | 0 33 files changed, 4 insertions(+), 4 deletions(-) rename minecraft-server/src/entities/{animal => animals}/abstract_horse.rs (100%) rename minecraft-server/src/entities/{animal => animals}/axolot.rs (100%) rename minecraft-server/src/entities/{animal => animals}/bee.rs (100%) rename minecraft-server/src/entities/{animal => animals}/cat.rs (100%) rename minecraft-server/src/entities/{animal => animals}/chicken.rs (100%) rename minecraft-server/src/entities/{animal => animals}/cow.rs (100%) rename minecraft-server/src/entities/{animal => animals}/donkey.rs (100%) rename minecraft-server/src/entities/{animal => animals}/fox.rs (100%) rename minecraft-server/src/entities/{animal => animals}/frog.rs (100%) rename minecraft-server/src/entities/{animal => animals}/hoglin.rs (100%) rename minecraft-server/src/entities/{animal => animals}/horses.rs (100%) rename minecraft-server/src/entities/{animal => animals}/llama.rs (100%) rename minecraft-server/src/entities/{animal => animals}/mod.rs (100%) rename minecraft-server/src/entities/{animal => animals}/ocelot.rs (100%) rename minecraft-server/src/entities/{animal => animals}/panda.rs (100%) rename minecraft-server/src/entities/{animal => animals}/parrot.rs (100%) rename minecraft-server/src/entities/{animal => animals}/pig.rs (100%) rename minecraft-server/src/entities/{animal => animals}/polar_bear.rs (100%) rename minecraft-server/src/entities/{animal => animals}/rabbit.rs (100%) rename minecraft-server/src/entities/{animal => animals}/sheep.rs (100%) rename minecraft-server/src/entities/{animal => animals}/sniffer.rs (100%) rename minecraft-server/src/entities/{animal => animals}/strider.rs (100%) rename minecraft-server/src/entities/{animal => animals}/tameable_animal.rs (100%) rename minecraft-server/src/entities/{animal => animals}/turtle.rs (100%) rename minecraft-server/src/entities/{animal => animals}/wolf.rs (100%) rename minecraft-server/src/entities/{monster => monsters}/base_piglin.rs (100%) rename minecraft-server/src/entities/{monster => monsters}/blaze.rs (100%) rename minecraft-server/src/entities/{monster => monsters}/creeper.rs (100%) rename minecraft-server/src/entities/{monster => monsters}/endermite.rs (100%) rename minecraft-server/src/entities/{monster => monsters}/giant.rs (100%) rename minecraft-server/src/entities/{monster => monsters}/mod.rs (100%) rename minecraft-server/src/entities/{monster => monsters}/piglin.rs (100%) diff --git a/minecraft-server/src/entities/animal/abstract_horse.rs b/minecraft-server/src/entities/animals/abstract_horse.rs similarity index 100% rename from minecraft-server/src/entities/animal/abstract_horse.rs rename to minecraft-server/src/entities/animals/abstract_horse.rs diff --git a/minecraft-server/src/entities/animal/axolot.rs b/minecraft-server/src/entities/animals/axolot.rs similarity index 100% rename from minecraft-server/src/entities/animal/axolot.rs rename to minecraft-server/src/entities/animals/axolot.rs diff --git a/minecraft-server/src/entities/animal/bee.rs b/minecraft-server/src/entities/animals/bee.rs similarity index 100% rename from minecraft-server/src/entities/animal/bee.rs rename to minecraft-server/src/entities/animals/bee.rs diff --git a/minecraft-server/src/entities/animal/cat.rs b/minecraft-server/src/entities/animals/cat.rs similarity index 100% rename from minecraft-server/src/entities/animal/cat.rs rename to minecraft-server/src/entities/animals/cat.rs diff --git a/minecraft-server/src/entities/animal/chicken.rs b/minecraft-server/src/entities/animals/chicken.rs similarity index 100% rename from minecraft-server/src/entities/animal/chicken.rs rename to minecraft-server/src/entities/animals/chicken.rs diff --git a/minecraft-server/src/entities/animal/cow.rs b/minecraft-server/src/entities/animals/cow.rs similarity index 100% rename from minecraft-server/src/entities/animal/cow.rs rename to minecraft-server/src/entities/animals/cow.rs diff --git a/minecraft-server/src/entities/animal/donkey.rs b/minecraft-server/src/entities/animals/donkey.rs similarity index 100% rename from minecraft-server/src/entities/animal/donkey.rs rename to minecraft-server/src/entities/animals/donkey.rs diff --git a/minecraft-server/src/entities/animal/fox.rs b/minecraft-server/src/entities/animals/fox.rs similarity index 100% rename from minecraft-server/src/entities/animal/fox.rs rename to minecraft-server/src/entities/animals/fox.rs diff --git a/minecraft-server/src/entities/animal/frog.rs b/minecraft-server/src/entities/animals/frog.rs similarity index 100% rename from minecraft-server/src/entities/animal/frog.rs rename to minecraft-server/src/entities/animals/frog.rs diff --git a/minecraft-server/src/entities/animal/hoglin.rs b/minecraft-server/src/entities/animals/hoglin.rs similarity index 100% rename from minecraft-server/src/entities/animal/hoglin.rs rename to minecraft-server/src/entities/animals/hoglin.rs diff --git a/minecraft-server/src/entities/animal/horses.rs b/minecraft-server/src/entities/animals/horses.rs similarity index 100% rename from minecraft-server/src/entities/animal/horses.rs rename to minecraft-server/src/entities/animals/horses.rs diff --git a/minecraft-server/src/entities/animal/llama.rs b/minecraft-server/src/entities/animals/llama.rs similarity index 100% rename from minecraft-server/src/entities/animal/llama.rs rename to minecraft-server/src/entities/animals/llama.rs diff --git a/minecraft-server/src/entities/animal/mod.rs b/minecraft-server/src/entities/animals/mod.rs similarity index 100% rename from minecraft-server/src/entities/animal/mod.rs rename to minecraft-server/src/entities/animals/mod.rs diff --git a/minecraft-server/src/entities/animal/ocelot.rs b/minecraft-server/src/entities/animals/ocelot.rs similarity index 100% rename from minecraft-server/src/entities/animal/ocelot.rs rename to minecraft-server/src/entities/animals/ocelot.rs diff --git a/minecraft-server/src/entities/animal/panda.rs b/minecraft-server/src/entities/animals/panda.rs similarity index 100% rename from minecraft-server/src/entities/animal/panda.rs rename to minecraft-server/src/entities/animals/panda.rs diff --git a/minecraft-server/src/entities/animal/parrot.rs b/minecraft-server/src/entities/animals/parrot.rs similarity index 100% rename from minecraft-server/src/entities/animal/parrot.rs rename to minecraft-server/src/entities/animals/parrot.rs diff --git a/minecraft-server/src/entities/animal/pig.rs b/minecraft-server/src/entities/animals/pig.rs similarity index 100% rename from minecraft-server/src/entities/animal/pig.rs rename to minecraft-server/src/entities/animals/pig.rs diff --git a/minecraft-server/src/entities/animal/polar_bear.rs b/minecraft-server/src/entities/animals/polar_bear.rs similarity index 100% rename from minecraft-server/src/entities/animal/polar_bear.rs rename to minecraft-server/src/entities/animals/polar_bear.rs diff --git a/minecraft-server/src/entities/animal/rabbit.rs b/minecraft-server/src/entities/animals/rabbit.rs similarity index 100% rename from minecraft-server/src/entities/animal/rabbit.rs rename to minecraft-server/src/entities/animals/rabbit.rs diff --git a/minecraft-server/src/entities/animal/sheep.rs b/minecraft-server/src/entities/animals/sheep.rs similarity index 100% rename from minecraft-server/src/entities/animal/sheep.rs rename to minecraft-server/src/entities/animals/sheep.rs diff --git a/minecraft-server/src/entities/animal/sniffer.rs b/minecraft-server/src/entities/animals/sniffer.rs similarity index 100% rename from minecraft-server/src/entities/animal/sniffer.rs rename to minecraft-server/src/entities/animals/sniffer.rs diff --git a/minecraft-server/src/entities/animal/strider.rs b/minecraft-server/src/entities/animals/strider.rs similarity index 100% rename from minecraft-server/src/entities/animal/strider.rs rename to minecraft-server/src/entities/animals/strider.rs diff --git a/minecraft-server/src/entities/animal/tameable_animal.rs b/minecraft-server/src/entities/animals/tameable_animal.rs similarity index 100% rename from minecraft-server/src/entities/animal/tameable_animal.rs rename to minecraft-server/src/entities/animals/tameable_animal.rs diff --git a/minecraft-server/src/entities/animal/turtle.rs b/minecraft-server/src/entities/animals/turtle.rs similarity index 100% rename from minecraft-server/src/entities/animal/turtle.rs rename to minecraft-server/src/entities/animals/turtle.rs diff --git a/minecraft-server/src/entities/animal/wolf.rs b/minecraft-server/src/entities/animals/wolf.rs similarity index 100% rename from minecraft-server/src/entities/animal/wolf.rs rename to minecraft-server/src/entities/animals/wolf.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index b3cef48e..e3100b1f 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -30,8 +30,8 @@ mod interaction; pub use interaction::*; mod ageable_mob; pub use ageable_mob::*; -mod animal; -pub use animal::*; +mod animals; +pub use animals::*; mod display; pub use display::*; mod villagers; @@ -40,8 +40,8 @@ mod golems; pub use golems::*; mod shulker; pub use shulker::*; -mod monster; -pub use monster::*; +mod monsters; +pub use monsters::*; pub use minecraft_server_derive::{inherit, inheritable}; diff --git a/minecraft-server/src/entities/monster/base_piglin.rs b/minecraft-server/src/entities/monsters/base_piglin.rs similarity index 100% rename from minecraft-server/src/entities/monster/base_piglin.rs rename to minecraft-server/src/entities/monsters/base_piglin.rs diff --git a/minecraft-server/src/entities/monster/blaze.rs b/minecraft-server/src/entities/monsters/blaze.rs similarity index 100% rename from minecraft-server/src/entities/monster/blaze.rs rename to minecraft-server/src/entities/monsters/blaze.rs diff --git a/minecraft-server/src/entities/monster/creeper.rs b/minecraft-server/src/entities/monsters/creeper.rs similarity index 100% rename from minecraft-server/src/entities/monster/creeper.rs rename to minecraft-server/src/entities/monsters/creeper.rs diff --git a/minecraft-server/src/entities/monster/endermite.rs b/minecraft-server/src/entities/monsters/endermite.rs similarity index 100% rename from minecraft-server/src/entities/monster/endermite.rs rename to minecraft-server/src/entities/monsters/endermite.rs diff --git a/minecraft-server/src/entities/monster/giant.rs b/minecraft-server/src/entities/monsters/giant.rs similarity index 100% rename from minecraft-server/src/entities/monster/giant.rs rename to minecraft-server/src/entities/monsters/giant.rs diff --git a/minecraft-server/src/entities/monster/mod.rs b/minecraft-server/src/entities/monsters/mod.rs similarity index 100% rename from minecraft-server/src/entities/monster/mod.rs rename to minecraft-server/src/entities/monsters/mod.rs diff --git a/minecraft-server/src/entities/monster/piglin.rs b/minecraft-server/src/entities/monsters/piglin.rs similarity index 100% rename from minecraft-server/src/entities/monster/piglin.rs rename to minecraft-server/src/entities/monsters/piglin.rs From eda91c672ab74cff1b6896941f61998ddc98e1d7 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 03:32:33 +0100 Subject: [PATCH 046/111] line feed --- minecraft-server/src/entities/animals/horses.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/minecraft-server/src/entities/animals/horses.rs b/minecraft-server/src/entities/animals/horses.rs index 00056ae4..5b289559 100644 --- a/minecraft-server/src/entities/animals/horses.rs +++ b/minecraft-server/src/entities/animals/horses.rs @@ -40,4 +40,4 @@ pub struct ChestedHorse { #[inherit(ChestedHorse, AbstractHorse, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] pub struct Mule { pub chested_horse: ChestedHorse, -} \ No newline at end of file +} From 8a6e04f2977e9bd0d67410a3dc6d26eb29270902 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 03:33:04 +0100 Subject: [PATCH 047/111] line feed --- minecraft-server/src/entities/monsters/creeper.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/minecraft-server/src/entities/monsters/creeper.rs b/minecraft-server/src/entities/monsters/creeper.rs index 797edbae..f9ef9f1a 100644 --- a/minecraft-server/src/entities/monsters/creeper.rs +++ b/minecraft-server/src/entities/monsters/creeper.rs @@ -17,4 +17,4 @@ impl Default for Creeper { is_ignited: false, } } -} \ No newline at end of file +} From fe8d7c2ba431512fc725b9112f823bb1af98d85c Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 15:45:06 +0100 Subject: [PATCH 048/111] Add goat --- minecraft-server/src/entities/animals/goat.rs | 20 +++++++++++++++++++ minecraft-server/src/entities/animals/mod.rs | 3 ++- minecraft-server/src/entities/mod.rs | 2 ++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 minecraft-server/src/entities/animals/goat.rs diff --git a/minecraft-server/src/entities/animals/goat.rs b/minecraft-server/src/entities/animals/goat.rs new file mode 100644 index 00000000..bcacdb3c --- /dev/null +++ b/minecraft-server/src/entities/animals/goat.rs @@ -0,0 +1,20 @@ +use super::*; + +#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Goat { + pub animal: Animal, + pub is_screaming: bool, + pub has_left_horn: bool, + pub has_right_horn: bool, +} + +impl Default for Goat { + fn default() -> Self { + Self { + animal: Animal::default(), + is_screaming: false, + has_left_horn: true, + has_right_horn: true, + } + } +} diff --git a/minecraft-server/src/entities/animals/mod.rs b/minecraft-server/src/entities/animals/mod.rs index a54cdbcf..039d2cbf 100644 --- a/minecraft-server/src/entities/animals/mod.rs +++ b/minecraft-server/src/entities/animals/mod.rs @@ -48,7 +48,8 @@ mod wolf; pub use wolf::*; mod parrot; pub use parrot::*; - +mod goat; +pub use goat::*; #[derive(Default)] #[inheritable] diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index e3100b1f..3bf55750 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -129,6 +129,7 @@ pub enum AnyEntity { Creeper(Creeper), Endermite(Endermite), Giant(Giant), + Goat(Goat) } #[allow(clippy::single_match)] @@ -208,6 +209,7 @@ impl AnyEntity { AnyEntity::Creeper(creeper) => creeper.get_entity(), AnyEntity::Endermite(endermite) => endermite.get_entity(), AnyEntity::Giant(giant) => giant.get_entity(), + AnyEntity::Goat(goat) => goat.get_entity(), } } From ae15197bd3844e03aa334d818e7fb31abe93a08d Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 15:47:40 +0100 Subject: [PATCH 049/111] Add Guardian --- minecraft-server/src/entities/mod.rs | 4 +++- minecraft-server/src/entities/monsters/guardian.rs | 9 +++++++++ minecraft-server/src/entities/monsters/mod.rs | 2 ++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 minecraft-server/src/entities/monsters/guardian.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 3bf55750..e5957e6e 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -129,7 +129,8 @@ pub enum AnyEntity { Creeper(Creeper), Endermite(Endermite), Giant(Giant), - Goat(Goat) + Goat(Goat), + Guardian(Guardian), } #[allow(clippy::single_match)] @@ -210,6 +211,7 @@ impl AnyEntity { AnyEntity::Endermite(endermite) => endermite.get_entity(), AnyEntity::Giant(giant) => giant.get_entity(), AnyEntity::Goat(goat) => goat.get_entity(), + AnyEntity::Guardian(guardian) => guardian.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/guardian.rs b/minecraft-server/src/entities/monsters/guardian.rs new file mode 100644 index 00000000..6e0147d5 --- /dev/null +++ b/minecraft-server/src/entities/monsters/guardian.rs @@ -0,0 +1,9 @@ +use super::*; + +#[derive(Default)] +#[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Guardian { + pub monster: Monster, + pub is_retracting_spikes: bool, + pub target_eid: Eid, +} diff --git a/minecraft-server/src/entities/monsters/mod.rs b/minecraft-server/src/entities/monsters/mod.rs index 278b9607..45a54dea 100644 --- a/minecraft-server/src/entities/monsters/mod.rs +++ b/minecraft-server/src/entities/monsters/mod.rs @@ -12,6 +12,8 @@ mod endermite; pub use endermite::*; mod giant; pub use giant::*; +mod guardian; +pub use guardian::*; #[derive(Default)] #[inheritable] From 02b25b0302618efdee2b4d395c1ca1e36fb82a9c Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 15:49:57 +0100 Subject: [PATCH 050/111] Add ElderGuardian --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/monsters/guardian.rs | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index e5957e6e..d1e952bb 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -131,6 +131,7 @@ pub enum AnyEntity { Giant(Giant), Goat(Goat), Guardian(Guardian), + ElderGuardian(ElderGuardian), } #[allow(clippy::single_match)] @@ -212,6 +213,7 @@ impl AnyEntity { AnyEntity::Giant(giant) => giant.get_entity(), AnyEntity::Goat(goat) => goat.get_entity(), AnyEntity::Guardian(guardian) => guardian.get_entity(), + AnyEntity::ElderGuardian(elder_guardian) => elder_guardian.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/guardian.rs b/minecraft-server/src/entities/monsters/guardian.rs index 6e0147d5..f408a98f 100644 --- a/minecraft-server/src/entities/monsters/guardian.rs +++ b/minecraft-server/src/entities/monsters/guardian.rs @@ -1,9 +1,18 @@ use super::*; #[derive(Default)] +#[inheritable] #[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] pub struct Guardian { pub monster: Monster, pub is_retracting_spikes: bool, pub target_eid: Eid, } + +#[derive(Default)] +#[inheritable] +#[inherit(Guardian, Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct ElderGuardian { + pub guardian: Guardian, +} + From 7eaf45c0a4bc84d7421ac2321d2f9a81ffe421e1 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 15:52:05 +0100 Subject: [PATCH 051/111] Add Silverfish --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/monsters/mod.rs | 2 ++ minecraft-server/src/entities/monsters/silverfish.rs | 8 ++++++++ 3 files changed, 12 insertions(+) create mode 100644 minecraft-server/src/entities/monsters/silverfish.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index d1e952bb..206b1e99 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -132,6 +132,7 @@ pub enum AnyEntity { Goat(Goat), Guardian(Guardian), ElderGuardian(ElderGuardian), + Silverfish(Silverfish), } #[allow(clippy::single_match)] @@ -214,6 +215,7 @@ impl AnyEntity { AnyEntity::Goat(goat) => goat.get_entity(), AnyEntity::Guardian(guardian) => guardian.get_entity(), AnyEntity::ElderGuardian(elder_guardian) => elder_guardian.get_entity(), + AnyEntity::Silverfish(silverfish) => silverfish.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/mod.rs b/minecraft-server/src/entities/monsters/mod.rs index 45a54dea..b31a62b9 100644 --- a/minecraft-server/src/entities/monsters/mod.rs +++ b/minecraft-server/src/entities/monsters/mod.rs @@ -14,6 +14,8 @@ mod giant; pub use giant::*; mod guardian; pub use guardian::*; +mod silverfish; +pub use silverfish::*; #[derive(Default)] #[inheritable] diff --git a/minecraft-server/src/entities/monsters/silverfish.rs b/minecraft-server/src/entities/monsters/silverfish.rs new file mode 100644 index 00000000..ebf5147d --- /dev/null +++ b/minecraft-server/src/entities/monsters/silverfish.rs @@ -0,0 +1,8 @@ +use super::*; + +#[derive(Default)] +#[inheritable] +#[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Silverfish { + pub silverfish: Silverfish, +} From 87f5aa8668a82d2639edee02d733e51772473f4d Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 15:52:21 +0100 Subject: [PATCH 052/111] Fix Silverfish --- minecraft-server/src/entities/monsters/silverfish.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/minecraft-server/src/entities/monsters/silverfish.rs b/minecraft-server/src/entities/monsters/silverfish.rs index ebf5147d..877f13a4 100644 --- a/minecraft-server/src/entities/monsters/silverfish.rs +++ b/minecraft-server/src/entities/monsters/silverfish.rs @@ -4,5 +4,5 @@ use super::*; #[inheritable] #[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] pub struct Silverfish { - pub silverfish: Silverfish, + pub monster: Monster, } From 78453e956c790e9b554af33de029a10d8b5f0bd5 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 15:53:29 +0100 Subject: [PATCH 053/111] Add Raider --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/monsters/mod.rs | 2 ++ minecraft-server/src/entities/monsters/raider.rs | 9 +++++++++ minecraft-server/src/entities/monsters/silverfish.rs | 1 - 4 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 minecraft-server/src/entities/monsters/raider.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 206b1e99..b6c1f12b 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -133,6 +133,7 @@ pub enum AnyEntity { Guardian(Guardian), ElderGuardian(ElderGuardian), Silverfish(Silverfish), + Raider(Raider), } #[allow(clippy::single_match)] @@ -216,6 +217,7 @@ impl AnyEntity { AnyEntity::Guardian(guardian) => guardian.get_entity(), AnyEntity::ElderGuardian(elder_guardian) => elder_guardian.get_entity(), AnyEntity::Silverfish(silverfish) => silverfish.get_entity(), + AnyEntity::Raider(raider) => raider.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/mod.rs b/minecraft-server/src/entities/monsters/mod.rs index b31a62b9..28524843 100644 --- a/minecraft-server/src/entities/monsters/mod.rs +++ b/minecraft-server/src/entities/monsters/mod.rs @@ -16,6 +16,8 @@ mod guardian; pub use guardian::*; mod silverfish; pub use silverfish::*; +mod raider; +pub use raider::*; #[derive(Default)] #[inheritable] diff --git a/minecraft-server/src/entities/monsters/raider.rs b/minecraft-server/src/entities/monsters/raider.rs new file mode 100644 index 00000000..49a8fbf2 --- /dev/null +++ b/minecraft-server/src/entities/monsters/raider.rs @@ -0,0 +1,9 @@ +use super::*; + +#[derive(Default)] +#[inheritable] +#[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Raider { + pub monster: Monster, + pub is_celebrating: bool, +} diff --git a/minecraft-server/src/entities/monsters/silverfish.rs b/minecraft-server/src/entities/monsters/silverfish.rs index 877f13a4..59be1aec 100644 --- a/minecraft-server/src/entities/monsters/silverfish.rs +++ b/minecraft-server/src/entities/monsters/silverfish.rs @@ -1,7 +1,6 @@ use super::*; #[derive(Default)] -#[inheritable] #[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] pub struct Silverfish { pub monster: Monster, From fb01f5195af568294fb660c96cb2b256057a7e7d Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 15:54:35 +0100 Subject: [PATCH 054/111] Add AbstractIllager --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/monsters/raider.rs | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index b6c1f12b..87199bde 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -134,6 +134,7 @@ pub enum AnyEntity { ElderGuardian(ElderGuardian), Silverfish(Silverfish), Raider(Raider), + AbstractIllager(AbstractIllager), } #[allow(clippy::single_match)] @@ -218,6 +219,7 @@ impl AnyEntity { AnyEntity::ElderGuardian(elder_guardian) => elder_guardian.get_entity(), AnyEntity::Silverfish(silverfish) => silverfish.get_entity(), AnyEntity::Raider(raider) => raider.get_entity(), + AnyEntity::AbstractIllager(abstract_illager) => abstract_illager.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/raider.rs b/minecraft-server/src/entities/monsters/raider.rs index 49a8fbf2..cc608058 100644 --- a/minecraft-server/src/entities/monsters/raider.rs +++ b/minecraft-server/src/entities/monsters/raider.rs @@ -7,3 +7,10 @@ pub struct Raider { pub monster: Monster, pub is_celebrating: bool, } + +#[derive(Default)] +#[inheritable] +#[inherit(Raider, Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct AbstractIllager { + pub raider: Raider, +} From cdf6729d4f716da88fb8fc013dd7aa2157222610 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Fri, 3 Nov 2023 15:57:05 +0100 Subject: [PATCH 055/111] Add Pillager --- minecraft-server/src/entities/mod.rs | 4 ++++ minecraft-server/src/entities/monsters/raider.rs | 13 +++++++++++++ 2 files changed, 17 insertions(+) diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 87199bde..6ef1872a 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -135,6 +135,8 @@ pub enum AnyEntity { Silverfish(Silverfish), Raider(Raider), AbstractIllager(AbstractIllager), + Vindicator(Vindicator), + Pillager(Pillager), } #[allow(clippy::single_match)] @@ -220,6 +222,8 @@ impl AnyEntity { AnyEntity::Silverfish(silverfish) => silverfish.get_entity(), AnyEntity::Raider(raider) => raider.get_entity(), AnyEntity::AbstractIllager(abstract_illager) => abstract_illager.get_entity(), + AnyEntity::Vindicator(vindicator) => vindicator.get_entity(), + AnyEntity::Pillager(pillager) => pillager.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/raider.rs b/minecraft-server/src/entities/monsters/raider.rs index cc608058..6999f62a 100644 --- a/minecraft-server/src/entities/monsters/raider.rs +++ b/minecraft-server/src/entities/monsters/raider.rs @@ -14,3 +14,16 @@ pub struct Raider { pub struct AbstractIllager { pub raider: Raider, } + +#[derive(Default)] +#[inherit(AbstractIllager, Raider, Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Vindicator { + pub abstract_illager: AbstractIllager, +} + +#[derive(Default)] +#[inherit(AbstractIllager, Raider, Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Pillager { + pub abstract_illager: AbstractIllager, + pub is_charging: bool, +} From 608f48c9306df8772e62c5aabb2e0ad84e8ad195 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 12:59:09 +0100 Subject: [PATCH 056/111] Fix grammar Axolotl --- .../src/entities/animals/{axolot.rs => axolotl.rs} | 2 +- minecraft-server/src/entities/animals/mod.rs | 4 ++-- minecraft-server/src/entities/mod.rs | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) rename minecraft-server/src/entities/animals/{axolot.rs => axolotl.rs} (91%) diff --git a/minecraft-server/src/entities/animals/axolot.rs b/minecraft-server/src/entities/animals/axolotl.rs similarity index 91% rename from minecraft-server/src/entities/animals/axolot.rs rename to minecraft-server/src/entities/animals/axolotl.rs index c3f9d7d8..4ddfc5dd 100644 --- a/minecraft-server/src/entities/animals/axolot.rs +++ b/minecraft-server/src/entities/animals/axolotl.rs @@ -2,7 +2,7 @@ use super::*; #[derive(Default)] #[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] -pub struct Axolot { +pub struct Axolott { pub animal: Animal, pub variant: u8, pub playing_dead: bool, diff --git a/minecraft-server/src/entities/animals/mod.rs b/minecraft-server/src/entities/animals/mod.rs index 039d2cbf..ddf07b3c 100644 --- a/minecraft-server/src/entities/animals/mod.rs +++ b/minecraft-server/src/entities/animals/mod.rs @@ -10,8 +10,8 @@ mod donkey; pub use donkey::*; mod llama; pub use llama::*; -mod axolot; -pub use axolot::*; +mod axolotl; +pub use axolotl::*; mod bee; pub use bee::*; mod fox; diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 6ef1872a..53837409 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -94,7 +94,7 @@ pub enum AnyEntity { Llama(Llama), TraderLlama(TraderLlama), Mule(Mule), - Axolot(Axolot), + Axolott(Axolott), Bee(Bee), Fox(Fox), Frog(Frog), @@ -181,7 +181,7 @@ impl AnyEntity { AnyEntity::Llama(llama) => llama.get_entity(), AnyEntity::TraderLlama(trader_llama) => trader_llama.get_entity(), AnyEntity::Mule(mule) => mule.get_entity(), - AnyEntity::Axolot(axolot) => axolot.get_entity(), + AnyEntity::Axolott(axolotl) => axolotl.get_entity(), AnyEntity::Bee(bee) => bee.get_entity(), AnyEntity::Fox(fox) => fox.get_entity(), AnyEntity::Frog(frog) => frog.get_entity(), From 3427b47f4ab3e5a596d063d00921455031b53665 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 13:06:36 +0100 Subject: [PATCH 057/111] Add SpellcasterIllager --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/monsters/mod.rs | 2 ++ .../src/entities/monsters/spellcaster_illager.rs | 9 +++++++++ 3 files changed, 13 insertions(+) create mode 100644 minecraft-server/src/entities/monsters/spellcaster_illager.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 53837409..8e33ad2a 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -137,6 +137,7 @@ pub enum AnyEntity { AbstractIllager(AbstractIllager), Vindicator(Vindicator), Pillager(Pillager), + SpellcasterIllager(SpellcasterIllager), } #[allow(clippy::single_match)] @@ -224,6 +225,7 @@ impl AnyEntity { AnyEntity::AbstractIllager(abstract_illager) => abstract_illager.get_entity(), AnyEntity::Vindicator(vindicator) => vindicator.get_entity(), AnyEntity::Pillager(pillager) => pillager.get_entity(), + AnyEntity::SpellcasterIllager(spellcaster_illager) => spellcaster_illager.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/mod.rs b/minecraft-server/src/entities/monsters/mod.rs index 28524843..8fc6330b 100644 --- a/minecraft-server/src/entities/monsters/mod.rs +++ b/minecraft-server/src/entities/monsters/mod.rs @@ -18,6 +18,8 @@ mod silverfish; pub use silverfish::*; mod raider; pub use raider::*; +mod spellcaster_illager; +pub use spellcaster_illager::*; #[derive(Default)] #[inheritable] diff --git a/minecraft-server/src/entities/monsters/spellcaster_illager.rs b/minecraft-server/src/entities/monsters/spellcaster_illager.rs new file mode 100644 index 00000000..1d72e667 --- /dev/null +++ b/minecraft-server/src/entities/monsters/spellcaster_illager.rs @@ -0,0 +1,9 @@ +use super::*; + +#[derive(Default)] +#[inheritable] +#[inherit(AbstractIllager, Raider, Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct SpellcasterIllager { + pub abstract_illager: AbstractIllager, + pub spell: u8, +} From 9484b122b3d7a7a7ebd7215a9ad0eb51b00ce970 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 13:08:03 +0100 Subject: [PATCH 058/111] Add Evoker --- minecraft-server/src/entities/mod.rs | 2 ++ .../src/entities/monsters/spellcaster_illager.rs | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 8e33ad2a..94687f62 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -138,6 +138,7 @@ pub enum AnyEntity { Vindicator(Vindicator), Pillager(Pillager), SpellcasterIllager(SpellcasterIllager), + Evoker(Evoker), } #[allow(clippy::single_match)] @@ -226,6 +227,7 @@ impl AnyEntity { AnyEntity::Vindicator(vindicator) => vindicator.get_entity(), AnyEntity::Pillager(pillager) => pillager.get_entity(), AnyEntity::SpellcasterIllager(spellcaster_illager) => spellcaster_illager.get_entity(), + AnyEntity::Evoker(evoker) => evoker.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/spellcaster_illager.rs b/minecraft-server/src/entities/monsters/spellcaster_illager.rs index 1d72e667..b6bffd44 100644 --- a/minecraft-server/src/entities/monsters/spellcaster_illager.rs +++ b/minecraft-server/src/entities/monsters/spellcaster_illager.rs @@ -7,3 +7,9 @@ pub struct SpellcasterIllager { pub abstract_illager: AbstractIllager, pub spell: u8, } + +#[derive(Default)] +#[inherit(SpellcasterIllager, AbstractIllager, Raider, Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Evoker { + pub spellcaster_illager: SpellcasterIllager, +} From 2f7ab86de02ad422484a2bed60ab89e8436da41f Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 13:08:31 +0100 Subject: [PATCH 059/111] Add Illusioner --- minecraft-server/src/entities/mod.rs | 2 ++ .../src/entities/monsters/spellcaster_illager.rs | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 94687f62..70597b7b 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -139,6 +139,7 @@ pub enum AnyEntity { Pillager(Pillager), SpellcasterIllager(SpellcasterIllager), Evoker(Evoker), + Illusioner(Illusioner), } #[allow(clippy::single_match)] @@ -228,6 +229,7 @@ impl AnyEntity { AnyEntity::Pillager(pillager) => pillager.get_entity(), AnyEntity::SpellcasterIllager(spellcaster_illager) => spellcaster_illager.get_entity(), AnyEntity::Evoker(evoker) => evoker.get_entity(), + AnyEntity::Illusioner(illusioner) => illusioner.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/spellcaster_illager.rs b/minecraft-server/src/entities/monsters/spellcaster_illager.rs index b6bffd44..4eec3a48 100644 --- a/minecraft-server/src/entities/monsters/spellcaster_illager.rs +++ b/minecraft-server/src/entities/monsters/spellcaster_illager.rs @@ -13,3 +13,9 @@ pub struct SpellcasterIllager { pub struct Evoker { pub spellcaster_illager: SpellcasterIllager, } + +#[derive(Default)] +#[inherit(SpellcasterIllager, AbstractIllager, Raider, Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Illusioner { + pub spellcaster_illager: SpellcasterIllager, +} From d664b71155dbb7d74c874540e518b8a99e315b86 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 13:08:58 +0100 Subject: [PATCH 060/111] Add Ravager --- minecraft-server/src/entities/mod.rs | 2 ++ .../src/entities/monsters/spellcaster_illager.rs | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 70597b7b..d47bdaba 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -140,6 +140,7 @@ pub enum AnyEntity { SpellcasterIllager(SpellcasterIllager), Evoker(Evoker), Illusioner(Illusioner), + Ravager(Ravager), } #[allow(clippy::single_match)] @@ -230,6 +231,7 @@ impl AnyEntity { AnyEntity::SpellcasterIllager(spellcaster_illager) => spellcaster_illager.get_entity(), AnyEntity::Evoker(evoker) => evoker.get_entity(), AnyEntity::Illusioner(illusioner) => illusioner.get_entity(), + AnyEntity::Ravager(ravager) => ravager.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/spellcaster_illager.rs b/minecraft-server/src/entities/monsters/spellcaster_illager.rs index 4eec3a48..430d558f 100644 --- a/minecraft-server/src/entities/monsters/spellcaster_illager.rs +++ b/minecraft-server/src/entities/monsters/spellcaster_illager.rs @@ -19,3 +19,9 @@ pub struct Evoker { pub struct Illusioner { pub spellcaster_illager: SpellcasterIllager, } + +#[derive(Default)] +#[inherit(SpellcasterIllager, AbstractIllager, Raider, Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Ravager { + pub spellcaster_illager: SpellcasterIllager, +} From 86a3d56d63f334fb784a39f5f04a9741062b2f55 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 13:11:42 +0100 Subject: [PATCH 061/111] Add Witch --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/monsters/mod.rs | 2 ++ minecraft-server/src/entities/monsters/witch.rs | 8 ++++++++ 3 files changed, 12 insertions(+) create mode 100644 minecraft-server/src/entities/monsters/witch.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index d47bdaba..8bc57e63 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -141,6 +141,7 @@ pub enum AnyEntity { Evoker(Evoker), Illusioner(Illusioner), Ravager(Ravager), + Witch(Witch), } #[allow(clippy::single_match)] @@ -232,6 +233,7 @@ impl AnyEntity { AnyEntity::Evoker(evoker) => evoker.get_entity(), AnyEntity::Illusioner(illusioner) => illusioner.get_entity(), AnyEntity::Ravager(ravager) => ravager.get_entity(), + AnyEntity::Witch(witch) => witch.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/mod.rs b/minecraft-server/src/entities/monsters/mod.rs index 8fc6330b..e208d4ee 100644 --- a/minecraft-server/src/entities/monsters/mod.rs +++ b/minecraft-server/src/entities/monsters/mod.rs @@ -20,6 +20,8 @@ mod raider; pub use raider::*; mod spellcaster_illager; pub use spellcaster_illager::*; +mod witch; +pub use witch::*; #[derive(Default)] #[inheritable] diff --git a/minecraft-server/src/entities/monsters/witch.rs b/minecraft-server/src/entities/monsters/witch.rs new file mode 100644 index 00000000..9b3d2076 --- /dev/null +++ b/minecraft-server/src/entities/monsters/witch.rs @@ -0,0 +1,8 @@ +use super::*; + +#[derive(Default)] +#[inherit(Raider, Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Witch { + pub raider: Raider, + pub is_drinking_potion: bool, +} From b94aaf72efc0b24f850cbda99eede44201c938d9 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 13:18:09 +0100 Subject: [PATCH 062/111] Add EvokerFangs --- minecraft-server/src/entities/mod.rs | 2 ++ .../src/entities/monsters/spellcaster_illager.rs | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 8bc57e63..bcd8eddc 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -142,6 +142,7 @@ pub enum AnyEntity { Illusioner(Illusioner), Ravager(Ravager), Witch(Witch), + EvokerFangs(EvokerFangs), } #[allow(clippy::single_match)] @@ -234,6 +235,7 @@ impl AnyEntity { AnyEntity::Illusioner(illusioner) => illusioner.get_entity(), AnyEntity::Ravager(ravager) => ravager.get_entity(), AnyEntity::Witch(witch) => witch.get_entity(), + AnyEntity::EvokerFangs(evoker_fangs) => evoker_fangs.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/spellcaster_illager.rs b/minecraft-server/src/entities/monsters/spellcaster_illager.rs index 430d558f..b04aba35 100644 --- a/minecraft-server/src/entities/monsters/spellcaster_illager.rs +++ b/minecraft-server/src/entities/monsters/spellcaster_illager.rs @@ -14,6 +14,12 @@ pub struct Evoker { pub spellcaster_illager: SpellcasterIllager, } +#[derive(Default)] +#[inherit(Entity)] +pub struct EvokerFangs { + pub entity: Entity, +} + #[derive(Default)] #[inherit(SpellcasterIllager, AbstractIllager, Raider, Monster, PathfinderMob, Mob, LivingEntity, Entity)] pub struct Illusioner { From 5c88e4d5874366ea59e7732ae1de1c8d49a726f3 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 13:20:42 +0100 Subject: [PATCH 063/111] Add Vex --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/monsters/mod.rs | 2 ++ minecraft-server/src/entities/monsters/vex.rs | 7 +++++++ 3 files changed, 11 insertions(+) create mode 100644 minecraft-server/src/entities/monsters/vex.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index bcd8eddc..bbd4f30e 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -143,6 +143,7 @@ pub enum AnyEntity { Ravager(Ravager), Witch(Witch), EvokerFangs(EvokerFangs), + Vex(Vex), } #[allow(clippy::single_match)] @@ -236,6 +237,7 @@ impl AnyEntity { AnyEntity::Ravager(ravager) => ravager.get_entity(), AnyEntity::Witch(witch) => witch.get_entity(), AnyEntity::EvokerFangs(evoker_fangs) => evoker_fangs.get_entity(), + AnyEntity::Vex(vex) => vex.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/mod.rs b/minecraft-server/src/entities/monsters/mod.rs index e208d4ee..b2fab603 100644 --- a/minecraft-server/src/entities/monsters/mod.rs +++ b/minecraft-server/src/entities/monsters/mod.rs @@ -22,6 +22,8 @@ mod spellcaster_illager; pub use spellcaster_illager::*; mod witch; pub use witch::*; +mod vex; +pub use vex::*; #[derive(Default)] #[inheritable] diff --git a/minecraft-server/src/entities/monsters/vex.rs b/minecraft-server/src/entities/monsters/vex.rs new file mode 100644 index 00000000..f8f63b08 --- /dev/null +++ b/minecraft-server/src/entities/monsters/vex.rs @@ -0,0 +1,7 @@ +use super::*; + +#[derive(Default)] +#[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Vex { + pub monster: Monster, +} From 9c82f2497c27191f28e651bb9267993bf749a196 Mon Sep 17 00:00:00 2001 From: Mubelotix Date: Fri, 3 Nov 2023 01:49:45 +0100 Subject: [PATCH 064/111] Add entity getters and setters --- minecraft-server/src/ecs/entities.rs | 54 ++++++++-------------------- 1 file changed, 15 insertions(+), 39 deletions(-) diff --git a/minecraft-server/src/ecs/entities.rs b/minecraft-server/src/ecs/entities.rs index a170c938..98cd7240 100644 --- a/minecraft-server/src/ecs/entities.rs +++ b/minecraft-server/src/ecs/entities.rs @@ -1,24 +1,11 @@ -use crate::prelude::*; +use crate::{prelude::*, entities::AnyEntity}; use minecraft_protocol::packets::UUID; use super::tags::Tag; pub type Eid = u32; -#[derive(Clone, PartialEq, Eq)] -pub struct Entity { - /// The entity's unique ID. In the current world - /// this is unique at any given time but may be - /// reused when an entity is removed for another - id: Eid, - /// Components attached to this entity - components: HashSet, - /// The entity tag - tag: Tag, -} - - pub struct Entities { - pub entities: RwLock>, + pub entities: RwLock>, /// A hashmap of chunk positions to get a list of entities in a chunk pub chunks: RwLock>>, @@ -29,34 +16,23 @@ pub struct Entities { pub position_components: RwLock>, } - impl Entities { - /// Query a specific entity - pub async fn get_entity(&self, id: Eid) -> Option { - self.entities.read().await.get(&id).cloned() + /// Observe an entity through a closure + pub async fn observe_entity(&self, eid: Eid, observer: impl FnOnce(&AnyEntity)) { + if let Some(entity) = self.entities.read().await.get(&eid) { + observer(entity); + } } - /// Query an entity by his tag - pub async fn get_entities_by_tag(&self, tag: Tag) -> HashSet { - self.entities_by_tag.read().await.get(&tag).cloned().unwrap_or_default() + /// Mutate an entity through a closure + pub async fn mutate_entity(&self, eid: Eid, mutator: impl FnOnce(&mut AnyEntity)) { + if let Some(entity) = self.entities.write().await.get_mut(&eid) { + mutator(entity); + } } - /// Query an entity by his components - /// We get all tags that have the components - pub async fn get_entities_with(&self, components: HashSet) -> Vec { - // We get all tags that have the components - let mut tags = Tag::get_tags_from_components(components.clone()); - // We get all entities that have the tags - let mut entities = Vec::new(); - for tag in tags.drain() { - let mut entities_with_tag = self.get_entities_by_tag(tag).await; - for entity in entities_with_tag.drain() { - // TODO: remove this check but add an error handling - if let Some(entity) = self.get_entity(entity).await { - entities.push(entity); - } - } - } - entities + /// Remove an entity + pub async fn remove_entity(&self, eid: Eid) -> Option { + self.entities.write().await.remove(&eid) } } From 4cb23222905874dd1d39f32ec6d76e21e83035cc Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 13:33:48 +0100 Subject: [PATCH 065/111] Add Skeleton --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/monsters/mod.rs | 2 ++ minecraft-server/src/entities/monsters/skeleton.rs | 8 ++++++++ 3 files changed, 12 insertions(+) create mode 100644 minecraft-server/src/entities/monsters/skeleton.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index bbd4f30e..0a824675 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -144,6 +144,7 @@ pub enum AnyEntity { Witch(Witch), EvokerFangs(EvokerFangs), Vex(Vex), + Skeleton(Skeleton), } #[allow(clippy::single_match)] @@ -238,6 +239,7 @@ impl AnyEntity { AnyEntity::Witch(witch) => witch.get_entity(), AnyEntity::EvokerFangs(evoker_fangs) => evoker_fangs.get_entity(), AnyEntity::Vex(vex) => vex.get_entity(), + AnyEntity::Skeleton(skeleton) => skeleton.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/mod.rs b/minecraft-server/src/entities/monsters/mod.rs index b2fab603..232f13ff 100644 --- a/minecraft-server/src/entities/monsters/mod.rs +++ b/minecraft-server/src/entities/monsters/mod.rs @@ -24,6 +24,8 @@ mod witch; pub use witch::*; mod vex; pub use vex::*; +mod skeleton; +pub use skeleton::*; #[derive(Default)] #[inheritable] diff --git a/minecraft-server/src/entities/monsters/skeleton.rs b/minecraft-server/src/entities/monsters/skeleton.rs new file mode 100644 index 00000000..ff43ab4a --- /dev/null +++ b/minecraft-server/src/entities/monsters/skeleton.rs @@ -0,0 +1,8 @@ +use super::*; + +#[derive(Default)] +#[inheritable] +#[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Skeleton { + pub monster: Monster, +} From 09ac73ed762d837fed2fd2c5c4946c3374f078e0 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 13:36:10 +0100 Subject: [PATCH 066/111] Add Skeleton --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/monsters/skeleton.rs | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 0a824675..7cb4acdc 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -145,6 +145,7 @@ pub enum AnyEntity { EvokerFangs(EvokerFangs), Vex(Vex), Skeleton(Skeleton), + AbstractSkeleton(AbstractSkeleton), } #[allow(clippy::single_match)] @@ -240,6 +241,7 @@ impl AnyEntity { AnyEntity::EvokerFangs(evoker_fangs) => evoker_fangs.get_entity(), AnyEntity::Vex(vex) => vex.get_entity(), AnyEntity::Skeleton(skeleton) => skeleton.get_entity(), + AnyEntity::AbstractSkeleton(abstract_skeleton) => abstract_skeleton.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/skeleton.rs b/minecraft-server/src/entities/monsters/skeleton.rs index ff43ab4a..eaa0fa88 100644 --- a/minecraft-server/src/entities/monsters/skeleton.rs +++ b/minecraft-server/src/entities/monsters/skeleton.rs @@ -3,6 +3,12 @@ use super::*; #[derive(Default)] #[inheritable] #[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] -pub struct Skeleton { +pub struct AbstractSkeleton { pub monster: Monster, } + +#[derive(Default)] +#[inherit(AbstractSkeleton, Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Skeleton { + pub abstract_skeleton: AbstractSkeleton, +} From 84237bbcd6629cff65cd87dfbb37da8eecbae814 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 13:44:54 +0100 Subject: [PATCH 067/111] Add Stray & WitherSkeleton --- minecraft-server/src/entities/mod.rs | 6 +++++- minecraft-server/src/entities/monsters/skeleton.rs | 12 ++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 7cb4acdc..0a5ae050 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -146,6 +146,8 @@ pub enum AnyEntity { Vex(Vex), Skeleton(Skeleton), AbstractSkeleton(AbstractSkeleton), + WitherSkeleton(WitherSkeleton), + Stray(Stray), } #[allow(clippy::single_match)] @@ -241,7 +243,9 @@ impl AnyEntity { AnyEntity::EvokerFangs(evoker_fangs) => evoker_fangs.get_entity(), AnyEntity::Vex(vex) => vex.get_entity(), AnyEntity::Skeleton(skeleton) => skeleton.get_entity(), - AnyEntity::AbstractSkeleton(abstract_skeleton) => abstract_skeleton.get_entity(), + AnyEntity::AbstractSkeleton(abstract_skeleton) => abstract_skeleton.get_entity(), + AnyEntity::WitherSkeleton(wither_skeleton) => wither_skeleton.get_entity(), + AnyEntity::Stray(stray) => stray.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/skeleton.rs b/minecraft-server/src/entities/monsters/skeleton.rs index eaa0fa88..d3a704cd 100644 --- a/minecraft-server/src/entities/monsters/skeleton.rs +++ b/minecraft-server/src/entities/monsters/skeleton.rs @@ -12,3 +12,15 @@ pub struct AbstractSkeleton { pub struct Skeleton { pub abstract_skeleton: AbstractSkeleton, } + +#[derive(Default)] +#[inherit(AbstractSkeleton, Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct WitherSkeleton { + pub abstract_skeleton: AbstractSkeleton, +} + +#[derive(Default)] +#[inherit(AbstractSkeleton, Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Stray { + pub abstract_skeleton: AbstractSkeleton, +} From 3b3999bfb2f9d249ef9384bca004a745ea12d65b Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 13:47:25 +0100 Subject: [PATCH 068/111] Add Spider --- minecraft-server/src/entities/mod.rs | 4 +++- minecraft-server/src/entities/monsters/mod.rs | 2 ++ minecraft-server/src/entities/monsters/spider.rs | 7 +++++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 minecraft-server/src/entities/monsters/spider.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 0a5ae050..789e1512 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -148,6 +148,7 @@ pub enum AnyEntity { AbstractSkeleton(AbstractSkeleton), WitherSkeleton(WitherSkeleton), Stray(Stray), + Spider(Spider), } #[allow(clippy::single_match)] @@ -245,7 +246,8 @@ impl AnyEntity { AnyEntity::Skeleton(skeleton) => skeleton.get_entity(), AnyEntity::AbstractSkeleton(abstract_skeleton) => abstract_skeleton.get_entity(), AnyEntity::WitherSkeleton(wither_skeleton) => wither_skeleton.get_entity(), - AnyEntity::Stray(stray) => stray.get_entity(), + AnyEntity::Stray(stray) => stray.get_entity(), + AnyEntity::Spider(spider) => spider.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/mod.rs b/minecraft-server/src/entities/monsters/mod.rs index 232f13ff..5d7f3cd5 100644 --- a/minecraft-server/src/entities/monsters/mod.rs +++ b/minecraft-server/src/entities/monsters/mod.rs @@ -26,6 +26,8 @@ mod vex; pub use vex::*; mod skeleton; pub use skeleton::*; +mod spider; +pub use spider::*; #[derive(Default)] #[inheritable] diff --git a/minecraft-server/src/entities/monsters/spider.rs b/minecraft-server/src/entities/monsters/spider.rs new file mode 100644 index 00000000..f77f5f11 --- /dev/null +++ b/minecraft-server/src/entities/monsters/spider.rs @@ -0,0 +1,7 @@ +use super::*; + +#[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Spider { + pub monster: Monster, + pub is_climbing_mask: u8, +} From 990cb5aa787fd9239927fb37b34ec300f6a31088 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 13:49:47 +0100 Subject: [PATCH 069/111] Add Warden --- minecraft-server/src/entities/mod.rs | 4 +++- minecraft-server/src/entities/monsters/mod.rs | 2 ++ minecraft-server/src/entities/monsters/warden.rs | 9 +++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 minecraft-server/src/entities/monsters/warden.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 789e1512..6c85e195 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -149,6 +149,7 @@ pub enum AnyEntity { WitherSkeleton(WitherSkeleton), Stray(Stray), Spider(Spider), + Warden(Warden), } #[allow(clippy::single_match)] @@ -248,7 +249,8 @@ impl AnyEntity { AnyEntity::WitherSkeleton(wither_skeleton) => wither_skeleton.get_entity(), AnyEntity::Stray(stray) => stray.get_entity(), AnyEntity::Spider(spider) => spider.get_entity(), - } + AnyEntity::Warden(warden) => warden.get_entity(), + } } pub fn as_display(&self) -> Option<&Display> { diff --git a/minecraft-server/src/entities/monsters/mod.rs b/minecraft-server/src/entities/monsters/mod.rs index 5d7f3cd5..4bd921a9 100644 --- a/minecraft-server/src/entities/monsters/mod.rs +++ b/minecraft-server/src/entities/monsters/mod.rs @@ -28,6 +28,8 @@ mod skeleton; pub use skeleton::*; mod spider; pub use spider::*; +mod warden; +pub use warden::*; #[derive(Default)] #[inheritable] diff --git a/minecraft-server/src/entities/monsters/warden.rs b/minecraft-server/src/entities/monsters/warden.rs new file mode 100644 index 00000000..ad99afaa --- /dev/null +++ b/minecraft-server/src/entities/monsters/warden.rs @@ -0,0 +1,9 @@ +use super::*; + +#[derive(Default)] +#[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Warden { + pub monster: Monster, + pub anger_level: usize, +} + From 3217fc5394956fe180ca0b0b888e952d31294158 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 13:54:20 +0100 Subject: [PATCH 070/111] Add Wither --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/monsters/mod.rs | 2 ++ minecraft-server/src/entities/monsters/wither.rs | 10 ++++++++++ 3 files changed, 14 insertions(+) create mode 100644 minecraft-server/src/entities/monsters/wither.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 6c85e195..7374d624 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -150,6 +150,7 @@ pub enum AnyEntity { Stray(Stray), Spider(Spider), Warden(Warden), + Wither(Wither), } #[allow(clippy::single_match)] @@ -250,6 +251,7 @@ impl AnyEntity { AnyEntity::Stray(stray) => stray.get_entity(), AnyEntity::Spider(spider) => spider.get_entity(), AnyEntity::Warden(warden) => warden.get_entity(), + AnyEntity::Wither(wither) => wither.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/mod.rs b/minecraft-server/src/entities/monsters/mod.rs index 4bd921a9..c359ad18 100644 --- a/minecraft-server/src/entities/monsters/mod.rs +++ b/minecraft-server/src/entities/monsters/mod.rs @@ -30,6 +30,8 @@ mod spider; pub use spider::*; mod warden; pub use warden::*; +mod wither; +pub use wither::*; #[derive(Default)] #[inheritable] diff --git a/minecraft-server/src/entities/monsters/wither.rs b/minecraft-server/src/entities/monsters/wither.rs new file mode 100644 index 00000000..89c219ae --- /dev/null +++ b/minecraft-server/src/entities/monsters/wither.rs @@ -0,0 +1,10 @@ +use super::*; + +#[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Wither { + pub monster: Monster, + pub center_head_target: Option, + pub left_head_target: Option, + pub right_head: Option, + pub invulnerable_time: usize, +} From c2fbc7508f2e26dae652b6d9e1b42820b1d6a70f Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 13:56:14 +0100 Subject: [PATCH 071/111] Add Zoglin --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/monsters/mod.rs | 2 ++ minecraft-server/src/entities/monsters/zoglin.rs | 8 ++++++++ 3 files changed, 12 insertions(+) create mode 100644 minecraft-server/src/entities/monsters/zoglin.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 7374d624..1e383e86 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -151,6 +151,7 @@ pub enum AnyEntity { Spider(Spider), Warden(Warden), Wither(Wither), + Zoglin(Zoglin), } #[allow(clippy::single_match)] @@ -252,6 +253,7 @@ impl AnyEntity { AnyEntity::Spider(spider) => spider.get_entity(), AnyEntity::Warden(warden) => warden.get_entity(), AnyEntity::Wither(wither) => wither.get_entity(), + AnyEntity::Zoglin(zoglin) => zoglin.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/mod.rs b/minecraft-server/src/entities/monsters/mod.rs index c359ad18..2fd7cd2c 100644 --- a/minecraft-server/src/entities/monsters/mod.rs +++ b/minecraft-server/src/entities/monsters/mod.rs @@ -32,6 +32,8 @@ mod warden; pub use warden::*; mod wither; pub use wither::*; +mod zoglin; +pub use zoglin::*; #[derive(Default)] #[inheritable] diff --git a/minecraft-server/src/entities/monsters/zoglin.rs b/minecraft-server/src/entities/monsters/zoglin.rs new file mode 100644 index 00000000..a59b7365 --- /dev/null +++ b/minecraft-server/src/entities/monsters/zoglin.rs @@ -0,0 +1,8 @@ +use super::*; + +#[derive(Default)] +#[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Zoglin { + pub monster: Monster, + pub is_baby: bool, +} From 317b5f48eba3f31b752f2ecfc8b18d6c655f8582 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 13:58:19 +0100 Subject: [PATCH 072/111] Add Zombie base --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/monsters/mod.rs | 2 ++ minecraft-server/src/entities/monsters/zombies.rs | 11 +++++++++++ 3 files changed, 15 insertions(+) create mode 100644 minecraft-server/src/entities/monsters/zombies.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 1e383e86..7a415642 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -152,6 +152,7 @@ pub enum AnyEntity { Warden(Warden), Wither(Wither), Zoglin(Zoglin), + Zombie(Zombie), } #[allow(clippy::single_match)] @@ -254,6 +255,7 @@ impl AnyEntity { AnyEntity::Warden(warden) => warden.get_entity(), AnyEntity::Wither(wither) => wither.get_entity(), AnyEntity::Zoglin(zoglin) => zoglin.get_entity(), + AnyEntity::Zombie(zombie) => zombie.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/mod.rs b/minecraft-server/src/entities/monsters/mod.rs index 2fd7cd2c..acd4585d 100644 --- a/minecraft-server/src/entities/monsters/mod.rs +++ b/minecraft-server/src/entities/monsters/mod.rs @@ -34,6 +34,8 @@ mod wither; pub use wither::*; mod zoglin; pub use zoglin::*; +mod zombies; +pub use zombies::*; #[derive(Default)] #[inheritable] diff --git a/minecraft-server/src/entities/monsters/zombies.rs b/minecraft-server/src/entities/monsters/zombies.rs new file mode 100644 index 00000000..09d0bb3d --- /dev/null +++ b/minecraft-server/src/entities/monsters/zombies.rs @@ -0,0 +1,11 @@ +use super::*; + +#[derive(Default)] +#[inheritable] +#[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Zombie { + pub monster: Monster, + pub is_baby: bool, + pub unused: isize, + pub is_becoming_drowned: bool, +} From cc27ee54cf086751ec8d99684eae42659a2ade8b Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 14:01:26 +0100 Subject: [PATCH 073/111] Add some Zombies --- minecraft-server/src/entities/mod.rs | 8 ++++++ .../src/entities/monsters/zombies.rs | 26 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 7a415642..a4da008b 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -153,6 +153,10 @@ pub enum AnyEntity { Wither(Wither), Zoglin(Zoglin), Zombie(Zombie), + ZombieVillager(ZombieVillager), + Husk(Husk), + Drowned(Drowned), + ZombifiedPiglin(ZombifiedPiglin), } #[allow(clippy::single_match)] @@ -256,6 +260,10 @@ impl AnyEntity { AnyEntity::Wither(wither) => wither.get_entity(), AnyEntity::Zoglin(zoglin) => zoglin.get_entity(), AnyEntity::Zombie(zombie) => zombie.get_entity(), + AnyEntity::ZombieVillager(zombie_villager) => zombie_villager.get_entity(), + AnyEntity::Husk(husk) => husk.get_entity(), + AnyEntity::Drowned(drowned) => drowned.get_entity(), + AnyEntity::ZombifiedPiglin(zombified_piglin) => zombified_piglin.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/zombies.rs b/minecraft-server/src/entities/monsters/zombies.rs index 09d0bb3d..b8153662 100644 --- a/minecraft-server/src/entities/monsters/zombies.rs +++ b/minecraft-server/src/entities/monsters/zombies.rs @@ -9,3 +9,29 @@ pub struct Zombie { pub unused: isize, pub is_becoming_drowned: bool, } + +#[derive(Default)] +#[inherit(Zombie, Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct ZombieVillager { + pub zombie: Zombie, + pub is_converting: bool, + pub villager_data: Vec, +} + +#[derive(Default)] +#[inherit(Zombie, Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Husk { + pub zombie: Zombie, +} + +#[derive(Default)] +#[inherit(Zombie, Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Drowned { + pub zombie: Zombie, +} + +#[derive(Default)] +#[inherit(Zombie, Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct ZombifiedPiglin { + pub zombie: Zombie, +} From c5beda49f641ceec27018daf01bf341a37c09449 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 14:05:06 +0100 Subject: [PATCH 074/111] Add Enderman --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/monsters/enderman.rs | 11 +++++++++++ minecraft-server/src/entities/monsters/mod.rs | 2 ++ 3 files changed, 15 insertions(+) create mode 100644 minecraft-server/src/entities/monsters/enderman.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index a4da008b..879e6127 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -157,6 +157,7 @@ pub enum AnyEntity { Husk(Husk), Drowned(Drowned), ZombifiedPiglin(ZombifiedPiglin), + Enderman(Enderman), } #[allow(clippy::single_match)] @@ -264,6 +265,7 @@ impl AnyEntity { AnyEntity::Husk(husk) => husk.get_entity(), AnyEntity::Drowned(drowned) => drowned.get_entity(), AnyEntity::ZombifiedPiglin(zombified_piglin) => zombified_piglin.get_entity(), + AnyEntity::Enderman(enderman) => enderman.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/enderman.rs b/minecraft-server/src/entities/monsters/enderman.rs new file mode 100644 index 00000000..c14ecdb3 --- /dev/null +++ b/minecraft-server/src/entities/monsters/enderman.rs @@ -0,0 +1,11 @@ +use minecraft_protocol::ids::blocks::Block; + +use super::*; + +#[inherit(Monster, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Enderman { + pub monster: Monster, + pub block_id: Option, + pub is_screaming: bool, + pub is_staring: bool, +} diff --git a/minecraft-server/src/entities/monsters/mod.rs b/minecraft-server/src/entities/monsters/mod.rs index acd4585d..fd1d8fb3 100644 --- a/minecraft-server/src/entities/monsters/mod.rs +++ b/minecraft-server/src/entities/monsters/mod.rs @@ -36,6 +36,8 @@ mod zoglin; pub use zoglin::*; mod zombies; pub use zombies::*; +pub mod enderman; +pub use enderman::*; #[derive(Default)] #[inheritable] From d54a5b8f49cf4d92ac7771ad20362de7438a7776 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 14:10:19 +0100 Subject: [PATCH 075/111] Add EnderDragon --- minecraft-server/src/entities/ender_dragon.rs | 16 ++++++++++++++++ minecraft-server/src/entities/mod.rs | 4 ++++ minecraft-server/src/entities/monsters/mod.rs | 2 +- 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 minecraft-server/src/entities/ender_dragon.rs diff --git a/minecraft-server/src/entities/ender_dragon.rs b/minecraft-server/src/entities/ender_dragon.rs new file mode 100644 index 00000000..78b6d11b --- /dev/null +++ b/minecraft-server/src/entities/ender_dragon.rs @@ -0,0 +1,16 @@ +use super::*; + +#[inherit(Mob, LivingEntity, Entity)] +pub struct EnderDragon { + pub mob: Mob, + pub phase: usize, +} + +impl Default for EnderDragon { + fn default() -> Self { + Self { + mob: Mob::default(), + phase: 10, + } + } +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 879e6127..9d0785b6 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -42,6 +42,8 @@ mod shulker; pub use shulker::*; mod monsters; pub use monsters::*; +mod ender_dragon; +pub use ender_dragon::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -158,6 +160,7 @@ pub enum AnyEntity { Drowned(Drowned), ZombifiedPiglin(ZombifiedPiglin), Enderman(Enderman), + EnderDragon(EnderDragon), } #[allow(clippy::single_match)] @@ -266,6 +269,7 @@ impl AnyEntity { AnyEntity::Drowned(drowned) => drowned.get_entity(), AnyEntity::ZombifiedPiglin(zombified_piglin) => zombified_piglin.get_entity(), AnyEntity::Enderman(enderman) => enderman.get_entity(), + AnyEntity::EnderDragon(ender_dragon) => ender_dragon.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/mod.rs b/minecraft-server/src/entities/monsters/mod.rs index fd1d8fb3..b6e28897 100644 --- a/minecraft-server/src/entities/monsters/mod.rs +++ b/minecraft-server/src/entities/monsters/mod.rs @@ -36,7 +36,7 @@ mod zoglin; pub use zoglin::*; mod zombies; pub use zombies::*; -pub mod enderman; +mod enderman; pub use enderman::*; #[derive(Default)] From 559aa1dac478bb17d4b134d10dbaba6412179a77 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 16:57:05 +0100 Subject: [PATCH 076/111] Add Flying mobs --- minecraft-server/src/entities/flying.rs | 22 ++++++++++++++++++++++ minecraft-server/src/entities/mod.rs | 8 ++++++++ 2 files changed, 30 insertions(+) create mode 100644 minecraft-server/src/entities/flying.rs diff --git a/minecraft-server/src/entities/flying.rs b/minecraft-server/src/entities/flying.rs new file mode 100644 index 00000000..5d72ef48 --- /dev/null +++ b/minecraft-server/src/entities/flying.rs @@ -0,0 +1,22 @@ +use super::*; + +#[derive(Default)] +#[inheritable] +#[inherit(Mob, LivingEntity, Entity)] +pub struct Flying { + pub mob: Mob, +} + +#[derive(Default)] +#[inherit(Flying, Mob, LivingEntity, Entity)] +pub struct Ghast { + pub flying: Flying, + pub is_attacking: bool, +} + +#[derive(Default)] +#[inherit(Flying, Mob, LivingEntity, Entity)] +pub struct Phantom { + pub flying: Flying, + pub size: usize, +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 9d0785b6..062ffb0d 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -44,6 +44,8 @@ mod monsters; pub use monsters::*; mod ender_dragon; pub use ender_dragon::*; +mod flying; +pub use flying::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -161,6 +163,9 @@ pub enum AnyEntity { ZombifiedPiglin(ZombifiedPiglin), Enderman(Enderman), EnderDragon(EnderDragon), + Flying(Flying), + Ghast(Ghast), + Phantom(Phantom), } #[allow(clippy::single_match)] @@ -270,6 +275,9 @@ impl AnyEntity { AnyEntity::ZombifiedPiglin(zombified_piglin) => zombified_piglin.get_entity(), AnyEntity::Enderman(enderman) => enderman.get_entity(), AnyEntity::EnderDragon(ender_dragon) => ender_dragon.get_entity(), + AnyEntity::Flying(flying) => flying.get_entity(), + AnyEntity::Ghast(ghast) => ghast.get_entity(), + AnyEntity::Phantom(phantom) => phantom.get_entity(), } } From 71d4d0239ecdf30754384902aba4faf2f06e9ff8 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 16:58:34 +0100 Subject: [PATCH 077/111] Add Slime --- minecraft-server/src/entities/mod.rs | 4 ++++ minecraft-server/src/entities/slime.rs | 9 +++++++++ 2 files changed, 13 insertions(+) create mode 100644 minecraft-server/src/entities/slime.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 062ffb0d..6f64939c 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -46,6 +46,8 @@ mod ender_dragon; pub use ender_dragon::*; mod flying; pub use flying::*; +mod slime; +pub use slime::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -166,6 +168,7 @@ pub enum AnyEntity { Flying(Flying), Ghast(Ghast), Phantom(Phantom), + Slime(Slime), } #[allow(clippy::single_match)] @@ -278,6 +281,7 @@ impl AnyEntity { AnyEntity::Flying(flying) => flying.get_entity(), AnyEntity::Ghast(ghast) => ghast.get_entity(), AnyEntity::Phantom(phantom) => phantom.get_entity(), + AnyEntity::Slime(slime) => slime.get_entity(), } } diff --git a/minecraft-server/src/entities/slime.rs b/minecraft-server/src/entities/slime.rs new file mode 100644 index 00000000..6fadb29b --- /dev/null +++ b/minecraft-server/src/entities/slime.rs @@ -0,0 +1,9 @@ +use super::*; + +#[derive(Default)] +#[inheritable] +#[inherit(Mob, LivingEntity, Entity)] +pub struct Slime { + pub mob: Mob, + pub size: usize, +} From 10f10d9596bd599932517ace684d0a6bd0497d53 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 16:59:38 +0100 Subject: [PATCH 078/111] Add LlamaSpit --- minecraft-server/src/entities/animals/llama.rs | 7 +++++++ minecraft-server/src/entities/mod.rs | 2 ++ 2 files changed, 9 insertions(+) diff --git a/minecraft-server/src/entities/animals/llama.rs b/minecraft-server/src/entities/animals/llama.rs index 5658c1de..3e814e75 100644 --- a/minecraft-server/src/entities/animals/llama.rs +++ b/minecraft-server/src/entities/animals/llama.rs @@ -27,3 +27,10 @@ impl Default for Llama { pub struct TraderLlama { pub llama: Llama, } + + +#[derive(Default)] +#[inherit(Entity)] +pub struct LlamaSpit { + pub entity: Entity, +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 6f64939c..c6c3fc12 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -169,6 +169,7 @@ pub enum AnyEntity { Ghast(Ghast), Phantom(Phantom), Slime(Slime), + LlamaSpit(LlamaSpit), } #[allow(clippy::single_match)] @@ -282,6 +283,7 @@ impl AnyEntity { AnyEntity::Ghast(ghast) => ghast.get_entity(), AnyEntity::Phantom(phantom) => phantom.get_entity(), AnyEntity::Slime(slime) => slime.get_entity(), + AnyEntity::LlamaSpit(llama_spit) => llama_spit.get_entity(), } } From 9e110d779d10440191bfe1d28b7aea316e2f7b8f Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 17:05:11 +0100 Subject: [PATCH 079/111] Add EyeOfEnder --- minecraft-protocol/src/components/slots.rs | 2 +- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/thrown_item_projectile.rs | 8 ++++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/minecraft-protocol/src/components/slots.rs b/minecraft-protocol/src/components/slots.rs index 3fdcd654..abdaa336 100644 --- a/minecraft-protocol/src/components/slots.rs +++ b/minecraft-protocol/src/components/slots.rs @@ -2,7 +2,7 @@ use crate::{nbt::NbtTag, *}; /// The [Slot] data structure is how Minecraft represents an item and its associated data in the [Minecraft Protocol](https://wiki.vg/Protocol). #[cfg_attr(test, derive(PartialEq))] -#[derive(Debug, Clone, MinecraftPacketPart)] +#[derive(Debug, Clone, Default, MinecraftPacketPart)] pub struct Slot { /// `Some(item)` if there is an item in this slot; `None` if it is empty. pub item: Option, diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index c6c3fc12..b8127dfc 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -170,6 +170,7 @@ pub enum AnyEntity { Phantom(Phantom), Slime(Slime), LlamaSpit(LlamaSpit), + EyeOfEnder(EyeOfEnder), } #[allow(clippy::single_match)] @@ -284,6 +285,7 @@ impl AnyEntity { AnyEntity::Phantom(phantom) => phantom.get_entity(), AnyEntity::Slime(slime) => slime.get_entity(), AnyEntity::LlamaSpit(llama_spit) => llama_spit.get_entity(), + AnyEntity::EyeOfEnder(eye_of_ender) => eye_of_ender.get_entity(), } } diff --git a/minecraft-server/src/entities/thrown_item_projectile.rs b/minecraft-server/src/entities/thrown_item_projectile.rs index 332c7a7c..f45fb5b3 100644 --- a/minecraft-server/src/entities/thrown_item_projectile.rs +++ b/minecraft-server/src/entities/thrown_item_projectile.rs @@ -115,3 +115,11 @@ impl Default for Snowball { } } } + +#[derive(Default)] +#[inherit(Entity)] +pub struct EyeOfEnder { + pub entity: Entity, + pub item: Slot, +} + From d654a92f91b20789d0517da9ca8acbe28ef0a2a5 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 17:09:24 +0100 Subject: [PATCH 080/111] Add FallingBlock --- minecraft-server/src/entities/block.rs | 8 ++++++++ minecraft-server/src/entities/mod.rs | 4 ++++ 2 files changed, 12 insertions(+) create mode 100644 minecraft-server/src/entities/block.rs diff --git a/minecraft-server/src/entities/block.rs b/minecraft-server/src/entities/block.rs new file mode 100644 index 00000000..4be25b34 --- /dev/null +++ b/minecraft-server/src/entities/block.rs @@ -0,0 +1,8 @@ +use super::*; + +#[derive(Default)] +#[inherit(Entity)] +pub struct FallingBlock { + pub entity: Entity, + pub spawn_position: BlockPosition, +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index b8127dfc..6b6c686f 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -48,6 +48,8 @@ mod flying; pub use flying::*; mod slime; pub use slime::*; +mod block; +pub use block::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -171,6 +173,7 @@ pub enum AnyEntity { Slime(Slime), LlamaSpit(LlamaSpit), EyeOfEnder(EyeOfEnder), + FallingBlock(FallingBlock), } #[allow(clippy::single_match)] @@ -286,6 +289,7 @@ impl AnyEntity { AnyEntity::Slime(slime) => slime.get_entity(), AnyEntity::LlamaSpit(llama_spit) => llama_spit.get_entity(), AnyEntity::EyeOfEnder(eye_of_ender) => eye_of_ender.get_entity(), + AnyEntity::FallingBlock(falling_block) => falling_block.get_entity(), } } From 892a409c88ea8750328bd9a5bffdce96f21e50a3 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 17:13:40 +0100 Subject: [PATCH 081/111] Add AreaEffectCloud --- minecraft-server/src/entities/mod.rs | 4 ++++ minecraft-server/src/entities/particles.rs | 24 ++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 minecraft-server/src/entities/particles.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 6b6c686f..d80c8c20 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -50,6 +50,8 @@ mod slime; pub use slime::*; mod block; pub use block::*; +mod particles; +pub use particles::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -174,6 +176,7 @@ pub enum AnyEntity { LlamaSpit(LlamaSpit), EyeOfEnder(EyeOfEnder), FallingBlock(FallingBlock), + AreaEffectCloud(AreaEffectCloud), } #[allow(clippy::single_match)] @@ -290,6 +293,7 @@ impl AnyEntity { AnyEntity::LlamaSpit(llama_spit) => llama_spit.get_entity(), AnyEntity::EyeOfEnder(eye_of_ender) => eye_of_ender.get_entity(), AnyEntity::FallingBlock(falling_block) => falling_block.get_entity(), + AnyEntity::AreaEffectCloud(area_effect_cloud) => area_effect_cloud.get_entity(), } } diff --git a/minecraft-server/src/entities/particles.rs b/minecraft-server/src/entities/particles.rs new file mode 100644 index 00000000..0055f969 --- /dev/null +++ b/minecraft-server/src/entities/particles.rs @@ -0,0 +1,24 @@ +use minecraft_protocol::components::particle::Particle; + +use super::*; + +#[inherit(Entity)] +pub struct AreaEffectCloud { + pub entity: Entity, + pub radius: f32, + pub color: Option, + pub ignore_radius: bool, + pub particle: Particle, +} + +impl Default for AreaEffectCloud { + fn default() -> Self { + Self { + entity: Entity::default(), + radius: 0.5, + color: None, + ignore_radius: false, + particle: Particle::Effect, + } + } +} \ No newline at end of file From 4c7d11840c5e800e82f3b069a35b68dd14fcd67a Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 17:15:26 +0100 Subject: [PATCH 082/111] Add FishingHook --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/particles.rs | 10 +++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index d80c8c20..f60440a9 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -177,6 +177,7 @@ pub enum AnyEntity { EyeOfEnder(EyeOfEnder), FallingBlock(FallingBlock), AreaEffectCloud(AreaEffectCloud), + FishingHook(FishingHook), } #[allow(clippy::single_match)] @@ -294,6 +295,7 @@ impl AnyEntity { AnyEntity::EyeOfEnder(eye_of_ender) => eye_of_ender.get_entity(), AnyEntity::FallingBlock(falling_block) => falling_block.get_entity(), AnyEntity::AreaEffectCloud(area_effect_cloud) => area_effect_cloud.get_entity(), + AnyEntity::FishingHook(fishing_hook) => fishing_hook.get_entity(), } } diff --git a/minecraft-server/src/entities/particles.rs b/minecraft-server/src/entities/particles.rs index 0055f969..479f1fbc 100644 --- a/minecraft-server/src/entities/particles.rs +++ b/minecraft-server/src/entities/particles.rs @@ -21,4 +21,12 @@ impl Default for AreaEffectCloud { particle: Particle::Effect, } } -} \ No newline at end of file +} + +#[derive(Default)] +#[inherit(Entity)] +pub struct FishingHook{ + pub entity: Entity, + pub hooked_entity: Option, + pub is_catchable: bool, +} From 37f95d033d486dcf10ea7f46dd71c2d50aebdf99 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 17:18:59 +0100 Subject: [PATCH 083/111] Add EndCrystal --- minecraft-server/src/entities/ender_dragon.rs | 18 ++++++++++++++++++ minecraft-server/src/entities/mod.rs | 2 ++ 2 files changed, 20 insertions(+) diff --git a/minecraft-server/src/entities/ender_dragon.rs b/minecraft-server/src/entities/ender_dragon.rs index 78b6d11b..73163c98 100644 --- a/minecraft-server/src/entities/ender_dragon.rs +++ b/minecraft-server/src/entities/ender_dragon.rs @@ -14,3 +14,21 @@ impl Default for EnderDragon { } } } + +#[inherit(Entity)] +pub struct EndCrystal { + pub entity: Entity, + pub block_position: Option, + pub show_bottom: bool, +} + +impl Default for EndCrystal { + fn default() -> Self { + Self { + entity: Entity::default(), + block_position: None, + show_bottom: true, + } + } + +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index f60440a9..611e8ffd 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -178,6 +178,7 @@ pub enum AnyEntity { FallingBlock(FallingBlock), AreaEffectCloud(AreaEffectCloud), FishingHook(FishingHook), + EndCrystal(EndCrystal), } #[allow(clippy::single_match)] @@ -296,6 +297,7 @@ impl AnyEntity { AnyEntity::FallingBlock(falling_block) => falling_block.get_entity(), AnyEntity::AreaEffectCloud(area_effect_cloud) => area_effect_cloud.get_entity(), AnyEntity::FishingHook(fishing_hook) => fishing_hook.get_entity(), + AnyEntity::EndCrystal(end_crystal) => end_crystal.get_entity(), } } From 5ce166aed3cb81b18e500d1e13a51708a17e5093 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 17:20:32 +0100 Subject: [PATCH 084/111] Add DragonFireball --- minecraft-server/src/entities/ender_dragon.rs | 6 ++++++ minecraft-server/src/entities/mod.rs | 2 ++ 2 files changed, 8 insertions(+) diff --git a/minecraft-server/src/entities/ender_dragon.rs b/minecraft-server/src/entities/ender_dragon.rs index 73163c98..3f0c1ae9 100644 --- a/minecraft-server/src/entities/ender_dragon.rs +++ b/minecraft-server/src/entities/ender_dragon.rs @@ -32,3 +32,9 @@ impl Default for EndCrystal { } } + +#[derive(Default)] +#[inherit(Entity)] +pub struct DragonFireball { + pub entity: Entity, +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 611e8ffd..6e48f3e4 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -179,6 +179,7 @@ pub enum AnyEntity { AreaEffectCloud(AreaEffectCloud), FishingHook(FishingHook), EndCrystal(EndCrystal), + DragonFireball(DragonFireball), } #[allow(clippy::single_match)] @@ -298,6 +299,7 @@ impl AnyEntity { AnyEntity::AreaEffectCloud(area_effect_cloud) => area_effect_cloud.get_entity(), AnyEntity::FishingHook(fishing_hook) => fishing_hook.get_entity(), AnyEntity::EndCrystal(end_crystal) => end_crystal.get_entity(), + AnyEntity::DragonFireball(dragon_fireball) => dragon_fireball.get_entity(), } } From 1d06dc6d823e6e7a5edb53eda8c06dc90ce89bc1 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 17:23:23 +0100 Subject: [PATCH 085/111] Add Fireballs --- minecraft-server/src/entities/ender_dragon.rs | 6 ----- minecraft-server/src/entities/fire_balls.rs | 22 +++++++++++++++++++ minecraft-server/src/entities/mod.rs | 6 +++++ 3 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 minecraft-server/src/entities/fire_balls.rs diff --git a/minecraft-server/src/entities/ender_dragon.rs b/minecraft-server/src/entities/ender_dragon.rs index 3f0c1ae9..73163c98 100644 --- a/minecraft-server/src/entities/ender_dragon.rs +++ b/minecraft-server/src/entities/ender_dragon.rs @@ -32,9 +32,3 @@ impl Default for EndCrystal { } } - -#[derive(Default)] -#[inherit(Entity)] -pub struct DragonFireball { - pub entity: Entity, -} diff --git a/minecraft-server/src/entities/fire_balls.rs b/minecraft-server/src/entities/fire_balls.rs new file mode 100644 index 00000000..25de8410 --- /dev/null +++ b/minecraft-server/src/entities/fire_balls.rs @@ -0,0 +1,22 @@ +use super::*; + +#[derive(Default)] +#[inherit(Entity)] +pub struct DragonFireball { + pub entity: Entity, +} + +#[derive(Default)] +#[inherit(Entity)] +pub struct SmallFireball { + pub entity: Entity, + pub item: Slot, +} + +#[derive(Default)] +#[inherit(Entity)] +pub struct Fireball { + pub entity: Entity, + pub item: Slot, +} + diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 6e48f3e4..fc146cc9 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -52,6 +52,8 @@ mod block; pub use block::*; mod particles; pub use particles::*; +mod fire_balls; +pub use fire_balls::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -180,6 +182,8 @@ pub enum AnyEntity { FishingHook(FishingHook), EndCrystal(EndCrystal), DragonFireball(DragonFireball), + SmallFireball(SmallFireball), + Fireball(Fireball), } #[allow(clippy::single_match)] @@ -300,6 +304,8 @@ impl AnyEntity { AnyEntity::FishingHook(fishing_hook) => fishing_hook.get_entity(), AnyEntity::EndCrystal(end_crystal) => end_crystal.get_entity(), AnyEntity::DragonFireball(dragon_fireball) => dragon_fireball.get_entity(), + AnyEntity::SmallFireball(small_fireball) => small_fireball.get_entity(), + AnyEntity::Fireball(fireball) => fireball.get_entity(), } } From 9b0d1e21eeb60b2fe637b6c3ab6167dc48c8457d Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 17:24:53 +0100 Subject: [PATCH 086/111] Add WitherSkull --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/monsters/skeleton.rs | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index fc146cc9..afaa6dae 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -184,6 +184,7 @@ pub enum AnyEntity { DragonFireball(DragonFireball), SmallFireball(SmallFireball), Fireball(Fireball), + WitherSkull(WitherSkull), } #[allow(clippy::single_match)] @@ -306,6 +307,7 @@ impl AnyEntity { AnyEntity::DragonFireball(dragon_fireball) => dragon_fireball.get_entity(), AnyEntity::SmallFireball(small_fireball) => small_fireball.get_entity(), AnyEntity::Fireball(fireball) => fireball.get_entity(), + AnyEntity::WitherSkull(wither_skull) => wither_skull.get_entity(), } } diff --git a/minecraft-server/src/entities/monsters/skeleton.rs b/minecraft-server/src/entities/monsters/skeleton.rs index d3a704cd..c9acc7d9 100644 --- a/minecraft-server/src/entities/monsters/skeleton.rs +++ b/minecraft-server/src/entities/monsters/skeleton.rs @@ -24,3 +24,10 @@ pub struct WitherSkeleton { pub struct Stray { pub abstract_skeleton: AbstractSkeleton, } + +#[derive(Default)] +#[inherit(Entity)] +pub struct WitherSkull { + pub entity: Entity, + pub is_invulnerable: bool, +} From 7b3bc45cd8b25ddae4e7d17b7ef256617a69b700 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 17:28:54 +0100 Subject: [PATCH 087/111] Add FireworkRocket --- .../src/entities/{fire_balls.rs => fire_entities.rs} | 8 ++++++++ minecraft-server/src/entities/mod.rs | 6 ++++-- 2 files changed, 12 insertions(+), 2 deletions(-) rename minecraft-server/src/entities/{fire_balls.rs => fire_entities.rs} (65%) diff --git a/minecraft-server/src/entities/fire_balls.rs b/minecraft-server/src/entities/fire_entities.rs similarity index 65% rename from minecraft-server/src/entities/fire_balls.rs rename to minecraft-server/src/entities/fire_entities.rs index 25de8410..5525f929 100644 --- a/minecraft-server/src/entities/fire_balls.rs +++ b/minecraft-server/src/entities/fire_entities.rs @@ -20,3 +20,11 @@ pub struct Fireball { pub item: Slot, } +#[derive(Default)] +#[inherit(Entity)] +pub struct FireworkRocket { + pub entity: Entity, + pub item: Slot, + pub used_by: Option, + pub is_shot_at_angle: bool, +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index afaa6dae..1c2b4b04 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -52,8 +52,8 @@ mod block; pub use block::*; mod particles; pub use particles::*; -mod fire_balls; -pub use fire_balls::*; +mod fire_entities; +pub use fire_entities::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -185,6 +185,7 @@ pub enum AnyEntity { SmallFireball(SmallFireball), Fireball(Fireball), WitherSkull(WitherSkull), + FireworkRocket(FireworkRocket), } #[allow(clippy::single_match)] @@ -308,6 +309,7 @@ impl AnyEntity { AnyEntity::SmallFireball(small_fireball) => small_fireball.get_entity(), AnyEntity::Fireball(fireball) => fireball.get_entity(), AnyEntity::WitherSkull(wither_skull) => wither_skull.get_entity(), + AnyEntity::FireworkRocket(firework_rocket) => firework_rocket.get_entity(), } } From e3e8765f997171045f515696408e3268b4966e8c Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 17:31:10 +0100 Subject: [PATCH 088/111] Add ItemFrame --- minecraft-server/src/entities/item.rs | 10 ++++++++++ minecraft-server/src/entities/mod.rs | 4 ++++ 2 files changed, 14 insertions(+) create mode 100644 minecraft-server/src/entities/item.rs diff --git a/minecraft-server/src/entities/item.rs b/minecraft-server/src/entities/item.rs new file mode 100644 index 00000000..c54b49c9 --- /dev/null +++ b/minecraft-server/src/entities/item.rs @@ -0,0 +1,10 @@ +use super::*; + +#[derive(Default)] +#[inheritable] +#[inherit(Entity)] +pub struct ItemFrame { + pub entity: Entity, + pub item: Slot, + pub rotation: u8, +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 1c2b4b04..adf86a48 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -54,6 +54,8 @@ mod particles; pub use particles::*; mod fire_entities; pub use fire_entities::*; +mod item; +pub use item::*; pub use minecraft_server_derive::{inherit, inheritable}; @@ -186,6 +188,7 @@ pub enum AnyEntity { Fireball(Fireball), WitherSkull(WitherSkull), FireworkRocket(FireworkRocket), + ItemFrame(ItemFrame), } #[allow(clippy::single_match)] @@ -310,6 +313,7 @@ impl AnyEntity { AnyEntity::Fireball(fireball) => fireball.get_entity(), AnyEntity::WitherSkull(wither_skull) => wither_skull.get_entity(), AnyEntity::FireworkRocket(firework_rocket) => firework_rocket.get_entity(), + AnyEntity::ItemFrame(item_frame) => item_frame.get_entity(), } } From 187de424c81ab507489c9e9cc0c39cbf0328cfd9 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 17:32:24 +0100 Subject: [PATCH 089/111] Add GlowingItemFrame --- minecraft-server/src/entities/item.rs | 7 +++++++ minecraft-server/src/entities/mod.rs | 2 ++ 2 files changed, 9 insertions(+) diff --git a/minecraft-server/src/entities/item.rs b/minecraft-server/src/entities/item.rs index c54b49c9..dda73007 100644 --- a/minecraft-server/src/entities/item.rs +++ b/minecraft-server/src/entities/item.rs @@ -8,3 +8,10 @@ pub struct ItemFrame { pub item: Slot, pub rotation: u8, } + +#[derive(Default)] +#[inheritable] +#[inherit(ItemFrame, Entity)] +pub struct GlowingItemFrame { + pub item_frame: ItemFrame, +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index adf86a48..066f03a1 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -189,6 +189,7 @@ pub enum AnyEntity { WitherSkull(WitherSkull), FireworkRocket(FireworkRocket), ItemFrame(ItemFrame), + GlowingItemFrame(GlowingItemFrame), } #[allow(clippy::single_match)] @@ -314,6 +315,7 @@ impl AnyEntity { AnyEntity::WitherSkull(wither_skull) => wither_skull.get_entity(), AnyEntity::FireworkRocket(firework_rocket) => firework_rocket.get_entity(), AnyEntity::ItemFrame(item_frame) => item_frame.get_entity(), + AnyEntity::GlowingItemFrame(glowing_item_frame) => glowing_item_frame.get_entity(), } } From 0f05640d28c821d7dc9b4b44b01cee68f9aef943 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 17:33:34 +0100 Subject: [PATCH 090/111] Remove #[inheritable] attribute from GlowingItemFrame --- minecraft-server/src/entities/item.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/minecraft-server/src/entities/item.rs b/minecraft-server/src/entities/item.rs index dda73007..f70e75f6 100644 --- a/minecraft-server/src/entities/item.rs +++ b/minecraft-server/src/entities/item.rs @@ -10,7 +10,6 @@ pub struct ItemFrame { } #[derive(Default)] -#[inheritable] #[inherit(ItemFrame, Entity)] pub struct GlowingItemFrame { pub item_frame: ItemFrame, From 212cb40519fd330ff20ae82dc8e29cf10722ead0 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 17:43:47 +0100 Subject: [PATCH 091/111] Add Painting --- minecraft-protocol/src/components/paintings.rs | 7 +++++++ minecraft-server/src/entities/display.rs | 8 ++++++++ minecraft-server/src/entities/mod.rs | 2 ++ 3 files changed, 17 insertions(+) diff --git a/minecraft-protocol/src/components/paintings.rs b/minecraft-protocol/src/components/paintings.rs index 0ee4b317..0d0580ef 100644 --- a/minecraft-protocol/src/components/paintings.rs +++ b/minecraft-protocol/src/components/paintings.rs @@ -32,6 +32,13 @@ pub enum Painting { DonkeyKong, } +impl Default for Painting { + fn default() -> Self { + Self::Kebab + } +} + + impl Painting { pub fn get_id(&self) -> i32 { *self as i32 diff --git a/minecraft-server/src/entities/display.rs b/minecraft-server/src/entities/display.rs index 920df257..12ee1515 100644 --- a/minecraft-server/src/entities/display.rs +++ b/minecraft-server/src/entities/display.rs @@ -1,4 +1,5 @@ use super::*; +use minecraft_protocol::components::paintings::Painting as PaintingType; #[inherit(Entity)] #[inheritable] @@ -110,3 +111,10 @@ impl Default for TextDisplay { } } } + +#[derive(Default)] +#[inherit(Entity)] +pub struct Painting { + pub entity: Entity, + pub painting_type: PaintingType, +} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 066f03a1..589dd2ba 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -190,6 +190,7 @@ pub enum AnyEntity { FireworkRocket(FireworkRocket), ItemFrame(ItemFrame), GlowingItemFrame(GlowingItemFrame), + Painting(Painting), } #[allow(clippy::single_match)] @@ -316,6 +317,7 @@ impl AnyEntity { AnyEntity::FireworkRocket(firework_rocket) => firework_rocket.get_entity(), AnyEntity::ItemFrame(item_frame) => item_frame.get_entity(), AnyEntity::GlowingItemFrame(glowing_item_frame) => glowing_item_frame.get_entity(), + AnyEntity::Painting(painting) => painting.get_entity(), } } From 6d1f69b2e2ba62ac00f4d2ba9bc160af9962bbb9 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 17:45:06 +0100 Subject: [PATCH 092/111] Add ItemEntity --- minecraft-server/src/entities/item.rs | 7 +++++++ minecraft-server/src/entities/mod.rs | 2 ++ 2 files changed, 9 insertions(+) diff --git a/minecraft-server/src/entities/item.rs b/minecraft-server/src/entities/item.rs index f70e75f6..4d22a49e 100644 --- a/minecraft-server/src/entities/item.rs +++ b/minecraft-server/src/entities/item.rs @@ -14,3 +14,10 @@ pub struct ItemFrame { pub struct GlowingItemFrame { pub item_frame: ItemFrame, } + +#[derive(Default)] +#[inherit(Entity)] +pub struct ItemEntity { + pub entity: Entity, + pub item: Slot, +} \ No newline at end of file diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 589dd2ba..24678f86 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -191,6 +191,7 @@ pub enum AnyEntity { ItemFrame(ItemFrame), GlowingItemFrame(GlowingItemFrame), Painting(Painting), + ItemEntity(ItemEntity), } #[allow(clippy::single_match)] @@ -318,6 +319,7 @@ impl AnyEntity { AnyEntity::ItemFrame(item_frame) => item_frame.get_entity(), AnyEntity::GlowingItemFrame(glowing_item_frame) => glowing_item_frame.get_entity(), AnyEntity::Painting(painting) => painting.get_entity(), + AnyEntity::ItemEntity(item_entity) => item_entity.get_entity(), } } From be16aff2068fba32b6436348bcefc12a56f5d63e Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 17:54:27 +0100 Subject: [PATCH 093/111] Add ArmorStand --- minecraft-server/src/entities/item.rs | 2 +- .../src/entities/living_entity.rs | 43 +++++++++++++++++++ minecraft-server/src/entities/mod.rs | 2 + minecraft-server/src/position.rs | 7 +++ 4 files changed, 53 insertions(+), 1 deletion(-) diff --git a/minecraft-server/src/entities/item.rs b/minecraft-server/src/entities/item.rs index 4d22a49e..b80e3b29 100644 --- a/minecraft-server/src/entities/item.rs +++ b/minecraft-server/src/entities/item.rs @@ -20,4 +20,4 @@ pub struct GlowingItemFrame { pub struct ItemEntity { pub entity: Entity, pub item: Slot, -} \ No newline at end of file +} diff --git a/minecraft-server/src/entities/living_entity.rs b/minecraft-server/src/entities/living_entity.rs index e540043e..3f680453 100644 --- a/minecraft-server/src/entities/living_entity.rs +++ b/minecraft-server/src/entities/living_entity.rs @@ -31,3 +31,46 @@ impl Default for LivingEntity { } } } + +#[inherit(LivingEntity, Entity)] +pub struct ArmorStand { + pub living_entity: LivingEntity, + pub apparence_mask: u8, + pub head_rotation: Rotation, + pub body_rotation: Rotation, + pub left_arm_rotation: Rotation, + pub right_arm_rotation: Rotation, + pub left_leg_rotation: Rotation, + pub right_leg_rotation: Rotation, +} + +impl Default for ArmorStand { + fn default() -> Self { + Self { + living_entity: LivingEntity::default(), + apparence_mask: 0, + head_rotation: Rotation::default(), + body_rotation: Rotation::default(), + left_arm_rotation: Rotation { + x: -10.0, + y: 0.0, + z: -10.0, + }, + right_arm_rotation: Rotation { + x: -15.0, + y: 0.0, + z: 10.0, + }, + left_leg_rotation: Rotation { + x: -1.0, + y: 0.0, + z: -1.0, + }, + right_leg_rotation: Rotation { + x: 1.0, + y: 0.0, + z: 1.0, + }, + } + } +} \ No newline at end of file diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 24678f86..b648d34c 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -192,6 +192,7 @@ pub enum AnyEntity { GlowingItemFrame(GlowingItemFrame), Painting(Painting), ItemEntity(ItemEntity), + ArmorStand(ArmorStand), } #[allow(clippy::single_match)] @@ -320,6 +321,7 @@ impl AnyEntity { AnyEntity::GlowingItemFrame(glowing_item_frame) => glowing_item_frame.get_entity(), AnyEntity::Painting(painting) => painting.get_entity(), AnyEntity::ItemEntity(item_entity) => item_entity.get_entity(), + AnyEntity::ArmorStand(armor_stand) => armor_stand.get_entity(), } } diff --git a/minecraft-server/src/position.rs b/minecraft-server/src/position.rs index f6228a51..52623290 100644 --- a/minecraft-server/src/position.rs +++ b/minecraft-server/src/position.rs @@ -73,6 +73,13 @@ impl std::ops::AddAssign for Position { } } +#[derive(Clone, Default)] +pub struct Rotation { + pub x: f32, + pub y: f32, + pub z: f32, +} + #[derive(PartialEq, Eq, Hash)] pub struct ChunkPosition { pub cx: i32, From a8b3f371211188182c408b7ee2ade1992ab0aa06 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 17:57:26 +0100 Subject: [PATCH 094/111] Add Dolphin --- minecraft-server/src/entities/mod.rs | 2 ++ minecraft-server/src/entities/water_animal.rs | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index b648d34c..f6f5f5fc 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -193,6 +193,7 @@ pub enum AnyEntity { Painting(Painting), ItemEntity(ItemEntity), ArmorStand(ArmorStand), + Dolphin(Dolphin), } #[allow(clippy::single_match)] @@ -322,6 +323,7 @@ impl AnyEntity { AnyEntity::Painting(painting) => painting.get_entity(), AnyEntity::ItemEntity(item_entity) => item_entity.get_entity(), AnyEntity::ArmorStand(armor_stand) => armor_stand.get_entity(), + AnyEntity::Dolphin(dolphin) => dolphin.get_entity(), } } diff --git a/minecraft-server/src/entities/water_animal.rs b/minecraft-server/src/entities/water_animal.rs index a8e4f9b3..22783dbe 100644 --- a/minecraft-server/src/entities/water_animal.rs +++ b/minecraft-server/src/entities/water_animal.rs @@ -6,3 +6,12 @@ use super::*; pub struct WaterAnimal { pub pathfinder_mob: PathfinderMob, } + +#[derive(Default)] +#[inherit(WaterAnimal, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Dolphin { + pub water_animal: WaterAnimal, + pub treasure_position: Option, + pub has_fish: bool, + pub moisture_level: usize, +} From 6aef87fd1e16d8267c857f958625fc92c9c2fa66 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 18:02:37 +0100 Subject: [PATCH 095/111] Add fishes --- .../src/entities/animals/fishes.rs | 42 +++++++++++++++++++ minecraft-server/src/entities/animals/mod.rs | 4 ++ .../entities/{ => animals}/water_animal.rs | 0 minecraft-server/src/entities/mod.rs | 12 +++++- 4 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 minecraft-server/src/entities/animals/fishes.rs rename minecraft-server/src/entities/{ => animals}/water_animal.rs (100%) diff --git a/minecraft-server/src/entities/animals/fishes.rs b/minecraft-server/src/entities/animals/fishes.rs new file mode 100644 index 00000000..1e38a964 --- /dev/null +++ b/minecraft-server/src/entities/animals/fishes.rs @@ -0,0 +1,42 @@ +use super::*; + +#[derive(Default)] +#[inheritable] +#[inherit(WaterAnimal, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct AbstractFish { + pub water_animal: WaterAnimal, + pub from_bucket: bool, +} + + +#[derive(Default)] +#[inherit(AbstractFish, WaterAnimal, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Cod { + pub abstract_fish: AbstractFish, +} + +#[derive(Default)] +#[inherit(AbstractFish, WaterAnimal, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct PufferFish { + pub abstract_fish: AbstractFish, + pub puff_state: usize, +} + +#[derive(Default)] +#[inherit(AbstractFish, WaterAnimal, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Salmon { + pub abstract_fish: AbstractFish, +} + +#[derive(Default)] +#[inherit(AbstractFish, WaterAnimal, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct TropicalFish { + pub abstract_fish: AbstractFish, + pub variant: usize, +} + +#[derive(Default)] +#[inherit(AbstractFish, WaterAnimal, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct Tadpole { + pub abstract_fish: AbstractFish, +} diff --git a/minecraft-server/src/entities/animals/mod.rs b/minecraft-server/src/entities/animals/mod.rs index ddf07b3c..c5d5f638 100644 --- a/minecraft-server/src/entities/animals/mod.rs +++ b/minecraft-server/src/entities/animals/mod.rs @@ -50,6 +50,10 @@ mod parrot; pub use parrot::*; mod goat; pub use goat::*; +mod fishes; +pub use fishes::*; +mod water_animal; +pub use water_animal::*; #[derive(Default)] #[inheritable] diff --git a/minecraft-server/src/entities/water_animal.rs b/minecraft-server/src/entities/animals/water_animal.rs similarity index 100% rename from minecraft-server/src/entities/water_animal.rs rename to minecraft-server/src/entities/animals/water_animal.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index f6f5f5fc..da93de72 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -22,8 +22,6 @@ mod bat; pub use bat::*; mod pathfinder_mob; pub use pathfinder_mob::*; -mod water_animal; -pub use water_animal::*; mod squid; pub use squid::*; mod interaction; @@ -194,6 +192,12 @@ pub enum AnyEntity { ItemEntity(ItemEntity), ArmorStand(ArmorStand), Dolphin(Dolphin), + AbstractFish(AbstractFish), + Cod(Cod), + Pufferfish(Pufferfish), + Salmon(Salmon), + TropicalFish(TropicalFish), + Tadpole(Tadpole), } #[allow(clippy::single_match)] @@ -324,6 +328,10 @@ impl AnyEntity { AnyEntity::ItemEntity(item_entity) => item_entity.get_entity(), AnyEntity::ArmorStand(armor_stand) => armor_stand.get_entity(), AnyEntity::Dolphin(dolphin) => dolphin.get_entity(), + AnyEntity::AbstractFish(abstract_fish) => abstract_fish.get_entity(), + AnyEntity::Cod(cod) => cod.get_entity(), + AnyEntity::Pufferfish(pufferfish) => pufferfish.get_entity(), + AnyEntity::Salmon(salmon) => salmon.get_entity(), } } From 12ce8958394bdd853f832662860c484ad2f9119a Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 18:03:20 +0100 Subject: [PATCH 096/111] Fix compilation --- minecraft-server/src/entities/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index da93de72..033bb30a 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -194,7 +194,7 @@ pub enum AnyEntity { Dolphin(Dolphin), AbstractFish(AbstractFish), Cod(Cod), - Pufferfish(Pufferfish), + PufferFish(PufferFish), Salmon(Salmon), TropicalFish(TropicalFish), Tadpole(Tadpole), @@ -330,7 +330,7 @@ impl AnyEntity { AnyEntity::Dolphin(dolphin) => dolphin.get_entity(), AnyEntity::AbstractFish(abstract_fish) => abstract_fish.get_entity(), AnyEntity::Cod(cod) => cod.get_entity(), - AnyEntity::Pufferfish(pufferfish) => pufferfish.get_entity(), + AnyEntity::PufferFish(pufferfish) => pufferfish.get_entity(), AnyEntity::Salmon(salmon) => salmon.get_entity(), } } From 8fe945d2db97e31f02bcacb7ab603fdc86d325d6 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 18:03:56 +0100 Subject: [PATCH 097/111] Add new entities to AnyEntity enum. --- minecraft-server/src/entities/mod.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 033bb30a..c7ef6031 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -332,6 +332,8 @@ impl AnyEntity { AnyEntity::Cod(cod) => cod.get_entity(), AnyEntity::PufferFish(pufferfish) => pufferfish.get_entity(), AnyEntity::Salmon(salmon) => salmon.get_entity(), + AnyEntity::TropicalFish(tropical_fish) => tropical_fish.get_entity(), + AnyEntity::Tadpole(tadpole) => tadpole.get_entity(), } } From 7c2c0598391e85ae98d7b226fa6caf36e8f1d97c Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 18:04:58 +0100 Subject: [PATCH 098/111] fix Axolott typo --- minecraft-server/src/entities/animals/axolotl.rs | 2 +- minecraft-server/src/entities/mod.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/minecraft-server/src/entities/animals/axolotl.rs b/minecraft-server/src/entities/animals/axolotl.rs index 4ddfc5dd..876bc08a 100644 --- a/minecraft-server/src/entities/animals/axolotl.rs +++ b/minecraft-server/src/entities/animals/axolotl.rs @@ -2,7 +2,7 @@ use super::*; #[derive(Default)] #[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] -pub struct Axolott { +pub struct Axolotl { pub animal: Animal, pub variant: u8, pub playing_dead: bool, diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index c7ef6031..1175b622 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -106,7 +106,7 @@ pub enum AnyEntity { Llama(Llama), TraderLlama(TraderLlama), Mule(Mule), - Axolott(Axolott), + Axolotl(Axolotl), Bee(Bee), Fox(Fox), Frog(Frog), From 1bc2c6c76537a440c849e16337180ec86abe1a47 Mon Sep 17 00:00:00 2001 From: DimitriTimoz Date: Wed, 8 Nov 2023 18:05:13 +0100 Subject: [PATCH 099/111] with previous commit --- minecraft-server/src/entities/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index 1175b622..c6baa4f8 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -242,7 +242,7 @@ impl AnyEntity { AnyEntity::Llama(llama) => llama.get_entity(), AnyEntity::TraderLlama(trader_llama) => trader_llama.get_entity(), AnyEntity::Mule(mule) => mule.get_entity(), - AnyEntity::Axolott(axolotl) => axolotl.get_entity(), + AnyEntity::Axolotl(axolotl) => axolotl.get_entity(), AnyEntity::Bee(bee) => bee.get_entity(), AnyEntity::Fox(fox) => fox.get_entity(), AnyEntity::Frog(frog) => frog.get_entity(), From f5e5acafc8723e68e34fde2c1ca09789c696a8ac Mon Sep 17 00:00:00 2001 From: Mubelotix Date: Wed, 8 Nov 2023 22:41:00 +0100 Subject: [PATCH 100/111] Group mobs --- minecraft-server/src/entities/ageable_mob.rs | 9 ---- .../src/entities/ambient_creature.rs | 8 ---- minecraft-server/src/entities/boat.rs | 8 +++- minecraft-server/src/entities/chest_boat.rs | 7 --- .../src/entities/living_entity.rs | 2 +- minecraft-server/src/entities/mob.rs | 11 ----- .../src/entities/{ => mobs}/bat.rs | 0 .../src/entities/{ => mobs}/ender_dragon.rs | 0 .../src/entities/{ => mobs}/flying.rs | 0 .../src/entities/{ => mobs}/golems.rs | 0 minecraft-server/src/entities/mobs/mod.rs | 48 +++++++++++++++++++ .../src/entities/{ => mobs}/slime.rs | 0 .../src/entities/{ => mobs}/squid.rs | 0 .../src/entities/{ => mobs}/villagers.rs | 0 minecraft-server/src/entities/mod.rs | 26 +--------- .../src/entities/pathfinder_mob.rs | 8 ---- 16 files changed, 58 insertions(+), 69 deletions(-) delete mode 100644 minecraft-server/src/entities/ageable_mob.rs delete mode 100644 minecraft-server/src/entities/ambient_creature.rs delete mode 100644 minecraft-server/src/entities/chest_boat.rs delete mode 100644 minecraft-server/src/entities/mob.rs rename minecraft-server/src/entities/{ => mobs}/bat.rs (100%) rename minecraft-server/src/entities/{ => mobs}/ender_dragon.rs (100%) rename minecraft-server/src/entities/{ => mobs}/flying.rs (100%) rename minecraft-server/src/entities/{ => mobs}/golems.rs (100%) create mode 100644 minecraft-server/src/entities/mobs/mod.rs rename minecraft-server/src/entities/{ => mobs}/slime.rs (100%) rename minecraft-server/src/entities/{ => mobs}/squid.rs (100%) rename minecraft-server/src/entities/{ => mobs}/villagers.rs (100%) delete mode 100644 minecraft-server/src/entities/pathfinder_mob.rs diff --git a/minecraft-server/src/entities/ageable_mob.rs b/minecraft-server/src/entities/ageable_mob.rs deleted file mode 100644 index 9ee89f8d..00000000 --- a/minecraft-server/src/entities/ageable_mob.rs +++ /dev/null @@ -1,9 +0,0 @@ -use super::*; - -#[derive(Default)] -#[inheritable] -#[inherit(PathfinderMob, Mob, LivingEntity, Entity)] -pub struct AgeableMob { - pub pathfinder_mob: PathfinderMob, - pub is_baby: bool, -} diff --git a/minecraft-server/src/entities/ambient_creature.rs b/minecraft-server/src/entities/ambient_creature.rs deleted file mode 100644 index ac77b4bf..00000000 --- a/minecraft-server/src/entities/ambient_creature.rs +++ /dev/null @@ -1,8 +0,0 @@ -use super::*; - -#[derive(Default)] -#[inheritable] -#[inherit(Mob, LivingEntity, Entity)] -pub struct AmbientCreature { - pub mob: Mob, -} diff --git a/minecraft-server/src/entities/boat.rs b/minecraft-server/src/entities/boat.rs index 84a70fc8..4cd33694 100644 --- a/minecraft-server/src/entities/boat.rs +++ b/minecraft-server/src/entities/boat.rs @@ -7,7 +7,7 @@ pub struct Boat { pub time_since_last_hit: usize, pub forward_direction: usize, pub damage_taken: f32, - /// Type (0=oak, 1=spruce, 2=birch, 3=jungle, 4=acacia, 5=dark oak) + /// Type (0=oak, 1=spruce, 2=birch, 3=jungle, 4=acacia, 5=dark oak) pub ty: usize, pub is_left_paddle_turning: bool, pub is_right_paddle_turning: bool, @@ -28,3 +28,9 @@ impl Default for Boat { } } } + +#[derive(Default)] +#[inherit(Boat, Entity)] +pub struct ChestBoat { + pub boat: Boat, +} diff --git a/minecraft-server/src/entities/chest_boat.rs b/minecraft-server/src/entities/chest_boat.rs deleted file mode 100644 index e5a16473..00000000 --- a/minecraft-server/src/entities/chest_boat.rs +++ /dev/null @@ -1,7 +0,0 @@ -use super::*; - -#[derive(Default)] -#[inherit(Boat, Entity)] -pub struct ChestBoat { - pub boat: Boat, -} diff --git a/minecraft-server/src/entities/living_entity.rs b/minecraft-server/src/entities/living_entity.rs index 3f680453..41cb45f8 100644 --- a/minecraft-server/src/entities/living_entity.rs +++ b/minecraft-server/src/entities/living_entity.rs @@ -73,4 +73,4 @@ impl Default for ArmorStand { }, } } -} \ No newline at end of file +} diff --git a/minecraft-server/src/entities/mob.rs b/minecraft-server/src/entities/mob.rs deleted file mode 100644 index 8f3f7736..00000000 --- a/minecraft-server/src/entities/mob.rs +++ /dev/null @@ -1,11 +0,0 @@ -use super::*; - -#[derive(Default)] -#[inheritable] -#[inherit(LivingEntity, Entity)] -pub struct Mob { - pub living_entity: LivingEntity, - pub no_ai: bool, - pub is_left_handed: bool, - pub is_aggressive: bool, -} diff --git a/minecraft-server/src/entities/bat.rs b/minecraft-server/src/entities/mobs/bat.rs similarity index 100% rename from minecraft-server/src/entities/bat.rs rename to minecraft-server/src/entities/mobs/bat.rs diff --git a/minecraft-server/src/entities/ender_dragon.rs b/minecraft-server/src/entities/mobs/ender_dragon.rs similarity index 100% rename from minecraft-server/src/entities/ender_dragon.rs rename to minecraft-server/src/entities/mobs/ender_dragon.rs diff --git a/minecraft-server/src/entities/flying.rs b/minecraft-server/src/entities/mobs/flying.rs similarity index 100% rename from minecraft-server/src/entities/flying.rs rename to minecraft-server/src/entities/mobs/flying.rs diff --git a/minecraft-server/src/entities/golems.rs b/minecraft-server/src/entities/mobs/golems.rs similarity index 100% rename from minecraft-server/src/entities/golems.rs rename to minecraft-server/src/entities/mobs/golems.rs diff --git a/minecraft-server/src/entities/mobs/mod.rs b/minecraft-server/src/entities/mobs/mod.rs new file mode 100644 index 00000000..a6c30697 --- /dev/null +++ b/minecraft-server/src/entities/mobs/mod.rs @@ -0,0 +1,48 @@ +use super::*; + +mod squid; +pub use squid::*; +mod villagers; +pub use villagers::*; +mod golems; +pub use golems::*; +mod ender_dragon; +pub use ender_dragon::*; +mod slime; +pub use slime::*; +mod flying; +pub use flying::*; +mod bat; +pub use bat::*; + +#[derive(Default)] +#[inheritable] +#[inherit(LivingEntity, Entity)] +pub struct Mob { + pub living_entity: LivingEntity, + pub no_ai: bool, + pub is_left_handed: bool, + pub is_aggressive: bool, +} + +#[derive(Default)] +#[inheritable] +#[inherit(Mob, LivingEntity, Entity)] +pub struct AmbientCreature { + pub mob: Mob, +} + +#[derive(Default)] +#[inheritable] +#[inherit(Mob, LivingEntity, Entity)] +pub struct PathfinderMob { + pub mob: Mob, +} + +#[derive(Default)] +#[inheritable] +#[inherit(PathfinderMob, Mob, LivingEntity, Entity)] +pub struct AgeableMob { + pub pathfinder_mob: PathfinderMob, + pub is_baby: bool, +} diff --git a/minecraft-server/src/entities/slime.rs b/minecraft-server/src/entities/mobs/slime.rs similarity index 100% rename from minecraft-server/src/entities/slime.rs rename to minecraft-server/src/entities/mobs/slime.rs diff --git a/minecraft-server/src/entities/squid.rs b/minecraft-server/src/entities/mobs/squid.rs similarity index 100% rename from minecraft-server/src/entities/squid.rs rename to minecraft-server/src/entities/mobs/squid.rs diff --git a/minecraft-server/src/entities/villagers.rs b/minecraft-server/src/entities/mobs/villagers.rs similarity index 100% rename from minecraft-server/src/entities/villagers.rs rename to minecraft-server/src/entities/mobs/villagers.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index c6baa4f8..a8086c8d 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -8,44 +8,22 @@ mod arrow; pub use arrow::*; mod boat; pub use boat::*; -mod chest_boat; -pub use chest_boat::*; mod living_entity; pub use living_entity::*; mod player; pub use player::*; -mod mob; -pub use mob::*; -mod ambient_creature; -pub use ambient_creature::*; -mod bat; -pub use bat::*; -mod pathfinder_mob; -pub use pathfinder_mob::*; -mod squid; -pub use squid::*; +mod mobs; +pub use mobs::*; mod interaction; pub use interaction::*; -mod ageable_mob; -pub use ageable_mob::*; mod animals; pub use animals::*; mod display; pub use display::*; -mod villagers; -pub use villagers::*; -mod golems; -pub use golems::*; mod shulker; pub use shulker::*; mod monsters; pub use monsters::*; -mod ender_dragon; -pub use ender_dragon::*; -mod flying; -pub use flying::*; -mod slime; -pub use slime::*; mod block; pub use block::*; mod particles; diff --git a/minecraft-server/src/entities/pathfinder_mob.rs b/minecraft-server/src/entities/pathfinder_mob.rs deleted file mode 100644 index b54234c9..00000000 --- a/minecraft-server/src/entities/pathfinder_mob.rs +++ /dev/null @@ -1,8 +0,0 @@ -use super::*; - -#[derive(Default)] -#[inheritable] -#[inherit(Mob, LivingEntity, Entity)] -pub struct PathfinderMob { - pub mob: Mob, -} From cf556faa6c7cf7b325cbf9e6f3e046e6d76ddd11 Mon Sep 17 00:00:00 2001 From: Mubelotix Date: Wed, 8 Nov 2023 22:43:25 +0100 Subject: [PATCH 101/111] Group animals --- .../src/entities/animals/abstract_horse.rs | 10 ---------- minecraft-server/src/entities/animals/horses.rs | 8 ++++++++ minecraft-server/src/entities/animals/mod.rs | 13 +++++++++---- .../src/entities/animals/tameable_animal.rs | 12 ------------ minecraft-server/src/entities/mod.rs | 3 ++- 5 files changed, 19 insertions(+), 27 deletions(-) delete mode 100644 minecraft-server/src/entities/animals/abstract_horse.rs delete mode 100644 minecraft-server/src/entities/animals/tameable_animal.rs diff --git a/minecraft-server/src/entities/animals/abstract_horse.rs b/minecraft-server/src/entities/animals/abstract_horse.rs deleted file mode 100644 index 1afa1cac..00000000 --- a/minecraft-server/src/entities/animals/abstract_horse.rs +++ /dev/null @@ -1,10 +0,0 @@ -use super::*; - -#[derive(Default)] -#[inheritable] -#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] -pub struct AbstractHorse { - pub animal: Animal, - pub mask: u8, -} - diff --git a/minecraft-server/src/entities/animals/horses.rs b/minecraft-server/src/entities/animals/horses.rs index 5b289559..fdaab191 100644 --- a/minecraft-server/src/entities/animals/horses.rs +++ b/minecraft-server/src/entities/animals/horses.rs @@ -1,5 +1,13 @@ use super::*; +#[derive(Default)] +#[inheritable] +#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct AbstractHorse { + pub animal: Animal, + pub mask: u8, +} + #[derive(Default)] #[inherit(AbstractHorse, Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] pub struct Horse { diff --git a/minecraft-server/src/entities/animals/mod.rs b/minecraft-server/src/entities/animals/mod.rs index c5d5f638..53f385f5 100644 --- a/minecraft-server/src/entities/animals/mod.rs +++ b/minecraft-server/src/entities/animals/mod.rs @@ -2,8 +2,6 @@ use super::*; mod sniffer; pub use sniffer::*; -mod abstract_horse; -pub use abstract_horse::*; mod horses; pub use horses::*; mod donkey; @@ -40,8 +38,6 @@ mod sheep; pub use sheep::*; mod strider; pub use strider::*; -mod tameable_animal; -pub use tameable_animal::*; mod cat; pub use cat::*; mod wolf; @@ -61,3 +57,12 @@ pub use water_animal::*; pub struct Animal { pub ageable_mob: AgeableMob, } + +#[derive(Default)] +#[inheritable] +#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] +pub struct TameableAnimal { + pub animal: Animal, + pub action_mask: u8, + pub owner: Option, +} diff --git a/minecraft-server/src/entities/animals/tameable_animal.rs b/minecraft-server/src/entities/animals/tameable_animal.rs deleted file mode 100644 index 77507c4b..00000000 --- a/minecraft-server/src/entities/animals/tameable_animal.rs +++ /dev/null @@ -1,12 +0,0 @@ -use minecraft_protocol::packets::UUID; - -use super::*; - -#[derive(Default)] -#[inheritable] -#[inherit(Animal, AgeableMob, PathfinderMob, Mob, LivingEntity, Entity)] -pub struct TameableAnimal { - pub animal: Animal, - pub action_mask: u8, - pub owner: Option, -} diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-server/src/entities/mod.rs index a8086c8d..cdba8b4a 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-server/src/entities/mod.rs @@ -42,7 +42,8 @@ pub use minecraft_protocol::{ slots::{Slot, SlotItem, Hand} }, ids::{items::Item, block_states::BlockWithState}, - nbt::NbtTag + nbt::NbtTag, + packets::UUID }; pub enum AnyEntity { From 1240608ed9b45173588732ef6011d8b0b4b8f345 Mon Sep 17 00:00:00 2001 From: Mubelotix Date: Wed, 8 Nov 2023 23:00:32 +0100 Subject: [PATCH 102/111] Move files around --- Cargo.toml | 2 ++ minecraft-entities/Cargo.toml | 11 +++++++++++ .../src}/animals/axolotl.rs | 0 .../src}/animals/bee.rs | 0 .../src}/animals/cat.rs | 0 .../src}/animals/chicken.rs | 0 .../src}/animals/cow.rs | 0 .../src}/animals/donkey.rs | 0 .../src}/animals/fishes.rs | 0 .../src}/animals/fox.rs | 0 .../src}/animals/frog.rs | 0 .../src}/animals/goat.rs | 0 .../src}/animals/hoglin.rs | 0 .../src}/animals/horses.rs | 0 .../src}/animals/llama.rs | 0 .../src}/animals/mod.rs | 0 .../src}/animals/ocelot.rs | 0 .../src}/animals/panda.rs | 0 .../src}/animals/parrot.rs | 0 .../src}/animals/pig.rs | 0 .../src}/animals/polar_bear.rs | 0 .../src}/animals/rabbit.rs | 0 .../src}/animals/sheep.rs | 0 .../src}/animals/sniffer.rs | 0 .../src}/animals/strider.rs | 0 .../src}/animals/turtle.rs | 0 .../src}/animals/water_animal.rs | 0 .../src}/animals/wolf.rs | 0 .../src/entities => minecraft-entities/src}/arrow.rs | 0 .../src/entities => minecraft-entities/src}/block.rs | 0 .../src/entities => minecraft-entities/src}/boat.rs | 0 .../entities => minecraft-entities/src}/display.rs | 0 .../src/entities => minecraft-entities/src}/entity.rs | 0 .../src}/fire_entities.rs | 0 .../src}/interaction.rs | 0 .../src/entities => minecraft-entities/src}/item.rs | 0 .../entities/mod.rs => minecraft-entities/src/lib.rs | 9 +++++---- .../src}/living_entity.rs | 0 .../entities => minecraft-entities/src}/mobs/bat.rs | 0 .../src}/mobs/ender_dragon.rs | 0 .../src}/mobs/flying.rs | 0 .../src}/mobs/golems.rs | 0 .../entities => minecraft-entities/src}/mobs/mod.rs | 0 .../entities => minecraft-entities/src}/mobs/slime.rs | 0 .../entities => minecraft-entities/src}/mobs/squid.rs | 0 .../src}/mobs/villagers.rs | 0 .../src}/monsters/base_piglin.rs | 0 .../src}/monsters/blaze.rs | 0 .../src}/monsters/creeper.rs | 0 .../src}/monsters/enderman.rs | 0 .../src}/monsters/endermite.rs | 0 .../src}/monsters/giant.rs | 0 .../src}/monsters/guardian.rs | 0 .../src}/monsters/mod.rs | 0 .../src}/monsters/piglin.rs | 0 .../src}/monsters/raider.rs | 0 .../src}/monsters/silverfish.rs | 0 .../src}/monsters/skeleton.rs | 0 .../src}/monsters/spellcaster_illager.rs | 0 .../src}/monsters/spider.rs | 0 .../src}/monsters/vex.rs | 0 .../src}/monsters/warden.rs | 0 .../src}/monsters/witch.rs | 0 .../src}/monsters/wither.rs | 0 .../src}/monsters/zoglin.rs | 0 .../src}/monsters/zombies.rs | 0 .../entities => minecraft-entities/src}/particles.rs | 0 .../src/entities => minecraft-entities/src}/player.rs | 0 .../entities => minecraft-entities/src}/shulker.rs | 0 .../src}/thrown_item_projectile.rs | 0 minecraft-positions/Cargo.toml | 8 ++++++++ .../src/position.rs => minecraft-positions/src/lib.rs | 2 ++ minecraft-positions/src/shards.rs | 7 +++++++ minecraft-server/Cargo.toml | 3 ++- minecraft-server/src/ecs/entities.rs | 2 -- minecraft-server/src/main.rs | 3 --- minecraft-server/src/map.rs | 6 ------ minecraft-server/src/prelude.rs | 4 +++- 78 files changed, 40 insertions(+), 17 deletions(-) create mode 100644 minecraft-entities/Cargo.toml rename {minecraft-server/src/entities => minecraft-entities/src}/animals/axolotl.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/bee.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/cat.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/chicken.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/cow.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/donkey.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/fishes.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/fox.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/frog.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/goat.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/hoglin.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/horses.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/llama.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/mod.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/ocelot.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/panda.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/parrot.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/pig.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/polar_bear.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/rabbit.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/sheep.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/sniffer.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/strider.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/turtle.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/water_animal.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/animals/wolf.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/arrow.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/block.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/boat.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/display.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/entity.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/fire_entities.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/interaction.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/item.rs (100%) rename minecraft-server/src/entities/mod.rs => minecraft-entities/src/lib.rs (99%) rename {minecraft-server/src/entities => minecraft-entities/src}/living_entity.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/mobs/bat.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/mobs/ender_dragon.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/mobs/flying.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/mobs/golems.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/mobs/mod.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/mobs/slime.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/mobs/squid.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/mobs/villagers.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/monsters/base_piglin.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/monsters/blaze.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/monsters/creeper.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/monsters/enderman.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/monsters/endermite.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/monsters/giant.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/monsters/guardian.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/monsters/mod.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/monsters/piglin.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/monsters/raider.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/monsters/silverfish.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/monsters/skeleton.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/monsters/spellcaster_illager.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/monsters/spider.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/monsters/vex.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/monsters/warden.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/monsters/witch.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/monsters/wither.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/monsters/zoglin.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/monsters/zombies.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/particles.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/player.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/shulker.rs (100%) rename {minecraft-server/src/entities => minecraft-entities/src}/thrown_item_projectile.rs (100%) create mode 100644 minecraft-positions/Cargo.toml rename minecraft-server/src/position.rs => minecraft-positions/src/lib.rs (99%) create mode 100644 minecraft-positions/src/shards.rs diff --git a/Cargo.toml b/Cargo.toml index 60a5db44..b6ee776b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,8 @@ members = [ "minecraft-protocol", "minecraft-protocol-derive", "minecraft-server", + "minecraft-entities", + "minecraft-positions", "tags-macros" ] diff --git a/minecraft-entities/Cargo.toml b/minecraft-entities/Cargo.toml new file mode 100644 index 00000000..484b6e70 --- /dev/null +++ b/minecraft-entities/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "minecraft-entities" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +minecraft-protocol = { path = "../minecraft-protocol" } +minecraft-positions = { path = "../minecraft-positions" } +minecraft-server-derive = { path="../minecraft-server-derive" } diff --git a/minecraft-server/src/entities/animals/axolotl.rs b/minecraft-entities/src/animals/axolotl.rs similarity index 100% rename from minecraft-server/src/entities/animals/axolotl.rs rename to minecraft-entities/src/animals/axolotl.rs diff --git a/minecraft-server/src/entities/animals/bee.rs b/minecraft-entities/src/animals/bee.rs similarity index 100% rename from minecraft-server/src/entities/animals/bee.rs rename to minecraft-entities/src/animals/bee.rs diff --git a/minecraft-server/src/entities/animals/cat.rs b/minecraft-entities/src/animals/cat.rs similarity index 100% rename from minecraft-server/src/entities/animals/cat.rs rename to minecraft-entities/src/animals/cat.rs diff --git a/minecraft-server/src/entities/animals/chicken.rs b/minecraft-entities/src/animals/chicken.rs similarity index 100% rename from minecraft-server/src/entities/animals/chicken.rs rename to minecraft-entities/src/animals/chicken.rs diff --git a/minecraft-server/src/entities/animals/cow.rs b/minecraft-entities/src/animals/cow.rs similarity index 100% rename from minecraft-server/src/entities/animals/cow.rs rename to minecraft-entities/src/animals/cow.rs diff --git a/minecraft-server/src/entities/animals/donkey.rs b/minecraft-entities/src/animals/donkey.rs similarity index 100% rename from minecraft-server/src/entities/animals/donkey.rs rename to minecraft-entities/src/animals/donkey.rs diff --git a/minecraft-server/src/entities/animals/fishes.rs b/minecraft-entities/src/animals/fishes.rs similarity index 100% rename from minecraft-server/src/entities/animals/fishes.rs rename to minecraft-entities/src/animals/fishes.rs diff --git a/minecraft-server/src/entities/animals/fox.rs b/minecraft-entities/src/animals/fox.rs similarity index 100% rename from minecraft-server/src/entities/animals/fox.rs rename to minecraft-entities/src/animals/fox.rs diff --git a/minecraft-server/src/entities/animals/frog.rs b/minecraft-entities/src/animals/frog.rs similarity index 100% rename from minecraft-server/src/entities/animals/frog.rs rename to minecraft-entities/src/animals/frog.rs diff --git a/minecraft-server/src/entities/animals/goat.rs b/minecraft-entities/src/animals/goat.rs similarity index 100% rename from minecraft-server/src/entities/animals/goat.rs rename to minecraft-entities/src/animals/goat.rs diff --git a/minecraft-server/src/entities/animals/hoglin.rs b/minecraft-entities/src/animals/hoglin.rs similarity index 100% rename from minecraft-server/src/entities/animals/hoglin.rs rename to minecraft-entities/src/animals/hoglin.rs diff --git a/minecraft-server/src/entities/animals/horses.rs b/minecraft-entities/src/animals/horses.rs similarity index 100% rename from minecraft-server/src/entities/animals/horses.rs rename to minecraft-entities/src/animals/horses.rs diff --git a/minecraft-server/src/entities/animals/llama.rs b/minecraft-entities/src/animals/llama.rs similarity index 100% rename from minecraft-server/src/entities/animals/llama.rs rename to minecraft-entities/src/animals/llama.rs diff --git a/minecraft-server/src/entities/animals/mod.rs b/minecraft-entities/src/animals/mod.rs similarity index 100% rename from minecraft-server/src/entities/animals/mod.rs rename to minecraft-entities/src/animals/mod.rs diff --git a/minecraft-server/src/entities/animals/ocelot.rs b/minecraft-entities/src/animals/ocelot.rs similarity index 100% rename from minecraft-server/src/entities/animals/ocelot.rs rename to minecraft-entities/src/animals/ocelot.rs diff --git a/minecraft-server/src/entities/animals/panda.rs b/minecraft-entities/src/animals/panda.rs similarity index 100% rename from minecraft-server/src/entities/animals/panda.rs rename to minecraft-entities/src/animals/panda.rs diff --git a/minecraft-server/src/entities/animals/parrot.rs b/minecraft-entities/src/animals/parrot.rs similarity index 100% rename from minecraft-server/src/entities/animals/parrot.rs rename to minecraft-entities/src/animals/parrot.rs diff --git a/minecraft-server/src/entities/animals/pig.rs b/minecraft-entities/src/animals/pig.rs similarity index 100% rename from minecraft-server/src/entities/animals/pig.rs rename to minecraft-entities/src/animals/pig.rs diff --git a/minecraft-server/src/entities/animals/polar_bear.rs b/minecraft-entities/src/animals/polar_bear.rs similarity index 100% rename from minecraft-server/src/entities/animals/polar_bear.rs rename to minecraft-entities/src/animals/polar_bear.rs diff --git a/minecraft-server/src/entities/animals/rabbit.rs b/minecraft-entities/src/animals/rabbit.rs similarity index 100% rename from minecraft-server/src/entities/animals/rabbit.rs rename to minecraft-entities/src/animals/rabbit.rs diff --git a/minecraft-server/src/entities/animals/sheep.rs b/minecraft-entities/src/animals/sheep.rs similarity index 100% rename from minecraft-server/src/entities/animals/sheep.rs rename to minecraft-entities/src/animals/sheep.rs diff --git a/minecraft-server/src/entities/animals/sniffer.rs b/minecraft-entities/src/animals/sniffer.rs similarity index 100% rename from minecraft-server/src/entities/animals/sniffer.rs rename to minecraft-entities/src/animals/sniffer.rs diff --git a/minecraft-server/src/entities/animals/strider.rs b/minecraft-entities/src/animals/strider.rs similarity index 100% rename from minecraft-server/src/entities/animals/strider.rs rename to minecraft-entities/src/animals/strider.rs diff --git a/minecraft-server/src/entities/animals/turtle.rs b/minecraft-entities/src/animals/turtle.rs similarity index 100% rename from minecraft-server/src/entities/animals/turtle.rs rename to minecraft-entities/src/animals/turtle.rs diff --git a/minecraft-server/src/entities/animals/water_animal.rs b/minecraft-entities/src/animals/water_animal.rs similarity index 100% rename from minecraft-server/src/entities/animals/water_animal.rs rename to minecraft-entities/src/animals/water_animal.rs diff --git a/minecraft-server/src/entities/animals/wolf.rs b/minecraft-entities/src/animals/wolf.rs similarity index 100% rename from minecraft-server/src/entities/animals/wolf.rs rename to minecraft-entities/src/animals/wolf.rs diff --git a/minecraft-server/src/entities/arrow.rs b/minecraft-entities/src/arrow.rs similarity index 100% rename from minecraft-server/src/entities/arrow.rs rename to minecraft-entities/src/arrow.rs diff --git a/minecraft-server/src/entities/block.rs b/minecraft-entities/src/block.rs similarity index 100% rename from minecraft-server/src/entities/block.rs rename to minecraft-entities/src/block.rs diff --git a/minecraft-server/src/entities/boat.rs b/minecraft-entities/src/boat.rs similarity index 100% rename from minecraft-server/src/entities/boat.rs rename to minecraft-entities/src/boat.rs diff --git a/minecraft-server/src/entities/display.rs b/minecraft-entities/src/display.rs similarity index 100% rename from minecraft-server/src/entities/display.rs rename to minecraft-entities/src/display.rs diff --git a/minecraft-server/src/entities/entity.rs b/minecraft-entities/src/entity.rs similarity index 100% rename from minecraft-server/src/entities/entity.rs rename to minecraft-entities/src/entity.rs diff --git a/minecraft-server/src/entities/fire_entities.rs b/minecraft-entities/src/fire_entities.rs similarity index 100% rename from minecraft-server/src/entities/fire_entities.rs rename to minecraft-entities/src/fire_entities.rs diff --git a/minecraft-server/src/entities/interaction.rs b/minecraft-entities/src/interaction.rs similarity index 100% rename from minecraft-server/src/entities/interaction.rs rename to minecraft-entities/src/interaction.rs diff --git a/minecraft-server/src/entities/item.rs b/minecraft-entities/src/item.rs similarity index 100% rename from minecraft-server/src/entities/item.rs rename to minecraft-entities/src/item.rs diff --git a/minecraft-server/src/entities/mod.rs b/minecraft-entities/src/lib.rs similarity index 99% rename from minecraft-server/src/entities/mod.rs rename to minecraft-entities/src/lib.rs index cdba8b4a..0726c1ac 100644 --- a/minecraft-server/src/entities/mod.rs +++ b/minecraft-entities/src/lib.rs @@ -33,10 +33,9 @@ pub use fire_entities::*; mod item; pub use item::*; -pub use minecraft_server_derive::{inherit, inheritable}; - -pub use crate::prelude::*; -pub use minecraft_protocol::{ +pub(crate) use minecraft_positions::*; +pub(crate) use minecraft_server_derive::{inherit, inheritable}; +pub(crate) use minecraft_protocol::{ components::{ entity::Pose, slots::{Slot, SlotItem, Hand} @@ -46,6 +45,8 @@ pub use minecraft_protocol::{ packets::UUID }; +pub type Eid = u32; + pub enum AnyEntity { Entity(Entity), Display(Display), diff --git a/minecraft-server/src/entities/living_entity.rs b/minecraft-entities/src/living_entity.rs similarity index 100% rename from minecraft-server/src/entities/living_entity.rs rename to minecraft-entities/src/living_entity.rs diff --git a/minecraft-server/src/entities/mobs/bat.rs b/minecraft-entities/src/mobs/bat.rs similarity index 100% rename from minecraft-server/src/entities/mobs/bat.rs rename to minecraft-entities/src/mobs/bat.rs diff --git a/minecraft-server/src/entities/mobs/ender_dragon.rs b/minecraft-entities/src/mobs/ender_dragon.rs similarity index 100% rename from minecraft-server/src/entities/mobs/ender_dragon.rs rename to minecraft-entities/src/mobs/ender_dragon.rs diff --git a/minecraft-server/src/entities/mobs/flying.rs b/minecraft-entities/src/mobs/flying.rs similarity index 100% rename from minecraft-server/src/entities/mobs/flying.rs rename to minecraft-entities/src/mobs/flying.rs diff --git a/minecraft-server/src/entities/mobs/golems.rs b/minecraft-entities/src/mobs/golems.rs similarity index 100% rename from minecraft-server/src/entities/mobs/golems.rs rename to minecraft-entities/src/mobs/golems.rs diff --git a/minecraft-server/src/entities/mobs/mod.rs b/minecraft-entities/src/mobs/mod.rs similarity index 100% rename from minecraft-server/src/entities/mobs/mod.rs rename to minecraft-entities/src/mobs/mod.rs diff --git a/minecraft-server/src/entities/mobs/slime.rs b/minecraft-entities/src/mobs/slime.rs similarity index 100% rename from minecraft-server/src/entities/mobs/slime.rs rename to minecraft-entities/src/mobs/slime.rs diff --git a/minecraft-server/src/entities/mobs/squid.rs b/minecraft-entities/src/mobs/squid.rs similarity index 100% rename from minecraft-server/src/entities/mobs/squid.rs rename to minecraft-entities/src/mobs/squid.rs diff --git a/minecraft-server/src/entities/mobs/villagers.rs b/minecraft-entities/src/mobs/villagers.rs similarity index 100% rename from minecraft-server/src/entities/mobs/villagers.rs rename to minecraft-entities/src/mobs/villagers.rs diff --git a/minecraft-server/src/entities/monsters/base_piglin.rs b/minecraft-entities/src/monsters/base_piglin.rs similarity index 100% rename from minecraft-server/src/entities/monsters/base_piglin.rs rename to minecraft-entities/src/monsters/base_piglin.rs diff --git a/minecraft-server/src/entities/monsters/blaze.rs b/minecraft-entities/src/monsters/blaze.rs similarity index 100% rename from minecraft-server/src/entities/monsters/blaze.rs rename to minecraft-entities/src/monsters/blaze.rs diff --git a/minecraft-server/src/entities/monsters/creeper.rs b/minecraft-entities/src/monsters/creeper.rs similarity index 100% rename from minecraft-server/src/entities/monsters/creeper.rs rename to minecraft-entities/src/monsters/creeper.rs diff --git a/minecraft-server/src/entities/monsters/enderman.rs b/minecraft-entities/src/monsters/enderman.rs similarity index 100% rename from minecraft-server/src/entities/monsters/enderman.rs rename to minecraft-entities/src/monsters/enderman.rs diff --git a/minecraft-server/src/entities/monsters/endermite.rs b/minecraft-entities/src/monsters/endermite.rs similarity index 100% rename from minecraft-server/src/entities/monsters/endermite.rs rename to minecraft-entities/src/monsters/endermite.rs diff --git a/minecraft-server/src/entities/monsters/giant.rs b/minecraft-entities/src/monsters/giant.rs similarity index 100% rename from minecraft-server/src/entities/monsters/giant.rs rename to minecraft-entities/src/monsters/giant.rs diff --git a/minecraft-server/src/entities/monsters/guardian.rs b/minecraft-entities/src/monsters/guardian.rs similarity index 100% rename from minecraft-server/src/entities/monsters/guardian.rs rename to minecraft-entities/src/monsters/guardian.rs diff --git a/minecraft-server/src/entities/monsters/mod.rs b/minecraft-entities/src/monsters/mod.rs similarity index 100% rename from minecraft-server/src/entities/monsters/mod.rs rename to minecraft-entities/src/monsters/mod.rs diff --git a/minecraft-server/src/entities/monsters/piglin.rs b/minecraft-entities/src/monsters/piglin.rs similarity index 100% rename from minecraft-server/src/entities/monsters/piglin.rs rename to minecraft-entities/src/monsters/piglin.rs diff --git a/minecraft-server/src/entities/monsters/raider.rs b/minecraft-entities/src/monsters/raider.rs similarity index 100% rename from minecraft-server/src/entities/monsters/raider.rs rename to minecraft-entities/src/monsters/raider.rs diff --git a/minecraft-server/src/entities/monsters/silverfish.rs b/minecraft-entities/src/monsters/silverfish.rs similarity index 100% rename from minecraft-server/src/entities/monsters/silverfish.rs rename to minecraft-entities/src/monsters/silverfish.rs diff --git a/minecraft-server/src/entities/monsters/skeleton.rs b/minecraft-entities/src/monsters/skeleton.rs similarity index 100% rename from minecraft-server/src/entities/monsters/skeleton.rs rename to minecraft-entities/src/monsters/skeleton.rs diff --git a/minecraft-server/src/entities/monsters/spellcaster_illager.rs b/minecraft-entities/src/monsters/spellcaster_illager.rs similarity index 100% rename from minecraft-server/src/entities/monsters/spellcaster_illager.rs rename to minecraft-entities/src/monsters/spellcaster_illager.rs diff --git a/minecraft-server/src/entities/monsters/spider.rs b/minecraft-entities/src/monsters/spider.rs similarity index 100% rename from minecraft-server/src/entities/monsters/spider.rs rename to minecraft-entities/src/monsters/spider.rs diff --git a/minecraft-server/src/entities/monsters/vex.rs b/minecraft-entities/src/monsters/vex.rs similarity index 100% rename from minecraft-server/src/entities/monsters/vex.rs rename to minecraft-entities/src/monsters/vex.rs diff --git a/minecraft-server/src/entities/monsters/warden.rs b/minecraft-entities/src/monsters/warden.rs similarity index 100% rename from minecraft-server/src/entities/monsters/warden.rs rename to minecraft-entities/src/monsters/warden.rs diff --git a/minecraft-server/src/entities/monsters/witch.rs b/minecraft-entities/src/monsters/witch.rs similarity index 100% rename from minecraft-server/src/entities/monsters/witch.rs rename to minecraft-entities/src/monsters/witch.rs diff --git a/minecraft-server/src/entities/monsters/wither.rs b/minecraft-entities/src/monsters/wither.rs similarity index 100% rename from minecraft-server/src/entities/monsters/wither.rs rename to minecraft-entities/src/monsters/wither.rs diff --git a/minecraft-server/src/entities/monsters/zoglin.rs b/minecraft-entities/src/monsters/zoglin.rs similarity index 100% rename from minecraft-server/src/entities/monsters/zoglin.rs rename to minecraft-entities/src/monsters/zoglin.rs diff --git a/minecraft-server/src/entities/monsters/zombies.rs b/minecraft-entities/src/monsters/zombies.rs similarity index 100% rename from minecraft-server/src/entities/monsters/zombies.rs rename to minecraft-entities/src/monsters/zombies.rs diff --git a/minecraft-server/src/entities/particles.rs b/minecraft-entities/src/particles.rs similarity index 100% rename from minecraft-server/src/entities/particles.rs rename to minecraft-entities/src/particles.rs diff --git a/minecraft-server/src/entities/player.rs b/minecraft-entities/src/player.rs similarity index 100% rename from minecraft-server/src/entities/player.rs rename to minecraft-entities/src/player.rs diff --git a/minecraft-server/src/entities/shulker.rs b/minecraft-entities/src/shulker.rs similarity index 100% rename from minecraft-server/src/entities/shulker.rs rename to minecraft-entities/src/shulker.rs diff --git a/minecraft-server/src/entities/thrown_item_projectile.rs b/minecraft-entities/src/thrown_item_projectile.rs similarity index 100% rename from minecraft-server/src/entities/thrown_item_projectile.rs rename to minecraft-entities/src/thrown_item_projectile.rs diff --git a/minecraft-positions/Cargo.toml b/minecraft-positions/Cargo.toml new file mode 100644 index 00000000..f7e2109b --- /dev/null +++ b/minecraft-positions/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "minecraft-positions" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/minecraft-server/src/position.rs b/minecraft-positions/src/lib.rs similarity index 99% rename from minecraft-server/src/position.rs rename to minecraft-positions/src/lib.rs index 45e2532c..03fbe43e 100644 --- a/minecraft-server/src/position.rs +++ b/minecraft-positions/src/lib.rs @@ -1,3 +1,5 @@ +mod shards; + #[derive(Debug, Clone, PartialEq, Eq, Hash, Default)] pub struct BlockPosition { pub x: i32, diff --git a/minecraft-positions/src/shards.rs b/minecraft-positions/src/shards.rs new file mode 100644 index 00000000..3d042bb2 --- /dev/null +++ b/minecraft-positions/src/shards.rs @@ -0,0 +1,7 @@ +use crate::*; + +impl ChunkColumnPosition { + pub fn shard(&self, shard_count: usize) -> usize { + (self.cx + self.cz).unsigned_abs() as usize % shard_count + } +} diff --git a/minecraft-server/Cargo.toml b/minecraft-server/Cargo.toml index f97c0594..3f8e8756 100644 --- a/minecraft-server/Cargo.toml +++ b/minecraft-server/Cargo.toml @@ -11,5 +11,6 @@ log = "0.4.20" tokio = { version = "1.33.0", features = ["full"] } futures = "0.3.29" minecraft-protocol = { path="../minecraft-protocol" } -minecraft-server-derive = { path="../minecraft-server-derive" } +minecraft-entities = { path="../minecraft-entities" } +minecraft-positions = { path="../minecraft-positions" } tags-macros = { path = "../tags-macros"} diff --git a/minecraft-server/src/ecs/entities.rs b/minecraft-server/src/ecs/entities.rs index c56aebe6..01b4e549 100644 --- a/minecraft-server/src/ecs/entities.rs +++ b/minecraft-server/src/ecs/entities.rs @@ -2,8 +2,6 @@ use crate::{prelude::*, entities::AnyEntity}; use minecraft_protocol::packets::UUID; use super::tags::Tag; -pub type Eid = u32; - pub struct Entities { pub entities: RwLock>, diff --git a/minecraft-server/src/main.rs b/minecraft-server/src/main.rs index 8753b2dd..d95b8a8e 100644 --- a/minecraft-server/src/main.rs +++ b/minecraft-server/src/main.rs @@ -1,14 +1,11 @@ #![allow(clippy::uninit_vec)] -mod position; mod player_handler; mod server_behavior; mod prelude; -mod entities; mod map; mod ecs; -use std::env; use crate::prelude::*; struct Map { diff --git a/minecraft-server/src/map.rs b/minecraft-server/src/map.rs index 535f2ff7..63ddc901 100644 --- a/minecraft-server/src/map.rs +++ b/minecraft-server/src/map.rs @@ -12,12 +12,6 @@ pub struct WorldMap { shards: Vec>>, } -impl ChunkColumnPosition { - fn shard(&self, shard_count: usize) -> usize { - (self.cx + self.cz).unsigned_abs() as usize % shard_count - } -} - #[derive(Clone)] struct Chunk { data: ChunkData, diff --git a/minecraft-server/src/prelude.rs b/minecraft-server/src/prelude.rs index 9be17e6e..bb52db22 100644 --- a/minecraft-server/src/prelude.rs +++ b/minecraft-server/src/prelude.rs @@ -1,4 +1,4 @@ -pub use crate::{ecs::*, player_handler::*, position::*, server_behavior::*}; +pub use crate::{ecs::*, player_handler::*, server_behavior::*}; pub use futures::FutureExt; pub use log::{debug, error, info, trace, warn}; pub use minecraft_protocol::{ @@ -52,5 +52,7 @@ pub use tokio::{ RwLock, }, }; +pub use minecraft_positions::*; +pub use minecraft_entities::*; pub const MAX_PLAYERS: usize = 1001; From 9da80834947b0dd34650cd5058f20542439f77e7 Mon Sep 17 00:00:00 2001 From: Mubelotix Date: Wed, 8 Nov 2023 23:03:07 +0100 Subject: [PATCH 103/111] Rename minecraft-server-derive to minecraft-entities-derive --- .../Cargo.toml | 2 +- .../src/lib.rs | 0 minecraft-entities/Cargo.toml | 2 +- minecraft-entities/src/lib.rs | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) rename {minecraft-server-derive => minecraft-entities-derive}/Cargo.toml (75%) rename {minecraft-server-derive => minecraft-entities-derive}/src/lib.rs (100%) diff --git a/minecraft-server-derive/Cargo.toml b/minecraft-entities-derive/Cargo.toml similarity index 75% rename from minecraft-server-derive/Cargo.toml rename to minecraft-entities-derive/Cargo.toml index f45249e4..a65a0c22 100644 --- a/minecraft-server-derive/Cargo.toml +++ b/minecraft-entities-derive/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "minecraft-server-derive" +name = "minecraft-entities-derive" version = "0.1.0" edition = "2021" diff --git a/minecraft-server-derive/src/lib.rs b/minecraft-entities-derive/src/lib.rs similarity index 100% rename from minecraft-server-derive/src/lib.rs rename to minecraft-entities-derive/src/lib.rs diff --git a/minecraft-entities/Cargo.toml b/minecraft-entities/Cargo.toml index 484b6e70..4d13a269 100644 --- a/minecraft-entities/Cargo.toml +++ b/minecraft-entities/Cargo.toml @@ -8,4 +8,4 @@ edition = "2021" [dependencies] minecraft-protocol = { path = "../minecraft-protocol" } minecraft-positions = { path = "../minecraft-positions" } -minecraft-server-derive = { path="../minecraft-server-derive" } +minecraft-entities-derive = { path="../minecraft-entities-derive" } diff --git a/minecraft-entities/src/lib.rs b/minecraft-entities/src/lib.rs index 0726c1ac..97591a3f 100644 --- a/minecraft-entities/src/lib.rs +++ b/minecraft-entities/src/lib.rs @@ -34,7 +34,7 @@ mod item; pub use item::*; pub(crate) use minecraft_positions::*; -pub(crate) use minecraft_server_derive::{inherit, inheritable}; +pub(crate) use minecraft_entities_derive::{inherit, inheritable}; pub(crate) use minecraft_protocol::{ components::{ entity::Pose, From 5ea9f428ea042ff27185eaee01568fbd557ad1e3 Mon Sep 17 00:00:00 2001 From: Mubelotix Date: Wed, 8 Nov 2023 23:07:03 +0100 Subject: [PATCH 104/111] Update minecraft-server/src/player_handler/play.rs Co-authored-by: DimitriTimoz <45998396+DimitriTimoz@users.noreply.github.com> --- minecraft-server/src/player_handler/play.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/minecraft-server/src/player_handler/play.rs b/minecraft-server/src/player_handler/play.rs index 4fc29205..fa0f6784 100644 --- a/minecraft-server/src/player_handler/play.rs +++ b/minecraft-server/src/player_handler/play.rs @@ -145,7 +145,7 @@ impl PlayerHandler { }, DigBlock { status, location, face: _, sequence: _ } => { use minecraft_protocol::components::blocks::DiggingState; - +TODO: Check is legit if self.game_mode == Gamemode::Creative || status == DiggingState::Finished { self.world.set_block(location.into(), BlockWithState::Air).await; } From abbd6ff1edb994ec567e4dc8d3ae90d5da4672f2 Mon Sep 17 00:00:00 2001 From: Mubelotix Date: Wed, 8 Nov 2023 23:23:28 +0100 Subject: [PATCH 105/111] Split world.rs into multiple files --- minecraft-server/src/main.rs | 1 - minecraft-server/src/prelude.rs | 2 +- minecraft-server/src/world/change_event.rs | 6 +++ minecraft-server/src/world/loading_manager.rs | 35 +++++++++++++++ minecraft-server/src/{ => world}/map.rs | 0 .../src/{world.rs => world/mod.rs} | 45 +++---------------- 6 files changed, 48 insertions(+), 41 deletions(-) create mode 100644 minecraft-server/src/world/change_event.rs create mode 100644 minecraft-server/src/world/loading_manager.rs rename minecraft-server/src/{ => world}/map.rs (100%) rename minecraft-server/src/{world.rs => world/mod.rs} (67%) diff --git a/minecraft-server/src/main.rs b/minecraft-server/src/main.rs index 15ac05d6..4f554561 100644 --- a/minecraft-server/src/main.rs +++ b/minecraft-server/src/main.rs @@ -3,7 +3,6 @@ mod player_handler; mod server_behavior; mod prelude; -mod map; mod ecs; mod world; diff --git a/minecraft-server/src/prelude.rs b/minecraft-server/src/prelude.rs index f5da803b..12714819 100644 --- a/minecraft-server/src/prelude.rs +++ b/minecraft-server/src/prelude.rs @@ -1,4 +1,4 @@ -pub use crate::{ecs::*, player_handler::*, server_behavior::*, map::*, world::*}; +pub use crate::{ecs::*, player_handler::*, server_behavior::*, world::*}; pub use futures::FutureExt; pub use log::{debug, error, info, trace, warn}; pub use minecraft_protocol::{ diff --git a/minecraft-server/src/world/change_event.rs b/minecraft-server/src/world/change_event.rs new file mode 100644 index 00000000..6ac08fcf --- /dev/null +++ b/minecraft-server/src/world/change_event.rs @@ -0,0 +1,6 @@ +use crate::prelude::*; + +#[derive(Debug, Clone)] +pub enum WorldChange { + BlockChange(BlockPosition, BlockWithState), +} diff --git a/minecraft-server/src/world/loading_manager.rs b/minecraft-server/src/world/loading_manager.rs new file mode 100644 index 00000000..3c9dbe37 --- /dev/null +++ b/minecraft-server/src/world/loading_manager.rs @@ -0,0 +1,35 @@ +use crate::prelude::*; + +#[derive(Default)] +pub(super) struct WorldLoadingManager { + loaded_chunks: HashMap>, + loader_entities: HashMap>, +} + +impl WorldLoadingManager { + pub(super) fn update_loaded_chunks(&mut self, uuid: UUID, loaded_chunks: HashSet) { + let loaded_before = self.loaded_chunks.entry(uuid).or_default(); + for just_unloaded in loaded_before.difference(&loaded_chunks) { + let mut can_be_removed = false; + self.loader_entities.entry(just_unloaded.clone()).and_modify(|f| { + f.remove(&uuid); + if f.is_empty() { can_be_removed = true;} + }); + if can_be_removed { + self.loader_entities.remove(just_unloaded); + } + } + for newly_loaded in loaded_chunks.difference(loaded_before).cloned() { + self.loader_entities.entry(newly_loaded).or_default().insert(uuid); + } + *loaded_before = loaded_chunks; + } + + pub(super) fn get_loaders(&self, position: &ChunkColumnPosition) -> Option<&HashSet> { + self.loader_entities.get(position) + } + + pub(super) fn get_loaded_chunks(&self) -> HashSet { + self.loader_entities.keys().cloned().collect() + } +} diff --git a/minecraft-server/src/map.rs b/minecraft-server/src/world/map.rs similarity index 100% rename from minecraft-server/src/map.rs rename to minecraft-server/src/world/map.rs diff --git a/minecraft-server/src/world.rs b/minecraft-server/src/world/mod.rs similarity index 67% rename from minecraft-server/src/world.rs rename to minecraft-server/src/world/mod.rs index ab608c20..2f1881dd 100644 --- a/minecraft-server/src/world.rs +++ b/minecraft-server/src/world/mod.rs @@ -1,44 +1,11 @@ - use crate::prelude::*; -#[derive(Debug, Clone)] -pub enum WorldChange { - BlockChange(BlockPosition, BlockWithState), -} - -#[derive(Default)] -struct WorldLoadingManager { - loaded_chunks: HashMap>, - loader_entities: HashMap>, -} - -impl WorldLoadingManager { - fn update_loaded_chunks(&mut self, uuid: UUID, loaded_chunks: HashSet) { - let loaded_before = self.loaded_chunks.entry(uuid).or_default(); - for just_unloaded in loaded_before.difference(&loaded_chunks) { - let mut can_be_removed = false; - self.loader_entities.entry(just_unloaded.clone()).and_modify(|f| { - f.remove(&uuid); - if f.is_empty() { can_be_removed = true;} - }); - if can_be_removed { - self.loader_entities.remove(just_unloaded); - } - } - for newly_loaded in loaded_chunks.difference(loaded_before).cloned() { - self.loader_entities.entry(newly_loaded).or_default().insert(uuid); - } - *loaded_before = loaded_chunks; - } - - pub fn get_loaders(&self, position: &ChunkColumnPosition) -> Option<&HashSet> { - self.loader_entities.get(position) - } - - pub fn get_loaded_chunks(&self) -> HashSet { - self.loader_entities.keys().cloned().collect() - } -} +mod change_event; +pub use change_event::*; +mod loading_manager; +use loading_manager::*; +mod map; +use map::*; /// World is the union of the map and entities. /// World handles loaded chunks and entities. From cfdafa2b3da1c29ca6fe3472cd2dea60f5c03ff9 Mon Sep 17 00:00:00 2001 From: Mubelotix Date: Wed, 8 Nov 2023 23:25:25 +0100 Subject: [PATCH 106/111] Remove entry when empty --- minecraft-server/src/world/loading_manager.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/minecraft-server/src/world/loading_manager.rs b/minecraft-server/src/world/loading_manager.rs index 3c9dbe37..4c2e48fa 100644 --- a/minecraft-server/src/world/loading_manager.rs +++ b/minecraft-server/src/world/loading_manager.rs @@ -23,6 +23,9 @@ impl WorldLoadingManager { self.loader_entities.entry(newly_loaded).or_default().insert(uuid); } *loaded_before = loaded_chunks; + if loaded_before.is_empty() { + self.loaded_chunks.remove(&uuid); + } } pub(super) fn get_loaders(&self, position: &ChunkColumnPosition) -> Option<&HashSet> { From 14ffec12b1fc1d232618fc1adb4f77895a8585bb Mon Sep 17 00:00:00 2001 From: Mubelotix Date: Wed, 8 Nov 2023 23:32:58 +0100 Subject: [PATCH 107/111] Add test_world_loading_manager --- minecraft-server/src/world/loading_manager.rs | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/minecraft-server/src/world/loading_manager.rs b/minecraft-server/src/world/loading_manager.rs index 4c2e48fa..3a5d2178 100644 --- a/minecraft-server/src/world/loading_manager.rs +++ b/minecraft-server/src/world/loading_manager.rs @@ -36,3 +36,28 @@ impl WorldLoadingManager { self.loader_entities.keys().cloned().collect() } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_world_loading_manager() { + let mut manager = WorldLoadingManager::default(); + + let mut loaded_first = vec![ChunkColumnPosition{cx: 0, cz: 0}, ChunkColumnPosition{cx: 1, cz: 0}, ChunkColumnPosition{cx: 2, cz: 0}]; + manager.update_loaded_chunks(0, loaded_first.clone().into_iter().collect()); + assert!(manager.get_loaded_chunks().len() == 3); + assert!(manager.get_loaders(&ChunkColumnPosition{cx: 2, cz: 0}).unwrap().len() == 1); + + let loaded_second = vec![ChunkColumnPosition{cx: 0, cz: 1}, ChunkColumnPosition{cx: 1, cz: 1}, ChunkColumnPosition{cx: 2, cz: 1}]; + manager.update_loaded_chunks(1, loaded_second.clone().into_iter().collect()); + assert!(manager.get_loaded_chunks().len() == 6); + + loaded_first = vec![ChunkColumnPosition{cx: 0, cz: 0}, ChunkColumnPosition{cx: 1, cz: 1}]; + manager.update_loaded_chunks(0, loaded_first.clone().into_iter().collect()); + assert!(manager.get_loaded_chunks().len() == 4); + assert!(manager.get_loaders(&ChunkColumnPosition{cx: 1, cz: 1}).unwrap().len() == 2); + assert!(manager.get_loaders(&ChunkColumnPosition{cx: 2, cz: 0}).is_none()); + } +} From 214aac0d92164ac759bb66cd9cb0885e3e48021d Mon Sep 17 00:00:00 2001 From: Mubelotix Date: Wed, 8 Nov 2023 23:42:59 +0100 Subject: [PATCH 108/111] Add test_world_notifications --- minecraft-server/src/world/mod.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/minecraft-server/src/world/mod.rs b/minecraft-server/src/world/mod.rs index 2f1881dd..687c8b99 100644 --- a/minecraft-server/src/world/mod.rs +++ b/minecraft-server/src/world/mod.rs @@ -78,3 +78,23 @@ impl World { } } } + +#[cfg(test)] +mod tests { + use super::*; + use tokio::sync::mpsc::error::TryRecvError; + + #[tokio::test] + async fn test_world_notifications() { + let world = World::new(); + + let mut receiver1 = world.add_loader(1).await; + let mut receiver2 = world.add_loader(2).await; + world.update_loaded_chunks(1, vec![ChunkColumnPosition{cx: 0, cz: 0}].into_iter().collect()).await; + world.update_loaded_chunks(2, vec![ChunkColumnPosition{cx: 1, cz: 1}].into_iter().collect()).await; + + world.set_block(BlockPosition{x: 1, y: 1, z: 1}, BlockWithState::Air).await; + assert!(matches!(receiver1.try_recv(), Ok(WorldChange::BlockChange(BlockPosition{x: 1, y: 1, z: 1}, BlockWithState::Air)))); + assert!(matches!(receiver2.try_recv(), Err(TryRecvError::Empty))); + } +} From 93a42316c788fe3b1ec40784f756d1f19b29dfbd Mon Sep 17 00:00:00 2001 From: Mubelotix Date: Sun, 12 Nov 2023 00:48:15 +0100 Subject: [PATCH 109/111] Todos --- .github/workflows/todo.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/workflows/todo.yml diff --git a/.github/workflows/todo.yml b/.github/workflows/todo.yml new file mode 100644 index 00000000..fb926ea9 --- /dev/null +++ b/.github/workflows/todo.yml @@ -0,0 +1,23 @@ +name: "Run TODO to Issue" +on: + push: + workflow_dispatch: + inputs: + MANUAL_COMMIT_REF: + description: "The SHA of the commit to get the diff for" + required: true + MANUAL_BASE_REF: + description: "By default, the commit entered above is compared to the one directly before it; to go back further, enter an earlier SHA here" + required: false +jobs: + build: + runs-on: "ubuntu-latest" + steps: + - uses: "actions/checkout@v3" + - name: "TODO to Issue" + uses: "alstr/todo-to-issue-action@v4" + with: + IDENTIFIERS: '[{"name": "TODO", "labels": []}, {"name": "FIXME", "labels": ["bug"]}]' + env: + MANUAL_COMMIT_REF: ${{ inputs.MANUAL_COMMIT_REF }} + MANUAL_BASE_REF: ${{ inputs.MANUAL_BASE_REF }} From 384345781046fd84f1d8649e64d8bd7de9a83969 Mon Sep 17 00:00:00 2001 From: Mubelotix Date: Sun, 12 Nov 2023 01:00:19 +0100 Subject: [PATCH 110/111] Add template --- .github/workflows/todo.yml | 15 ++------------- minecraft-server/src/server_behavior.rs | 2 +- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/.github/workflows/todo.yml b/.github/workflows/todo.yml index fb926ea9..f9f59d11 100644 --- a/.github/workflows/todo.yml +++ b/.github/workflows/todo.yml @@ -1,14 +1,5 @@ name: "Run TODO to Issue" -on: - push: - workflow_dispatch: - inputs: - MANUAL_COMMIT_REF: - description: "The SHA of the commit to get the diff for" - required: true - MANUAL_BASE_REF: - description: "By default, the commit entered above is compared to the one directly before it; to go back further, enter an earlier SHA here" - required: false +on: ["push"] jobs: build: runs-on: "ubuntu-latest" @@ -18,6 +9,4 @@ jobs: uses: "alstr/todo-to-issue-action@v4" with: IDENTIFIERS: '[{"name": "TODO", "labels": []}, {"name": "FIXME", "labels": ["bug"]}]' - env: - MANUAL_COMMIT_REF: ${{ inputs.MANUAL_COMMIT_REF }} - MANUAL_BASE_REF: ${{ inputs.MANUAL_BASE_REF }} + ISSUE_TEMPLATE: '{{ title }}\n\n{{ body }}\n\n{{ url }}\n\n' diff --git a/minecraft-server/src/server_behavior.rs b/minecraft-server/src/server_behavior.rs index 7072b4e0..14bb2585 100644 --- a/minecraft-server/src/server_behavior.rs +++ b/minecraft-server/src/server_behavior.rs @@ -58,7 +58,7 @@ impl ServerBehavior { for i in (0..self.player_handlers.len()).rev() { let handler = &mut self.player_handlers[i]; - match handler.as_mut().poll(cx) { + match handler.as_mut().poll(cx) { // TODO: spawn tasks instead of polling them here Ready(_) => { debug!("Player handler finished"); self.player_handlers.swap_remove(i); From 4bf53adbe55f29c6a31a9fd527aba2f09f72a7a5 Mon Sep 17 00:00:00 2001 From: Mubelotix Date: Sun, 12 Nov 2023 01:03:07 +0100 Subject: [PATCH 111/111] Edit issue template --- .github/workflows/todo.yml | 2 +- minecraft-server/src/world/mod.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/todo.yml b/.github/workflows/todo.yml index f9f59d11..4d894cfa 100644 --- a/.github/workflows/todo.yml +++ b/.github/workflows/todo.yml @@ -9,4 +9,4 @@ jobs: uses: "alstr/todo-to-issue-action@v4" with: IDENTIFIERS: '[{"name": "TODO", "labels": []}, {"name": "FIXME", "labels": ["bug"]}]' - ISSUE_TEMPLATE: '{{ title }}\n\n{{ body }}\n\n{{ url }}\n\n' + ISSUE_TEMPLATE: "{{ title }}\n\n{{ body }}\n\n{{ url }}\n\n" diff --git a/minecraft-server/src/world/mod.rs b/minecraft-server/src/world/mod.rs index 687c8b99..414ada9f 100644 --- a/minecraft-server/src/world/mod.rs +++ b/minecraft-server/src/world/mod.rs @@ -15,7 +15,7 @@ pub struct World { entities: Entities, loading_manager: RwLock, - change_senders: RwLock>>, + change_senders: RwLock>>, // TODO: Add a way to select events you want to subscribe to } impl World {