aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/Attribute.h
diff options
context:
space:
mode:
authordaoge <3523206925@qq.com>2026-03-03 03:04:10 +0800
committerGitHub <noreply@github.com>2026-03-03 03:04:10 +0800
commitb3feddfef372618c8a9d7a0abcaf18cfad866c18 (patch)
tree267761c3bb39241ba5c347bfbe2254d06686e287 /Minecraft.World/Attribute.h
parent84c31a2331f7a0ec85b9d438992e244f60e5020f (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.h71
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