diff options
| author | daoge <3523206925@qq.com> | 2026-03-03 03:04:10 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-03 03:04:10 +0800 |
| commit | b3feddfef372618c8a9d7a0abcaf18cfad866c18 (patch) | |
| tree | 267761c3bb39241ba5c347bfbe2254d06686e287 /Minecraft.World/Attribute.h | |
| parent | 84c31a2331f7a0ec85b9d438992e244f60e5020f (diff) | |
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 <lokirautio@gmail.com>
Diffstat (limited to 'Minecraft.World/Attribute.h')
| -rw-r--r-- | Minecraft.World/Attribute.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/Minecraft.World/Attribute.h b/Minecraft.World/Attribute.h new file mode 100644 index 00000000..1fb5246b --- /dev/null +++ b/Minecraft.World/Attribute.h @@ -0,0 +1,71 @@ +#pragma once +class AttributeModifier; + +// 4J: This ID is serialised into save data so new attributes must always be added after existing ones +enum eATTRIBUTE_ID +{ + // 1.6.4 + eAttributeId_GENERIC_MAXHEALTH, + eAttributeId_GENERIC_FOLLOWRANGE, + eAttributeId_GENERIC_KNOCKBACKRESISTANCE, + eAttributeId_GENERIC_MOVEMENTSPEED, + eAttributeId_GENERIC_ATTACKDAMAGE, + eAttributeId_HORSE_JUMPSTRENGTH, + eAttributeId_ZOMBIE_SPAWNREINFORCEMENTS, + + // 1.8+ + // New attributes go here + + eAttributeId_COUNT +}; + +class Attribute +{ +public: + static const int MAX_NAME_LENGTH = 64; + + /** + * 4J: Changed this from a string name to an ID + * Gets the ID of this attribute, for serialization. + * + * @return Name of this attribute. + */ + virtual eATTRIBUTE_ID getId() = 0; + + /** + * Sanitizes an attribute value, making sure it's not out of range and is an acceptable amount. + * + * + * @param value Value to sanitize. + * @return Sanitized value, safe for use. + */ + virtual double sanitizeValue(double value) = 0; + + /** + * Get the default value of this attribute, to be used upon creation. + * + * @return Default value. + */ + virtual double getDefaultValue() = 0; + + /** + * Checks if this attribute should be synced to the client. + * + * Attributes should be serverside only unless the client needs to know about it. + * + * @return True if the client should know about this attribute. + */ + virtual bool isClientSyncable() = 0; + + // 4J: Added to retrieve string ID for attribute + static int getName(eATTRIBUTE_ID id); + +protected: + static const int AttributeNames []; +}; + +#ifdef __ORBIS__ +typedef unordered_map<eATTRIBUTE_ID, AttributeModifier *, std::hash<int>> attrAttrModMap; +#else +typedef unordered_map<eATTRIBUTE_ID, AttributeModifier *> attrAttrModMap; +#endif
\ No newline at end of file |
