Jump to content
Frequently Asked Questions
  • Are you not able to open the client? Try following our getting started guide
  • Still not working? Try downloading and running JarFix
  • Help! My bot doesn't do anything! Enable fresh start in client settings and restart the client
  • How to purchase with PayPal/OSRS/Crypto gold? You can purchase vouchers from other users
  • Mahogany Plank Make Autocast


    Recommended Posts

    Script will autocast Make Plank (slower than active casting) then withdraw more logs, does not bank


    - 86 Magic

    - Dream Mentor done



    - stand near bank

    - have enough coins,  nature runes, astral runes in inv

    - infinite earth rune source: e.g. Earth staff

    - have mahogany logs in bank


    Script will keep running until out of logs/runes/coins

    Very minor antiban of small chance to wait from 20 seconds to 200 seconds before banking

    All info will be in log console

    Obviously change wait times as you see fit



    - Auto replenish from G.E. as needed


    XP/money will be somewhere less than this: https://oldschool.runescape.wiki/w/Money_making_guide/Casting_plank_make

    Short term results:


    import org.dreambot.api.input.Mouse;
    import org.dreambot.api.methods.Calculations;
    import org.dreambot.api.methods.container.impl.Inventory;
    import org.dreambot.api.methods.container.impl.bank.Bank;
    import org.dreambot.api.methods.interactive.Players;
    import org.dreambot.api.methods.magic.Lunar;
    import org.dreambot.api.methods.magic.Magic;
    import org.dreambot.api.methods.settings.PlayerSettings;
    import org.dreambot.api.methods.skills.Skill;
    import org.dreambot.api.methods.skills.Skills;
    import org.dreambot.api.script.AbstractScript;
    import org.dreambot.api.script.Category;
    import org.dreambot.api.script.ScriptManifest;
    import org.dreambot.api.utilities.Logger;
    import org.dreambot.api.wrappers.items.Item;
    @ScriptManifest(name = "Fizzle Plank Make", description = "Make planks with Lunar spellbook", author = "Fizzle",
            version = 0.4, category = Category.MAGIC)
    public class PlankMakeScript extends AbstractScript {
        private static final String MAHOGANY_LOGS = "Mahogany logs";
        private static final String MAHOGANY_PLANK = "Mahogany plank";
        private static final int CHANCE_TO_WAIT = 5; // % chance
        private int startingMagicXp;
        private final long scriptStartTime = System.currentTimeMillis();
        public void onStart() {
            Logger.log("Starting Fizzle Plank Make Script");
            startingMagicXp = Skills.getExperience(Skill.MAGIC);
        public int onLoop() {
            if (Players.getLocal().isAnimating()) {
                //wait until auto casting is over
                return Calculations.random(550, 6000);
            if (Inventory.contains(MAHOGANY_LOGS)) {
                info("Casting plank make");
                Item randomLog = Inventory.getRandom(MAHOGANY_LOGS);
                Magic.castSpellOn(Lunar.PLANK_MAKE, randomLog);
                sleep(Calculations.random(300, 1000));
                return Calculations.random(550, 1233);
            if (Inventory.contains(MAHOGANY_PLANK)) {
                //chance to wait after finishing logs (mini antiban)
                if (Calculations.chance(CHANCE_TO_WAIT)) {
                    int waitTime = Calculations.random(20_000, 200_000);
                    info("Anti-ban waiting: " + waitTime/1000 + " seconds");
                    return waitTime;
                info("Banking planks");
                //start banking process
                if (!Bank.open()){ //this will also open nearest bank if not currently open
                    return Calculations.random(550, 1233);
                return Calculations.random(330, 600);
            //no logs or planks in inv so withdraw
            if (Bank.open()) {
                info("Withdrawing more logs");
                if (!Bank.contains(MAHOGANY_LOGS)) {
                    error("Out of logs in bank");
                sleep(Calculations.random(330, 700));
                return Calculations.random(550, 1233);
            return Calculations.random(550, 1233);
        private void logXpGained() {
            long currentMagicXP = Skills.getExperience(Skill.MAGIC);
            log("total xp gained: " + (currentMagicXP - startingMagicXp));
            log("total xp per hour: " + String.format("%.2f", (double)(currentMagicXP - startingMagicXp) / (System.currentTimeMillis() - scriptStartTime) * 3600000 / 1000) + "k");
        private void stopCheck() {
            if(Inventory.count("Nature rune") == 0) {
                error("Out of Nature runes");
            if (Inventory.count("Astral rune") <= 1) {
                error("Out of Astral runes");
            if (Inventory.count("Coins") <= 2000) {
                error("Low on coins");
            //0 is Normal, 1 is Ancient, 2 is Lunar, 3 is Arceus
            if (PlayerSettings.getBitValue(4070) != 2) {
                error("Not on Lunar spellbook");
            if(!Magic.canCast(Lunar.PLANK_MAKE)) {
                error("cannot cast Plank Make");


    Edited by Fizzle
    fixed wrong info
    Link to comment
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now
    • Create New...

    Important Information

    We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.