ACACIA and DARK_OAK
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
#include "stdafx.h"
|
||||
#include "SavannaTreeFeature.h"
|
||||
#include "net.minecraft.world.level.tile.h"
|
||||
#include "TreeTile2.h"
|
||||
#include "LeafTile2.h"
|
||||
|
||||
SavannaTreeFeature::SavannaTreeFeature(bool doUpdate) : Feature(doUpdate) {
|
||||
|
||||
this->baseHeight = 5;
|
||||
}
|
||||
|
||||
bool SavannaTreeFeature::place(Level* level, Random* random, int x, int y, int z) {
|
||||
int height = random->nextInt(3) + baseHeight;
|
||||
int ground = level->getTile(x, y - 1, z);
|
||||
if (ground != Tile::grass_Id && ground != Tile::dirt_Id) return false;
|
||||
|
||||
int curX = x;
|
||||
int curZ = z;
|
||||
int curY = y;
|
||||
|
||||
|
||||
int dx = random->nextInt(3) - 1;
|
||||
int dz = random->nextInt(3) - 1;
|
||||
|
||||
for (int h = 0; h < height; ++h) {
|
||||
|
||||
if (h >= height / 2 && (dx != 0 || dz != 0)) {
|
||||
curX += dx;
|
||||
curZ += dz;
|
||||
}
|
||||
placeBlock(level, curX, curY + h, curZ, Tile::tree2Trunk_Id, TreeTile2::ACACIA_TRUNK);
|
||||
|
||||
|
||||
if (h == height - 1) {
|
||||
for (int lx = -2; lx <= 2; ++lx) {
|
||||
for (int lz = -2; lz <= 2; ++lz) {
|
||||
if (abs(lx) == 2 && abs(lz) == 2) continue;
|
||||
placeLeaf(level, curX + lx, curY + h, curZ + lz);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void SavannaTreeFeature::placeLeaf(Level* level, int x, int y, int z) {
|
||||
int t = level->getTile(x, y, z);
|
||||
if (t == 0 || t == Tile::leaves_Id) {
|
||||
placeBlock(level, x, y, z, Tile::leaves2_Id, 0);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user