diff options
| author | Loki Rautio <lokirautio@gmail.com> | 2026-03-04 03:56:03 -0600 |
|---|---|---|
| committer | Loki Rautio <lokirautio@gmail.com> | 2026-03-04 03:56:03 -0600 |
| commit | 42aec6dac53dffa6afe072560a7e1d4986112538 (patch) | |
| tree | 0836426857391df1b6a83f6368a183f83ec9b104 /Minecraft.World/LiquidTileStatic.cpp | |
| parent | c9d58eeac7c72f0b3038e084667b4d89a6249fce (diff) | |
| parent | ef9b6fd500dfabd9463267b0dd9e29577eea8a2b (diff) | |
Merge branch 'main' into pr/win64-world-saves
# Conflicts:
# Minecraft.Client/MinecraftServer.cpp
# README.md
Diffstat (limited to 'Minecraft.World/LiquidTileStatic.cpp')
| -rw-r--r-- | Minecraft.World/LiquidTileStatic.cpp | 60 |
1 files changed, 29 insertions, 31 deletions
diff --git a/Minecraft.World/LiquidTileStatic.cpp b/Minecraft.World/LiquidTileStatic.cpp index 1d82d3dd..46018093 100644 --- a/Minecraft.World/LiquidTileStatic.cpp +++ b/Minecraft.World/LiquidTileStatic.cpp @@ -5,8 +5,8 @@ LiquidTileStatic::LiquidTileStatic(int id, Material *material) : LiquidTile(id, material) { - setTicking(false); - if (material == Material::lava) setTicking(true); + setTicking(false); + if (material == Material::lava) setTicking(true); } bool LiquidTileStatic::isPathfindable(LevelSource *level, int x, int y, int z) @@ -16,53 +16,50 @@ bool LiquidTileStatic::isPathfindable(LevelSource *level, int x, int y, int z) void LiquidTileStatic::neighborChanged(Level *level, int x, int y, int z, int type) { - LiquidTile::neighborChanged(level, x, y, z, type); - if (level->getTile(x, y, z) == id) + LiquidTile::neighborChanged(level, x, y, z, type); + if (level->getTile(x, y, z) == id) { - setDynamic(level, x, y, z); - } + setDynamic(level, x, y, z); + } } void LiquidTileStatic::setDynamic(Level *level, int x, int y, int z) { - int d = level->getData(x, y, z); - level->noNeighborUpdate = true; - level->setTileAndDataNoUpdate(x, y, z, id - 1, d); - level->setTilesDirty(x, y, z, x, y, z); - level->addToTickNextTick(x, y, z, id - 1, getTickDelay()); - level->noNeighborUpdate = false; + int d = level->getData(x, y, z); + level->setTileAndData(x, y, z, id - 1, d, Tile::UPDATE_CLIENTS); + level->addToTickNextTick(x, y, z, id - 1, getTickDelay(level)); } void LiquidTileStatic::tick(Level *level, int x, int y, int z, Random *random) { - if (material == Material::lava) + if (material == Material::lava) { - int h = random->nextInt(3); - for (int i = 0; i < h; i++) + int h = random->nextInt(3); + for (int i = 0; i < h; i++) { - x += random->nextInt(3) - 1; - y++; - z += random->nextInt(3) - 1; - int t = level->getTile(x, y, z); - if (t == 0) + x += random->nextInt(3) - 1; + y++; + z += random->nextInt(3) - 1; + int t = level->getTile(x, y, z); + if (t == 0) { - if (isFlammable(level, x - 1, y, z) || + if (isFlammable(level, x - 1, y, z) || isFlammable(level, x + 1, y, z) || isFlammable(level, x, y, z - 1) || isFlammable(level, x, y, z + 1) || isFlammable(level, x, y - 1, z) || isFlammable(level, x, y + 1, z)) { - level->setTile(x, y, z, Tile::fire_Id); - return; - } - } + level->setTileAndUpdate(x, y, z, Tile::fire_Id); + return; + } + } else if (Tile::tiles[t]->material->blocksMotion()) { - return; - } + return; + } - } + } if (h == 0) { int ox = x; @@ -71,12 +68,13 @@ void LiquidTileStatic::tick(Level *level, int x, int y, int z, Random *random) { x = ox + random->nextInt(3) - 1; z = oz + random->nextInt(3) - 1; - if (level->isEmptyTile(x, y + 1, z) && isFlammable(level, x, y, z)) { - level->setTile(x, y + 1, z, Tile::fire_Id); + if (level->isEmptyTile(x, y + 1, z) && isFlammable(level, x, y, z)) + { + level->setTileAndUpdate(x, y + 1, z, Tile::fire_Id); } } } - } + } } bool LiquidTileStatic::isFlammable(Level *level, int x, int y, int z) |
