diff options
author | Tiger Wang <ziwei.tiger@hotmail.co.uk> | 2014-06-14 11:14:04 +0200 |
---|---|---|
committer | Tiger Wang <ziwei.tiger@hotmail.co.uk> | 2014-06-14 11:14:04 +0200 |
commit | a70b8298b6ada8abead9ef2b292531407225c2d1 (patch) | |
tree | 605095d3d0a6e6a291644af0b7864a126e52ceb8 /src/Blocks | |
parent | Merge remote-tracking branch 'origin/master' into portals (diff) | |
download | cuberite-a70b8298b6ada8abead9ef2b292531407225c2d1.tar cuberite-a70b8298b6ada8abead9ef2b292531407225c2d1.tar.gz cuberite-a70b8298b6ada8abead9ef2b292531407225c2d1.tar.bz2 cuberite-a70b8298b6ada8abead9ef2b292531407225c2d1.tar.lz cuberite-a70b8298b6ada8abead9ef2b292531407225c2d1.tar.xz cuberite-a70b8298b6ada8abead9ef2b292531407225c2d1.tar.zst cuberite-a70b8298b6ada8abead9ef2b292531407225c2d1.zip |
Diffstat (limited to 'src/Blocks')
-rw-r--r-- | src/Blocks/BlockCauldron.h | 6 | ||||
-rw-r--r-- | src/Blocks/WorldInterface.h | 8 |
2 files changed, 9 insertions, 5 deletions
diff --git a/src/Blocks/BlockCauldron.h b/src/Blocks/BlockCauldron.h index 5ec776df6..e0f86f4cb 100644 --- a/src/Blocks/BlockCauldron.h +++ b/src/Blocks/BlockCauldron.h @@ -61,8 +61,12 @@ public: virtual void OnUpdate(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cBlockPluginInterface & a_PluginInterface, cChunk & a_Chunk, int a_RelX, int a_RelY, int a_RelZ) override { - if (IsBiomeNoDownfall(a_Chunk.GetBiomeAt(a_RelX, a_RelZ)) || !a_WorldInterface.IsWeatherWet()) + int BlockX = a_RelX + a_Chunk.GetPosX() * cChunkDef::Width; + int BlockZ = a_RelZ + a_Chunk.GetPosZ() * cChunkDef::Width; + if (!a_WorldInterface.IsWeatherWetAt(BlockX, BlockZ) || (a_RelY != a_WorldInterface.GetHeight(BlockX, BlockZ))) { + // It's not raining at our current location or we do not have a direct view of the sky + // We cannot eat the rain :( return; } diff --git a/src/Blocks/WorldInterface.h b/src/Blocks/WorldInterface.h index 7df82197e..e5638c16e 100644 --- a/src/Blocks/WorldInterface.h +++ b/src/Blocks/WorldInterface.h @@ -37,9 +37,9 @@ public: virtual void SetTimeOfDay(Int64 a_TimeOfDay) = 0; - /** Returns true if the current weather has any precipitation - rain or storm - Does not check if biome has no downfall, use cChunk::GetBiomeAt(RelX, RelZ) for that - */ - virtual bool IsWeatherWet(void) const = 0; + /** Returns true if it is raining, stormy or snowing at the specified location. This takes into account biomes. */ + virtual bool IsWeatherWetAt(int a_BlockX, int a_BlockZ) = 0; + /** Returns the world height at the specified coords; waits for the chunk to get loaded / generated */ + virtual int GetHeight(int a_BlockX, int a_BlockZ) = 0; }; |