Merged branch "branches/hooks" into "trunk".
git-svn-id: http://mc-server.googlecode.com/svn/trunk@1139 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
+75
-70
@@ -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_COLLECT_PICKUP,
|
||||
HOOK_COLLECT_ITEM = HOOK_COLLECT_PICKUP, // OBSOLETE, use HOOK_COLLECT_PICKUP instead
|
||||
HOOK_BLOCK_DIG,
|
||||
HOOK_BLOCK_PLACE,
|
||||
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_COLLECT_PICKUP,
|
||||
HOOK_CRAFTING_NO_RECIPE,
|
||||
HOOK_DISCONNECT,
|
||||
HOOK_HANDSHAKE,
|
||||
HOOK_KILLED,
|
||||
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
|
||||
void AddHook( cPlugin* a_Plugin, PluginHook a_Hook ); // tolua_export
|
||||
|
||||
unsigned int GetNumPlugins() const; //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);
|
||||
// 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
|
||||
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
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user