summaryrefslogtreecommitdiffstats
path: root/src/Blocks/BlockCauldron.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Blocks/BlockCauldron.h')
-rw-r--r--src/Blocks/BlockCauldron.h38
1 files changed, 31 insertions, 7 deletions
diff --git a/src/Blocks/BlockCauldron.h b/src/Blocks/BlockCauldron.h
index 37f274f18..28c1dfda8 100644
--- a/src/Blocks/BlockCauldron.h
+++ b/src/Blocks/BlockCauldron.h
@@ -19,11 +19,19 @@ public:
{
}
+
+
+
+
virtual cItems ConvertToPickups(NIBBLETYPE a_BlockMeta, cBlockEntity * a_BlockEntity, const cEntity * a_Digger, const cItem * a_Tool) override
{
return cItem(E_ITEM_CAULDRON, 1, 0);
}
+
+
+
+
virtual bool OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer & a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ) override
{
NIBBLETYPE Meta = a_ChunkInterface.GetBlockMeta({a_BlockX, a_BlockY, a_BlockZ});
@@ -86,29 +94,45 @@ public:
return true;
}
+
+
+
+
virtual bool IsUseable() override
{
return true;
}
- 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,
+ const Vector3i a_RelPos
+ ) override
{
- 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)))
+ auto WorldPos = a_Chunk.RelativeToAbsolute(a_RelPos);
+ if (!a_WorldInterface.IsWeatherWetAtXYZ(WorldPos.addedY(1)))
{
// 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;
}
- NIBBLETYPE Meta = a_Chunk.GetMeta(a_RelX, a_RelY, a_RelZ);
+ auto Meta = a_Chunk.GetMeta(a_RelPos);
if (Meta < 3)
{
- a_Chunk.SetMeta(a_RelX, a_RelY, a_RelZ, Meta + 1);
+ a_Chunk.SetMeta(a_RelPos, Meta + 1);
}
}
+
+
+
+
virtual ColourID GetMapBaseColourID(NIBBLETYPE a_Meta) override
{
UNUSED(a_Meta);