the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#include "stdafx.h"
2#include "net.minecraft.world.level.h"
3#include "net.minecraft.world.entity.item.h"
4#include "HeavyTile.h"
5#include "FireTile.h"
6
7bool HeavyTile::instaFall = false;
8
9HeavyTile::HeavyTile(int type, bool isSolidRender) : Tile(type, Material::sand, isSolidRender)
10{
11}
12
13HeavyTile::HeavyTile(int type, Material *material, bool isSolidRender) : Tile(type, material, isSolidRender)
14{
15}
16
17void HeavyTile::onPlace(Level *level, int x, int y, int z)
18{
19 level->addToTickNextTick(x, y, z, id, getTickDelay(level));
20}
21
22void HeavyTile::neighborChanged(Level *level, int x, int y, int z, int type)
23{
24 level->addToTickNextTick(x, y, z, id, getTickDelay(level));
25}
26
27void HeavyTile::tick(Level *level, int x, int y, int z, Random *random)
28{
29 if(!level->isClientSide)
30 {
31 checkSlide(level, x, y, z);
32 }
33}
34
35void HeavyTile::checkSlide(Level *level, int x, int y, int z)
36{
37 int x2 = x;
38 int y2 = y;
39 int z2 = z;
40 if (isFree(level, x2, y2 - 1, z2) && y2 >= 0)
41 {
42 int r = 32;
43
44 if (instaFall || !level->hasChunksAt(x - r, y - r, z - r, x + r, y + r, z + r) )
45 {
46 level->removeTile(x, y, z);
47 while (isFree(level, x, y - 1, z) && y > 0)
48 y--;
49 if (y > 0)
50 {
51 level->setTileAndUpdate(x, y, z, id);
52 }
53 }
54 else if (!level->isClientSide)
55 {
56 // 4J added - don't do anything just now if we can't create any new falling tiles
57 if( !level->newFallingTileAllowed() )
58 {
59 level->addToTickNextTick(x, y, z, id, getTickDelay(level));
60 return;
61 }
62
63 shared_ptr<FallingTile> e = shared_ptr<FallingTile>( new FallingTile(level, x + 0.5f, y + 0.5f, z + 0.5f, id, level->getData(x, y, z)) );
64 falling(e);
65 level->addEntity(e);
66 }
67 }
68}
69
70void HeavyTile::falling(shared_ptr<FallingTile> entity)
71{
72}
73
74int HeavyTile::getTickDelay(Level *level)
75{
76 return 2;
77}
78
79bool HeavyTile::isFree(Level *level, int x, int y, int z)
80{
81 int t = level->getTile(x, y, z);
82 if (t == 0) return true;
83 if (t == Tile::fire_Id) return true;
84 Material *material = Tile::tiles[t]->material;
85 if (material == Material::water) return true;
86 if (material == Material::lava) return true;
87 return false;
88}
89
90void HeavyTile::onLand(Level *level, int xt, int yt, int zt, int data)
91{
92}