Vein Miner
ATTENTION:
New releases for VeinMiner will no longer be made on BukkitDev. See instead the SpigotMC resource page for new releases.
New releases for VeinMiner will no longer be made on BukkitDev. See instead the SpigotMC resource page for new releases.

If you have ever used the Minecraft Forge mod, VeinMiner, this plugin aims to recreate exactly that in an efficient, flexible and feature-filled way. Anything you've ever seen from the VeinMiner mod should be in the VeinMiner plugin, of course with a few minor feature changes due to the limitations of server modifications. If you have not yet used the VeinMiner mod... play more mod packs.
VeinMiner allows players to mine an entire vein of ores whilst sneaking and breaking an ore. It will break the entire vein when only needing to break one ore. Much like the original mod, there is an extremely powerful block list which can be modified in-game, as well as in the configuration file, to determine which blocks (and which data values) are capable of being vein mined. The lists are separated by tools and can be grouped by aliases to allow for a more flexible and simplistic mining experience. This is a fantastic perk for Prison, Factions and Semi-Vanilla servers that isn't overpowered, but still gives players a rewarding benefit for donating to your server.
DISCLAIMER: I am in no way related to or in collaboration with the Minecraft Forge VeinMiner project, or the creator portablejim. This is simply a recreation of a popular mod to be enjoyed on CraftBukkit / Spigot servers.

Commands for VeinMiner are lacking in features, but they can be useful for configuring most of the resource without having to open the configuration file, and they accomplish their purpose.
/veinminer [alias: "/vm"]:
Description: The central command for VeinMiner that controls various aspects of the resource including block list manipulation, tool toggle, and basic informationSub-commands:<reload> - Reload the plugin's configuration file and load everything back into memoryExample:<version> - Retrieve version information of the VeinMiner currently installed on your server<blocklist> <*tool> - Tools are the same as those listed in the configuration file<toggle> [tool] - Toggle vein miner on or off for all (or specific) tools<add> <id> [data] - Add a block to the tools block list (data is optional)<remove> <id> [data] - Remove a block from the tools block list (data is optional)<list> - List all blocks currently on this tools block list<pattern> <namespace:key> - Set the pattern to be used while vein mining- /veinminer blocklist pickaxe add stone- /veinminer blocklist shovel remove dirt 1- /veinminer toggle axe- /veinminer pattern veinminer:default[/SIZE]

veinminer.veinmine.*:
Description: Allow the ability to use VeinMiner for all toolsDefault: All players have this permission by defaultChildren:veinminer.veinmine.pickaxe: Allow the ability to use VeinMiner for pickaxesveinminer.veinmine.axe: Allow the ability to use VeinMiner for axesveinminer.veinmine.shovel: Allow the ability to use VeinMiner for shovelsveinminer.veinmine.shears: Allow the ability to use VeinMiner for shearsveinminer.veinmine.hoe: Allow the ability to use VeinMiner for hoesveinminer.veinmine.hand: Allow the ability to use VeinMiner for materials in the hand category
veinminer.blocklist.*:
Description: Allow access to the "/veinminer blocklist" sub-command, and all of its sub-commands, "add", "remove" and "list"Default: Operators have this permission by defaultChildren:veinminer.blocklist.add: Allow access to the "/veinminer blocklist add" sub-commandveinminer.blocklist.remove: Allow access to the "/veinminer blocklist remove" sub-commandveinminer.blocklist.list: Allow access to the "/veinminer blocklist list" sub-command
veinminer.reload:
Description: Allow access to the "/veinminer reload" sub-commandDefault: Operators have this permission by default
veinminer.toggle:
Description: Allow access to the "/veinminer toggle" sub-commandDefault: All players have this permission by default
veinminer.pattern:
Description: Allow access to the "/veinminer pattern" sub-commandDefault: All players have this permission by default

MetricsEnabled: true ActivationMode: 'SNEAK' RepairFriendlyVeinminer: false IncludeEdges: true DisabledWorlds: - WorldName Tools: Pickaxe: MaxVeinSize: 64 Axe: MaxVeinSize: 64 Shovel: MaxVeinSize: 64 Hoe: MaxVeinSize: 64 Shears: MaxVeinSize: 64 Hand: InheritMaterialsFromAll: false BlockList: Pickaxe: - 'minecraft:coal_ore' - 'minecraft:iron_ore' - 'minecraft:gold_ore' - 'minecraft:lapis_ore' - 'minecraft:redstone_ore' - 'minecraft:diamond_ore' - 'minecraft:emerald_ore' - 'minecraft:nether_quartz_ore' Axe: - 'minecraft:acacia_log' - 'minecraft:birch_log' - 'minecraft:dark_oak_log' - 'minecraft:jungle_log' - 'minecraft:oak_log' - 'minecraft:spruce_log' - 'minecraft:acacia_wood' - 'minecraft:birch_wood' - 'minecraft:dark_oak_wood' - 'minecraft:jungle_wood' - 'minecraft:oak_wood' - 'minecraft:spruce_wood' - 'minecraft:melon' - 'minecraft:pumpkin' - 'minecraft:carved_pumpkin' - 'minecraft:red_mushroom_block' - 'minecraft:brown_mushroom_block' Shovel: - 'minecraft:sand' - 'minecraft:gravel' Hoe: - 'minecraft:wheat[age=7]' - 'minecraft:potatoes[age=7]' - 'minecraft:carrots[age=7]' - 'minecraft:beetroots[age=3]' - 'minecraft:red_mushroom' - 'minecraft:brown_mushroom' Shears: - 'minecraft:black_wool' - 'minecraft:blue_wool' - 'minecraft:brown_wool' - 'minecraft:cyan_wool' - 'minecraft:gray_wool' - 'minecraft:green_wool' - 'minecraft:light_blue_wool' - 'minecraft:light_gray_wool' - 'minecraft:lime_wool' - 'minecraft:magenta_wool' - 'minecraft:orange_wool' - 'minecraft:pink_wool' - 'minecraft:purple_wool' - 'minecraft:red_wool' - 'minecraft:white_wool' - 'minecraft:yellow_wool' - 'minecraft:acacia_leaves' - 'minecraft:birch_leaves' - 'minecraft:dark_oak_leaves' - 'minecraft:jungle_leaves' - 'minecraft:oak_leaves' - 'minecraft:spruce_leaves' - 'minecraft:cobweb' Hand: [] All: - 'minecraft:ice' - 'minecraft:packed_ice' - 'minecraft:blue_ice' Aliases: - 'minecraft:red_mushroom_block,minecraft:brown_mushroom_block' - 'minecraft:grass,minecraft:tall_grass' - 'minecraft:pumpkin,minecraft:carved_pumpkin' - 'minecraft:acacia_log,minecraft:acacia_wood' - 'minecraft:birch_log,minecraft:birch_wood' - 'minecraft:dark_oak_log,minecraft:dark_oak_wood' - 'minecraft:jungle_log,minecraft:jungle_wood' - 'minecraft:oak_log,minecraft:oak_wood' - 'minecraft:spruce_log,minecraft:spruce_wood'

The API for VeinMiner has been constantly changing during its development, but it's now reached a state where it should remain relatively stable. There are various aspects of the API that can be manipulated by an external plugin, and if you're interested in doing so, you are welcome to check out the numerous pages on the Spigot Wiki that can be found by clicking the respective topic below:
[TODO] Listening for when players vein mining
[TODO] Manipulating blocklists / player capabilities
[TODO] Registering custom material aliases
For those of you that like to explore projects on your own and see what you can do, VeinMiner is completely documented and filled with detailed information over every single class, method and constant. There are Javadocs hosted on my website for you to browse, and you can find them here: https://choco.gg/javadocs/veinminer/

VeinMiner has been happily open sourced for a long time and is ready to be contributed to! If you are a VeinMiner API user or if you are simply interested in the code that goes behind the inner-workings of this plugin, its source code is available on GitHub for you to browse and hack away at. You can find the source code by going to VeinMiner's public repository. If you are familiar with Git, you are free to clone, fork or make a pull request to VeinMiner. If I approve of any changes you decide to pull request, I may consider merging the changes into the main branch and uploading a version with your code. You will be credited in the very next changelog, as well as a link to your PR.

This resource is brought to you free of charge without any obligation to pay anything! I love to provide free resources such that people are enjoying it on their servers. Unfortunately, not everything in life is free and I will eventually need some monetary support of some kind. If you enjoy this project and what it provides to your server, please do consider donating as a little thank you for my hard work. I spent countless hours working on this project and all of it is provided without asking for anything.
Donating is not a requirement, and I do not expect anyone to donate. If you so chose to donate out of your own good will, I greatly appreciate the support, and I hope that you enjoy this resource as much as I do developing it! Thank you!
@c7w
I have no issue with this, such that I am given credit. If you are claiming to be the original author on that thread, (I cannot read that language), then I will have an issue with it and I request that it is removed. Otherwise, I'm more than happy if you share it on another website
I repost this plugin on the MCBBS. Its a wonderful and fantastic plugin!!!! Thanks very much:D
I repost it on http://www.mcbbs.net/thread-600757-1-1.html Could you please give me the permission to repost it? If you donot think its good,I will delete it in time.:D
All in all,thanks for the good plugin.
hi, i dont know why i cant make it worl. i download the jar and place it on the mod folder but cant see the mod when i start the game, i have forge for 10.2 is that ok?
It's not a forge mod, it's a bukkit plugin for servers.
Hello,
I use this plugin on my server Iron Minecarts and it works perfectly. I noticed you didn't have a server on the lists so feel free to add mine. The address is ironminecarts.beastmc.com.
Thanks :)
@MCGamer199
Thank you very much :3 I enjoy your Advanced Lucky Blocks plugin as well :D
Nice plugin.
doesnt seem to be working on my buddies server, the mod doesnt seem to work with any tool. is there some specific i have to do?
Does the server have Bukkit (or Spigot) or does it have Forge?
If it's a forge server, this is a Bukkit plugin, it will not work with forge servers.
@2008Choco
haha wow. Big oversight on my part... I was a little tired from configuring plugins and troubleshooting a new server, but thanks for that. Works like a charm now :)
@zomgwtfbbqbagel
WOOD is the block ID for planks. I know, it's strange. What you want would be block ID "LOG". That should work :D
Hi there! Great plugin so far, been looking for something to replace Treecapitator and I found this. It works great on ore and pretty much every block I decide to add, except for wood. And I can't figure out why. It says that WOOD was successfully added to the list but every attempt to break down trees doesn't work. Any ideas?
@assasianfire
Thank you very much :D Glad you enjoy it!
Nice plugin :)
What plans (if any) do you have for updating to 1.9.4?
@cj89898
I'm not sure if modded blocks are functional because this plugin is based off of the Bukkit/Spigot Material enum (Which does not include modded blocks)
@codegreen
That was added a while ago :3 Thank you for the suggestion regardless
@2008Choco
The xp check isn't for my plugin in, its for yours so it doesn't create any infant loop. There is probably a better way, but that was easier.
Also, i would like to add the special stone like Granite, it has the same value as stone but defernt meta data
How do I add a modded block?
@codegreen
Valid point, had not thought about block break events. However the XP portion seems quite situational. That should be something you check for in your plugin ;)
I'll definitely add this in. Look for another updated version of vein miner later tonight with a couple other fixes as well
EDIT: View release 1.7.0 of VeinMiner. Changes have been made
I have a plugin that pays you when you mine, nut can't use it with veinminer. I have fix this by placing the following code in "private void dropManager" under "block.getWorld().dropItemNaturally(dropLocation, drop);"
BlockBreakEvent event = new BlockBreakEvent(block, player); event.setExpToDrop(-1); Bukkit.getServer().getPluginManager().callEvent(event);
and place the following after "Private void OnBlockBreak" if (event.getExpToDrop() < 0) { return; }