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.Client/Common/GameRules/GameRule.h | 62 ++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Minecraft.Client/Common/GameRules/GameRule.h (limited to 'Minecraft.Client/Common/GameRules/GameRule.h') diff --git a/Minecraft.Client/Common/GameRules/GameRule.h b/Minecraft.Client/Common/GameRules/GameRule.h new file mode 100644 index 00000000..bdc2ceff --- /dev/null +++ b/Minecraft.Client/Common/GameRules/GameRule.h @@ -0,0 +1,62 @@ +#pragma once +using namespace std; + +#include + +class CompoundTag; +class GameRuleDefinition; +class Connection; + +// A game rule maintains the state for one particular definition +class GameRule +{ +public: + typedef struct _ValueType + { + union{ + __int64 i64; + int i; + char c; + bool b; + float f; + double d; + GameRule *gr; + }; + bool isPointer; + + _ValueType() + { + i64 = 0; + isPointer = false; + } + } ValueType; + +private: + GameRuleDefinition *m_definition; + Connection *m_connection; + +public: + typedef unordered_map stringValueMapType; + stringValueMapType m_parameters; // These are the members of this rule that maintain it's state + +public: + GameRule(GameRuleDefinition *definition, Connection *connection = NULL); + virtual ~GameRule(); + + Connection *getConnection() { return m_connection; } + + ValueType getParameter(const wstring ¶meterName); + void setParameter(const wstring ¶meterName,ValueType value); + GameRuleDefinition *getGameRuleDefinition(); + + // All the hooks go here + void onUseTile(int tileId, int x, int y, int z); + void onCollectItem(shared_ptr item); + + // 4J-JEV: For saving. + //CompoundTag *toTags(unordered_map *map); + //static GameRule *fromTags(Connection *c, CompoundTag *cTag, vector *grds); + + void write(DataOutputStream *dos); + void read(DataInputStream *dos); +}; \ No newline at end of file -- cgit v1.2.3