VeinMiner 1.10.2


  • Filename
  • Uploaded by
  • Uploaded
    Aug 9, 2016
  • Size
    39.72 KB
  • Downloads
  • MD5

Supported Bukkit Versions

  • 1.10
  • 1.9
  • 1.8


Version 1.10.2

  • Added Javadoc documentation to the VersionBreaker class (Should only be used for VeinMiner purposes, but it's available for public API)
  • Added a bit more Javadoc documentation to the VeinBlock and VeinTool classes. Just in case
  • Added a little message for those who enable Metrics in the console on startup (<3 Thanks to you owners that do have it enabled :D)
  • Fixed support for a couple Anti-Cheat plugins: NoCheatPlus and Advanced Anti-Cheat
  • Added a few methods to help support the new Anti-Cheat. Developers may use them if they would like, but there's no need to, really

Version 1.10.1

  • VeinMiner is now VERSION INDEPENDENT!!! Anything version 1.8.2+ is now supported (Anything 1.8.1 and below is unobtainable to me) - This has been tested and confirmed by myself
  • Added tab completion for most aspects of the VeinMiner command. Results are permission based
  • |-> (i.e. you cannot tab /veinminer reload if you do not have the "veinminer.reload" permission)
  • Fixed incompatibility issues with McMMO's WoodCutter ability

(Keep a lookout for the main page, as VeinMiner will soon be open-sourced)

Version 1.10.0 (We're going Minecraft version style, here)

  • Added permission nodes for each individual tool under the "veinminer.blocklist.list" permission
  • |-> Parent: "veinminer.blocklist.list.*", Example: "veinminer.blocklist.list.TOOL_NAME/ALL"
  • Added a "DisabledWorlds" configuration option to disable VeinMiner completely in certain worlds
  • VeinMiner is now toggleable per tool. "/veinminer toggle [tool]".
  • |-> It is an optional parameter, you can toggle all tools on and off by simply not specifying a tool name
  • You are now unable to specify an Item ID to be added to the Blocklist. This should probably make more sense
  • Minor restructuring to the block breaking listener
  • Fixed a couple more memory leaks
  • Fixed the per-tool permission nodes not registering properly. NOTE: They are "veinminer.veinmine.TOOL", and not "veinminer.veinminer.TOOL"
  • Unregistered unused permission nodes; yet again
  • API: Added isVeinMinerEnabled() methods in the VeinMinerManager for simplicity sake
  • API: Modified the toggle methods to specify VeinTool parameters as well
  • API: Changed the "setVeinMinerEnabled()" methods to "toggleVeinMiner()" with boolean parameters instead

Version 1.9.6

  • Added "HUGE_MUSHROOM_1" and "HUGE_MUSHROOM_2" as a blocklist default for axes
  • Added "RED_MUSHROOM" and "BROWN_MUSHROOM" as a blocklist default for hoes
  • Fixed VeinMiner working for all blocks even if not listed on the blocklist

Version 1.9.5

  • Added an alias for "/veinminer" - "/vm"
  • The Hoe is now a supported tool for VeinMiner (All crops are breakable with the hoe) - veinminer.veinminer.hoe
  • Fixed the veinminer.veinmine.all permission not working 100% of the time
  • Fixed VeinMiner not actually working if you had the "veinminer.veinmine.all" permission
  • Removed the "veinminer.blocklist.reset" permission node. Apparently I forgot to unregister that
  • General command efficiency improvements
  • Made preparations for a future change regarding veinminer toggling
  • Added "MELON_BLOCK" and "PUMPKIN" to the list of default vein mineable blocks for Axes

Version 1.9.4

  • Reorganized the configuration file to be organized per tool under a "Tools" category
  • Removed the "Enchantments: SilkTouch / Fortune" configuration options as these are automatically set to true due to NMS usage
  • Added "WEB", "LEAVES", and "LEAVES_2" as default Shears blocks
  • Increased max iterations from 10 to 15, as some issues were occuring with larger amounts of vein counts
  • Slightly restructured the veinminer listener so it's ever so slightly more efficient
  • Fixed "ALL" category listed blocks not being breakable by all tools (as it should be)
  • Fixed tools using durability even if "VeinMinerUsesDurability" was set to false
  • Fixed being able to use "/veinminer toggle" if the player doesn't even have any actual veinminer permission nodes
  • API: Added a "public static getPlugin()" method in VeinMiner class to get a singleton instance of the plugin
  • API: Added a couple methods in VeinTool, "getMaxVeinSize()" and "usesDurability()" to get respective options from configuration file

Version 1.9.3

  • Slightly optimized the command manager
  • Added a "/veinminer toggle" subcommand to toggle whether VeinMiner is active or not
  • Added a permission node for the new "/veinminer toggle" sub-command - "veinminer.toggle", default to all players
  • API: Added methods for the new toggle functionality under the VeinMinerManager class
  • API: Added a PlayerVeinMineEvent#getAffectedBlock() method to get which block was modified
  • Fixed a few memory leaks with clearing localized veinminable block data

Version 1.9.2

  • Removed the "ForceDropSpawn" configuration option as it is no longer used (Forgot to remove in 1.9.1)
  • Fixed support for grief-protection plugins such as WorldGuard, GriefPrevention, etc.
  • Added Javadoc comments throughout most of the API

Version 1.9.1

  • "MaxVeinSize" now allows for specific maximum vein sizes per blocklist category
  • Removed ItemsToInventory configuration option (reason below)
  • Deleted a WHOLE lot of now arbitrary code. Unfortunately, had to use NMS (version dependent) code, but it's worth the code optimizations
  • This now ONLY works on Minecraft 1.10, but it's more efficient
  • Fixed shears not properly dropping the materials they should be
  • Fixed veinmining not dropping the proper amount of XP for ores that drop it
  • Fixed "veinminer.veinmine.*" permission nodes not being properly registered
  • Fixed items flying all over the place. They now drop as they would in vanilla Minecraft

(It's impossible to keep the ItemsToInventory configuration option as there is no way to retrieve the item information from the NMS method. However, due to the fixes in the way items are now dropped, this option is no longer necessary)

Version 1.9.0

  • The blocklist is now separated into individual categories per-tool (pickaxe, axe, shovel, shears, and all)
  • All individual sections have different permission nodes, as followed:
  • |-> Removed "veinminer.veinminer" permission node, replaced with "veinminer.veinmine.*"
  • |-> Children permission nodes are respective to the tools, "veinminer.veinmine.pickaxe", "veinminer.veinmine.shovel", etc.
  • The "/veinminer blocklist" command has had some remodelling to deal with individual tools as well
  • |-> Removed the "/veinminer blocklist reset" option as it was a little bit more intensive than originally planned
  • |-> Syntax is now as followed: "/veinminer blocklist <tool> <add|remove|list>"
  • API Changes:
  • |-> Added a VeinMinerManager class to keep track of veinminable block information (VeinMiner#getVeinMinerManager())
  • |-> Added a VeinTool utility Enum to represent all supported VeinMiner tools
  • |-> Added a VeinBlock registry method in the VeinMinerManager class to register veinminable blocks
  • |-> Removed a few unnecessary methods
  • |-> Moved/Created a few packages under the api package for developers
  • Changed the default value of "VeinSize" to 64 (Apparently, I hadn't done that before)
  • Restructured the veinminer listener to be ever so slightly more efficient
  • Fixed a few typos in the command snytax warnings
  • Fixed randomly calling information from the blocklist when unnecessary upon onEnable checks
  • As the plugin is enabling, information will now be displayed to inform the user of what the plugin is doing
  • Removed "RequiresTool" configuration option as it is now unused

Version 1.8.5

  • "ItemsToInventory" now respects full inventories. (Closes ticket #06)
  • If the players inventory is full, it will fill their inventory as best as possible, and drop remains
  • Used a more efficient method to get blocklist materials on startup
  • Removed the disclaimer in the config file (Shouldn't apply anymore, algorithm is really quite efficient... IT HAS ITS LIMITS!!!)

Version 1.8.4

  • Fixed an issue that disallowed items such as clay and cocoa beans to not drop their respective amounts (Closes ticket #05)
  • Rewrote the way silk touch, fortune, and drops as a whole are handled (Should still support versions 1.9+ as well)
  • Added a "/veinminer blocklist reset|default" subcommand to reset the blocklist values to default (Permission: veinminer.blocklist.reset)
  • A few minor aesthetic changes with a couple commands
  • Fixed an exception with the PlayerVeinMineEvent

(NOTE: This version has officially dropped support for 1.8.x. 1.10 is now available so only the previous version and the current one are being supported. The API has changed too much for me to continue support. Update your server ASAP.) I may release a future version that supports 1.8, but for now, support is dropped

Version 1.8.3

  • Added "ItemsToInventory" configuration option to set whether vein mined items go directly to your inventory or not (Default: false)

Version 1.8.2

  • The Unbreaking enchantment is now respected for tools
  • Re-added the call for BlockBreakEvent (This time, it will not crash the server. Tested)
  • Prevented the possibility that protected areas could be vein mined
  • Attempt to fix ores from flying all over the place when vein mined
  • Minor internal modifications / optimizations

Version 1.8.1

  • Fixed tool durability not updating properly
  • Fixed tools having a negative durability value
  • Fixed the algorithm ignoring data values during the actual process of vein mining (Oops)

Version 1.8.0

  • Changed the VeinMiner algorithm one last time to make it more accurate
  • The algorithm will now act as a "burst" sequence rather than a "linear" sequence (Fixes ticket 4 -
  • The algorithm is now much more accurate with max vein size calculations
  • Changed the default maximum vein size to 32
  • Added a safeguard for the algorithm. It will now attempt a maximum of 10 cycles if max vein size has not been reached (No infinite loops)
  • Added a new sub-command, "/veinminer blocklist list", to display all veinable blocks (and their data) - Permission node: "veinminer.blocklist.list"


  • Removed the calls for BlockBreakEvent as it was causing way too many issues (Fixes another fatal crash)


  • Please update to this version as soon as you possibly can!!!
  • Fixed an urgent issue that can cause your server to occasionally crash (I apologize if you have experienced this)

Version 1.7.1

  • Not specifying a data value in the blocklist now assumes all data values
  • Removed an accidental data check in one of the API methods
  • Added a "hasSpecificData()" boolean-return method in the VeinBlock class
  • Modified the "/veinminer blocklist" command to function with the new data value support

Version 1.7.0

  • VeinMining now activates a BlockBreakEvent for every block broken within the veinmine action
  • |-> This excludes the initial block, which is fired regardless by the breaking of the block
  • Changed the registration format of VeinMinable blocks. They are now contained under a separate block object
  • |-> These custom block objects allow for the specification of data values
  • Data values can now be specified in the block list by adding a semicolon (;) and a value after the name of the material. More info in the configuration file
  • With the changes to registration formats, there are more methods in the main class for API usage
  • Some permission nodes have been reorganized:
  • |-> "veinminer.blocklist.*" is now a parent permission and allows both of the following:
  • |-> "veinminer.addBlocklist" is now veinminer.blocklist.add
  • |-> "veinminer.removeBlocklist" is now veinminer.blocklist.remove

Version 1.6.0

  • Fixed Lapis/Redstone ores not dropping the proper amount of items
  • Fixed experience not dropping upon breaking experience-dropping ores
  • Changed the plugin to run on less decisions
  • Cleaned up a lot of the back-end side of the code
  • Added new "ActivationMode" configuration mode to determine how VeinMiner should activate

Version 1.5.2

  • Fixed potential issue with breaking veinminable blocks in any grief protection plugins
  • Fixed Fortune duplication of blocks that drop themselves (Iron ore, gold ore, logs, etc.)

Version 1.5.1

  • Fixed Metrics not enabling (Typo in the configuration)
  • Added new "ForceDropSpawn" option to toggle whether items drop in the initial break location or not (default true)
  • Cleaned up the drop handler method
  • Veinminer commands may now be run from the console

Version 1.5.0

  • Compiled for Minecraft 1.9.x support (1.8.x no longer supported. Sorry)
  • BIGGEST CHANGE: Rewrote the VeinMine algorithm to be more efficient, and more accurate and precise when breaking veins
  • |-> The algorithm no longer checks unnecessary blocks
  • |-> Cubic areas are no longer calculated. Instead, only blocks relative to the vein are considered
  • |-> Compacted algorithm size to roughly 20 lines, rather than the previous 200
  • Adding/Removing blocks from the list via command no longer requires case sensitivity
  • Changed the "MaxRadius" config option to "MaxVeinSize", and changed the default value to 20
  • Used proper .name() vs .toString() enum conventions
  • Modified the Fortune pickaxe handling to be more efficient / clean
  • Fixed ArrayIndexOutOfBoundsException from using Fortune on a vein (Surprised no one reported this)
  • Made integer randomization more efficient and finalized
  • Changed configuration loading onEnable to be more efficient
  • Cut a couple of methods down to be simpler
  • Fixed NullPointerException when VeinMining with an empty hand
  • Fixed accidentally registering the block break listener twice? (Don't know what I was thinking)
  • Moved the listener into a separate class to unclutter the main class
  • Added a PlayerVeinMineEvent for the VeinMiner API (Developers are free to listen for this event as per usual)
  • Added support for other plugins that may contain auto-smelt or other custom enchantments

Version 1.4.0

  • Rewrote the algorithm for VeinMining. Should work 100% of the time now
  • Fixed a bug with durability that allowed the tool durability to go into the negatives
  • Added a new boolean configuration option to determine whether you need a tool in hand or not. RequiresTool. Default true
  • Fixed support for the Fortune enchantment while VeinMining
  • Added a new configuration section related to Enchantments
  • |-> Added a new boolean configuration option to determine whether the SilkTouch enchantment is applied or not. Enchantments.SilkTouch. Default: true
  • |-> Added a new boolean configuration option to determine whether the Fortune enchantment is applied or not. Enchantments.Fortune. Default: true

Version 1.3.0

  • Changed all methods to private (not visible to other plugins). They are not necessary for public use
  • Removed the ability to use veinminer when you don't have an item in your hand
  • Added a method to check if the player is holding a tool (Axes, Pickaxes, and Spades)
  • Added a main /veinminer command containing veinminer related commands
  • |-> /veinminer version - Get version information about veinminer
  • |-> /veinminer reload - Reload the configuration file for veinminer (permission: veinminer.reload)
  • |-> /veinminer blocklist add <id> - Add block id's to the block list in the config (permission: veinminer.addBlocklist)
  • |-> /veinminer blocklist remove <id> - Remove block id's from the list in the config (permission: veinminer.removeBlocklist)

Version 1.2.0

  • Added support to VeinMine with Silk Touch
  • Added a check for REDSTONE_ORE and GLOWING_REDSTONE_ORE. If one is on the list, and the other is not, it will automatically add the other
  • Removed the need for an ArrayList to break blocks (Fixes overlap of blocks)
  • Added a toolManager method to handle the breaking of blocks and damaging of tools
  • Completely recoded all algorythmic logic for the VeinMining process
  • Fixed uneven destruction of blocks. Should destroy a proper cubic area
  • Fixed the maxRadius variable being one more than set (i.e. 7 was actually 8 )
  • Changed the default maxRadius to 4 instead of 7 (that's still intensive. 4 should suffice)
  • Removed the onDisable method due to inutility after this update

Version 1.1.0

  • Added Adventure Mode support for VeinMiner
  • Added a permission node to allow the usage of VeinMiner ("veinminer.veinminer". Default: All players)
  • Added an onDisable method to clear some ArrayLists just incase some memory is accidentally left over. It's a safeguard, really.
  • Added a new "VeinMinerUsesDurability" boolean configuration option to determine whether durability on the tool is used or not (default: true)
  • Changed the blocksToBreak array list to public so it is viewable to other plugins, and between classes

Version 1.0.0

  • Initial release. View main page