the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 117 lines 2.6 kB view raw
1#include "stdafx.h" 2#include "GrassTile.h" 3#include "net.minecraft.world.item.h" 4#include "net.minecraft.world.level.h" 5#include "net.minecraft.world.level.material.h" 6#include "net.minecraft.world.phys.h" 7#include "ReedTile.h" 8 9ReedTile::ReedTile(int id) : Tile( id, Material::plant,isSolidRender() ) 10{ 11 this->updateDefaultShape(); 12 this->setTicking(true); 13} 14 15// 4J Added override 16void ReedTile::updateDefaultShape() 17{ 18 float ss = 6 / 16.0f; 19 this->setShape(0.5f - ss, 0, 0.5f - ss, 0.5f + ss, 1, 0.5f + ss); 20} 21 22void ReedTile::tick(Level *level, int x, int y, int z, Random* random) 23{ 24 if (level->isEmptyTile(x, y + 1, z)) 25 { 26 int height = 1; 27 while (level->getTile(x, y - height, z) == id) 28 { 29 height++; 30 } 31 if (height < 3) 32 { 33 int age = level->getData(x, y, z); 34 if (age == 15) 35 { 36 level->setTileAndUpdate(x, y + 1, z, id); 37 level->setData(x, y, z, 0, Tile::UPDATE_NONE); 38 } 39 else 40 { 41 level->setData(x, y, z, age + 1, Tile::UPDATE_NONE); 42 } 43 } 44 } 45} 46 47bool ReedTile::mayPlace(Level *level, int x, int y, int z) 48{ 49 int below = level->getTile(x, y - 1, z); 50 if (below == id) return true; 51 if (below != Tile::grass_Id && below != Tile::dirt_Id && below != Tile::sand_Id) return false; 52 if (level->getMaterial(x - 1, y - 1, z) == Material::water) return true; 53 if (level->getMaterial(x + 1, y - 1, z) == Material::water) return true; 54 if (level->getMaterial(x, y - 1, z - 1) == Material::water) return true; 55 if (level->getMaterial(x, y - 1, z + 1) == Material::water) return true; 56 //printf("no water\n"); 57 return false; 58} 59 60void ReedTile::neighborChanged(Level *level, int x, int y, int z, int type) 61{ 62 checkAlive(level, x, y, z); 63} 64 65const void ReedTile::checkAlive(Level *level, int x, int y, int z) 66{ 67 if (!canSurvive(level, x, y, z)) 68 { 69 spawnResources(level, x, y, z, level->getData(x, y, z), 0); 70 level->removeTile(x, y, z); 71 } 72} 73 74bool ReedTile::canSurvive(Level *level, int x, int y, int z) 75{ 76 return mayPlace(level, x, y, z); 77} 78 79AABB *ReedTile::getAABB(Level *level, int x, int y, int z) 80{ 81 return NULL; 82} 83 84int ReedTile::getResource(int data, Random *random, int playerBonusLevel) 85{ 86 return Item::reeds->id; 87} 88 89bool ReedTile::blocksLight() 90{ 91 return false; 92} 93 94bool ReedTile::isSolidRender(bool isServerLevel) 95{ 96 return false; 97} 98 99bool ReedTile::isCubeShaped() 100{ 101 return false; 102} 103 104int ReedTile::getRenderShape() 105{ 106 return Tile::SHAPE_CROSS_TEXTURE; 107} 108 109int ReedTile::cloneTileId(Level *level, int x, int y, int z) 110{ 111 return Item::reeds_Id; 112} 113 114bool ReedTile::shouldTileTick(Level *level, int x,int y,int z) 115{ 116 return level->isEmptyTile(x, y + 1, z); 117}