diff options
| author | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
|---|---|---|
| committer | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
| commit | b691c43c44ff180d10e7d4a9afc83b98551ff586 (patch) | |
| tree | 3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.World/EntityIO.h | |
| parent | def8cb415354ac390b7e89052a50605285f1aca9 (diff) | |
Initial commit
Diffstat (limited to 'Minecraft.World/EntityIO.h')
| -rw-r--r-- | Minecraft.World/EntityIO.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/Minecraft.World/EntityIO.h b/Minecraft.World/EntityIO.h new file mode 100644 index 00000000..c9aa9f65 --- /dev/null +++ b/Minecraft.World/EntityIO.h @@ -0,0 +1,61 @@ +#pragma once +using namespace std; + +#include "Entity.h" +#include "JavaIntHash.h" + +class Level; +class CompoundTag; +typedef Entity *(*entityCreateFn)(Level *); +class EntityIO +{ +public: + class SpawnableMobInfo + { + public: + int id; + eMinecraftColour eggColor1; + eMinecraftColour eggColor2; + int nameId; // 4J Added + + SpawnableMobInfo(int id, eMinecraftColour eggColor1, eMinecraftColour eggColor2, int nameId) + { + this->id = id; + this->eggColor1 = eggColor1; + this->eggColor2 = eggColor2; + this->nameId = nameId; + } + }; + +private: + static unordered_map<wstring, entityCreateFn> *idCreateMap; + static unordered_map<eINSTANCEOF, wstring, eINSTANCEOFKeyHash, eINSTANCEOFKeyEq> *classIdMap; + static unordered_map<int, entityCreateFn> *numCreateMap; + static unordered_map<int, eINSTANCEOF> *numClassMap; + static unordered_map<eINSTANCEOF, int, eINSTANCEOFKeyHash, eINSTANCEOFKeyEq> *classNumMap; + static unordered_map<wstring, int> *idNumMap; + +public: + static unordered_map<int, SpawnableMobInfo *> idsSpawnableInCreative; + +private: + static void setId(entityCreateFn createFn, eINSTANCEOF clas, const wstring &id, int idNum); + static void setId(entityCreateFn createFn, eINSTANCEOF clas, const wstring &id, int idNum, eMinecraftColour color1, eMinecraftColour color2, int nameId); + +public: + static void staticCtor(); + static shared_ptr<Entity> newEntity(const wstring& id, Level *level); + static shared_ptr<Entity> loadStatic(CompoundTag *tag, Level *level); + static shared_ptr<Entity> newById(int id, Level *level); + static shared_ptr<Entity> newByEnumType(eINSTANCEOF eType, Level *level); + static int getId(shared_ptr<Entity> entity); + static wstring getEncodeId(shared_ptr<Entity> entity); + static int getId(const wstring &encodeId); + static wstring getEncodeId(int entityIoValue); + static int getNameId(int entityIoValue); + static eINSTANCEOF getType(const wstring &idString); + static eINSTANCEOF getClass(int id); + + // 4J-JEV, added for enumerating mobs. + static int eTypeToIoid(eINSTANCEOF eType); +}; |
