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/PistonBaseTile.h | |
| parent | def8cb415354ac390b7e89052a50605285f1aca9 (diff) | |
Initial commit
Diffstat (limited to 'Minecraft.World/PistonBaseTile.h')
| -rw-r--r-- | Minecraft.World/PistonBaseTile.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/Minecraft.World/PistonBaseTile.h b/Minecraft.World/PistonBaseTile.h new file mode 100644 index 00000000..0fda1391 --- /dev/null +++ b/Minecraft.World/PistonBaseTile.h @@ -0,0 +1,71 @@ +#pragma once +#include "Tile.h" + +class PistonBaseTile : public Tile +{ +public: + static const int EXTENDED_BIT = 8; + static const int UNDEFINED_FACING = 7; + + static const float PLATFORM_THICKNESS; + static const int MAX_PUSH_DEPTH = 12; + static const int TRIGGER_EXTEND = 0; + static const int TRIGGER_CONTRACT = 1; + + static const wstring EDGE_TEX; + static const wstring PLATFORM_TEX; + static const wstring PLATFORM_STICKY_TEX; + static const wstring BACK_TEX; + static const wstring INSIDE_TEX; + +private: + bool isSticky; + + Icon *iconInside; + Icon *iconBack; + Icon *iconPlatform; + + static DWORD tlsIdx; + // 4J - was just a static but implemented with TLS for our version + static bool ignoreUpdate(); + static void ignoreUpdate(bool set); + +public: + PistonBaseTile(int id, bool isSticky); + + Icon *getPlatformTexture(); + virtual void updateShape(float x0, float y0, float z0, float x1, float y1, float z1); + + virtual Icon *getTexture(int face, int data); + static Icon *getTexture(const wstring &name); + void registerIcons(IconRegister *iconRegister); + + virtual int getRenderShape(); + virtual bool isSolidRender(bool isServerLevel = false); + virtual bool use(Level *level, int x, int y, int z, shared_ptr<Player> player, int clickedFace, float clickX, float clickY, float clickZ, bool soundOnly = false); // 4J added soundOnly param + virtual void setPlacedBy(Level *level, int x, int y, int z, shared_ptr<Mob> by); + virtual void neighborChanged(Level *level, int x, int y, int z, int type); + virtual void onPlace(Level *level, int x, int y, int z); + +private: + void checkIfExtend(Level *level, int x, int y, int z); + bool getNeighborSignal(Level *level, int x, int y, int z, int facing); + +public: + virtual void triggerEvent(Level *level, int x, int y, int z, int param1, int facing); + virtual void updateShape(LevelSource *level, int x, int y, int z, int forceData = -1, shared_ptr<TileEntity> forceEntity = shared_ptr<TileEntity>()); // 4J added forceData, forceEntity param + virtual void updateDefaultShape(); + virtual void addAABBs(Level *level, int x, int y, int z, AABB *box, AABBList *boxes, shared_ptr<Entity> source); + virtual AABB *getAABB(Level *level, int x, int y, int z); + virtual bool isCubeShaped(); + + static int getFacing(int data); + static bool isExtended(int data); + static int getNewFacing(Level *level, int x, int y, int z, shared_ptr<Player> player); +private: + static bool isPushable(int block, Level *level, int cx, int cy, int cz, bool allowDestroyable); + static bool canPush(Level *level, int sx, int sy, int sz, int facing); + static void stopSharingIfServer(Level *level, int x, int y, int z); // 4J added + + bool createPush(Level *level, int sx, int sy, int sz, int facing); +};
\ No newline at end of file |
