Inactive [EDIT] InstaBreak v2.0 - Break blocks instantly! [1060]

Discussion in 'Inactive/Unsupported Plugins' started by R3ality, Apr 5, 2011.

  1. Offline


    InstaBreak - Break blocks instantly!
    Version: v2.0 (CraftBukkit build #1060)

    This plugin allows players to break blocks with just one strike using an universal InstaBreak tool. It was initially created as a simple, lightweight alternative to the superpickaxe included in the fantastic WorldEdit plugin.

    Current features include support for multi-world permissions (including nether) by the Permissions plugin (usage is optional) and a variety of customizable options and in-game commands (or option to disable any customization if you just want the plain-simple core functionality :)).


    • Save inventory slots! - No need to carry multiple tools, the InstaBreak tool works on all* blocks
    • Save time! - Break any* block or placed item with one strike!
    • Break blocks from far away (ranged breaking)!
    • Support for the Permissions plugin (tested with 3.1.5b and 2.7.4, usage is optional)
      • Multi-world permissions support (including nether)!
    • Support for protection plugins (tested with WorldGuard 5.0-dev and EssentialsProtect 2.3.3)
    • Allow breaking of bedrock (also known as Adminium) blocks*
    • In-game commands
      • Change the InstaBreak tool to ANY type of block or item!
      • Toggle InstaBreak mode for ANY player in the server!
      • Toggle block drops upon breaking!
    • Uses a configuration file to persistantly keep settings.
      • Option to turn off commands and permission usage completely (leaving just core functionality).
      • Option to toggle if block breaking is counted in the "Times Mined" of player Statistics.
    * - Except the bottom-most layer of bedrock (breaking that has been intentionally disabled)
    Note: This plugin doesn't affect actions against other entities in any way (players and NPC-s)

    Download: [​IMG] InstaBreak v2.0 (.jar only)


    • Download and place "InstaBreak.jar" file into the "plugin" directory of the server.
    • Start/restart the server to have the plugin loaded (or use a plugin manager)
    • (optional) Make changes in the configuration file
      Read the "Configuration File" section below for details..
    • (if using Permissions) Grant desired permission nodes to users or groups
      Read the "Permissions" section below for details..
    Permissions / Configuration file:
    Show permissions and configuration info (open)

    Permissions plugin usage is optional. If you are not using it the plugin will default to using the regular "ops.txt" (all commands will be enabled for all ops). If you are using permissions but you do not want it to apply to this plugin there is an option to make the plugin "static" via the configuration file (read below)

    The plugin utilizes the following permission nodes:

    instabreak.toggle - allow player to toggle InstaBreak mode for themselves
    Commands enabled: /ib + /ib info

    instabreak.force - allow player to toggle InstaBreak mode for other players
    Commands enabled: /ib list + /ib enable + /ib disable + (all of the above)

    instabreak.config - allow player to make InstaBreak configuration changes
    Commands enabled: /ib tool + /ib drop + (all of the above)

    Special additional permission:

    instabreak.bedrock - allow player to break bedrock blocks.
    instabreak.ranged - allow player to break blocks at a distance.
    Note: Player still needs to be in InstaBreak mode for these to apply.


    Configuration file:

    In case the configuration file doesn't exist it is created automatically with default values when the plugin is loaded. This means you probably don't need to worry about it at all!

    Configuration file uses the .yml format (no tabs and be careful with spaces!) and will be at "plugins/InstaBreak/config.yml". The default (with added comments) is as follows:
        dynamic: #These dynamic configuration settings can be changed with in-game commands aswell (read more in the commands section above).
            dropblocks: true #This controls if miniblocks are dropped when using the InstaBreak tool.
            toolid: 50 #This is the TypeId for the InstaBreak tool (Integer value). ID 0 (zero for AIR) = bare hand, ID 9999 = ANY block/tool.
            staticplugin: false #When set to "true" the plugin completely disables all in-game commands and omits any use of permissions. ALL players of the server will be in InstaBreak mode ALL the time, plain and simple :)
            respectprotection: true #When set to "true" the plugin tries to respect protection rules from other plugins. When set to "false" the InstaBreak tool will break protected blocks/items!
            workatrange: true #When set to "true" the InstaBreak tool will work at a distance.
            breakbedrock: true #When set to "true" the InstaBreak tool can be used to break bedrock blocks
            countstats: true #When set to "true" blocks broken with the InstaBreak tool will get added to the "Times Mined" counter in player Statistics.
    Show changelog (open)
    InstaBreak v2.0, released on July 22nd

    • Fixed ranged breaking
      Ranged breaking now works thorugh liquids (water and lava).
    • Added possibility to set the InstaBreak tool to ANY block/tool
      When tool ID is set to 9999 players can use anything as the InstaBreak tool
    InstaBreak v1.9.1, released on June 27th

    • Fixed issue with "/ib i" command
      While not having permissions to use ranged breaking it was still indicated as bein ENABLED. Details here..
    InstaBreak v1.9, released on June 17th

    • Support for protection plugins!
      InstaBreak now supports protection plugins (see the feature list for details on which plugins I tested this with). This feature is enabled by default but can be disabled in the configuration file.
    • Breaking blocks from a distance! (ranged breaking)
      InstaBreak tool can now breaks blocks at a distance of 200. This feature is enabled by default but can be disabled in the configuration file. It also adds a new permission node.
      Ranged breaking is slow when keeping the mouse button clicked to repeat the action (due to the arm swinging animation). This can be overcome by rapidly re-clicking the mouse button (*click*click*click*click*).
    • Improved the configuration file layout.
      An example can be found in the configuration file section above. In the new file, "config.static.*" nodes are for static settings (which can only be modified manually by editing the configuration file). "config.dynamic.*" nodes are for dynamic settings which can be changed with in-game commands in addition to the configuration file.
      NB! Delete the old configuration file when updating to this version!
    • Code cleanup and smaller improvements.
      Message coloring is now done a little more elegantly. Bedrock breaking feature can now also be toggled in the configuration file (making it usable in servers which do not use the Permissions plugin aswell)
      NB! Changed the bedrock breaking permission node name to "instabreak.bedrock"!
    InstaBreak v1.8, released on June 14th

    • Multi-world support!
      Support for multi-world permissions! Disables InstaBreak mode if player moves to a world where he/she does not have sufficient permissions. InstaBreak mode forced by the "/ib e" command is immune to these restrictions!
    InstaBreak v1.7, released on June 1th

    • Updated the plugin to the first recommended CraftBukkit build for Minecraft beta 1.6
      Due to this the plugin no longer works with older CraftBukkit builds!
    • Fixed the issue which didn't allow breaking bedrock blocks through water blocks
      Also removed the constraint which did not allow instabreaking bedrock blocks at map height > 127
    InstaBreak v1.6.1, released on May 11th

    • Fixed issue of the console being spammed with a "[SEVERE] Could not pass event PLAYER_ANIMATION to InstaBreak"
      However it is no longer possible to break bedrock blocks when standing at a height of 127 or higher
    InstaBreak v1.6, released on May 11th

    • Breaking blocks using the InstaBreak tool gets counted in your Statistics (Times Mined value)
      This does not apply to bedrock blocks and can be disabled in the plugin configuration file
    • Fixed isse with disabling the plugin using a plugin manager
      Players who are in InstaBreak mode no longer keep it after the plugin is disabled
    • Announcement about changed settings (InstaBreak tool and block drops) is no longer server-wide
      Instead it is only shown to players that currently are in InstaBreak mode or who have sufficient permissions to enable it
    InstaBreak v1.5, released on April 18th

    • Implemented bedrock breaking
      Bedrock can now be broken (except the bottom-most layer of the map). This is enabled through a special permission.
    • Changed display message..
      ..which is shown if "/ib enable" or "/ib disable" is attempted on players that have sufficient permissions to toggle it themselves
    • Enabled "/ib info" command..
      ..for players that have been granted the InstaBreak mode with "/ib enable"
    InstaBreak v1.4

    • Added configuration file usage
      Plugin now uses a configuration file to save the important stuff when server "stop"-s gracefully. Configuration file is generated automatically with default values if it doesn't exist.
    • Added Permissions plugin support!
      Using it is completely optional. If it is not loaded the plugin will default to "ops.txt". See abobe for a list of grantable permissions..
    • Changed the overall command structure and added more commands
    • Added option to change the universal InstaBreak tool.
      Either from the configuration file or with in-game command (if sufficient permissions)
    • Added option to disable miniblock dropping.
      Either from the configuration file or with in-game command (if sufficient permissions)
    • Added option to grant InstaBreak mode to ANY player (and list or remove them)
      Done with in-game commands (if sufficient permissions). The target player does not need ANY permissions or special rights.
    • Added option to load the plugin in "static" mode.
      This can be set in the configuration file. It disables all in-game commands and any permissions functionality. All players of the server will be in InstaBreak mode, plain and simple :)
    • Rewrote core logic and general code cleanup.
      Instead of listening to block damage events (as in prior versions) the plugin now listens for player interaction events. Results in improved speed and functionality
    • Fixed breaking of TNT blocks.
      The explosion is no longer triggered upon breaking..
    • Fixed issue with miniblocks not being dropped.
      All blocks (except bedrock :( but I'm working on that) and placed items should now drop miniblocks.
    • Fixed issue with using InstaBreak tool on large chests (2 connected chests).
      There still *might* be errors if the 2 chests are placed using MCEdit tool (and perhaps other map editors).
    InstaBreak v1.3

    • Fixed issue with breaking bedrock blocks
      It shouldn't be possible to break bedrock blocks using this plugin any more
    • Fixed issue with entering the commands from server console
    InstaBreak v1.2

    • Changed command syntax.
      Using just "/ib" displays current status. Enable/Disable is now done via "/ib on" and "/ib off"
    InstaBreak v1.1

    • InstaBreak mode now only applies if player is using a torch (item id 50)
      This is in case other players in the server do not wish to benefit from the InstaBreak functionality for whichever reason. They can keep using their tools the normal way.
    • When plugin gets enabled/disabled it is globally announced
    InstaBreak v1.0

    • Initial version
    Known issues / Future ideas:
    Show issues and ideas (open)
    Known issues:

    • Items which are not breakable by hand (see table here) currently DO get broken. But they WILL NOT drop a miniblock for you to pick up fixed in v1.4
    • Typing in the commands from server console results in errors fixed in v1.3
    • It is in some cases possible to break bedrock (when clicking on a non-bedrock block and then moving cursor onto a bedrock block) fixed in v1.3
    • Using InstaBreak tool on a large chest (2 connected chests) results in an error and client gets disconnected. fixed in v1.4
    • Trying to break bedrock blocks through water doesn't work fixed in v1.7
    • Breaking blocks with InstaBreak tool is not takin into account in Statistics (maybe even a good thing) fixed in v1.6, is configurable
    • Disabling the plugin with a plugin manager (for example PlugMan) disables commands but does not remove InstaBreak mode from any players currently in it fixed in v1.6
    • Ranged breaking does not work through water (or lava) fixed in v2.0
    Future ideas:

    • Add permission support added in v1.4
    • Add ability to choose/change the universal InstaBreak tool added in v1.4
    • Do something with damaging TNT. Currently instabreaks but still triggers explosion. done in v1.4
    • Do something with damaging monster spawners. Currently instabreaks but leaves flame animation.
    • Enable bedrock breaking via special permission and/or configuration setting done in v1.5
    • If "/ib tool" or "/ib drop" commands are used, the status announcement will be made server-wide. This should probably be made to only the players that can actually use the InstaBreak tool fixed in v1.6
    • InstaBreak mode granted with "/ib enable" command is lost upon player reconnecting. Maybe it should persist until disabled manually or server "stop" cancelled until highly requested
    • Add direct download link for only .jar file added since v1.5
    • Multiworld support.. added in v1.8
    • Breaking blocks from a distance added in v1.9
    • Allow players to use any block/tool as the InstaBreak tool added in v2.0
    • Make instabreak tool instakill entities
    • Add in-game commands to toggle ranged and bedrock breaking
    Like this plugin?
    In that case feel free to show your support by making a donation :)
  2. Offline


    @iKogMaw: I forgot to change the version number on the download link in the initial post :oops:. The link itself was correct though and did link to the .jar for version 1.8.
    As for it not working for you. Did you give yourself or your group the required permission node(s) to use the command "/ib" ?
  3. Offline


    I implemented this on one of my test builds out of curiosity. The main issue I have with this is the breaking speed. With hitting an actual block (how the InstaBreak tool currently works) the event gets fired quite rapidly (you don't have to wait until the full animation of swinging the arm to finish) - with doing it at distance however, the repeat rate is equal to the arm swing animation duration. So rather slow..

    I'm currently not aware of a way to speed this up. And I'm unsure about releasing this functionality as-is. Feedback would be appreciated. Is this something plugin users would want/need? Even with the limitations mentioned above?
  4. Always had it on hMod, and yes, it was always a bit slower. As long as it does not affect the speed on direct hits, I see no issue.

    It's great for removing floating blocks etc.
  5. Offline


    New version..
    A couple of big additional features this time. Enjoy! :)

    Since I changed the configuration file layout around the old one should be deleted! (new one will be generated automatically upon first run). For everyone that uses the Permissions plugin make sure you also change the bedrock breaking permission node in your world-specific permission files!

    Props to Tumpo for feedback on the protection support and essentialsteam for the code tip!
    As always, any feedback is very welcome..
  6. Offline


    Thanks for implementing this. I added your plugin to our list of recommended plugins.
  7. Offline


    I have one question: The blocks that are broken by your plugin, is it able to be logged by BigBrother? If not, can you make it so or add your own logging system? :D
  8. Offline


    148 recipes
    16 achievements
    20:43:15 [INFO] Starting minecraft server version Beta 1.6.6
    20:43:15 [INFO] Loading properties
    20:43:15 [INFO] Starting Minecraft server on *:25565
    20:43:15 [WARNING] The server will make no attempt to authenticate usernames. Be
    20:43:15 [WARNING] While this makes the game possible to play without internet a
    ccess, it also opens up the ability for hackers to connect with any username the
    y choose.
    20:43:15 [WARNING] To change this, set "online-mode" to "true" in the server.set
    tings file.
    20:43:15 [INFO] This server is running Craftbukkit version git-Bukkit-0.0.0-766-
    g3fc0460-b818jnks (MC: 1.6.6)
    20:43:15 [INFO] Preparing level "world"
    20:43:15 [INFO] Preparing start region for level 0
    20:43:17 [INFO] Preparing spawn area: 81%
    20:43:17 [INFO] Preparing start region for level 1
    20:43:18 [INFO] Preparing spawn area: 52%
    20:43:18 [SEVERE] Could not load 'plugins\InstaBreak.jar' in folder 'plugins':
    unacceptable character #0 special characters are not allowed
    in "<reader>", position 0
            at org.yaml.snakeyaml.reader.StreamReader.checkPrintable(StreamReader.ja
            at org.yaml.snakeyaml.reader.StreamReader.update(
            at org.yaml.snakeyaml.reader.StreamReader.peek(
            at org.yaml.snakeyaml.reader.StreamReader.peek(
            at org.yaml.snakeyaml.scanner.ScannerImpl.scanToNextToken(ScannerImpl.ja
            at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.ja
            at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(
            at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produ
            at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(
            at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(
            at org.yaml.snakeyaml.composer.Composer.getSingleNode(
            at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseCons
            at org.yaml.snakeyaml.Yaml.load(
            at org.bukkit.util.config.Configuration.load(
            at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.
            at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
            at org.bukkit.craftbukkit.CraftServer.loadPlugins(
            at net.minecraft.server.MinecraftServer.e(
            at net.minecraft.server.MinecraftServer.a(
            at net.minecraft.server.MinecraftServer.init(
    20:43:18 [INFO] LWC     Loading shared objects
    20:43:19 [INFO] Cache   Protection cache: 0/10000
    20:43:19 [INFO] LWC     Native library: plugins/LWC/lib/native/Windows/x86/sqlit
    20:43:19 [INFO] DataSourcePool [MinecartManiaCore] autoCommit[false] transIsolat
    ion[SERIALIZABLE] min[2] max[20]
    20:43:19 [INFO] SubClassFactory parent ClassLoader [
    20:43:21 [INFO] Entities enhanced[0] subclassed[2]
    20:43:21 [INFO] CommandBook 1.5.2 enabled.
    20:43:21 [INFO] CommandBook: Maximum wrapper compatibility is enabled. Some feat
    ures have been disabled to be compatible with poorly written server wrappers.
    20:43:21 [INFO] CommandBook: 1 banned name(s) loaded.
    20:43:21 [INFO] CommandBook: 1 kit(s) loaded.
    20:43:21 [INFO] CommandBook: No known permissions plugin detected. Using configu
    ration file for permissions.
    20:43:21 [INFO] LWC     Loaded 125 locale strings (0 overrides)
    20:43:21 [INFO] LWC     Loading SQLite
    20:43:21 [INFO] SQLite  Using: Native
    20:43:22 [INFO] PhysDB  Precached 97 protections.
    20:43:22 [INFO] LWC     At version: v3.05
    20:43:22 [INFO] [Minecart Mania] Debug mode switched to NORMAL
    20:43:22 [INFO] [Minecart Mania] MinecartManiaCore version 1.2.8 is enabled!
    20:43:22 [INFO] [Minecart Mania] MinecartManiaStation version 1.2.5 is enabled!
    20:43:22 [INFO] [MYHOME]: 2 homes loaded
    20:43:22 [WARNING] [MYHOME] A permission plugin isn't loaded.
    20:43:22 [WARNING] [MYHOME] 'Help' isn't detected. No /help support.
    20:43:22 [INFO] [MYHOME] MyHome 1.9.5 enabled
    20:43:22 [INFO] WorldEdit 4.6 enabled.
    20:43:22 [INFO] WorldEdit: No known permissions plugin detected. Using configura
    tion file for permissions.
    20:43:22 [INFO] WorldGuard: No known permissions plugin detected. Using configur
    ation file for permissions.
    20:43:22 [INFO] WorldGuard: (world) Single session is enforced.
    20:43:22 [INFO] WorldGuard: (world) TNT ignition is PERMITTED.
    20:43:22 [INFO] WorldGuard: (world) Lighters are PERMITTED.
    20:43:22 [INFO] WorldGuard: (world) Lava fire is blocked.
    20:43:22 [INFO] WorldGuard: (world) Fire spread is UNRESTRICTED.
    20:43:22 [INFO] WorldGuard: Loaded configuration for world 'world"
    20:43:22 [INFO] WorldGuard: (world_nether) Single session is enforced.
    20:43:22 [INFO] WorldGuard: (world_nether) TNT ignition is PERMITTED.
    20:43:22 [INFO] WorldGuard: (world_nether) Lighters are PERMITTED.
    20:43:22 [INFO] WorldGuard: (world_nether) Lava fire is blocked.
    20:43:22 [INFO] WorldGuard: (world_nether) Fire spread is UNRESTRICTED.
    20:43:22 [INFO] WorldGuard: Loaded configuration for world 'world_nether"
    20:43:22 [INFO] WorldGuard 5.0-alpha10 enabled.
    20:43:22 [INFO] -------[WorldWarp]-------
    20:43:22 [INFO] -------[Enabled]-------
    20:43:22 [INFO] -------[No permissions - Defaulting to OP]-------
    20:43:22 [INFO] Loading:
               in mode:
    20:43:22 [INFO] -------[/WorldWarp]-------
    20:43:22 [INFO] Done (0.692s)! For help, type "help" or "?"
    Help pl0x?
  9. Offline


    @Zaonhort: I'm not familiar with that plugin, I will look into it..

    @Marioc12345: Seems like you have some invalid formatting in the configuration file for InstaBreak. I'd suggest deleting "plugins/InstaBreak/config.yml" completely and running the server then. The default config file will be created automatically for you, then you can trie to modify the values in there again if neccecary..
    Marioc12345 likes this.
  10. Offline


    does it support logging with like BigBrother??
  11. Offline


    Thanks a bunch!!! Now my server is without errors!
  12. Doesn't allow to disable ranged break if I hace -'*', cause If I add -'-instabreak.ranged' i won't be able to use /ib at all!
  13. Offline


    @jaimelive: I'm sorry, can you try to explain again what the issue is?
    So far what stands out is the permission node you are adding seems incorrect..
    ..should probably be..
    - 'instabreak.ranged'
    ..if you wish to add the permission, or..
    - '-instabreak.ranged'
    ..if you wish to remove the permission. Note the space after the initial "-"

    Tested against CraftBukkit build #928. Seems to work fine!

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: May 13, 2016
  14. Offline


    if you have - '*' and you want to remove a permission, you have the right idea. you're just missing a space in there. it should be - '-instabreak.ranged' (space is between first (-) and ( ' ) )
    I personally have it set up on my server that I took a couple permissions away from myself, as I didn't want to be bothered with them.
  15. That was just a typo lol I do have the space in permissions, but if it just plainlly disables ib! If had remove that single node it sais I don't have the permission to enable ib
  16. Offline


    hmm... I'll try it out in a bit, and report back here in a little bit.

    after adding - '-instabreak.ranged' to my group and reloading the server (since permission commands are broken in 928) I can say the following:

    "/ib" works
    "/ib info" shows me as having all options enabled (even ranged breaking) even though I negated that permission node from myself.

    when enabling "/ib" I still get the messages and can break stuff, but when trying ranged breaking it doesn't work, as it shouldn't with the negated node. Even though the "/ib info" says it's enabled. figured you should know :)

    @jaimelive as for your issue I'm not sure what's causing it. are you able to use "/ib" at all, even without the negated ranged node? :eek:

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: May 13, 2016
  17. Offline


    @ACStache: Thanks for a thorough report. I'll look into it when I get a chance..
  18. Offline


    np, thanks for an awesome plugin! [diamond][diamond][diamond][diamond][diamond]
  19. Offline


    New minor release..
    ..with just a small fix. Props to ACStache for pointing it out :)
    Also tested against CraftBukkit #935, seems to work fine..

    @Zaonhort & blaize9: What kind of support for BigBrother are you looking for? I did a quick lab test and seemed the logging and rollbacks were working fine..
    ACStache likes this.
  20. Offline


    i have a problem: i break a block with every item i have in my hands...although with normal hands i can break any block with one hit.. whats the problem? i want to use elevators but im breaking the buttons :/
  21. Offline


    @Babadegl: I'm afraid I can't comment much until you give more specific details. Please see this post for guidelines..

    As for using elevators/doors/buttons/levers/ect. this should be easily done even with the InstaBreak tool in your hand while in InstaBreak mode: Use the right mouse button instead of the left one.. :)
  22. Offline


    Help please! I'm an op on my server. When I type /ib enable goldenwrapper it says i dont have permission! I'm not even using permissions!
  23. Offline


    you should just be able to type "/ib" without the anything following it. try it out and see what happens

    if you were to use /ib enable <player> it would be to let someone who isn't an Op on your server still use this plugin, which is awesome :)
  24. Offline


    I tried that before. It still doesn't work. I'm using permissions now, i'm an admin on it, but it still won't let me... please help :'(

    nvm i got it. i typed my name in wrong in permissions... ty anyway!

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: May 13, 2016
  25. Offline


    glad you got it working :) sorry I didn't answer earlier, was en route home during that time.
  26. Offline


    So it isn't possible anymore to break the block with everything in hand/bare hands??
  27. Offline


    Dont work for me :(
  28. Offline


    @Bluuray the config file lets you change what item you hold to break stuff, I'm not sure if you can set it to multiple items though.

    @SilenceKill what's not working? do you get any errors, whether they're in game or in the server.log? are you running a permissions plugin or just using the Op list? more information is needed to get you the help you need :)
  29. Offline


    @Bluuray: In addition to the configuration file which was pointed out by ACStache the tool can also be changed using the "/ib tool" command in-game. Please see the initial post for details on that command..
  30. Offline


    I think its about Permissions, but i think i can fix it :p
  31. Offline


    Yeah, but what i meant is, is it possible to not assign it to a tool/block like in the previous Version? So that i can break the block with wathever is in my hand right now, so i don't have to change to a different tool everytime??

Share This Page