Cauldrons check the heightmap
This commit is contained in:
parent
7188a1f670
commit
a70b8298b6
@ -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
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,9 +37,9 @@ public:
|
|||||||
|
|
||||||
virtual void SetTimeOfDay(Int64 a_TimeOfDay) = 0;
|
virtual void SetTimeOfDay(Int64 a_TimeOfDay) = 0;
|
||||||
|
|
||||||
/** Returns true if the current weather has any precipitation - rain or storm
|
/** Returns true if it is raining, stormy or snowing at the specified location. This takes into account biomes. */
|
||||||
Does not check if biome has no downfall, use cChunk::GetBiomeAt(RelX, RelZ) for that
|
virtual bool IsWeatherWetAt(int a_BlockX, int a_BlockZ) = 0;
|
||||||
*/
|
|
||||||
virtual bool IsWeatherWet(void) const = 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;
|
||||||
};
|
};
|
||||||
|
@ -180,7 +180,7 @@ public:
|
|||||||
virtual eDimension GetDimension(void) const { return m_Dimension; }
|
virtual eDimension GetDimension(void) const { return m_Dimension; }
|
||||||
|
|
||||||
/** Returns the world height at the specified coords; waits for the chunk to get loaded / generated */
|
/** Returns the world height at the specified coords; waits for the chunk to get loaded / generated */
|
||||||
int GetHeight(int a_BlockX, int a_BlockZ);
|
virtual int GetHeight(int a_BlockX, int a_BlockZ);
|
||||||
|
|
||||||
// tolua_end
|
// tolua_end
|
||||||
|
|
||||||
@ -749,10 +749,10 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Returns true if the current weather has any precipitation - rain, storm or snow */
|
/** Returns true if the current weather has any precipitation - rain, storm or snow */
|
||||||
virtual bool IsWeatherWet(void) const { return !IsWeatherSunny(); }
|
bool IsWeatherWet(void) const { return !IsWeatherSunny(); }
|
||||||
|
|
||||||
/** Returns true if it is raining, stormy or snowing at the specified location. This takes into account biomes. */
|
/** Returns true if it is raining, stormy or snowing at the specified location. This takes into account biomes. */
|
||||||
bool IsWeatherWetAt(int a_BlockX, int a_BlockZ)
|
virtual bool IsWeatherWetAt(int a_BlockX, int a_BlockZ)
|
||||||
{
|
{
|
||||||
return (IsWeatherWet() && !IsBiomeNoDownfall(GetBiomeAt(a_BlockX, a_BlockZ)));
|
return (IsWeatherWet() && !IsBiomeNoDownfall(GetBiomeAt(a_BlockX, a_BlockZ)));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user