mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/4jcraft.git
synced 2026-06-03 18:45:01 +00:00
TU19: merge Minecraft.World/Blocks
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
|
||||
#include "SaplingPlantTile.h"
|
||||
|
||||
const unsigned int Sapling::SAPLING_NAMES[SAPLING_NAMES_SIZE] = {
|
||||
int Sapling::SAPLING_NAMES[SAPLING_NAMES_SIZE] = {
|
||||
IDS_TILE_SAPLING_OAK, IDS_TILE_SAPLING_SPRUCE, IDS_TILE_SAPLING_BIRCH,
|
||||
IDS_TILE_SAPLING_JUNGLE};
|
||||
|
||||
@@ -31,12 +31,7 @@ void Sapling::tick(Level* level, int x, int y, int z, Random* random) {
|
||||
|
||||
if (level->getRawBrightness(x, y + 1, z) >= Level::MAX_BRIGHTNESS - 6) {
|
||||
if (random->nextInt(7) == 0) {
|
||||
int data = level->getData(x, y, z);
|
||||
if ((data & AGE_BIT) == 0) {
|
||||
level->setData(x, y, z, data | AGE_BIT);
|
||||
} else {
|
||||
growTree(level, x, y, z, random);
|
||||
}
|
||||
advanceTree(level, x, y, z, random);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -46,6 +41,15 @@ Icon* Sapling::getTexture(int face, int data) {
|
||||
return icons[data];
|
||||
}
|
||||
|
||||
void Sapling::advanceTree(Level* level, int x, int y, int z, Random* random) {
|
||||
int data = level->getData(x, y, z);
|
||||
if ((data & AGE_BIT) == 0) {
|
||||
level->setData(x, y, z, data | AGE_BIT, Tile::UPDATE_NONE);
|
||||
} else {
|
||||
growTree(level, x, y, z, random);
|
||||
}
|
||||
}
|
||||
|
||||
void Sapling::growTree(Level* level, int x, int y, int z, Random* random) {
|
||||
int data = level->getData(x, y, z) & TYPE_MASK;
|
||||
|
||||
@@ -91,24 +95,26 @@ void Sapling::growTree(Level* level, int x, int y, int z, Random* random) {
|
||||
}
|
||||
}
|
||||
if (multiblock) {
|
||||
level->setTileNoUpdate(x + ox, y, z + oz, 0);
|
||||
level->setTileNoUpdate(x + ox + 1, y, z + oz, 0);
|
||||
level->setTileNoUpdate(x + ox, y, z + oz + 1, 0);
|
||||
level->setTileNoUpdate(x + ox + 1, y, z + oz + 1, 0);
|
||||
level->setTileAndData(x + ox, y, z + oz, 0, 0, Tile::UPDATE_NONE);
|
||||
level->setTileAndData(x + ox + 1, y, z + oz, 0, 0, Tile::UPDATE_NONE);
|
||||
level->setTileAndData(x + ox, y, z + oz + 1, 0, 0, Tile::UPDATE_NONE);
|
||||
level->setTileAndData(x + ox + 1, y, z + oz + 1, 0, 0,
|
||||
Tile::UPDATE_NONE);
|
||||
} else {
|
||||
level->setTileNoUpdate(x, y, z, 0);
|
||||
level->setTileAndData(x, y, z, 0, 0, Tile::UPDATE_NONE);
|
||||
}
|
||||
if (!f->place(level, random, x + ox, y, z + oz)) {
|
||||
if (multiblock) {
|
||||
level->setTileAndDataNoUpdate(x + ox, y, z + oz, this->id, data);
|
||||
level->setTileAndDataNoUpdate(x + ox + 1, y, z + oz, this->id,
|
||||
data);
|
||||
level->setTileAndDataNoUpdate(x + ox, y, z + oz + 1, this->id,
|
||||
data);
|
||||
level->setTileAndDataNoUpdate(x + ox + 1, y, z + oz + 1, this->id,
|
||||
data);
|
||||
level->setTileAndData(x + ox, y, z + oz, id, data,
|
||||
Tile::UPDATE_NONE);
|
||||
level->setTileAndData(x + ox + 1, y, z + oz, id, data,
|
||||
Tile::UPDATE_NONE);
|
||||
level->setTileAndData(x + ox, y, z + oz + 1, id, data,
|
||||
Tile::UPDATE_NONE);
|
||||
level->setTileAndData(x + ox + 1, y, z + oz + 1, id, data,
|
||||
Tile::UPDATE_NONE);
|
||||
} else {
|
||||
level->setTileAndDataNoUpdate(x, y, z, this->id, data);
|
||||
level->setTileAndData(x, y, z, id, data, Tile::UPDATE_NONE);
|
||||
}
|
||||
}
|
||||
if (f != NULL) delete f;
|
||||
|
||||
Reference in New Issue
Block a user