From b3feddfef372618c8a9d7a0abcaf18cfad866c18 Mon Sep 17 00:00:00 2001 From: daoge <3523206925@qq.com> Date: Tue, 3 Mar 2026 03:04:10 +0800 Subject: feat: TU19 (Dec 2014) Features & Content (#155) * try to resolve merge conflict * feat: TU19 (Dec 2014) Features & Content (#32) * December 2014 files * Working release build * Fix compilation issues * Add sound to Windows64Media * Add DLC content and force Tutorial DLC * Revert "Add DLC content and force Tutorial DLC" This reverts commit 97a43994725008e35fceb984d5549df9c8cea470. * Disable broken light packing * Disable breakpoint during DLC texture map load Allows DLC loading but the DLC textures are still broken * Fix post build not working * ... * fix vs2022 build * fix cmake build --------- Co-authored-by: Loki --- Minecraft.World/EntitySelector.cpp | 42 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Minecraft.World/EntitySelector.cpp (limited to 'Minecraft.World/EntitySelector.cpp') diff --git a/Minecraft.World/EntitySelector.cpp b/Minecraft.World/EntitySelector.cpp new file mode 100644 index 00000000..36c7bf88 --- /dev/null +++ b/Minecraft.World/EntitySelector.cpp @@ -0,0 +1,42 @@ +#include "stdafx.h" +#include "Container.h" +#include "EntitySelector.h" + +const EntitySelector *EntitySelector::ENTITY_STILL_ALIVE = new AliveEntitySelector(); +const EntitySelector *EntitySelector::CONTAINER_ENTITY_SELECTOR = new ContainerEntitySelector(); + +bool AliveEntitySelector::matches(shared_ptr entity) const +{ + return entity->isAlive(); +} + +bool ContainerEntitySelector::matches(shared_ptr entity) const +{ + return (dynamic_pointer_cast(entity) != NULL) && entity->isAlive(); +} + +MobCanWearArmourEntitySelector::MobCanWearArmourEntitySelector(shared_ptr item) +{ + this->item = item; +} + +bool MobCanWearArmourEntitySelector::matches(shared_ptr entity) const +{ + if ( !entity->isAlive() ) return false; + if ( !entity->instanceof(eTYPE_LIVINGENTITY) ) return false; + + shared_ptr mob = dynamic_pointer_cast(entity); + + if (mob->getCarried(Mob::getEquipmentSlotForItem(item)) != NULL) return false; + + if ( mob->instanceof(eTYPE_MOB) ) + { + return dynamic_pointer_cast(mob)->canPickUpLoot(); + } + else if (mob->instanceof(eTYPE_PLAYER)) + { + return true; + } + + return false; +} \ No newline at end of file -- cgit v1.2.3