diff options
| author | daoge <3523206925@qq.com> | 2026-03-03 03:04:10 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-03 03:04:10 +0800 |
| commit | b3feddfef372618c8a9d7a0abcaf18cfad866c18 (patch) | |
| tree | 267761c3bb39241ba5c347bfbe2254d06686e287 /Minecraft.World/HugeMushroomFeature.cpp | |
| parent | 84c31a2331f7a0ec85b9d438992e244f60e5020f (diff) | |
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 <lokirautio@gmail.com>
Diffstat (limited to 'Minecraft.World/HugeMushroomFeature.cpp')
| -rw-r--r-- | Minecraft.World/HugeMushroomFeature.cpp | 128 |
1 files changed, 62 insertions, 66 deletions
diff --git a/Minecraft.World/HugeMushroomFeature.cpp b/Minecraft.World/HugeMushroomFeature.cpp index f67cf971..cc8696ae 100644 --- a/Minecraft.World/HugeMushroomFeature.cpp +++ b/Minecraft.World/HugeMushroomFeature.cpp @@ -15,97 +15,93 @@ HugeMushroomFeature::HugeMushroomFeature() : Feature(false) bool HugeMushroomFeature::place(Level *level, Random *random, int x, int y, int z) { - int type = random->nextInt(2); - if (forcedType >= 0) type = forcedType; - - int treeHeight = random->nextInt(3) + 4; + int type = random->nextInt(2); + if (forcedType >= 0) type = forcedType; - bool free = true; + int treeHeight = random->nextInt(3) + 4; + + 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 = 3; - if (yy <= (y + 3) ) r = 0; - for (int xx = x - r; xx <= x + r && free; xx++) + int r = 3; + if (yy <= (y + 3) ) r = 0; + 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) + int tt = level->getTile(xx, yy, zz); + if (tt != 0 && tt != Tile::leaves_Id) { free = false; } - } + } else { - free = false; - } - } - } - } + free = false; + } + } + } + } - int belowTile = level->getTile(x, y - 1, z); - if (belowTile != Tile::dirt_Id && belowTile != Tile::grass_Id && belowTile != Tile::mycel_Id) + int belowTile = level->getTile(x, y - 1, z); + if (belowTile != Tile::dirt_Id && belowTile != Tile::grass_Id && belowTile != Tile::mycel_Id) { - return false; - } - - if (!free) return false; - - //if (!Tile::mushroom1->mayPlace(level, x, y, z)) return false; + return false; + } - //placeBlock(level, x, y - 1, z, Tile::dirt_Id, 0); + if (!free) return false; - int low = y + treeHeight; - if (type == 1) { - low = y + treeHeight - 3; - } - for (int yy = low; yy <= y + treeHeight; yy++) + int low = y + treeHeight; + if (type == 1) { + low = y + treeHeight - 3; + } + for (int yy = low; yy <= y + treeHeight; yy++) { - int offs = 1; - if (yy < y + treeHeight) offs += 1; - if (type == 0) offs = 3; - for (int xx = x - offs; xx <= x + offs; xx++) + int offs = 1; + if (yy < y + treeHeight) offs += 1; + if (type == 0) offs = 3; + for (int xx = x - offs; xx <= x + offs; xx++) { - for (int zz = z - offs; zz <= z + offs; zz++) + for (int zz = z - offs; zz <= z + offs; zz++) { - int data = 5; - if (xx == x - offs) data--; - if (xx == x + offs) data++; - if (zz == z - offs) data -= 3; - if (zz == z + offs) data += 3; + int data = 5; + if (xx == x - offs) data--; + if (xx == x + offs) data++; + if (zz == z - offs) data -= 3; + if (zz == z + offs) data += 3; - if (type == 0 || yy < y + treeHeight) + if (type == 0 || yy < y + treeHeight) { - if ((xx == x - offs || xx == x + offs) && (zz == z - offs || zz == z + offs)) continue; - if (xx == x - (offs - 1) && zz == z - offs) data = 1; - if (xx == x - offs && zz == z - (offs - 1)) data = 1; + if ((xx == x - offs || xx == x + offs) && (zz == z - offs || zz == z + offs)) continue; + if (xx == x - (offs - 1) && zz == z - offs) data = 1; + if (xx == x - offs && zz == z - (offs - 1)) data = 1; - if (xx == x + (offs - 1) && zz == z - offs) data = 3; - if (xx == x + offs && zz == z - (offs - 1)) data = 3; + if (xx == x + (offs - 1) && zz == z - offs) data = 3; + if (xx == x + offs && zz == z - (offs - 1)) data = 3; - if (xx == x - (offs - 1) && zz == z + offs) data = 7; - if (xx == x - offs && zz == z + (offs - 1)) data = 7; + if (xx == x - (offs - 1) && zz == z + offs) data = 7; + if (xx == x - offs && zz == z + (offs - 1)) data = 7; - if (xx == x + (offs - 1) && zz == z + offs) data = 9; - if (xx == x + offs && zz == z + (offs - 1)) data = 9; - } + if (xx == x + (offs - 1) && zz == z + offs) data = 9; + if (xx == x + offs && zz == z + (offs - 1)) data = 9; + } - if (data == 5 && yy < y + treeHeight) data = 0; - if (data != 0 || y >= y + treeHeight - 1) + if (data == 5 && yy < y + treeHeight) data = 0; + if (data != 0 || y >= y + treeHeight - 1) { - if (!Tile::solid[level->getTile(xx, yy, zz)]) placeBlock(level, xx, yy, zz, Tile::hugeMushroom1_Id + type, data); - } - } - } - } - for (int hh = 0; hh < treeHeight; hh++) + if (!Tile::solid[level->getTile(xx, yy, zz)]) placeBlock(level, xx, yy, zz, Tile::hugeMushroom_brown_Id + type, data); + } + } + } + } + for (int hh = 0; hh < treeHeight; hh++) { - int t = level->getTile(x, y + hh, z); - if (!Tile::solid[t]) placeBlock(level, x, y + hh, z, Tile::hugeMushroom1_Id + type, 10); - } - return true; + int t = level->getTile(x, y + hh, z); + if (!Tile::solid[t]) placeBlock(level, x, y + hh, z, Tile::hugeMushroom_brown_Id + type, 10); + } + return true; } |
