diff --git a/source/Minecraft.cpp b/source/Minecraft.cpp index 448fa4d..64bf3f6 100644 --- a/source/Minecraft.cpp +++ b/source/Minecraft.cpp @@ -23,6 +23,8 @@ #include "client/player/input/ControllerTurnInput.hpp" #endif +#include "world/tile/SandTile.hpp" + // custom: #include "client/renderer/PatchManager.hpp" diff --git a/source/client/renderer/LevelRenderer.cpp b/source/client/renderer/LevelRenderer.cpp index 5e806e4..28296f7 100644 --- a/source/client/renderer/LevelRenderer.cpp +++ b/source/client/renderer/LevelRenderer.cpp @@ -8,6 +8,7 @@ #include "LevelRenderer.hpp" #include "Minecraft.hpp" +#include "world/tile/LeafTile.hpp" LevelRenderer::LevelRenderer(Minecraft* pMC, Textures* pTexs) { diff --git a/source/client/renderer/TileRenderer.cpp b/source/client/renderer/TileRenderer.cpp index a467ce3..2aa190b 100644 --- a/source/client/renderer/TileRenderer.cpp +++ b/source/client/renderer/TileRenderer.cpp @@ -9,6 +9,8 @@ #include "TileRenderer.hpp" #include "Minecraft.hpp" #include "client/renderer/PatchManager.hpp" +#include "world/tile/FireTile.hpp" +#include "world/tile/LiquidTile.hpp" void TileRenderer::_init() { diff --git a/source/world/level/levelgen/chunk/RandomLevelSource.cpp b/source/world/level/levelgen/chunk/RandomLevelSource.cpp index 08ff9ef..18ce325 100644 --- a/source/world/level/levelgen/chunk/RandomLevelSource.cpp +++ b/source/world/level/levelgen/chunk/RandomLevelSource.cpp @@ -8,6 +8,7 @@ #include "RandomLevelSource.hpp" #include "world/level/Level.hpp" +#include "world/tile/SandTile.hpp" #define TEST_CAVES diff --git a/source/world/tile/BookshelfTile.cpp b/source/world/tile/BookshelfTile.cpp index a969013..9aa42e4 100644 --- a/source/world/tile/BookshelfTile.cpp +++ b/source/world/tile/BookshelfTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "BookshelfTile.hpp" #include "world/level/Level.hpp" BookshelfTile::BookshelfTile(int a, int b, Material* c) : Tile(a, b, c) diff --git a/source/world/tile/BookshelfTile.hpp b/source/world/tile/BookshelfTile.hpp new file mode 100644 index 0000000..9e7db66 --- /dev/null +++ b/source/world/tile/BookshelfTile.hpp @@ -0,0 +1,21 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class BookshelfTile : public Tile +{ +public: + BookshelfTile(int ID, int texture, Material*); + + int getTexture(int dir) override; + int getResource(int data, Random* random) override; + int getResourceCount(Random* random) override; +}; diff --git a/source/world/tile/Bush.cpp b/source/world/tile/Bush.cpp index e0cb614..4f84974 100644 --- a/source/world/tile/Bush.cpp +++ b/source/world/tile/Bush.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "Bush.hpp" #include "world/level/Level.hpp" Bush::Bush(int id, int texture) : Tile(id, Material::plant) diff --git a/source/world/tile/Bush.hpp b/source/world/tile/Bush.hpp new file mode 100644 index 0000000..e53d19f --- /dev/null +++ b/source/world/tile/Bush.hpp @@ -0,0 +1,28 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class Bush : public Tile +{ +public: + Bush(int id, int texture); + + virtual bool canSurvive(Level*, int x, int y, int z) override; + virtual AABB* getAABB(Level*, int x, int y, int z) override; + virtual int getRenderShape() override; + virtual bool isCubeShaped() override; + virtual bool isSolidRender() override; + virtual bool mayPlace(Level*, int x, int y, int z) override; + virtual void tick(Level*, int x, int y, int z, Random*) override; + virtual void neighborChanged(Level*, int x, int y, int z, int dir) override; + + void checkAlive(Level*, int x, int y, int z); +}; diff --git a/source/world/tile/ClayTile.cpp b/source/world/tile/ClayTile.cpp index 241f6a6..59af745 100644 --- a/source/world/tile/ClayTile.cpp +++ b/source/world/tile/ClayTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "ClayTile.hpp" #include "world/level/Level.hpp" ClayTile::ClayTile(int a, int b, Material* c) : Tile(a, b, c) diff --git a/source/world/tile/ClayTile.hpp b/source/world/tile/ClayTile.hpp new file mode 100644 index 0000000..aef9ac3 --- /dev/null +++ b/source/world/tile/ClayTile.hpp @@ -0,0 +1,20 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class ClayTile : public Tile +{ +public: + ClayTile(int ID, int texture, Material*); + + int getResource(int, Random*) override; + int getResourceCount(Random*) override; +}; diff --git a/source/world/tile/ClothTile.cpp b/source/world/tile/ClothTile.cpp index 317b82b..28088a8 100644 --- a/source/world/tile/ClothTile.cpp +++ b/source/world/tile/ClothTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "ClothTile.hpp" #include "world/level/Level.hpp" ClothTile::ClothTile(int id, int type) : Tile(id, TEXTURE_CLOTH_64, Material::cloth) diff --git a/source/world/tile/ClothTile.hpp b/source/world/tile/ClothTile.hpp new file mode 100644 index 0000000..b17dc32 --- /dev/null +++ b/source/world/tile/ClothTile.hpp @@ -0,0 +1,22 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class ClothTile : public Tile +{ +public: + ClothTile(int id, int type); + int getTexture(int dir) override; + int getTexture(int dir, int data) override; + int getSpawnResourcesAuxValue(int val) override; + + uint8_t field_6C; +}; diff --git a/source/world/tile/DirtTile.cpp b/source/world/tile/DirtTile.cpp index 6a38252..d4637f9 100644 --- a/source/world/tile/DirtTile.cpp +++ b/source/world/tile/DirtTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "DirtTile.hpp" #include "world/level/Level.hpp" DirtTile::DirtTile(int a, int b, Material* c) : Tile(a, b, c) diff --git a/source/world/tile/DirtTile.hpp b/source/world/tile/DirtTile.hpp new file mode 100644 index 0000000..21940ce --- /dev/null +++ b/source/world/tile/DirtTile.hpp @@ -0,0 +1,19 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class DirtTile : public Tile +{ +public: + DirtTile(int ID, int texture, Material*); + + //@NOTE: No difference +}; diff --git a/source/world/tile/DoorTile.cpp b/source/world/tile/DoorTile.cpp index 173a725..a14b7ea 100644 --- a/source/world/tile/DoorTile.cpp +++ b/source/world/tile/DoorTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "DoorTile.hpp" #include "world/level/Level.hpp" #include "world/item/Item.hpp" diff --git a/source/world/tile/DoorTile.hpp b/source/world/tile/DoorTile.hpp new file mode 100644 index 0000000..cdfa305 --- /dev/null +++ b/source/world/tile/DoorTile.hpp @@ -0,0 +1,46 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class DoorTile : public Tile +{ +public: + DoorTile(int ID, Material*); + + void attack(Level*, int x, int y, int z, Player*) override; + int use(Level*, int x, int y, int z, Player*) override; + HitResult clip(Level*, int x, int y, int z, Vec3, Vec3) override; + AABB* getAABB(Level*, int x, int y, int z) override; + int getRenderShape() override; + int getResource(int data, Random*) override; + int getTexture(int dir, int data) override; + AABB getTileAABB(Level*, int x, int y, int z) override; + bool isCubeShaped() override; + bool isSolidRender() override; + bool mayPlace(Level*, int x, int y, int z) override; + void updateShape(LevelSource*, int x, int y, int z) override; + void neighborChanged(Level*, int x, int y, int z, int newTile) override; + + bool blocksLight(); + int getDir(int data); + void setShape(int dir); + void setOpen(Level*, int x, int y, int z, bool bOpen); + + // @NOTE: These are inlined. + inline bool isOpen(int data) + { + return (data & 4) != 0; + } + inline bool isTop(int data) + { + return (data & 8) != 0; + } +}; diff --git a/source/world/tile/FarmTile.cpp b/source/world/tile/FarmTile.cpp index dc60089..e76a5fb 100644 --- a/source/world/tile/FarmTile.cpp +++ b/source/world/tile/FarmTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "FarmTile.hpp" #include "world/level/Level.hpp" FarmTile::FarmTile(int a, Material* c) : Tile(a, c) diff --git a/source/world/tile/FarmTile.hpp b/source/world/tile/FarmTile.hpp new file mode 100644 index 0000000..4a33539 --- /dev/null +++ b/source/world/tile/FarmTile.hpp @@ -0,0 +1,28 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class FarmTile : public Tile +{ +public: + FarmTile(int ID, Material*); + + AABB* getAABB(Level*, int x, int y, int z) override; + int getResource(int, Random*) override; + int getTexture(int dir, int data) override; + bool isCubeShaped() override; + bool isSolidRender() override; + void neighborChanged(Level*, int x, int y, int z, int dir) override; + void stepOn(Level* level, int x, int y, int z, Entity* pEnt) override; + void tick(Level* level, int x, int y, int z, Random* random) override; + + bool isNearWater(Level* level, int x, int y, int z); +}; diff --git a/source/world/tile/FireTile.cpp b/source/world/tile/FireTile.cpp index df4abcf..32809c0 100644 --- a/source/world/tile/FireTile.cpp +++ b/source/world/tile/FireTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "FireTile.hpp" #include "world/level/Level.hpp" FireTile::FireTile(int ID, int texture) : Tile(ID, texture, Material::fire) diff --git a/source/world/tile/FireTile.hpp b/source/world/tile/FireTile.hpp new file mode 100644 index 0000000..3d0b838 --- /dev/null +++ b/source/world/tile/FireTile.hpp @@ -0,0 +1,44 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class FireTile : public Tile +{ +public: + FireTile(int ID, int texture); + + AABB* getAABB(Level*, int x, int y, int z); + int getRenderShape() override; + bool isCubeShaped() override; + bool isSolidRender() override; + int getResourceCount(Random*) override; + int getTickDelay() override; + bool mayPick() override; + bool mayPlace(Level*, int x, int y, int z) override; + void animateTick(Level*, int x, int y, int z, Random*) override; + void neighborChanged(Level*, int x, int y, int z, int dir) override; + void onPlace(Level*, int x, int y, int z) override; + void tick(Level*, int x, int y, int z, Random*) override; + + void checkBurn(Level*, int x, int y, int z, int, Random*); + int getFireOdds(Level*, int x, int y, int z); + bool isValidFireLocation(Level*, int x, int y, int z); + + // @NOTE: This is inlined in V0.1.0 but not V0.7.1 + inline bool canBurn(LevelSource* level, int x, int y, int z) + { + return m_igniteOdds[level->getTile(x, y, z)] > 0; + } + +public: + int m_igniteOdds[C_MAX_TILES]; + int m_burnOdds[C_MAX_TILES]; +}; diff --git a/source/world/tile/GlassTile.cpp b/source/world/tile/GlassTile.cpp index 55f0199..912abac 100644 --- a/source/world/tile/GlassTile.cpp +++ b/source/world/tile/GlassTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "GlassTile.hpp" #include "world/level/Level.hpp" GlassTile::GlassTile(int a, int b, Material* c) : HalfTransparentTile(a, b, c) diff --git a/source/world/tile/GlassTile.hpp b/source/world/tile/GlassTile.hpp new file mode 100644 index 0000000..1f62cde --- /dev/null +++ b/source/world/tile/GlassTile.hpp @@ -0,0 +1,19 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "HalfTransparentTile.hpp" + +class GlassTile : public HalfTransparentTile +{ +public: + GlassTile(int ID, int texture, Material*); + + int getResourceCount(Random*) override; +}; diff --git a/source/world/tile/GrassTile.cpp b/source/world/tile/GrassTile.cpp index dfa41ba..3d9867a 100644 --- a/source/world/tile/GrassTile.cpp +++ b/source/world/tile/GrassTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "GrassTile.hpp" #include "world/level/Level.hpp" #include "client/renderer/PatchManager.hpp" diff --git a/source/world/tile/GrassTile.hpp b/source/world/tile/GrassTile.hpp new file mode 100644 index 0000000..eb7d678 --- /dev/null +++ b/source/world/tile/GrassTile.hpp @@ -0,0 +1,23 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class GrassTile : public Tile +{ +public: + GrassTile(int ID, Material*); + + int getResource(int, Random*) override; + int getColor(LevelSource*, int x, int y, int z) override; + int getTexture(int dir) override; + int getTexture(LevelSource*, int x, int y, int z, int dir) override; + void tick(Level*, int x, int y, int z, Random*) override; +}; diff --git a/source/world/tile/GravelTile.cpp b/source/world/tile/GravelTile.cpp index e46f71a..687db99 100644 --- a/source/world/tile/GravelTile.cpp +++ b/source/world/tile/GravelTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "GravelTile.hpp" #include "world/level/Level.hpp" GravelTile::GravelTile(int a, int b, Material* c) : SandTile(a, b, c) diff --git a/source/world/tile/GravelTile.hpp b/source/world/tile/GravelTile.hpp new file mode 100644 index 0000000..76a31e5 --- /dev/null +++ b/source/world/tile/GravelTile.hpp @@ -0,0 +1,19 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "SandTile.hpp" + +class GravelTile : public SandTile +{ +public: + GravelTile(int ID, int texture, Material*); + + int getResource(int, Random*) override; +}; diff --git a/source/world/tile/HalfTransparentTile.cpp b/source/world/tile/HalfTransparentTile.cpp index 1469969..e4aff07 100644 --- a/source/world/tile/HalfTransparentTile.cpp +++ b/source/world/tile/HalfTransparentTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "HalfTransparentTile.hpp" #include "world/level/Level.hpp" HalfTransparentTile::HalfTransparentTile(int a, int b, Material* c) : Tile(a, b, c) diff --git a/source/world/tile/HalfTransparentTile.hpp b/source/world/tile/HalfTransparentTile.hpp new file mode 100644 index 0000000..25d541d --- /dev/null +++ b/source/world/tile/HalfTransparentTile.hpp @@ -0,0 +1,23 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class HalfTransparentTile : public Tile +{ +public: + HalfTransparentTile(int ID, int texture, Material*); + + virtual bool isSolidRender() override; + virtual bool shouldRenderFace(LevelSource*, int, int, int, int) override; + +public: + bool field_6C; +}; diff --git a/source/world/tile/IceTile.cpp b/source/world/tile/IceTile.cpp index 75e6eb4..0b0edd4 100644 --- a/source/world/tile/IceTile.cpp +++ b/source/world/tile/IceTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "IceTile.hpp" #include "world/level/Level.hpp" IceTile::IceTile(int a, int b, Material* c) : HalfTransparentTile(a, b, c) diff --git a/source/world/tile/IceTile.hpp b/source/world/tile/IceTile.hpp new file mode 100644 index 0000000..2c35f9d --- /dev/null +++ b/source/world/tile/IceTile.hpp @@ -0,0 +1,23 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "HalfTransparentTile.hpp" + +class IceTile : public HalfTransparentTile +{ +public: + IceTile(int ID, int texture, Material*); + + int getRenderLayer() override; + int getResourceCount(Random*) override; + void onRemove(Level*, int x, int y, int z) override; + bool shouldRenderFace(LevelSource*, int x, int y, int z, int dir) override; + void tick(Level*, int x, int y, int z, Random*) override; +}; diff --git a/source/world/tile/InvisibleTile.cpp b/source/world/tile/InvisibleTile.cpp index f210279..3efa2ef 100644 --- a/source/world/tile/InvisibleTile.cpp +++ b/source/world/tile/InvisibleTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "InvisibleTile.hpp" #include "world/level/Level.hpp" InvisibleTile::InvisibleTile(int ID, int texture, Material* pMtl) : diff --git a/source/world/tile/InvisibleTile.hpp b/source/world/tile/InvisibleTile.hpp new file mode 100644 index 0000000..f3c15b6 --- /dev/null +++ b/source/world/tile/InvisibleTile.hpp @@ -0,0 +1,18 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class InvisibleTile : public Tile +{ +public: + InvisibleTile(int ID, int texture, Material*); + int getRenderShape() override; +}; diff --git a/source/world/tile/LadderTile.cpp b/source/world/tile/LadderTile.cpp index 9a15bf3..cec8384 100644 --- a/source/world/tile/LadderTile.cpp +++ b/source/world/tile/LadderTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "LadderTile.hpp" #include "world/level/Level.hpp" LadderTile::LadderTile(int ID, int texture) : Tile(ID, texture, Material::decoration) diff --git a/source/world/tile/LadderTile.hpp b/source/world/tile/LadderTile.hpp new file mode 100644 index 0000000..4794090 --- /dev/null +++ b/source/world/tile/LadderTile.hpp @@ -0,0 +1,27 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class LadderTile : public Tile +{ +public: + LadderTile(int ID, int texture); + + bool isCubeShaped() override; + bool isSolidRender() override; + int getRenderShape() override; + int getResourceCount(Random* random) override; + AABB* getAABB(Level*, int x, int y, int z); + AABB getTileAABB(Level*, int x, int y, int z); + void setPlacedOnFace(Level*, int x, int y, int z, int face) override; + void neighborChanged(Level*, int, int, int, int) override; + bool mayPlace(Level*, int, int, int) override; +}; diff --git a/source/world/tile/LeafTile.cpp b/source/world/tile/LeafTile.cpp index f41cf08..6c427d2 100644 --- a/source/world/tile/LeafTile.cpp +++ b/source/world/tile/LeafTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "LeafTile.hpp" #include "world/level/Level.hpp" #include "client/renderer/PatchManager.hpp" diff --git a/source/world/tile/LeafTile.hpp b/source/world/tile/LeafTile.hpp new file mode 100644 index 0000000..44a03d1 --- /dev/null +++ b/source/world/tile/LeafTile.hpp @@ -0,0 +1,30 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "TransparentTile.hpp" + +class LeafTile : public TransparentTile +{ +public: + LeafTile(int id); + ~LeafTile(); + + int getColor(LevelSource*, int, int, int) override; + int getTexture(int dir, int data) override; + bool isSolidRender() override; + void onRemove(Level*, int x, int y, int z) override; + void stepOn(Level*, int x, int y, int z, Entity*) override; + void tick(Level*, int x, int y, int z, Random*) override; + + void die(Level*, int, int, int); + + int* field_70; + int field_74; +}; diff --git a/source/world/tile/LiquidTile.cpp b/source/world/tile/LiquidTile.cpp index 7dcdfe7..eef9b34 100644 --- a/source/world/tile/LiquidTile.cpp +++ b/source/world/tile/LiquidTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "LiquidTile.hpp" #include "world/level/Level.hpp" LiquidTile::LiquidTile(int id, Material* pMtl) : Tile(id, pMtl == Material::lava ? TEXTURE_LAVA : TEXTURE_WATER, pMtl) diff --git a/source/world/tile/LiquidTile.hpp b/source/world/tile/LiquidTile.hpp new file mode 100644 index 0000000..a849c74 --- /dev/null +++ b/source/world/tile/LiquidTile.hpp @@ -0,0 +1,59 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class LiquidTile : public Tile +{ +public: + LiquidTile(int ID, Material*); + + virtual void onPlace(Level*, int x, int y, int z) override; + virtual void neighborChanged(Level*, int x, int y, int z, int dir) override; + virtual void tick(Level*, int x, int y, int z, Random* random) override; + void animateTick(Level*, int x, int y, int z, Random* random) override; + AABB* getAABB(Level*, int x, int y, int z) override; + float getBrightness(LevelSource*, int x, int y, int z) override; + int getRenderLayer() override; + int getRenderShape() override; + int getResource(int, Random*) override; + int getResourceCount(Random*) override; + int getTexture(int dir) override; + int getTexture(int dir, int data) override; + int getTickDelay() override; + void handleEntityInside(Level*, int, int, int, Entity*, Vec3&) override; + bool isCubeShaped() override; + bool isSolidRender() override; + bool mayPick(int data, bool b) override; + bool shouldRenderFace(LevelSource*, int x, int y, int z, int dir) override; + + void updateLiquid(Level*, int x, int y, int z); + void fizz(Level*, int x, int y, int z); + int getColor(LevelSource*, int x, int y, int z); + int getDepth(Level*, int x, int y, int z); + int getRenderedDepth(LevelSource*, int x, int y, int z); + Vec3 getFlow(LevelSource*, int x, int y, int z); + + static float getSlopeAngle(LevelSource*, int x, int y, int z, Material* pMtl); + + // @NOTE: This is inlined in minecraftcpp + static float getWaterVolume(int data) + { + if (data >= 8) + data = 0; + + return float(data + 1) / 9.0f; + } + +public: + int field_6C; + bool field_70[4]; + int field_74[4]; +}; diff --git a/source/world/tile/LiquidTileDynamic.cpp b/source/world/tile/LiquidTileDynamic.cpp index 8bf9836..e7a3bc8 100644 --- a/source/world/tile/LiquidTileDynamic.cpp +++ b/source/world/tile/LiquidTileDynamic.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "LiquidTileDynamic.hpp" #include "world/level/Level.hpp" bool g_bDisableSponges = false; diff --git a/source/world/tile/LiquidTileDynamic.hpp b/source/world/tile/LiquidTileDynamic.hpp new file mode 100644 index 0000000..fd3938e --- /dev/null +++ b/source/world/tile/LiquidTileDynamic.hpp @@ -0,0 +1,29 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "LiquidTile.hpp" + +class LiquidTileDynamic : public LiquidTile +{ +public: + LiquidTileDynamic(int id, Material* pMtl); + + void onPlace(Level*, int x, int y, int z) override; + void tick(Level*, int x, int y, int z, Random*) override; + + bool checkSpongesNearby(Level*, int x, int y, int z); + bool isWaterBlocking(Level*, int x, int y, int z); + bool canSpreadTo(Level*, int x, int y, int z); + int getSlopeDistance(Level*, int, int, int, int, int); + bool* getSpread(Level*, int x, int y, int z); + void setStatic(Level*, int x, int y, int z); + void trySpreadTo(Level*, int x, int y, int z, int a); + int getSmallestDepth(Level*, int x, int y, int z, int oldDepth); +}; diff --git a/source/world/tile/LiquidTileStatic.cpp b/source/world/tile/LiquidTileStatic.cpp index 18ea095..2d46f53 100644 --- a/source/world/tile/LiquidTileStatic.cpp +++ b/source/world/tile/LiquidTileStatic.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "LiquidTileStatic.hpp" #include "world/level/Level.hpp" LiquidTileStatic::LiquidTileStatic(int id, Material* pMtl) : LiquidTile(id, pMtl) diff --git a/source/world/tile/LiquidTileStatic.hpp b/source/world/tile/LiquidTileStatic.hpp new file mode 100644 index 0000000..a0d4e59 --- /dev/null +++ b/source/world/tile/LiquidTileStatic.hpp @@ -0,0 +1,23 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "LiquidTile.hpp" + +class LiquidTileStatic : public LiquidTile +{ +public: + LiquidTileStatic(int id, Material* pMtl); + + void neighborChanged(Level* level, int x, int y, int z, int dir) override; + void tick(Level* level, int x, int y, int z, Random* random) override; + + bool isFlammable(Level*, int x, int y, int z); + void setDynamic(Level*, int x, int y, int z); +}; diff --git a/source/world/tile/MetalTile.cpp b/source/world/tile/MetalTile.cpp index 82234be..c8c0322 100644 --- a/source/world/tile/MetalTile.cpp +++ b/source/world/tile/MetalTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "MetalTile.hpp" #include "world/level/Level.hpp" #include "client/renderer/PatchManager.hpp" diff --git a/source/world/tile/MetalTile.hpp b/source/world/tile/MetalTile.hpp new file mode 100644 index 0000000..e8ca497 --- /dev/null +++ b/source/world/tile/MetalTile.hpp @@ -0,0 +1,19 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class MetalTile : public Tile +{ +public: + MetalTile(int ID, int texture, Material*); + + virtual int getTexture(int dir) override; +}; diff --git a/source/world/tile/ObsidianTile.cpp b/source/world/tile/ObsidianTile.cpp index 08fc31a..a0b29d9 100644 --- a/source/world/tile/ObsidianTile.cpp +++ b/source/world/tile/ObsidianTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "ObsidianTile.hpp" #include "world/level/Level.hpp" ObsidianTile::ObsidianTile(int a, int b, Material* c) : Tile(a, b, c) diff --git a/source/world/tile/ObsidianTile.hpp b/source/world/tile/ObsidianTile.hpp new file mode 100644 index 0000000..2545baf --- /dev/null +++ b/source/world/tile/ObsidianTile.hpp @@ -0,0 +1,20 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class ObsidianTile : public Tile +{ +public: + ObsidianTile(int ID, int texture, Material*); + + int getResource(int data, Random*) override; + int getResourceCount(Random*) override; +}; diff --git a/source/world/tile/OreTile.cpp b/source/world/tile/OreTile.cpp index e97ffb0..478388b 100644 --- a/source/world/tile/OreTile.cpp +++ b/source/world/tile/OreTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "OreTile.hpp" #include "world/level/Level.hpp" OreTile::OreTile(int id, int texture) : Tile(id, texture, Material::stone) diff --git a/source/world/tile/OreTile.hpp b/source/world/tile/OreTile.hpp new file mode 100644 index 0000000..62fa3be --- /dev/null +++ b/source/world/tile/OreTile.hpp @@ -0,0 +1,21 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class OreTile : public Tile +{ +public: + OreTile(int id, int texture); + + int getResource(int, Random*) override; + int getResourceCount(Random*) override; + int getSpawnResourcesAuxValue(int) override; +}; diff --git a/source/world/tile/RedStoneOreTile.cpp b/source/world/tile/RedStoneOreTile.cpp index 96e420b..b46daf6 100644 --- a/source/world/tile/RedStoneOreTile.cpp +++ b/source/world/tile/RedStoneOreTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "RedStoneOreTile.hpp" #include "world/level/Level.hpp" RedStoneOreTile::RedStoneOreTile(int id, int texture, bool bLit) : Tile(id, texture, Material::stone) diff --git a/source/world/tile/RedStoneOreTile.hpp b/source/world/tile/RedStoneOreTile.hpp new file mode 100644 index 0000000..35e2125 --- /dev/null +++ b/source/world/tile/RedStoneOreTile.hpp @@ -0,0 +1,32 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class RedStoneOreTile : public Tile +{ +public: + RedStoneOreTile(int id, int texture, bool bLit); + + int getResource(int, Random*) override; + int getResourceCount(Random*) override; + int getSpawnResourcesAuxValue(int) override; + int getTickDelay() override; + void animateTick(Level*, int x, int y, int z, Random*) override; + void tick(Level*, int x, int y, int z, Random*) override; + void attack(Level*, int x, int y, int z, Player*) override; + int use(Level*, int x, int y, int z, Player*) override; + void stepOn(Level*, int x, int y, int z, Entity*) override; + + int poofParticles(Level*, int x, int y, int z); + void interact(Level*, int x, int y, int z); + + bool m_bLit; +}; diff --git a/source/world/tile/ReedTile.cpp b/source/world/tile/ReedTile.cpp index 5dbe92e..bd59fa4 100644 --- a/source/world/tile/ReedTile.cpp +++ b/source/world/tile/ReedTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "ReedTile.hpp" #include "world/level/Level.hpp" ReedTile::ReedTile(int id) : Tile(id, Material::plant) diff --git a/source/world/tile/ReedTile.hpp b/source/world/tile/ReedTile.hpp new file mode 100644 index 0000000..a376c7e --- /dev/null +++ b/source/world/tile/ReedTile.hpp @@ -0,0 +1,29 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class ReedTile : public Tile +{ +public: + ReedTile(int id); + + bool canSurvive(Level*, int x, int y, int z) override; + AABB* getAABB(Level*, int x, int y, int z) override; + int getRenderShape() override; + bool isCubeShaped() override; + bool isSolidRender() override; + bool mayPlace(Level*, int x, int y, int z) override; + void tick(Level*, int x, int y, int z, Random*) override; + void neighborChanged(Level*, int x, int y, int z, int dir) override; + int getResource(int, Random*) override; + + void checkAlive(Level*, int x, int y, int z); +}; diff --git a/source/world/tile/SandStoneTile.cpp b/source/world/tile/SandStoneTile.cpp index c7bc33a..297d4d9 100644 --- a/source/world/tile/SandStoneTile.cpp +++ b/source/world/tile/SandStoneTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "SandStoneTile.hpp" #include "world/level/Level.hpp" SandStoneTile::SandStoneTile(int a, int b, Material* c) : Tile(a, b, c) diff --git a/source/world/tile/SandStoneTile.hpp b/source/world/tile/SandStoneTile.hpp new file mode 100644 index 0000000..6857b8c --- /dev/null +++ b/source/world/tile/SandStoneTile.hpp @@ -0,0 +1,19 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class SandStoneTile : public Tile +{ +public: + SandStoneTile(int ID, int texture, Material*); + + int getTexture(int side) override; +}; diff --git a/source/world/tile/SandTile.cpp b/source/world/tile/SandTile.cpp index 8527577..95a6cd2 100644 --- a/source/world/tile/SandTile.cpp +++ b/source/world/tile/SandTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "SandTile.hpp" #include "world/level/Level.hpp" #include "world/entity/FallingTile.hpp" diff --git a/source/world/tile/SandTile.hpp b/source/world/tile/SandTile.hpp new file mode 100644 index 0000000..a302506 --- /dev/null +++ b/source/world/tile/SandTile.hpp @@ -0,0 +1,27 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class SandTile : public Tile +{ +public: + SandTile(int ID, int texture, Material*); + + int getTickDelay() override; + void tick(Level* level, int x, int y, int z, Random* random) override; + void neighborChanged(Level* level, int x, int y, int z, int dir) override; + void onPlace(Level* level, int x, int y, int z) override; + + void checkSlide(Level* level, int x, int y, int z); + static bool isFree(Level* level, int x, int y, int z); + + static bool instaFall; +}; diff --git a/source/world/tile/Sapling.cpp b/source/world/tile/Sapling.cpp index 3c9d339..e40930c 100644 --- a/source/world/tile/Sapling.cpp +++ b/source/world/tile/Sapling.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "Sapling.hpp" #include "world/level/Level.hpp" Sapling::Sapling(int id, int texture) : Bush(id, texture) diff --git a/source/world/tile/Sapling.hpp b/source/world/tile/Sapling.hpp new file mode 100644 index 0000000..9643da0 --- /dev/null +++ b/source/world/tile/Sapling.hpp @@ -0,0 +1,23 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Bush.hpp" + +class Sapling : public Bush +{ +public: + Sapling(int id, int texture); + + int getTexture(int dir, int data) override; + void tick(Level*, int x, int y, int z, Random*) override; + + void growTree(Level*, int x, int y, int z, Random*); + bool maybeGrowTree(Level*, int x, int y, int z, Random*); +}; diff --git a/source/world/tile/SpongeTile.cpp b/source/world/tile/SpongeTile.cpp index e754a81..a60637f 100644 --- a/source/world/tile/SpongeTile.cpp +++ b/source/world/tile/SpongeTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "SpongeTile.hpp" #include "world/level/Level.hpp" SpongeTile::SpongeTile(int id, int texture) : Tile(id, texture, Material::sponge) diff --git a/source/world/tile/SpongeTile.hpp b/source/world/tile/SpongeTile.hpp new file mode 100644 index 0000000..cb166cc --- /dev/null +++ b/source/world/tile/SpongeTile.hpp @@ -0,0 +1,20 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class SpongeTile : public Tile +{ +public: + SpongeTile(int ID, int texture); + + void onPlace(Level*, int x, int y, int z) override; + void destroy(Level*, int x, int y, int z, int dir) override; +}; \ No newline at end of file diff --git a/source/world/tile/StairTile.cpp b/source/world/tile/StairTile.cpp index f50261b..c554fdd 100644 --- a/source/world/tile/StairTile.cpp +++ b/source/world/tile/StairTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "StairTile.hpp" #include "world/level/Level.hpp" // @NOTE: All this work for some stairs; damn diff --git a/source/world/tile/StairTile.hpp b/source/world/tile/StairTile.hpp new file mode 100644 index 0000000..08f71c3 --- /dev/null +++ b/source/world/tile/StairTile.hpp @@ -0,0 +1,56 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class StairTile : public Tile +{ +public: + StairTile(int ID, Tile* pParent); + + virtual void addAABBs(Level*, int x, int y, int z, const AABB*, std::vector&) override; + virtual bool isSolidRender() override; + virtual bool isCubeShaped() override; + virtual int getRenderShape() override; + + // Just overloads to forward to parent tile. + virtual void addLights(Level*, int x, int y, int z) override; + virtual void animateTick(Level*, int x, int y, int z, Random*) override; + virtual void updateShape(LevelSource*, int, int, int) override; + virtual float getBrightness(LevelSource*, int, int, int) override; + virtual int getTexture(int) override; + virtual int getTexture(int, int) override; + virtual int getTexture(LevelSource*, int, int, int, int) override; + virtual AABB getTileAABB(Level*, int, int, int) override; + virtual bool mayPick() override; + virtual bool mayPick(int, bool) override; + virtual bool mayPlace(Level*, int, int, int) override; + virtual int getTickDelay() override; + virtual void tick(Level*, int, int, int, Random*) override; + virtual void destroy(Level*, int, int, int, int dir) override; + virtual void onPlace(Level*, int, int, int) override; + virtual void onRemove(Level*, int, int, int) override; + virtual int getResource(int, Random*) override; + virtual int getResourceCount(Random*) override; + virtual void spawnResources(Level*, int, int, int, int) override; + virtual void spawnResources(Level*, int, int, int, int, float) override; + virtual float getExplosionResistance(Entity*) override; + virtual void wasExploded(Level*, int, int, int) override; + virtual int getRenderLayer() override; + virtual int use(Level*, int, int, int, Player*) override; + virtual void stepOn(Level*, int, int, int, Entity*) override; + virtual void setPlacedBy(Level*, int, int, int, Mob*) override; + virtual void prepareRender(Level*, int, int, int) override; + virtual void attack(Level*, int, int, int, Player*) override; + virtual void handleEntityInside(Level*, int, int, int, Entity*, Vec3&) override; + +public: + Tile* m_pParent; +}; diff --git a/source/world/tile/StoneSlabTile.cpp b/source/world/tile/StoneSlabTile.cpp index 454aa06..0c0c0d0 100644 --- a/source/world/tile/StoneSlabTile.cpp +++ b/source/world/tile/StoneSlabTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "StoneSlabTile.hpp" #include "world/level/Level.hpp" StoneSlabTile::StoneSlabTile(int id, bool full) : Tile(id, TEXTURE_STONE_SLAB_TOP, Material::stone) diff --git a/source/world/tile/StoneSlabTile.hpp b/source/world/tile/StoneSlabTile.hpp new file mode 100644 index 0000000..0f04702 --- /dev/null +++ b/source/world/tile/StoneSlabTile.hpp @@ -0,0 +1,29 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class StoneSlabTile : public Tile +{ +public: + StoneSlabTile(int ID, bool bFull); + + bool isSolidRender() override; + bool isCubeShaped() override; + int getResource(int, Random*) override; + int getResourceCount(Random*) override; + int getSpawnResourcesAuxValue(int) override; + int getTexture(int dir) override; + int getTexture(int dir, int data) override; + void onPlace(Level*, int x, int y, int z) override; + bool shouldRenderFace(LevelSource*, int x, int y, int z, int dir) override; + + bool m_bFull; +}; diff --git a/source/world/tile/StoneTile.cpp b/source/world/tile/StoneTile.cpp index b87c75e..a87d1f3 100644 --- a/source/world/tile/StoneTile.cpp +++ b/source/world/tile/StoneTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "StoneTile.hpp" #include "world/level/Level.hpp" StoneTile::StoneTile(int a, int b, Material* c) : Tile(a, b, c) diff --git a/source/world/tile/StoneTile.hpp b/source/world/tile/StoneTile.hpp new file mode 100644 index 0000000..2899cb0 --- /dev/null +++ b/source/world/tile/StoneTile.hpp @@ -0,0 +1,19 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class StoneTile : public Tile +{ +public: + StoneTile(int ID, int texture, Material*); + + int getResource(int, Random*) override; +}; diff --git a/source/world/tile/Tile.cpp b/source/world/tile/Tile.cpp index edcacee..a0f1df8 100644 --- a/source/world/tile/Tile.cpp +++ b/source/world/tile/Tile.cpp @@ -10,6 +10,45 @@ #include "world/item/Item.hpp" #include "world/entity/ItemEntity.hpp" +// Include tile definitions here +#include "SandStoneTile.hpp" +#include "SandTile.hpp" +#include "SandStoneTile.hpp" +#include "HalfTransparentTile.hpp" +#include "GlassTile.hpp" +#include "GravelTile.hpp" +#include "StoneTile.hpp" +#include "DirtTile.hpp" +#include "GrassTile.hpp" +#include "IceTile.hpp" +#include "ClayTile.hpp" +#include "FarmTile.hpp" +#include "StoneSlabTile.hpp" +#include "ClothTile.hpp" +#include "Bush.hpp" +#include "Sapling.hpp" +#include "TopSnowTile.hpp" +#include "TreeTile.hpp" +#include "TransparentTile.hpp" +#include "LeafTile.hpp" +#include "OreTile.hpp" +#include "RedStoneOreTile.hpp" +#include "ReedTile.hpp" +#include "InvisibleTile.hpp" +#include "LiquidTileDynamic.hpp" +#include "LiquidTileStatic.hpp" +#include "ObsidianTile.hpp" +#include "MetalTile.hpp" +#include "StairTile.hpp" +#include "TorchTile.hpp" +#include "FireTile.hpp" +#include "LadderTile.hpp" +#include "TntTile.hpp" +#include "DoorTile.hpp" +#include "SpongeTile.hpp" +#include "BookshelfTile.hpp" +#include "WireTile.hpp" + std::string Tile::TILE_DESCRIPTION_PREFIX = "tile."; Tile* Tile::tiles [C_MAX_TILES]; diff --git a/source/world/tile/Tile.hpp b/source/world/tile/Tile.hpp index 9ce0e94..091c1f7 100644 --- a/source/world/tile/Tile.hpp +++ b/source/world/tile/Tile.hpp @@ -23,6 +23,8 @@ class Mob; class Player; class LiquidTile; +// TODO: split out tiles into their own header files. + class Tile { public: // structs @@ -223,571 +225,3 @@ public: AABB m_aabbReturned; std::string m_descriptionID; }; - -class SandTile : public Tile -{ -public: - SandTile(int ID, int texture, Material*); - - int getTickDelay() override; - void tick(Level* level, int x, int y, int z, Random* random) override; - void neighborChanged(Level* level, int x, int y, int z, int dir) override; - void onPlace(Level* level, int x, int y, int z) override; - - void checkSlide(Level* level, int x, int y, int z); - static bool isFree(Level* level, int x, int y, int z); - - static bool instaFall; -}; - -class SandStoneTile : public Tile -{ -public: - SandStoneTile(int ID, int texture, Material*); - - int getTexture(int side) override; -}; - -class HalfTransparentTile : public Tile -{ -public: - HalfTransparentTile(int ID, int texture, Material*); - - virtual bool isSolidRender() override; - virtual bool shouldRenderFace(LevelSource*, int, int, int, int) override; - -public: - bool field_6C; -}; - -class GlassTile : public HalfTransparentTile -{ -public: - GlassTile(int ID, int texture, Material*); - - int getResourceCount(Random*) override; -}; - -class GravelTile : public SandTile -{ -public: - GravelTile(int ID, int texture, Material*); - - int getResource(int, Random*) override; -}; - -class StoneTile : public Tile -{ -public: - StoneTile(int ID, int texture, Material*); - - int getResource(int, Random*) override; -}; - -class DirtTile : public Tile -{ -public: - DirtTile(int ID, int texture, Material*); - - //@NOTE: No difference -}; - -class GrassTile : public Tile -{ -public: - GrassTile(int ID, Material*); - - int getResource(int, Random*) override; - int getColor(LevelSource*, int x, int y, int z) override; - int getTexture(int dir) override; - int getTexture(LevelSource*, int x, int y, int z, int dir) override; - void tick(Level*, int x, int y, int z, Random*) override; -}; - -class IceTile : public HalfTransparentTile -{ -public: - IceTile(int ID, int texture, Material*); - - int getRenderLayer() override; - int getResourceCount(Random*) override; - void onRemove(Level*, int x, int y, int z) override; - bool shouldRenderFace(LevelSource*, int x, int y, int z, int dir) override; - void tick(Level*, int x, int y, int z, Random*) override; -}; - -class ClayTile : public Tile -{ -public: - ClayTile(int ID, int texture, Material*); - - int getResource(int, Random*) override; - int getResourceCount(Random*) override; -}; - -class FarmTile : public Tile -{ -public: - FarmTile(int ID, Material*); - - AABB* getAABB(Level*, int x, int y, int z) override; - int getResource(int, Random*) override; - int getTexture(int dir, int data) override; - bool isCubeShaped() override; - bool isSolidRender() override; - void neighborChanged(Level*, int x, int y, int z, int dir) override; - void stepOn(Level* level, int x, int y, int z, Entity* pEnt) override; - void tick(Level* level, int x, int y, int z, Random* random) override; - - bool isNearWater(Level* level, int x, int y, int z); -}; - -class StoneSlabTile : public Tile -{ -public: - StoneSlabTile(int ID, bool bFull); - - bool isSolidRender() override; - bool isCubeShaped() override; - int getResource(int, Random*) override; - int getResourceCount(Random*) override; - int getSpawnResourcesAuxValue(int) override; - int getTexture(int dir) override; - int getTexture(int dir, int data) override; - void onPlace(Level*, int x, int y, int z) override; - bool shouldRenderFace(LevelSource*, int x, int y, int z, int dir) override; - - bool m_bFull; -}; - -class ClothTile : public Tile -{ -public: - ClothTile(int id, int type); - int getTexture(int dir) override; - int getTexture(int dir, int data) override; - int getSpawnResourcesAuxValue(int val) override; - - uint8_t field_6C; -}; - -class Bush : public Tile -{ -public: - Bush(int id, int texture); - - virtual bool canSurvive(Level*, int x, int y, int z) override; - virtual AABB* getAABB(Level*, int x, int y, int z) override; - virtual int getRenderShape() override; - virtual bool isCubeShaped() override; - virtual bool isSolidRender() override; - virtual bool mayPlace(Level*, int x, int y, int z) override; - virtual void tick(Level*, int x, int y, int z, Random*) override; - virtual void neighborChanged(Level*, int x, int y, int z, int dir) override; - - void checkAlive(Level*, int x, int y, int z); -}; - -class Sapling : public Bush -{ -public: - Sapling(int id, int texture); - - int getTexture(int dir, int data) override; - void tick(Level*, int x, int y, int z, Random*) override; - - void growTree(Level*, int x, int y, int z, Random*); - bool maybeGrowTree(Level*, int x, int y, int z, Random*); -}; - -class TopSnowTile : public Tile -{ -public: - TopSnowTile(int id, int texture, Material* pMtl); - - AABB* getAABB(Level*, int x, int y, int z) override; - bool isCubeShaped() override; - bool isSolidRender() override; - int getResource(int, Random*) override; - int getResourceCount(Random*) override; - bool mayPlace(Level*, int x, int y, int z) override; - void neighborChanged(Level*, int x, int y, int z, int d) override; - bool shouldRenderFace(LevelSource*, int x, int y, int z, int i) override; - void tick(Level*, int x, int y, int z, Random*) override; - - bool checkCanSurvive(Level*, int x, int y, int z); -}; - -class TreeTile : public Tile -{ -public: - TreeTile(int ID); - - int getResource(int, Random*) override; - int getResourceCount(Random*) override; - int getSpawnResourcesAuxValue(int) override; - int getTexture(int dir, int data) override; - void onRemove(Level*, int x, int y, int z) override; -}; - -class TransparentTile : public Tile -{ -public: - TransparentTile(int ID, int texture, Material*, bool bTransparent); - - virtual bool isSolidRender() override; - virtual bool shouldRenderFace(LevelSource*, int, int, int, int) override; - -public: - bool m_bTransparent; -}; - -class LeafTile : public TransparentTile -{ -public: - LeafTile(int id); - ~LeafTile(); - - int getColor(LevelSource*, int, int, int) override; - int getTexture(int dir, int data) override; - bool isSolidRender() override; - void onRemove(Level*, int x, int y, int z) override; - void stepOn(Level*, int x, int y, int z, Entity*) override; - void tick(Level*, int x, int y, int z, Random*) override; - - void die(Level*, int, int, int); - - int* field_70; - int field_74; -}; - -class OreTile : public Tile -{ -public: - OreTile(int id, int texture); - - int getResource(int, Random*) override; - int getResourceCount(Random*) override; - int getSpawnResourcesAuxValue(int) override; -}; - -class RedStoneOreTile : public Tile -{ -public: - RedStoneOreTile(int id, int texture, bool bLit); - - int getResource(int, Random*) override; - int getResourceCount(Random*) override; - int getSpawnResourcesAuxValue(int) override; - int getTickDelay() override; - void animateTick(Level*, int x, int y, int z, Random*) override; - void tick(Level*, int x, int y, int z, Random*) override; - void attack(Level*, int x, int y, int z, Player*) override; - int use(Level*, int x, int y, int z, Player*) override; - void stepOn(Level*, int x, int y, int z, Entity*) override; - - int poofParticles(Level*, int x, int y, int z); - void interact(Level*, int x, int y, int z); - - bool m_bLit; -}; - -class ReedTile : public Tile -{ -public: - ReedTile(int id); - - bool canSurvive(Level*, int x, int y, int z) override; - AABB* getAABB(Level*, int x, int y, int z) override; - int getRenderShape() override; - bool isCubeShaped() override; - bool isSolidRender() override; - bool mayPlace(Level*, int x, int y, int z) override; - void tick(Level*, int x, int y, int z, Random*) override; - void neighborChanged(Level*, int x, int y, int z, int dir) override; - int getResource(int, Random*) override; - - void checkAlive(Level*, int x, int y, int z); -}; - -class InvisibleTile : public Tile -{ -public: - InvisibleTile(int ID, int texture, Material*); - int getRenderShape() override; -}; - -class LiquidTile : public Tile -{ -public: - LiquidTile(int ID, Material*); - - virtual void onPlace(Level*, int x, int y, int z) override; - virtual void neighborChanged(Level*, int x, int y, int z, int dir) override; - virtual void tick(Level*, int x, int y, int z, Random* random) override; - void animateTick(Level*, int x, int y, int z, Random* random) override; - AABB* getAABB(Level*, int x, int y, int z) override; - float getBrightness(LevelSource*, int x, int y, int z) override; - int getRenderLayer() override; - int getRenderShape() override; - int getResource(int, Random*) override; - int getResourceCount(Random*) override; - int getTexture(int dir) override; - int getTexture(int dir, int data) override; - int getTickDelay() override; - void handleEntityInside(Level*, int, int, int, Entity*, Vec3&) override; - bool isCubeShaped() override; - bool isSolidRender() override; - bool mayPick(int data, bool b) override; - bool shouldRenderFace(LevelSource*, int x, int y, int z, int dir) override; - - void updateLiquid(Level*, int x, int y, int z); - void fizz(Level*, int x, int y, int z); - int getColor(LevelSource*, int x, int y, int z); - int getDepth(Level*, int x, int y, int z); - int getRenderedDepth(LevelSource*, int x, int y, int z); - Vec3 getFlow(LevelSource*, int x, int y, int z); - - static float getSlopeAngle(LevelSource*, int x, int y, int z, Material* pMtl); - - // @NOTE: This is inlined in minecraftcpp - static float getWaterVolume(int data) - { - if (data >= 8) - data = 0; - - return float(data + 1) / 9.0f; - } - -public: - int field_6C; - bool field_70[4]; - int field_74[4]; -}; - -class LiquidTileDynamic : public LiquidTile -{ -public: - LiquidTileDynamic(int id, Material* pMtl); - - void onPlace(Level*, int x, int y, int z) override; - void tick(Level*, int x, int y, int z, Random*) override; - - bool checkSpongesNearby(Level*, int x, int y, int z); - bool isWaterBlocking(Level*, int x, int y, int z); - bool canSpreadTo(Level*, int x, int y, int z); - int getSlopeDistance(Level*, int, int, int, int, int); - bool* getSpread(Level*, int x, int y, int z); - void setStatic(Level*, int x, int y, int z); - void trySpreadTo(Level*, int x, int y, int z, int a); - int getSmallestDepth(Level*, int x, int y, int z, int oldDepth); -}; - -class LiquidTileStatic : public LiquidTile -{ -public: - LiquidTileStatic(int id, Material* pMtl); - - void neighborChanged(Level* level, int x, int y, int z, int dir) override; - void tick(Level* level, int x, int y, int z, Random* random) override; - - bool isFlammable(Level*, int x, int y, int z); - void setDynamic(Level*, int x, int y, int z); -}; - -class ObsidianTile : public Tile -{ -public: - ObsidianTile(int ID, int texture, Material*); - - int getResource(int data, Random*) override; - int getResourceCount(Random*) override; -}; - -class MetalTile : public Tile -{ -public: - MetalTile(int ID, int texture, Material*); - - virtual int getTexture(int dir) override; -}; - -class StairTile : public Tile -{ -public: - StairTile(int ID, Tile* pParent); - - virtual void addAABBs(Level*, int x, int y, int z, const AABB*, std::vector&) override; - virtual bool isSolidRender() override; - virtual bool isCubeShaped() override; - virtual int getRenderShape() override; - - // Just overloads to forward to parent tile. - virtual void addLights(Level*, int x, int y, int z) override; - virtual void animateTick(Level*, int x, int y, int z, Random*) override; - virtual void updateShape(LevelSource*, int, int, int) override; - virtual float getBrightness(LevelSource*, int, int, int) override; - virtual int getTexture(int) override; - virtual int getTexture(int, int) override; - virtual int getTexture(LevelSource*, int, int, int, int) override; - virtual AABB getTileAABB(Level*, int, int, int) override; - virtual bool mayPick() override; - virtual bool mayPick(int, bool) override; - virtual bool mayPlace(Level*, int, int, int) override; - virtual int getTickDelay() override; - virtual void tick(Level*, int, int, int, Random*) override; - virtual void destroy(Level*, int, int, int, int dir) override; - virtual void onPlace(Level*, int, int, int) override; - virtual void onRemove(Level*, int, int, int) override; - virtual int getResource(int, Random*) override; - virtual int getResourceCount(Random*) override; - virtual void spawnResources(Level*, int, int, int, int) override; - virtual void spawnResources(Level*, int, int, int, int, float) override; - virtual float getExplosionResistance(Entity*) override; - virtual void wasExploded(Level*, int, int, int) override; - virtual int getRenderLayer() override; - virtual int use(Level*, int, int, int, Player*) override; - virtual void stepOn(Level*, int, int, int, Entity*) override; - virtual void setPlacedBy(Level*, int, int, int, Mob*) override; - virtual void prepareRender(Level*, int, int, int) override; - virtual void attack(Level*, int, int, int, Player*) override; - virtual void handleEntityInside(Level*, int, int, int, Entity*, Vec3&) override; - -public: - Tile* m_pParent; -}; - -class TorchTile : public Tile -{ -public: - TorchTile(int ID, int texture, Material* pMtl); - - AABB* getAABB(Level*, int x, int y, int z) override; - bool isSolidRender() override; - bool isCubeShaped() override; - int getRenderShape() override; - void animateTick(Level*, int x, int y, int z, Random*) override; - HitResult clip(Level*, int x, int y, int z, Vec3 a, Vec3 b) override; - bool mayPlace(Level*, int, int, int) override; - void neighborChanged(Level*, int, int, int, int) override; - void onPlace(Level*, int, int, int) override; - void setPlacedOnFace(Level*, int, int, int, int) override; - void tick(Level*, int, int, int, Random*) override; - - bool checkCanSurvive(Level*, int x, int y, int z); -}; - -class FireTile : public Tile -{ -public: - FireTile(int ID, int texture); - - AABB* getAABB(Level*, int x, int y, int z); - int getRenderShape() override; - bool isCubeShaped() override; - bool isSolidRender() override; - int getResourceCount(Random*) override; - int getTickDelay() override; - bool mayPick() override; - bool mayPlace(Level*, int x, int y, int z) override; - void animateTick(Level*, int x, int y, int z, Random*) override; - void neighborChanged(Level*, int x, int y, int z, int dir) override; - void onPlace(Level*, int x, int y, int z) override; - void tick(Level*, int x, int y, int z, Random*) override; - - void checkBurn(Level*, int x, int y, int z, int, Random*); - int getFireOdds(Level*, int x, int y, int z); - bool isValidFireLocation(Level*, int x, int y, int z); - - // @NOTE: This is inlined in V0.1.0 but not V0.7.1 - inline bool canBurn(LevelSource* level, int x, int y, int z) - { - return m_igniteOdds[level->getTile(x, y, z)] > 0; - } - -public: - int m_igniteOdds[C_MAX_TILES]; - int m_burnOdds[C_MAX_TILES]; -}; - -class LadderTile : public Tile -{ -public: - LadderTile(int ID, int texture); - - bool isCubeShaped() override; - bool isSolidRender() override; - int getRenderShape() override; - int getResourceCount(Random* random) override; - AABB* getAABB(Level*, int x, int y, int z); - AABB getTileAABB(Level*, int x, int y, int z); - void setPlacedOnFace(Level*, int x, int y, int z, int face) override; - void neighborChanged(Level*, int, int, int, int) override; - bool mayPlace(Level*, int, int, int) override; -}; - -class TntTile : public Tile -{ -public: - TntTile(int ID, int texture); - - int getResourceCount(Random*) override; - int getTexture(int dir) override; - void neighborChanged(Level*, int x, int y, int z, int d) override; - void destroy(Level*, int x, int y, int z, int data) override; - void wasExploded(Level*, int x, int y, int z) override; -}; - -class DoorTile : public Tile -{ -public: - DoorTile(int ID, Material*); - - void attack(Level*, int x, int y, int z, Player*) override; - int use(Level*, int x, int y, int z, Player*) override; - HitResult clip(Level*, int x, int y, int z, Vec3, Vec3) override; - AABB* getAABB(Level*, int x, int y, int z) override; - int getRenderShape() override; - int getResource(int data, Random*) override; - int getTexture(int dir, int data) override; - AABB getTileAABB(Level*, int x, int y, int z) override; - bool isCubeShaped() override; - bool isSolidRender() override; - bool mayPlace(Level*, int x, int y, int z) override; - void updateShape(LevelSource*, int x, int y, int z) override; - void neighborChanged(Level*, int x, int y, int z, int newTile) override; - - bool blocksLight(); - int getDir(int data); - void setShape(int dir); - void setOpen(Level*, int x, int y, int z, bool bOpen); - - // @NOTE: These are inlined. - inline bool isOpen(int data) - { - return (data & 4) != 0; - } - inline bool isTop(int data) - { - return (data & 8) != 0; - } -}; - -class SpongeTile : public Tile -{ -public: - SpongeTile(int ID, int texture); - - void onPlace(Level*, int x, int y, int z) override; - void destroy(Level*, int x, int y, int z, int dir) override; -}; - -class BookshelfTile : public Tile -{ -public: - BookshelfTile(int ID, int texture, Material*); - - int getTexture(int dir) override; - int getResource(int data, Random* random) override; - int getResourceCount(Random* random) override; -}; diff --git a/source/world/tile/TntTile.cpp b/source/world/tile/TntTile.cpp index f18e3d4..4c83893 100644 --- a/source/world/tile/TntTile.cpp +++ b/source/world/tile/TntTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "TntTile.hpp" #include "world/level/Level.hpp" #include "world/entity/PrimedTnt.hpp" diff --git a/source/world/tile/TntTile.hpp b/source/world/tile/TntTile.hpp new file mode 100644 index 0000000..69b466c --- /dev/null +++ b/source/world/tile/TntTile.hpp @@ -0,0 +1,23 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class TntTile : public Tile +{ +public: + TntTile(int ID, int texture); + + int getResourceCount(Random*) override; + int getTexture(int dir) override; + void neighborChanged(Level*, int x, int y, int z, int d) override; + void destroy(Level*, int x, int y, int z, int data) override; + void wasExploded(Level*, int x, int y, int z) override; +}; diff --git a/source/world/tile/TopSnowTile.cpp b/source/world/tile/TopSnowTile.cpp index db912c1..e434957 100644 --- a/source/world/tile/TopSnowTile.cpp +++ b/source/world/tile/TopSnowTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "TopSnowTile.hpp" #include "world/level/Level.hpp" TopSnowTile::TopSnowTile(int a, int b, Material* c) : Tile(a, b, c) diff --git a/source/world/tile/TopSnowTile.hpp b/source/world/tile/TopSnowTile.hpp new file mode 100644 index 0000000..d0a76c1 --- /dev/null +++ b/source/world/tile/TopSnowTile.hpp @@ -0,0 +1,29 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class TopSnowTile : public Tile +{ +public: + TopSnowTile(int id, int texture, Material* pMtl); + + AABB* getAABB(Level*, int x, int y, int z) override; + bool isCubeShaped() override; + bool isSolidRender() override; + int getResource(int, Random*) override; + int getResourceCount(Random*) override; + bool mayPlace(Level*, int x, int y, int z) override; + void neighborChanged(Level*, int x, int y, int z, int d) override; + bool shouldRenderFace(LevelSource*, int x, int y, int z, int i) override; + void tick(Level*, int x, int y, int z, Random*) override; + + bool checkCanSurvive(Level*, int x, int y, int z); +}; diff --git a/source/world/tile/TorchTile.cpp b/source/world/tile/TorchTile.cpp index 8b466af..75f07eb 100644 --- a/source/world/tile/TorchTile.cpp +++ b/source/world/tile/TorchTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "TorchTile.hpp" #include "world/level/Level.hpp" TorchTile::TorchTile(int ID, int texture, Material* pMtl) : Tile(ID, texture, pMtl) diff --git a/source/world/tile/TorchTile.hpp b/source/world/tile/TorchTile.hpp new file mode 100644 index 0000000..e31f2ae --- /dev/null +++ b/source/world/tile/TorchTile.hpp @@ -0,0 +1,31 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class TorchTile : public Tile +{ +public: + TorchTile(int ID, int texture, Material* pMtl); + + AABB* getAABB(Level*, int x, int y, int z) override; + bool isSolidRender() override; + bool isCubeShaped() override; + int getRenderShape() override; + void animateTick(Level*, int x, int y, int z, Random*) override; + HitResult clip(Level*, int x, int y, int z, Vec3 a, Vec3 b) override; + bool mayPlace(Level*, int, int, int) override; + void neighborChanged(Level*, int, int, int, int) override; + void onPlace(Level*, int, int, int) override; + void setPlacedOnFace(Level*, int, int, int, int) override; + void tick(Level*, int, int, int, Random*) override; + + bool checkCanSurvive(Level*, int x, int y, int z); +}; diff --git a/source/world/tile/TransparentTile.cpp b/source/world/tile/TransparentTile.cpp index 230be79..501558c 100644 --- a/source/world/tile/TransparentTile.cpp +++ b/source/world/tile/TransparentTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "TransparentTile.hpp" #include "world/level/Level.hpp" TransparentTile::TransparentTile(int ID, int texture, Material* mtl, bool bTransparent) :Tile(ID, texture, mtl) diff --git a/source/world/tile/TransparentTile.hpp b/source/world/tile/TransparentTile.hpp new file mode 100644 index 0000000..104de10 --- /dev/null +++ b/source/world/tile/TransparentTile.hpp @@ -0,0 +1,23 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class TransparentTile : public Tile +{ +public: + TransparentTile(int ID, int texture, Material*, bool bTransparent); + + virtual bool isSolidRender() override; + virtual bool shouldRenderFace(LevelSource*, int, int, int, int) override; + +public: + bool m_bTransparent; +}; diff --git a/source/world/tile/TreeTile.cpp b/source/world/tile/TreeTile.cpp index f4d53d9..b3d31c8 100644 --- a/source/world/tile/TreeTile.cpp +++ b/source/world/tile/TreeTile.cpp @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-1-Clause ********************************************************************/ -#include "Tile.hpp" +#include "TreeTile.hpp" #include "world/level/Level.hpp" TreeTile::TreeTile(int id) : Tile(id, Material::wood) diff --git a/source/world/tile/TreeTile.hpp b/source/world/tile/TreeTile.hpp new file mode 100644 index 0000000..19ff9e2 --- /dev/null +++ b/source/world/tile/TreeTile.hpp @@ -0,0 +1,23 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class TreeTile : public Tile +{ +public: + TreeTile(int ID); + + int getResource(int, Random*) override; + int getResourceCount(Random*) override; + int getSpawnResourcesAuxValue(int) override; + int getTexture(int dir, int data) override; + void onRemove(Level*, int x, int y, int z) override; +}; diff --git a/source/world/tile/WireTile.cpp b/source/world/tile/WireTile.cpp new file mode 100644 index 0000000..c4963d1 --- /dev/null +++ b/source/world/tile/WireTile.cpp @@ -0,0 +1,15 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#include "WireTile.hpp" +#include "world/level/Level.hpp" + +WireTile::WireTile(int id) : Tile(id, Material::decoration) +{ + m_TextureFrame = 0; +} diff --git a/source/world/tile/WireTile.hpp b/source/world/tile/WireTile.hpp new file mode 100644 index 0000000..d9dc2c5 --- /dev/null +++ b/source/world/tile/WireTile.hpp @@ -0,0 +1,17 @@ +/******************************************************************** + Minecraft: Pocket Edition - Decompilation Project + Copyright (C) 2023 iProgramInCpp + + The following code is licensed under the BSD 1 clause license. + SPDX-License-Identifier: BSD-1-Clause + ********************************************************************/ + +#pragma once + +#include "Tile.hpp" + +class WireTile : public Tile +{ +public: + WireTile(int ID); +}; diff --git a/windows_vs/minecraftcpp.vcxproj b/windows_vs/minecraftcpp.vcxproj index 807845e..4f79b1d 100644 --- a/windows_vs/minecraftcpp.vcxproj +++ b/windows_vs/minecraftcpp.vcxproj @@ -173,7 +173,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -543,6 +580,7 @@ + diff --git a/windows_vs/minecraftcpp.vcxproj.filters b/windows_vs/minecraftcpp.vcxproj.filters index 835a1d6..ab18333 100644 --- a/windows_vs/minecraftcpp.vcxproj.filters +++ b/windows_vs/minecraftcpp.vcxproj.filters @@ -999,6 +999,117 @@ source\client\renderer + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + + + source\world\tile + @@ -1973,6 +2084,9 @@ source\client\renderer + + source\world\tile +