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/BaseAttributeMap.cpp | 82 ++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 Minecraft.World/BaseAttributeMap.cpp (limited to 'Minecraft.World/BaseAttributeMap.cpp') diff --git a/Minecraft.World/BaseAttributeMap.cpp b/Minecraft.World/BaseAttributeMap.cpp new file mode 100644 index 00000000..5a920f24 --- /dev/null +++ b/Minecraft.World/BaseAttributeMap.cpp @@ -0,0 +1,82 @@ +#include "stdafx.h" +#include "net.minecraft.world.entity.ai.attributes.h" +#include "BaseAttributeMap.h" + +BaseAttributeMap::~BaseAttributeMap() +{ + for(AUTO_VAR(it,attributesById.begin()); it != attributesById.end(); ++it) + { + delete it->second; + } +} + +AttributeInstance *BaseAttributeMap::getInstance(Attribute *attribute) +{ + return getInstance(attribute->getId()); +} + +AttributeInstance *BaseAttributeMap::getInstance(eATTRIBUTE_ID id) +{ + AUTO_VAR(it,attributesById.find(id)); + if(it != attributesById.end()) + { + return it->second; + } + else + { + return NULL; + } +} + +void BaseAttributeMap::getAttributes(vector& atts) +{ + for(AUTO_VAR(it,attributesById.begin()); it != attributesById.end(); ++it) + { + atts.push_back(it->second); + } +} + +void BaseAttributeMap::onAttributeModified(ModifiableAttributeInstance *attributeInstance) +{ +} + +void BaseAttributeMap::removeItemModifiers(shared_ptr item) +{ + attrAttrModMap *modifiers = item->getAttributeModifiers(); + + for(AUTO_VAR(it, modifiers->begin()); it != modifiers->end(); ++it) + { + AttributeInstance *attribute = getInstance(it->first); + AttributeModifier *modifier = it->second; + + if (attribute != NULL) + { + attribute->removeModifier(modifier); + } + + delete modifier; + } + + delete modifiers; +} + +void BaseAttributeMap::addItemModifiers(shared_ptr item) +{ + attrAttrModMap *modifiers = item->getAttributeModifiers(); + + for(AUTO_VAR(it, modifiers->begin()); it != modifiers->end(); ++it) + { + AttributeInstance *attribute = getInstance(it->first); + AttributeModifier *modifier = it->second; + + if (attribute != NULL) + { + attribute->removeModifier(modifier); + attribute->addModifier(new AttributeModifier(*modifier)); + } + + delete modifier; + } + + delete modifiers; +} -- cgit v1.2.3