2013-01-13 11:10:26 +00:00
-- Global variables
PLUGIN = {} -- Reference to own plugin object
function Initialize ( Plugin )
PLUGIN = Plugin
2013-02-13 19:22:08 +00:00
Plugin : SetName ( "HookNotify" );
Plugin : SetVersion ( 1 );
2013-01-13 11:10:26 +00:00
2013-02-13 19:22:08 +00:00
PluginManager = cPluginManager : Get ();
2013-01-27 02:00:33 +00:00
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_BLOCK_TO_PICKUPS );
2013-01-13 11:10:26 +00:00
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_CHAT );
2013-02-05 19:57:22 +00:00
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_CHUNK_AVAILABLE );
2013-01-13 11:10:26 +00:00
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_CHUNK_GENERATED );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_CHUNK_GENERATING );
2013-02-05 19:57:22 +00:00
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_CHUNK_UNLOADED );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_CHUNK_UNLOADING );
2013-01-28 16:21:28 +00:00
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_COLLECTING_PICKUP );
2013-01-13 11:10:26 +00:00
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_CRAFTING_NO_RECIPE );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_DISCONNECT );
2013-02-21 13:47:01 +00:00
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_EXECUTE_COMMAND );
2013-01-13 11:10:26 +00:00
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_HANDSHAKE );
2013-01-28 16:54:11 +00:00
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_KILLING );
2013-01-13 11:10:26 +00:00
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_LOGIN );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_PLAYER_BREAKING_BLOCK );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_PLAYER_BROKEN_BLOCK );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_PLAYER_EATING );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_PLAYER_JOINED );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_PLAYER_LEFT_CLICK );
2013-01-26 07:50:06 +00:00
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_PLAYER_MOVING );
2013-01-13 11:10:26 +00:00
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_PLAYER_PLACED_BLOCK );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_PLAYER_PLACING_BLOCK );
2013-01-18 18:28:27 +00:00
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_PLAYER_RIGHT_CLICK );
2013-01-13 11:10:26 +00:00
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_PLAYER_SHOOTING );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_PLAYER_SPAWNED );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_PLAYER_TOSSING_ITEM );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_PLAYER_USED_BLOCK );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_PLAYER_USED_ITEM );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_PLAYER_USING_BLOCK );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_PLAYER_USING_ITEM );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_POST_CRAFTING );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_PRE_CRAFTING );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_TAKE_DAMAGE );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_UPDATED_SIGN );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_UPDATING_SIGN );
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_WEATHER_CHANGED );
2013-02-13 19:22:08 +00:00
PluginManager : AddHook ( Plugin , cPluginManager.HOOK_WEATHER_CHANGING );
2013-01-13 11:10:26 +00:00
LOGINFO ( "HookNotify plugin is installed, beware, the log output may be quite large!" );
LOGINFO ( "You want this plugin enabled only when developing another plugin, not for regular gameplay." );
return true
end
function LogHook ( FnName , ...)
LOG ( FnName .. "(" );
for i , v in ipairs ( arg ) do
local vt = tostring ( v );
local TypeString = type ( v );
if ( type ( v ) == "userdata" ) then
TypeString = tolua.type ( v );
end ;
LOG ( " " .. tostring ( i ) .. ": " .. TypeString .. ": " .. tostring ( v ));
end
LOG ( ")" );
end
2013-01-27 02:00:33 +00:00
function OnBlockToPickups (...)
LogHook ( "OnBlockToPickups" , unpack ( arg ));
2013-01-27 03:45:40 +00:00
local World , Digger , BlockX , BlockY , BlockZ , BlockType , BlockMeta , Pickups = unpack ( arg );
if ( Pickups ~= nil ) then
local Name = "NULL" ;
if ( Digger ~= nil ) then
Name = Digger : GetName ()
end
LOG ( "Got cItems from " .. Name .. ", trying to manipulate them." );
Pickups : Add ( cItem : new ( E_ITEM_DIAMOND_SHOVEL , 1 ));
LOG ( "Current size: " .. Pickups : Size ());
end ;
2013-01-27 02:00:33 +00:00
end ;
2013-01-13 11:10:26 +00:00
function OnChat (...)
LogHook ( "OnChat" , unpack ( arg ));
end
2013-02-05 19:57:22 +00:00
function OnChunkAvailable (...)
LogHook ( "OnChunkAvailable" , unpack ( arg ));
end
2013-01-13 11:10:26 +00:00
function OnChunkGenerated (...)
LogHook ( "OnChunkGenerated" , unpack ( arg ));
end
function OnChunkGenerating (...)
LogHook ( "OnChunkGenerating" , unpack ( arg ));
end
2013-02-05 19:57:22 +00:00
function OnChunkUnloaded (...)
LogHook ( "OnChunkUnloaded" , unpack ( arg ));
end
function OnChunkUnloading (...)
LogHook ( "OnChunkUnloading" , unpack ( arg ));
end
2013-01-13 11:10:26 +00:00
function OnPlayerUsingItem (...)
LogHook ( "OnPlayerUsingItem" , unpack ( arg ));
end
2013-01-28 16:21:28 +00:00
function OnCollectingPickup (...)
LogHook ( "OnCollectingPickup" , unpack ( arg ));
2013-01-13 11:10:26 +00:00
end
function OnCraftingNoRecipe (...)
LogHook ( "OnCraftingNoRecipe" , unpack ( arg ));
end
function OnDisconnect (...)
LogHook ( "OnDisconnect" , unpack ( arg ));
end
2013-02-21 13:47:01 +00:00
function OnExecuteCommand (...)
LogHook ( "OnExecuteCommand" , unpack ( arg ));
-- For some reason logging doesn't work for this callback, so list some stuff manually to verify:
LOG ( "arg1 type: " .. type ( arg [ 1 ]));
if ( arg [ 1 ] ~= nil ) then
LOG ( "Player name: " .. arg [ 1 ]: GetName ());
end
LOG ( "Command: " .. arg [ 2 ][ 1 ]);
end
2013-01-13 11:10:26 +00:00
function OnHandshake (...)
LogHook ( "OnHandshake" , unpack ( arg ));
end
2013-01-28 16:54:11 +00:00
function OnKilling (...)
LogHook ( "OnKilling" , unpack ( arg ));
2013-01-13 11:10:26 +00:00
end
function OnLogin (...)
LogHook ( "OnLogin" , unpack ( arg ));
end
function OnPlayerBreakingBlock (...)
LogHook ( "OnPlayerBreakingBlock" , unpack ( arg ));
end
function OnPlayerBrokenBlock (...)
LogHook ( "OnPlayerBrokenBlock" , unpack ( arg ));
end
function OnPlayerEating (...)
LogHook ( "OnPlayerEating" , unpack ( arg ));
end
function OnPlayerJoined (...)
LogHook ( "OnPlayerJoined" , unpack ( arg ));
end
function OnPlayerLeftClick (...)
LogHook ( "OnPlayerLeftClick" , unpack ( arg ));
end
2013-01-26 07:50:06 +00:00
function OnPlayerMoving (...)
LogHook ( "OnPlayerMoving" , unpack ( arg ));
2013-01-13 11:10:26 +00:00
end
function OnPlayerPlacedBlock (...)
LogHook ( "OnPlayerPlacedBlock" , unpack ( arg ));
end
function OnPlayerPlacingBlock (...)
LogHook ( "OnPlayerPlacingBlock" , unpack ( arg ));
end
function OnPlayerRightClick (...)
LogHook ( "OnPlayerRightClick" , unpack ( arg ));
end
function OnPlayerShooting (...)
LogHook ( "OnPlayerShooting" , unpack ( arg ));
end
function OnPlayerSpawned (...)
LogHook ( "OnPlayerSpawned" , unpack ( arg ));
end
function OnPlayerTossingItem (...)
LogHook ( "OnPlayerTossingItem" , unpack ( arg ));
end
function OnPlayerUsedBlock (...)
LogHook ( "OnPlayerUsedBlock" , unpack ( arg ));
end
function OnPlayerUsedItem (...)
LogHook ( "OnPlayerUsedItem" , unpack ( arg ));
end
function OnPlayerUsingBlock (...)
LogHook ( "OnPlayerUsingBlock" , unpack ( arg ));
end
function OnPlayerUsingItem (...)
LogHook ( "OnPlayerUsingItem" , unpack ( arg ));
end
function OnPostCrafting (...)
LogHook ( "OnPostCrafting" , unpack ( arg ));
end
function OnPreCrafting (...)
LogHook ( "OnPreCrafting" , unpack ( arg ));
end
function OnUpdatedSign (...)
LogHook ( "OnUpdatedSign" , unpack ( arg ));
end
function OnUpdatingSign (...)
LogHook ( "OnUpdatingSign" , unpack ( arg ));
end
function OnWeatherChanged (...)
LogHook ( "OnWeatherChanged" , unpack ( arg ));
end
2013-02-13 19:22:08 +00:00
function OnWeatherChanging (...)
LogHook ( "OnWeatherChanging" , unpack ( arg ));
end
2013-01-13 11:10:26 +00:00
------------------------------------------------------------------
-- Special handling for OnTakeDamage to print the contents of TDI:
function OnTakeDamage ( Receiver , TDI )
-- Receiver is cPawn
-- TDI is TakeDamageInfo
LOG ( "OnTakeDamage(): " .. Receiver : GetClass () .. " was dealt RawDamage " .. TDI.RawDamage .. ", FinalDamage " .. TDI.FinalDamage .. " (that is, " .. ( TDI.RawDamage - TDI.FinalDamage ) .. " HPs covered by armor)" );
end