summaryrefslogtreecommitdiffstats
path: root/source/Plugin_Squirrel.cpp
diff options
context:
space:
mode:
authorbearbin <bearbin@gmail.com>2013-07-29 14:55:26 +0200
committerbearbin <bearbin@gmail.com>2013-07-29 14:55:26 +0200
commitfb1044c4e55c726753d094b66756a1cb3bc60ee8 (patch)
treec61e56725da7dff0154d566722651e2c39c9d6c6 /source/Plugin_Squirrel.cpp
parentWebAdmin: Removed the duplicate memory usage querying (diff)
parentChanged everyting to Unix line endings. (diff)
downloadcuberite-fb1044c4e55c726753d094b66756a1cb3bc60ee8.tar
cuberite-fb1044c4e55c726753d094b66756a1cb3bc60ee8.tar.gz
cuberite-fb1044c4e55c726753d094b66756a1cb3bc60ee8.tar.bz2
cuberite-fb1044c4e55c726753d094b66756a1cb3bc60ee8.tar.lz
cuberite-fb1044c4e55c726753d094b66756a1cb3bc60ee8.tar.xz
cuberite-fb1044c4e55c726753d094b66756a1cb3bc60ee8.tar.zst
cuberite-fb1044c4e55c726753d094b66756a1cb3bc60ee8.zip
Diffstat (limited to 'source/Plugin_Squirrel.cpp')
-rw-r--r--source/Plugin_Squirrel.cpp818
1 files changed, 409 insertions, 409 deletions
diff --git a/source/Plugin_Squirrel.cpp b/source/Plugin_Squirrel.cpp
index 27fd01a09..adca4b519 100644
--- a/source/Plugin_Squirrel.cpp
+++ b/source/Plugin_Squirrel.cpp
@@ -1,409 +1,409 @@
-
-#include "Globals.h"
-
-
-
-
-#ifdef USE_SUIRREL
-
-
-
-
-
-#include "Plugin_Squirrel.h"
-#include "squirrelbindings/SquirrelFunctions.h"
-#include "squirrelbindings/SquirrelBindings.h"
-#include "squirrelbindings/SquirrelBaseClass.h"
-
-
-cPlugin_Squirrel::cPlugin_Squirrel( const char* a_PluginName )
- : cPlugin( a_PluginName )
-{
- SetLanguage( cPlugin::E_SQUIRREL );
- m_PluginName = a_PluginName;
-}
-
-cPlugin_Squirrel::~cPlugin_Squirrel()
-{
- delete m_Plugin;
-}
-
-bool cPlugin_Squirrel::Initialize()
-{
- cCSLock Lock(m_CriticalSection);
-
- std::string PluginPath = std::string("Plugins/") + m_PluginName + ".nut";
-
- Sqrat::Script script;
- script.CompileFile(PluginPath);
- if(script.IsNull())
- {
- LOGERROR("Unable to run script \"%s\"", m_PluginName);
- }
-
- try {
- script.Run();
-
- Sqrat::Function construct(Sqrat::RootTable(), m_PluginName);
-
- if(construct.IsNull())
- {
- LOGERROR("Constructor for Plugin \"%s\" not found.", m_PluginName);
- return false;
- }
-
- Sqrat::Object obj = construct.Evaluate<Sqrat::Object>();
-
- ((cSquirrelBaseClass *) obj.GetInstanceUP())->setInstance(this);
-
- m_Plugin = new SquirrelObject(obj);
-
-
- Sqrat::Object PluginName = obj.GetSlot("name");
- if(!PluginName.IsNull())
- {
- this->SetName(PluginName.Cast<const char*>());
- }
-
- Sqrat::Function init = m_Plugin->GetFunction("Initialize");
- if(init.IsNull())
- {
- LOGERROR("Can not initialize plugin \"%s\"", m_PluginName);
- return false;
- }
-
- return init.Evaluate<bool>();
-
- } catch(Sqrat::Exception &e)
- {
- LOGERROR("Initialisation of \"%s\" failed: %s", m_PluginName, e.Message().c_str());
- return false;
- }
-}
-
-
-
-
-
-void cPlugin_Squirrel::OnDisable()
-{
- cCSLock Lock(m_CriticalSection);
-
- if(!m_Plugin->HasFunction("OnDisable")) return;
-
- m_Plugin->GetFunction("OnDisable").Execute();
-}
-
-
-
-
-
-void cPlugin_Squirrel::Tick(float a_Dt)
-{
- cCSLock Lock( m_CriticalSection );
-
- if(!m_Plugin->HasFunction("OnTick")) return;
-
- m_Plugin->GetFunction("OnTick").Execute(a_Dt);
-}
-
-
-
-
-
-bool cPlugin_Squirrel::OnCollectPickup(cPlayer * a_Player, cPickup * a_Pickup)
-{
- cCSLock Lock(m_CriticalSection);
-
- if (!m_Plugin->HasFunction("OnCollectPickup"))
- {
- return false;
- }
-
- return m_Plugin->GetFunction("OnCollectPickup").Evaluate<bool>(a_Player, a_Pickup);
-}
-
-
-
-
-
-bool cPlugin_Squirrel::OnDisconnect(cPlayer* a_Player, const AString & a_Reason)
-{
- cCSLock Lock( m_CriticalSection );
-
- if (!m_Plugin->HasFunction("OnDisconnect")) return false;
-
- return m_Plugin->GetFunction("OnDisconnect").Evaluate<bool>(a_Player, a_Reason);
-}
-
-
-
-
-
-bool cPlugin_Squirrel::OnBlockPlace(cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, const cItem & a_HeldItem)
-{
- cCSLock Lock(m_CriticalSection);
-
- if (!m_Plugin->HasFunction("OnBlockPlace")) return false;
-
- return m_Plugin->GetFunction("OnBlockPlace").Evaluate<bool>(a_Player, a_BlockX, a_BlockY, a_BlockZ, a_BlockFace, a_HeldItem);
-}
-
-
-
-
-
-bool cPlugin_Squirrel::OnBlockDig(cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, char a_Status, BLOCKTYPE a_OldBlock, NIBBLETYPE a_OldMeta)
-{
- cCSLock Lock(m_CriticalSection);
-
- if (!m_Plugin->HasFunction("OnBlockDig")) return false;
-
- return m_Plugin->GetFunction("OnBlockDig").Evaluate<bool>(a_Player, a_BlockX, a_BlockY, a_BlockZ, a_BlockFace, a_Status, a_OldBlock, a_OldMeta);
-}
-
-
-
-
-
-bool cPlugin_Squirrel::OnChat(cPlayer * a_Player, const AString & a_Message)
-{
- cCSLock Lock(m_CriticalSection);
-
- if (!m_Plugin->HasFunction("OnChat")) return false;
-
- return m_Plugin->GetFunction("OnChat").Evaluate<bool>(a_Player, a_Message);
-
-}
-
-
-
-
-
-bool cPlugin_Squirrel::OnLogin(cClientHandle * a_Client, int a_ProtocolVersion, const AString & a_Username)
-{
- cCSLock Lock( m_CriticalSection );
-
- if (!m_Plugin->HasFunction("OnLogin"))
- {
- return false;
- }
-
- return m_Plugin->GetFunction("OnLogin").Evaluate<bool>(a_Client, a_ProtocolVersion, a_Username);
-}
-
-
-
-
-
-void cPlugin_Squirrel::OnPlayerSpawn( cPlayer* a_Player )
-{
- cCSLock Lock( m_CriticalSection );
-
- if(!m_Plugin->HasFunction("OnPlayerSpawn")) return;
-
- return m_Plugin->GetFunction("OnPlayerSpawn").Execute(a_Player);
-
-}
-
-
-
-
-
-bool cPlugin_Squirrel::OnPlayerJoin( cPlayer* a_Player )
-{
- cCSLock Lock( m_CriticalSection );
-
- if(!m_Plugin->HasFunction("OnPlayerJoin")) return false;
-
- return m_Plugin->GetFunction("OnPlayerJoin").Evaluate<bool>(a_Player);
-}
-
-
-
-
-
-void cPlugin_Squirrel::OnPlayerMove( cPlayer* a_Player )
-{
- cCSLock Lock( m_CriticalSection );
-
- if(!m_Plugin->HasFunction("OnPlayerMove")) return;
-
- return m_Plugin->GetFunction("OnPlayerMove").Execute(a_Player);
-
-}
-
-
-
-
-
-void cPlugin_Squirrel::OnTakeDamage( cPawn* a_Pawn, TakeDamageInfo* a_TakeDamageInfo )
-{
- cCSLock Lock( m_CriticalSection );
-
- if(!m_Plugin->HasFunction("OnTakeDamage")) return;
-
- return m_Plugin->GetFunction("OnTakeDamage")(a_Pawn, a_TakeDamageInfo);
-}
-
-
-
-
-
-bool cPlugin_Squirrel::OnKilled( cPawn* a_Killed, cEntity* a_Killer )
-{
- cCSLock Lock( m_CriticalSection );
- if(!m_Plugin->HasFunction("OnKilled")) return false;
- return m_Plugin->GetFunction("OnKilled").Evaluate<bool>(a_Killed, a_Killer);
-}
-
-
-
-
-
-void cPlugin_Squirrel::OnChunkGenerated(cWorld * a_World, int a_ChunkX, int a_ChunkZ)
-{
- cCSLock Lock(m_CriticalSection);
- if(!m_Plugin->HasFunction("OnChunkGenerated")) return;
- return m_Plugin->GetFunction("OnChunkGenerated")(a_World, a_ChunkX, a_ChunkZ);
-}
-
-
-
-
-
-bool cPlugin_Squirrel::OnChunkGenerating(cWorld * a_World, int a_ChunkX, int a_ChunkZ, cChunkDesc * a_pLuaChunk)
-{
- cCSLock Lock(m_CriticalSection);
- if(!m_Plugin->HasFunction("OnChunkGenerating")) return false;
- return m_Plugin->GetFunction("OnChunkGenerating").Evaluate<bool>(a_World, a_ChunkX, a_ChunkZ, a_pLuaChunk);
-}
-
-
-
-
-
-bool cPlugin_Squirrel::OnPreCrafting(const cPlayer * a_Player, const cCraftingGrid * a_Grid, cCraftingRecipe * a_Recipe)
-{
- cCSLock Lock(m_CriticalSection);
- if(!m_Plugin->HasFunction("OnPreCrafting")) return false;
- return m_Plugin->GetFunction("OnPreCrafting").Evaluate<bool>((cPlayer *) a_Player, (cCraftingGrid *) a_Grid, a_Recipe);
-
-}
-
-
-
-
-
-bool cPlugin_Squirrel::OnCraftingNoRecipe(const cPlayer * a_Player, const cCraftingGrid * a_Grid, cCraftingRecipe * a_Recipe)
-{
- cCSLock Lock(m_CriticalSection);
- if(!m_Plugin->HasFunction("OnCraftingNoRecipe")) return false;
- return m_Plugin->GetFunction("OnCraftingNoRecipe").Evaluate<bool>((cPlayer *) a_Player, (cCraftingGrid *) a_Grid, a_Recipe);
-}
-
-
-
-
-
-bool cPlugin_Squirrel::OnPostCrafting(const cPlayer * a_Player, const cCraftingGrid * a_Grid, cCraftingRecipe * a_Recipe)
-{
- cCSLock Lock(m_CriticalSection);
-
- if(!m_Plugin->HasFunction("OnPostCrafting")) return false;
- return m_Plugin->GetFunction("OnPostCrafting").Evaluate<bool>((cPlayer *) a_Player, (cCraftingGrid *) a_Grid, a_Recipe);
-}
-
-
-
-
-
-bool cPlugin_Squirrel::OnBlockToPickup(
- BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta,
- const cPlayer * a_Player, const cItem & a_EquippedItem, cItems & a_Pickups
-)
-{
- cCSLock Lock(m_CriticalSection);
-
- if(!m_Plugin->HasFunction("OnBlockToPickup")) return false;
- return m_Plugin->GetFunction("OnBlockToPickup").Evaluate<bool>(a_BlockType, a_BlockMeta, (cPlayer *) a_Player, a_EquippedItem, a_Pickups);
-
-}
-
-
-
-
-
-bool cPlugin_Squirrel::OnWeatherChanged(cWorld * a_World)
-{
- cCSLock Lock(m_CriticalSection);
-
- if(!m_Plugin->HasFunction("OnWeatherChanged")) return false;
- return m_Plugin->GetFunction("OnWeatherChanged").Evaluate<bool>(a_World);
-}
-
-
-
-
-
-bool cPlugin_Squirrel::OnUpdatingSign(
- cWorld * a_World,
- int a_BlockX, int a_BlockY, int a_BlockZ,
- AString & a_Line1, AString & a_Line2, AString & a_Line3, AString & a_Line4,
- cPlayer * a_Player
-)
-{
- cCSLock Lock(m_CriticalSection);
-
- if(!m_Plugin->HasFunction("OnUpdatingSign")) return false;
- return m_Plugin->GetFunction("OnUpdatingSign")
- .Evaluate<bool>(
- a_World,
- a_BlockX,
- a_BlockY,
- a_BlockZ,
- a_Line1,
- a_Line2,
- a_Line3,
- a_Line4,
- a_Player
- );
-}
-
-
-
-
-
-bool cPlugin_Squirrel::OnUpdatedSign(
- cWorld * a_World,
- int a_BlockX, int a_BlockY, int a_BlockZ,
- const AString & a_Line1, const AString & a_Line2, const AString & a_Line3, const AString & a_Line4,
- cPlayer * a_Player
-)
-{
- cCSLock Lock(m_CriticalSection);
-
- if(!m_Plugin->HasFunction("OnUpdatedSign")) return false;
- return m_Plugin->GetFunction("OnUpdatedSign")
- .Evaluate<bool>(
- a_World,
- a_BlockX,
- a_BlockY,
- a_BlockZ,
- a_Line1,
- a_Line2,
- a_Line3,
- a_Line4,
- a_Player
- );
-}
-
-
-
-
-
-#endif // USE_SQUIRREL
-
-
-
-
+
+#include "Globals.h"
+
+
+
+
+#ifdef USE_SUIRREL
+
+
+
+
+
+#include "Plugin_Squirrel.h"
+#include "squirrelbindings/SquirrelFunctions.h"
+#include "squirrelbindings/SquirrelBindings.h"
+#include "squirrelbindings/SquirrelBaseClass.h"
+
+
+cPlugin_Squirrel::cPlugin_Squirrel( const char* a_PluginName )
+ : cPlugin( a_PluginName )
+{
+ SetLanguage( cPlugin::E_SQUIRREL );
+ m_PluginName = a_PluginName;
+}
+
+cPlugin_Squirrel::~cPlugin_Squirrel()
+{
+ delete m_Plugin;
+}
+
+bool cPlugin_Squirrel::Initialize()
+{
+ cCSLock Lock(m_CriticalSection);
+
+ std::string PluginPath = std::string("Plugins/") + m_PluginName + ".nut";
+
+ Sqrat::Script script;
+ script.CompileFile(PluginPath);
+ if(script.IsNull())
+ {
+ LOGERROR("Unable to run script \"%s\"", m_PluginName);
+ }
+
+ try {
+ script.Run();
+
+ Sqrat::Function construct(Sqrat::RootTable(), m_PluginName);
+
+ if(construct.IsNull())
+ {
+ LOGERROR("Constructor for Plugin \"%s\" not found.", m_PluginName);
+ return false;
+ }
+
+ Sqrat::Object obj = construct.Evaluate<Sqrat::Object>();
+
+ ((cSquirrelBaseClass *) obj.GetInstanceUP())->setInstance(this);
+
+ m_Plugin = new SquirrelObject(obj);
+
+
+ Sqrat::Object PluginName = obj.GetSlot("name");
+ if(!PluginName.IsNull())
+ {
+ this->SetName(PluginName.Cast<const char*>());
+ }
+
+ Sqrat::Function init = m_Plugin->GetFunction("Initialize");
+ if(init.IsNull())
+ {
+ LOGERROR("Can not initialize plugin \"%s\"", m_PluginName);
+ return false;
+ }
+
+ return init.Evaluate<bool>();
+
+ } catch(Sqrat::Exception &e)
+ {
+ LOGERROR("Initialisation of \"%s\" failed: %s", m_PluginName, e.Message().c_str());
+ return false;
+ }
+}
+
+
+
+
+
+void cPlugin_Squirrel::OnDisable()
+{
+ cCSLock Lock(m_CriticalSection);
+
+ if(!m_Plugin->HasFunction("OnDisable")) return;
+
+ m_Plugin->GetFunction("OnDisable").Execute();
+}
+
+
+
+
+
+void cPlugin_Squirrel::Tick(float a_Dt)
+{
+ cCSLock Lock( m_CriticalSection );
+
+ if(!m_Plugin->HasFunction("OnTick")) return;
+
+ m_Plugin->GetFunction("OnTick").Execute(a_Dt);
+}
+
+
+
+
+
+bool cPlugin_Squirrel::OnCollectPickup(cPlayer * a_Player, cPickup * a_Pickup)
+{
+ cCSLock Lock(m_CriticalSection);
+
+ if (!m_Plugin->HasFunction("OnCollectPickup"))
+ {
+ return false;
+ }
+
+ return m_Plugin->GetFunction("OnCollectPickup").Evaluate<bool>(a_Player, a_Pickup);
+}
+
+
+
+
+
+bool cPlugin_Squirrel::OnDisconnect(cPlayer* a_Player, const AString & a_Reason)
+{
+ cCSLock Lock( m_CriticalSection );
+
+ if (!m_Plugin->HasFunction("OnDisconnect")) return false;
+
+ return m_Plugin->GetFunction("OnDisconnect").Evaluate<bool>(a_Player, a_Reason);
+}
+
+
+
+
+
+bool cPlugin_Squirrel::OnBlockPlace(cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, const cItem & a_HeldItem)
+{
+ cCSLock Lock(m_CriticalSection);
+
+ if (!m_Plugin->HasFunction("OnBlockPlace")) return false;
+
+ return m_Plugin->GetFunction("OnBlockPlace").Evaluate<bool>(a_Player, a_BlockX, a_BlockY, a_BlockZ, a_BlockFace, a_HeldItem);
+}
+
+
+
+
+
+bool cPlugin_Squirrel::OnBlockDig(cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, char a_Status, BLOCKTYPE a_OldBlock, NIBBLETYPE a_OldMeta)
+{
+ cCSLock Lock(m_CriticalSection);
+
+ if (!m_Plugin->HasFunction("OnBlockDig")) return false;
+
+ return m_Plugin->GetFunction("OnBlockDig").Evaluate<bool>(a_Player, a_BlockX, a_BlockY, a_BlockZ, a_BlockFace, a_Status, a_OldBlock, a_OldMeta);
+}
+
+
+
+
+
+bool cPlugin_Squirrel::OnChat(cPlayer * a_Player, const AString & a_Message)
+{
+ cCSLock Lock(m_CriticalSection);
+
+ if (!m_Plugin->HasFunction("OnChat")) return false;
+
+ return m_Plugin->GetFunction("OnChat").Evaluate<bool>(a_Player, a_Message);
+
+}
+
+
+
+
+
+bool cPlugin_Squirrel::OnLogin(cClientHandle * a_Client, int a_ProtocolVersion, const AString & a_Username)
+{
+ cCSLock Lock( m_CriticalSection );
+
+ if (!m_Plugin->HasFunction("OnLogin"))
+ {
+ return false;
+ }
+
+ return m_Plugin->GetFunction("OnLogin").Evaluate<bool>(a_Client, a_ProtocolVersion, a_Username);
+}
+
+
+
+
+
+void cPlugin_Squirrel::OnPlayerSpawn( cPlayer* a_Player )
+{
+ cCSLock Lock( m_CriticalSection );
+
+ if(!m_Plugin->HasFunction("OnPlayerSpawn")) return;
+
+ return m_Plugin->GetFunction("OnPlayerSpawn").Execute(a_Player);
+
+}
+
+
+
+
+
+bool cPlugin_Squirrel::OnPlayerJoin( cPlayer* a_Player )
+{
+ cCSLock Lock( m_CriticalSection );
+
+ if(!m_Plugin->HasFunction("OnPlayerJoin")) return false;
+
+ return m_Plugin->GetFunction("OnPlayerJoin").Evaluate<bool>(a_Player);
+}
+
+
+
+
+
+void cPlugin_Squirrel::OnPlayerMove( cPlayer* a_Player )
+{
+ cCSLock Lock( m_CriticalSection );
+
+ if(!m_Plugin->HasFunction("OnPlayerMove")) return;
+
+ return m_Plugin->GetFunction("OnPlayerMove").Execute(a_Player);
+
+}
+
+
+
+
+
+void cPlugin_Squirrel::OnTakeDamage( cPawn* a_Pawn, TakeDamageInfo* a_TakeDamageInfo )
+{
+ cCSLock Lock( m_CriticalSection );
+
+ if(!m_Plugin->HasFunction("OnTakeDamage")) return;
+
+ return m_Plugin->GetFunction("OnTakeDamage")(a_Pawn, a_TakeDamageInfo);
+}
+
+
+
+
+
+bool cPlugin_Squirrel::OnKilled( cPawn* a_Killed, cEntity* a_Killer )
+{
+ cCSLock Lock( m_CriticalSection );
+ if(!m_Plugin->HasFunction("OnKilled")) return false;
+ return m_Plugin->GetFunction("OnKilled").Evaluate<bool>(a_Killed, a_Killer);
+}
+
+
+
+
+
+void cPlugin_Squirrel::OnChunkGenerated(cWorld * a_World, int a_ChunkX, int a_ChunkZ)
+{
+ cCSLock Lock(m_CriticalSection);
+ if(!m_Plugin->HasFunction("OnChunkGenerated")) return;
+ return m_Plugin->GetFunction("OnChunkGenerated")(a_World, a_ChunkX, a_ChunkZ);
+}
+
+
+
+
+
+bool cPlugin_Squirrel::OnChunkGenerating(cWorld * a_World, int a_ChunkX, int a_ChunkZ, cChunkDesc * a_pLuaChunk)
+{
+ cCSLock Lock(m_CriticalSection);
+ if(!m_Plugin->HasFunction("OnChunkGenerating")) return false;
+ return m_Plugin->GetFunction("OnChunkGenerating").Evaluate<bool>(a_World, a_ChunkX, a_ChunkZ, a_pLuaChunk);
+}
+
+
+
+
+
+bool cPlugin_Squirrel::OnPreCrafting(const cPlayer * a_Player, const cCraftingGrid * a_Grid, cCraftingRecipe * a_Recipe)
+{
+ cCSLock Lock(m_CriticalSection);
+ if(!m_Plugin->HasFunction("OnPreCrafting")) return false;
+ return m_Plugin->GetFunction("OnPreCrafting").Evaluate<bool>((cPlayer *) a_Player, (cCraftingGrid *) a_Grid, a_Recipe);
+
+}
+
+
+
+
+
+bool cPlugin_Squirrel::OnCraftingNoRecipe(const cPlayer * a_Player, const cCraftingGrid * a_Grid, cCraftingRecipe * a_Recipe)
+{
+ cCSLock Lock(m_CriticalSection);
+ if(!m_Plugin->HasFunction("OnCraftingNoRecipe")) return false;
+ return m_Plugin->GetFunction("OnCraftingNoRecipe").Evaluate<bool>((cPlayer *) a_Player, (cCraftingGrid *) a_Grid, a_Recipe);
+}
+
+
+
+
+
+bool cPlugin_Squirrel::OnPostCrafting(const cPlayer * a_Player, const cCraftingGrid * a_Grid, cCraftingRecipe * a_Recipe)
+{
+ cCSLock Lock(m_CriticalSection);
+
+ if(!m_Plugin->HasFunction("OnPostCrafting")) return false;
+ return m_Plugin->GetFunction("OnPostCrafting").Evaluate<bool>((cPlayer *) a_Player, (cCraftingGrid *) a_Grid, a_Recipe);
+}
+
+
+
+
+
+bool cPlugin_Squirrel::OnBlockToPickup(
+ BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta,
+ const cPlayer * a_Player, const cItem & a_EquippedItem, cItems & a_Pickups
+)
+{
+ cCSLock Lock(m_CriticalSection);
+
+ if(!m_Plugin->HasFunction("OnBlockToPickup")) return false;
+ return m_Plugin->GetFunction("OnBlockToPickup").Evaluate<bool>(a_BlockType, a_BlockMeta, (cPlayer *) a_Player, a_EquippedItem, a_Pickups);
+
+}
+
+
+
+
+
+bool cPlugin_Squirrel::OnWeatherChanged(cWorld * a_World)
+{
+ cCSLock Lock(m_CriticalSection);
+
+ if(!m_Plugin->HasFunction("OnWeatherChanged")) return false;
+ return m_Plugin->GetFunction("OnWeatherChanged").Evaluate<bool>(a_World);
+}
+
+
+
+
+
+bool cPlugin_Squirrel::OnUpdatingSign(
+ cWorld * a_World,
+ int a_BlockX, int a_BlockY, int a_BlockZ,
+ AString & a_Line1, AString & a_Line2, AString & a_Line3, AString & a_Line4,
+ cPlayer * a_Player
+)
+{
+ cCSLock Lock(m_CriticalSection);
+
+ if(!m_Plugin->HasFunction("OnUpdatingSign")) return false;
+ return m_Plugin->GetFunction("OnUpdatingSign")
+ .Evaluate<bool>(
+ a_World,
+ a_BlockX,
+ a_BlockY,
+ a_BlockZ,
+ a_Line1,
+ a_Line2,
+ a_Line3,
+ a_Line4,
+ a_Player
+ );
+}
+
+
+
+
+
+bool cPlugin_Squirrel::OnUpdatedSign(
+ cWorld * a_World,
+ int a_BlockX, int a_BlockY, int a_BlockZ,
+ const AString & a_Line1, const AString & a_Line2, const AString & a_Line3, const AString & a_Line4,
+ cPlayer * a_Player
+)
+{
+ cCSLock Lock(m_CriticalSection);
+
+ if(!m_Plugin->HasFunction("OnUpdatedSign")) return false;
+ return m_Plugin->GetFunction("OnUpdatedSign")
+ .Evaluate<bool>(
+ a_World,
+ a_BlockX,
+ a_BlockY,
+ a_BlockZ,
+ a_Line1,
+ a_Line2,
+ a_Line3,
+ a_Line4,
+ a_Player
+ );
+}
+
+
+
+
+
+#endif // USE_SQUIRREL
+
+
+
+