summaryrefslogtreecommitdiffstats
path: root/source/PluginManager.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--source/PluginManager.h147
1 files changed, 76 insertions, 71 deletions
diff --git a/source/PluginManager.h b/source/PluginManager.h
index 8dacc3ccb..8a095aba7 100644
--- a/source/PluginManager.h
+++ b/source/PluginManager.h
@@ -36,9 +36,9 @@ class cPawn;
-class cPluginManager //tolua_export
-{ //tolua_export
-public: //tolua_export
+class cPluginManager // tolua_export
+{ // tolua_export
+public: // tolua_export
// Called each tick
virtual void Tick(float a_Dt);
@@ -46,87 +46,92 @@ public: //tolua_export
// tolua_begin
enum PluginHook
{
- HOOK_TICK,
HOOK_CHAT,
+ HOOK_CHUNK_GENERATED,
+ HOOK_CHUNK_GENERATING,
HOOK_COLLECT_PICKUP,
- HOOK_COLLECT_ITEM = HOOK_COLLECT_PICKUP, // OBSOLETE, use HOOK_COLLECT_PICKUP instead
- HOOK_BLOCK_DIG,
- HOOK_BLOCK_PLACE,
+ HOOK_CRAFTING_NO_RECIPE,
HOOK_DISCONNECT,
HOOK_HANDSHAKE,
- HOOK_LOGIN,
- HOOK_PLAYER_SPAWN,
- HOOK_PLAYER_JOIN,
- HOOK_PLAYER_MOVE,
- HOOK_TAKE_DAMAGE, // cPawn, TakeDamageInfo
HOOK_KILLED,
- HOOK_CHUNK_GENERATED,
- HOOK_CHUNK_GENERATING,
- HOOK_BLOCK_TO_DROPS,
- HOOK_PRE_CRAFTING, /// cPlayer, cCraftingGrid, cCraftingRecipe
- HOOK_CRAFTING_NO_RECIPE, /// cPlayer, cCraftingGrid, cCraftingRecipe
- HOOK_POST_CRAFTING, /// cPlayer, cCraftingGrid, cCraftingRecipe
- HOOK_BLOCK_TO_PICKUP, /// BlockType, BlockMeta, cPlayer, cItem, cItems
- HOOK_WEATHER_CHANGED, /// cWorld
- HOOK_UPDATING_SIGN, /// cWorld, int, int, int, string, string, string, string
- HOOK_UPDATED_SIGN, /// cWorld, int, int, int, string, string, string, string
+ HOOK_LOGIN,
+ HOOK_PLAYER_BREAKING_BLOCK,
+ HOOK_PLAYER_BROKEN_BLOCK,
+ HOOK_PLAYER_EATING,
+ HOOK_PLAYER_JOINED,
+ HOOK_PLAYER_LEFT_CLICK,
+ HOOK_PLAYER_MOVED,
+ HOOK_PLAYER_PLACED_BLOCK,
+ HOOK_PLAYER_PLACING_BLOCK,
+ HOOK_PLAYER_RIGHTCLICK,
+ HOOK_PLAYER_SHOOTING,
+ HOOK_PLAYER_SPAWNED,
+ HOOK_PLAYER_TOSSING_ITEM,
+ HOOK_PLAYER_USED_BLOCK,
+ HOOK_PLAYER_USED_ITEM,
+ HOOK_PLAYER_USING_BLOCK,
+ HOOK_PLAYER_USING_ITEM,
+ HOOK_POST_CRAFTING,
+ HOOK_PRE_CRAFTING,
+ HOOK_TAKE_DAMAGE,
+ HOOK_TICK,
+ HOOK_UPDATED_SIGN,
+ HOOK_UPDATING_SIGN,
+ HOOK_WEATHER_CHANGED,
- // E_PLUGIN_ names are obsolete, but are kept for compatibility reasons
- E_PLUGIN_TICK = HOOK_TICK,
- E_PLUGIN_CHAT = HOOK_CHAT,
- E_PLUGIN_COLLECT_ITEM = HOOK_COLLECT_ITEM,
- E_PLUGIN_BLOCK_DIG = HOOK_BLOCK_DIG,
- E_PLUGIN_BLOCK_PLACE = HOOK_BLOCK_PLACE,
- E_PLUGIN_DISCONNECT = HOOK_DISCONNECT,
- E_PLUGIN_HANDSHAKE = HOOK_HANDSHAKE,
- E_PLUGIN_LOGIN = HOOK_LOGIN,
- E_PLUGIN_PLAYER_SPAWN = HOOK_PLAYER_SPAWN,
- E_PLUGIN_PLAYER_JOIN = HOOK_PLAYER_JOIN,
- E_PLUGIN_PLAYER_MOVE = HOOK_PLAYER_MOVE,
- E_PLUGIN_TAKE_DAMAGE = HOOK_TAKE_DAMAGE,
- E_PLUGIN_KILLED = HOOK_KILLED,
- E_PLUGIN_CHUNK_GENERATED = HOOK_CHUNK_GENERATED,
- E_PLUGIN_CHUNK_GENERATING = HOOK_CHUNK_GENERATING,
- E_PLUGIN_BLOCK_TO_DROPS = HOOK_BLOCK_TO_DROPS,
- };
+ // Note that if a hook type is added, it may need processing in cPlugin::CanAddHook() descendants!
+ } ;
// tolua_end
- static cPluginManager * GetPluginManager(); //tolua_export
+ static cPluginManager * GetPluginManager(); // tolua_export
typedef std::map< AString, cPlugin * > PluginMap;
typedef std::list< cPlugin * > PluginList;
- cPlugin * GetPlugin( const AString & a_Plugin ) const; //tolua_export
+ cPlugin * GetPlugin( const AString & a_Plugin ) const; // tolua_export
const PluginMap & GetAllPlugins() const; // >> EXPORTED IN MANUALBINDINGS <<
- void FindPlugins(); //tolua_export
- void ReloadPlugins(); //tolua_export
+ void FindPlugins(); // tolua_export
+ void ReloadPlugins(); // tolua_export
bool AddPlugin( cPlugin* a_Plugin );
- void AddHook( cPlugin* a_Plugin, PluginHook a_Hook ); //tolua_export
-
- unsigned int GetNumPlugins() const; //tolua_export
-
- // If the hook returns true, no further hook is called and the functions return false
- bool CallHook( PluginHook a_Hook, unsigned int a_NumArgs, ... );
-
- bool CallHookBlockDig (cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, char a_Status, BLOCKTYPE OldBlock, NIBBLETYPE OldMeta);
- bool CallHookBlockPlace (cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, const cItem & a_HeldItem);
- bool CallHookBlockToPickup (BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta, const cPlayer * a_Player, const cItem & a_EquippedItem, cItems & a_Pickups);
- bool CallHookChat (cPlayer * a_Player, const AString & a_Message);
- bool CallHookChunkGenerating (cWorld * a_World, int a_ChunkX, int a_ChunkZ, cLuaChunk * a_Chunk);
- bool CallHookCollectPickup (cPlayer * a_Player, cPickup & a_Pickup);
- bool CallHookCraftingNoRecipe(const cPlayer * a_Player, const cCraftingGrid * a_Grid, cCraftingRecipe * a_Recipe);
- bool CallHookDisconnect (cPlayer * a_Player, const AString & a_Reason);
- bool CallHookLogin (cClientHandle * a_Client, int a_ProtocolVersion, const AString & a_Username);
- bool CallHookPostCrafting (const cPlayer * a_Player, const cCraftingGrid * a_Grid, cCraftingRecipe * a_Recipe);
- bool CallHookPreCrafting (const cPlayer * a_Player, const cCraftingGrid * a_Grid, cCraftingRecipe * a_Recipe);
- bool CallHookTakeDamage (cPawn & a_Receiver, TakeDamageInfo & a_TDI);
- bool CallHookUpdatedSign (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);
- bool CallHookUpdatingSign (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);
- bool CallHookWeatherChanged (cWorld * a_World);
- bool CallHookHandshake (cClientHandle * a_ClientHandle, const AString & a_Username);
-
- bool DisablePlugin( AString & a_PluginName ); //tolua_export
- bool LoadPlugin( AString & a_PluginName ); //tolua_export
+ void AddHook( cPlugin* a_Plugin, PluginHook a_Hook ); // tolua_export
+
+ unsigned int GetNumPlugins() const; // tolua_export
+
+ // TODO: bool CallHookBlockToPickup (BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta, const cPlayer * a_Player, const cItem & a_EquippedItem, cItems & a_Pickups);
+ bool CallHookChat (cPlayer * a_Player, const AString & a_Message);
+ bool CallHookChunkGenerated (cWorld * a_World, int a_ChunkX, int a_ChunkZ);
+ bool CallHookChunkGenerating (cWorld * a_World, int a_ChunkX, int a_ChunkZ, cLuaChunk * a_Chunk);
+ bool CallHookCollectPickup (cPlayer * a_Player, cPickup & a_Pickup);
+ bool CallHookCraftingNoRecipe (const cPlayer * a_Player, const cCraftingGrid * a_Grid, cCraftingRecipe * a_Recipe);
+ bool CallHookDisconnect (cPlayer * a_Player, const AString & a_Reason);
+ bool CallHookHandshake (cClientHandle * a_ClientHandle, const AString & a_Username);
+ bool CallHookKilled (cPawn & a_Victim, cEntity * a_Killer);
+ bool CallHookLogin (cClientHandle * a_Client, int a_ProtocolVersion, const AString & a_Username);
+ bool CallHookPlayerBreakingBlock(cPlayer & a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta);
+ bool CallHookPlayerBrokenBlock (cPlayer & a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta);
+ bool CallHookPlayerEating (cPlayer & a_Player);
+ bool CallHookPlayerJoined (cPlayer & a_Player);
+ bool CallHookPlayerMoved (cPlayer & a_Player);
+ bool CallHookPlayerLeftClick (cPlayer & a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, char a_Status);
+ bool CallHookPlayerPlacedBlock (cPlayer & a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta);
+ bool CallHookPlayerPlacingBlock (cPlayer & a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta);
+ bool CallHookPlayerRightClick (cPlayer & a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ);
+ bool CallHookPlayerShooting (cPlayer & a_Player);
+ bool CallHookPlayerSpawned (cPlayer & a_Player);
+ bool CallHookPlayerTossingItem (cPlayer & a_Player);
+ bool CallHookPlayerUsedBlock (cPlayer & a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta);
+ bool CallHookPlayerUsedItem (cPlayer & a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ);
+ bool CallHookPlayerUsingBlock (cPlayer & a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta);
+ bool CallHookPlayerUsingItem (cPlayer & a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ);
+ bool CallHookPostCrafting (const cPlayer * a_Player, const cCraftingGrid * a_Grid, cCraftingRecipe * a_Recipe);
+ bool CallHookPreCrafting (const cPlayer * a_Player, const cCraftingGrid * a_Grid, cCraftingRecipe * a_Recipe);
+ bool CallHookTakeDamage (cPawn & a_Receiver, TakeDamageInfo & a_TDI);
+ bool CallHookUpdatedSign (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);
+ bool CallHookUpdatingSign (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);
+ bool CallHookWeatherChanged (cWorld * a_World);
+
+ bool DisablePlugin( AString & a_PluginName ); // tolua_export
+ bool LoadPlugin( AString & a_PluginName ); // tolua_export
void RemoveHooks( cPlugin * a_Plugin );
void RemovePlugin( cPlugin * a_Plugin, bool a_bDelete = false );
@@ -163,7 +168,7 @@ private:
#endif // USE_SQUIRREL
bool m_bReloadPlugins;
-}; //tolua_export
+}; // tolua_export