private static void Player_PlacingBlock( object sender, Events.PlayerPlacingBlockEventArgs e )
{
Map map = e.Map;
if ( e.Map.MessageBlocks != null ) {
if ( e.Map.MessageBlocks.Count > 0 ) {
lock ( e.Map.MessageBlocks ) {
foreach ( MessageBlock mb in e.Map.MessageBlocks ) {
if ( e.Coords == mb.AffectedBlock ) {
e.Result = CanPlaceResult.Revert;
if ( e.Context == BlockChangeContext.Manual ) {
if ( mb.IsInRange( e.Coords ) ) {
string M = mb.GetMessage();
if ( M == "" )
return;
if ( e.Player.LastUsedMessageBlock == null ) {
e.Player.LastUsedMessageBlock = DateTime.UtcNow;
e.Player.Message( M );
return;
}
if ( ( DateTime.UtcNow - e.Player.LastUsedMessageBlock ).TotalSeconds > 4 ) {
e.Player.Message( M );
e.Player.LastUsedMessageBlock = DateTime.UtcNow;
}
}
}
}
}
}
}
}
}