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.World/TileEntity.h | 74 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 Minecraft.World/TileEntity.h (limited to 'Minecraft.World/TileEntity.h') diff --git a/Minecraft.World/TileEntity.h b/Minecraft.World/TileEntity.h new file mode 100644 index 00000000..aa3ced4f --- /dev/null +++ b/Minecraft.World/TileEntity.h @@ -0,0 +1,74 @@ +#pragma once +using namespace std; + +#include "HashExtension.h" +#include "..\Minecraft.World\JavaIntHash.h" + +class Level; +class Packet; +class CompoundTag; + +typedef TileEntity *(*tileEntityCreateFn)(); + +class TileEntity : public enable_shared_from_this +{ +public: + static void staticCtor(); + virtual eINSTANCEOF GetType() { return eTYPE_TILEENTITY; } +private: + typedef unordered_map idToCreateMapType; + typedef unordered_map classToIdMapType; + static idToCreateMapType idCreateMap; + static classToIdMapType classIdMap; + static void setId(tileEntityCreateFn createFn, eINSTANCEOF clas, wstring id); + bool remove; + unsigned char renderRemoveStage; // 4J added + +public: + Level *level; + int x, y, z; + + // 4J added + enum RenderRemoveStage + { + e_RenderRemoveStageKeep, + e_RenderRemoveStageFlaggedAtChunk, + e_RenderRemoveStageRemove + }; + + int data; + Tile *tile; + +public: + // 4J Java does not have a ctor, but we need one to do some initialisation of the member variables + TileEntity(); + virtual ~TileEntity() {} + + void setRenderRemoveStage(unsigned char stage); // 4J added + void upgradeRenderRemoveStage(); // 4J added + bool shouldRemoveForRender(); // 4J added + + Level *getLevel(); + void setLevel(Level *level); + bool hasLevel(); + virtual void load(CompoundTag *tag); + virtual void save(CompoundTag *tag); + virtual void tick(); + static shared_ptr loadStatic(CompoundTag *tag); + int getData(); + void setData(int data); + void setChanged(); + double distanceToSqr(double xPlayer, double yPlayer, double zPlayer); + Tile *getTile(); + virtual shared_ptr getUpdatePacket(); + virtual bool isRemoved(); + virtual void setRemoved(); + virtual void clearRemoved(); + virtual void triggerEvent(int b0, int b1); + virtual void clearCache(); + + // 4J Added + virtual shared_ptr clone() = 0; +protected: + void clone(shared_ptr tileEntity); +}; \ No newline at end of file -- cgit v1.2.3