public static void GunHandler(Player player, Command cmd)
{
if (player.GunMode)
{
player.GunMode = false;
try {
foreach (Vector3I block in player.GunCache.Values)
{
player.Send(PacketWriter.MakeSetBlock(block.X, block.Y, block.Z, player.WorldMap.GetBlock(block)));
Vector3I removed;
player.GunCache.TryRemove(block.ToString(), out removed);
}
if (player.bluePortal.Count > 0)
{
int i = 0;
foreach (Vector3I block in player.bluePortal)
{
if (player.WorldMap != null && player.World.IsLoaded)
{
player.WorldMap.QueueUpdate(new BlockUpdate(null, block, player.blueOld[i]));
i++;
}
}
player.blueOld.Clear();
player.bluePortal.Clear();
}
if (player.orangePortal.Count > 0)
{
int i = 0;
foreach (Vector3I block in player.orangePortal)
{
if (player.WorldMap != null && player.World.IsLoaded)
{
player.WorldMap.QueueUpdate(new BlockUpdate(null, block, player.orangeOld[i]));
i++;
}
}
player.orangeOld.Clear();
player.orangePortal.Clear();
}
player.Message("&SGunMode deactivated");
} catch (Exception ex) {
Logger.Log(LogType.SeriousError, "" + ex);
}
}
else
{
if (!player.World.gunPhysics)
{
player.Message("&WGun physics are disabled on this world");
return;
}
player.GunMode = true;
GunGlassTimer timer = new GunGlassTimer(player);
timer.Start();
player.Message("&SGunMode activated. Fire at will!");
}
}