From b3feddfef372618c8a9d7a0abcaf18cfad866c18 Mon Sep 17 00:00:00 2001 From: daoge <3523206925@qq.com> Date: Tue, 3 Mar 2026 03:04:10 +0800 Subject: feat: TU19 (Dec 2014) Features & Content (#155) * try to resolve merge conflict * feat: TU19 (Dec 2014) Features & Content (#32) * December 2014 files * Working release build * Fix compilation issues * Add sound to Windows64Media * Add DLC content and force Tutorial DLC * Revert "Add DLC content and force Tutorial DLC" This reverts commit 97a43994725008e35fceb984d5549df9c8cea470. * Disable broken light packing * Disable breakpoint during DLC texture map load Allows DLC loading but the DLC textures are still broken * Fix post build not working * ... * fix vs2022 build * fix cmake build --------- Co-authored-by: Loki --- Minecraft.World/BirchFeature.cpp | 79 ++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 39 deletions(-) (limited to 'Minecraft.World/BirchFeature.cpp') diff --git a/Minecraft.World/BirchFeature.cpp b/Minecraft.World/BirchFeature.cpp index 22aa944c..d7a57514 100644 --- a/Minecraft.World/BirchFeature.cpp +++ b/Minecraft.World/BirchFeature.cpp @@ -9,37 +9,37 @@ BirchFeature::BirchFeature(bool doUpdate) : Feature(doUpdate) bool BirchFeature::place(Level *level, Random *random, int x, int y, int z) { - int treeHeight = random->nextInt(3) + 5; + int treeHeight = random->nextInt(3) + 5; - bool free = true; - if (y < 1 || y + treeHeight + 1 > Level::maxBuildHeight) return false; + bool free = true; + if (y < 1 || y + treeHeight + 1 > Level::maxBuildHeight) return false; - for (int yy = y; yy <= y + 1 + treeHeight; yy++) + for (int yy = y; yy <= y + 1 + treeHeight; yy++) { - int r = 1; - if (yy == y) r = 0; - if (yy >= y + 1 + treeHeight - 2) r = 2; - for (int xx = x - r; xx <= x + r && free; xx++) + int r = 1; + if (yy == y) r = 0; + if (yy >= y + 1 + treeHeight - 2) r = 2; + for (int xx = x - r; xx <= x + r && free; xx++) { - for (int zz = z - r; zz <= z + r && free; zz++) + for (int zz = z - r; zz <= z + r && free; zz++) { - if (yy >= 0 && yy < Level::maxBuildHeight) + if (yy >= 0 && yy < Level::maxBuildHeight) { - int tt = level->getTile(xx, yy, zz); - if (tt != 0 && tt != Tile::leaves_Id) free = false; - } + int tt = level->getTile(xx, yy, zz); + if (tt != 0 && tt != Tile::leaves_Id) free = false; + } else { - free = false; - } - } - } - } + free = false; + } + } + } + } - if (!free) return false; + if (!free) return false; - int belowTile = level->getTile(x, y - 1, z); - if ((belowTile != Tile::grass_Id && belowTile != Tile::dirt_Id) || y >= Level::maxBuildHeight - treeHeight - 1) return false; + int belowTile = level->getTile(x, y - 1, z); + if ((belowTile != Tile::grass_Id && belowTile != Tile::dirt_Id) || y >= Level::maxBuildHeight - treeHeight - 1) return false; // 4J Stu Added to stop tree features generating areas previously place by game rule generation if(app.getLevelGenerationOptions() != NULL) @@ -54,28 +54,29 @@ bool BirchFeature::place(Level *level, Random *random, int x, int y, int z) } } - level->setTileNoUpdate(x, y - 1, z, Tile::dirt_Id); + placeBlock(level, x, y - 1, z, Tile::dirt_Id); - for (int yy = y - 3 + treeHeight; yy <= y + treeHeight; yy++) + for (int yy = y - 3 + treeHeight; yy <= y + treeHeight; yy++) { - int yo = yy - (y + treeHeight); - int offs = 1 - yo / 2; - for (int xx = x - offs; xx <= x + offs; xx++) + int yo = yy - (y + treeHeight); + int offs = 1 - yo / 2; + for (int xx = x - offs; xx <= x + offs; xx++) { - int xo = xx - (x); - for (int zz = z - offs; zz <= z + offs; zz++) + int xo = xx - (x); + for (int zz = z - offs; zz <= z + offs; zz++) { - int zo = zz - (z); - if (abs(xo) == offs && abs(zo) == offs && (random->nextInt(2) == 0 || yo == 0)) continue; - if (!Tile::solid[level->getTile(xx, yy, zz)]) placeBlock(level, xx, yy, zz, Tile::leaves_Id, LeafTile::BIRCH_LEAF); - } - } - } - for (int hh = 0; hh < treeHeight; hh++) + int zo = zz - (z); + if (abs(xo) == offs && abs(zo) == offs && (random->nextInt(2) == 0 || yo == 0)) continue; + int t = level->getTile(xx, yy, zz); + if (t == 0 || t == Tile::leaves_Id) placeBlock(level, xx, yy, zz, Tile::leaves_Id, LeafTile::BIRCH_LEAF); + } + } + } + for (int hh = 0; hh < treeHeight; hh++) { - int t = level->getTile(x, y + hh, z); - if (t == 0 || t == Tile::leaves_Id) placeBlock(level, x, y + hh, z, Tile::treeTrunk_Id, TreeTile::BIRCH_TRUNK); - } - return true; + int t = level->getTile(x, y + hh, z); + if (t == 0 || t == Tile::leaves_Id) placeBlock(level, x, y + hh, z, Tile::treeTrunk_Id, TreeTile::BIRCH_TRUNK); + } + return true; } \ No newline at end of file -- cgit v1.2.3