Loops ===== Another way your bots will interact with the world is through loops. Loops are functions that repeatedly run with a delay in between each run. They return a list of Actions that you want your bot to perform, just like event handlers. Loops are pure functions that should take a single argument: the bot. Adding Loops ------------ To add a loop to your bot, you first need to create the loop function:: (defn jump [bot] [(clojurecraft.actions/jump bot)]) Now you can add it to the bot:: (clojurecraft.loops/add-loop bot #'jump 3000 :jump-loop) The first argument to the ``add-loop`` function is your bot. Next is a symbol to your loop function. The reason for passing a symbol is the same as the reason you pass a symbol to event handlers. Next is the number of milliseconds you want to wait in between each run of the loop function. Finally you must pass a "loop ID" keyword. It can be anything you like, but it must be unique for each loop added to a given bot. This is what you'll use to remove the loop from the bot later. This example adds a loop to the bot that will make it jump every three seconds. Removing Loops -------------- Removing a loop from a bot is as simple as calling ``remove-loop`` with the bot and the loop ID you used when adding the loop:: (clojurecraft.loops/remove-loop bot :jump-loop)