From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- Minecraft.World/ThrownEgg.cpp | 67 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 Minecraft.World/ThrownEgg.cpp (limited to 'Minecraft.World/ThrownEgg.cpp') diff --git a/Minecraft.World/ThrownEgg.cpp b/Minecraft.World/ThrownEgg.cpp new file mode 100644 index 00000000..45e5ca8c --- /dev/null +++ b/Minecraft.World/ThrownEgg.cpp @@ -0,0 +1,67 @@ +#include "stdafx.h" +#include "net.minecraft.world.level.h" +#include "net.minecraft.world.phys.h" +#include "net.minecraft.world.entity.animal.h" +#include "net.minecraft.world.damagesource.h" +#include "com.mojang.nbt.h" +#include "ThrownEgg.h" +#include "MobCategory.h" + + + +void ThrownEgg::_init() +{ + // 4J Stu - This function call had to be moved here from the Entity ctor to ensure that + // the derived version of the function is called + this->defineSynchedData(); +} + +ThrownEgg::ThrownEgg(Level *level) : Throwable(level) +{ + _init(); +} + +ThrownEgg::ThrownEgg(Level *level, shared_ptr mob) : Throwable(level,mob) +{ + _init(); +} + +ThrownEgg::ThrownEgg(Level *level, double x, double y, double z) : Throwable(level,x,y,z) +{ + _init(); +} + +void ThrownEgg::onHit(HitResult *res) +{ + if (res->entity != NULL) + { + DamageSource *damageSource = DamageSource::thrown(shared_from_this(), owner); + res->entity->hurt(damageSource, 0); + delete damageSource; + } + if (!level->isClientSide && random->nextInt(8) == 0) + { + if(level->canCreateMore( eTYPE_CHICKEN, Level::eSpawnType_Breed) ) // 4J - added limit for number of chickens in world + { + int count = 1; + if (random->nextInt(32) == 0) count = 4; + for (int i = 0; i < count; i++) + { + shared_ptr chicken = shared_ptr( new Chicken(level) ); + chicken->setAge(-20 * 60 * 20); + + chicken->moveTo(x, y, z, yRot, 0); + chicken->setDespawnProtected(); // 4J added, default to being protected against despawning + level->addEntity(chicken); + } + } + } + + for (int i = 0; i < 8; i++) + level->addParticle(eParticleType_snowballpoof, x, y, z, 0, 0, 0); + + if (!level->isClientSide) + { + remove(); + } +} -- cgit v1.2.3