TU19: merge Minecraft.World/Blocks

This commit is contained in:
Tropical
2026-03-21 15:52:50 -05:00
parent f25cd66f4d
commit 9b6046cb83
242 changed files with 8083 additions and 4657 deletions

View File

@@ -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;