From 43e684071933adef93040e8d4b830d5c6b71cf9a Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Sat, 12 Jan 2013 04:46:01 +0000 Subject: Merged branch "branches/hooks" into "trunk". git-svn-id: http://mc-server.googlecode.com/svn/trunk@1139 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/PluginManager.h | 147 +++++++++++++++++++++++++------------------------ 1 file changed, 76 insertions(+), 71 deletions(-) (limited to 'source/PluginManager.h') 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 -- cgit v1.2.3