VeinMiner 1.16.2

Minecraft Forge's VeinMiner recreated for CraftBukkit and Spigot servers!

  1. Choco
    Native Minecraft Version:
    1.13
    Tested Minecraft Versions:
    • 1.13
    • 1.14
    • 1.15
    • 1.16
    Source Code:
    https://github.com/2008Choco/VeinMiner/
    VeinMiner for Minecraft 1.8.x - 1.12.x (unsupported): VeinMiner 1.11.3

    [​IMG]

    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.


    [​IMG]

    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 information

    Sub-commands:
    <reload> - Reload the plugin's configuration file and load everything back into memory
    <version> - Retrieve version information of the VeinMiner currently installed on your server
    <blocklist> <*category> - Categories are the same as those listed in the categories.yml, or "hand"
    <add> minecraft:block[state=value] [blocks...] - Add one or more block(s) to the category's block list (block states - the data in the [] - are optional)
    <remove> minecraft:block[state=value] [blocks...] - Remove one or more block(s) from the category's block list (block states - the data in the [] - are optional)
    <list> - List all blocks currently on this category's block list​
    <toollist> <*category> - Categories are the same as those listed in the categories.yml, or "hand"
    <add> <tool> [tools...] - Adds one or more tool(s) to the category's tool list
    <remove> <tool> [tools...] - Removes one or more tool(s) to the category's tool list
    <list> Lists all tools in the category's tool list​
    <toggle> [category] - Toggle vein miner on or off for all (or specific) categories
    <mode> <mode> - Set the mode that VeinMiner should use to activate for you (the player). Can be either "sneak", "stand" or "always"
    <pattern> <namespace:key> - Set the pattern to be used while vein mining​
    Example:
    - /veinminer blocklist pickaxe add minecraft:chest[waterlogged=true] stone minecraft:diamond_ore
    - /veinminer blocklist shovel remove dirt
    - /veinminer toollist shears add stick
    - /veinminer toollist my_custom_category remove minecraft:stone diamond_pickaxe
    - /veinminer toggle axe
    - /veinminer mode sneak
    - /veinminer pattern veinminer:default​
    [​IMG]

    veinminer.veinmine.*:
    Description: Allow the ability to use VeinMiner for all tools
    Default: All players have this permission by default
    Children:
    veinminer.veinmine.<category_id>: Allow the ability to use VeinMiner for the specified category (the lowercase ID found in the categories.yml)​

    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 default
    Children:
    veinminer.blocklist.add: Allow access to the "/veinminer blocklist add" sub-command
    veinminer.blocklist.remove: Allow access to the "/veinminer blocklist remove" sub-command
    veinminer.blocklist.list.*: Allow access to the "/veinminer blocklist list" sub-command for all blocks​

    veinminer.toollist.*:
    Description: Allow access to the "/veinminer toollist" sub-command, and all of its sub-commands, "add", "remove" and "list"

    Default: Operators have this permission by default
    Children:
    veinminer.toollist.add: Allow access to the "/veinminer toollist add" sub-command
    veinminer.toollist.remove: Allow access to the "/veinminer toollist remove" sub-command
    veinminer.toollist.list.*: Allow access to the "/veinminer toollist list" sub-command for all blocks​

    veinminer.blocklist.list.*:
    Description: Allow access to the "/veinminer blocklist <category> list" subcommands.

    Default: Operators have this permission by default
    Children: (this is a dynamic permission node)
    veinminer.blocklist.list.<category_id>: Allows access to the "/veinminer blocklist <category_id> list" command (the lowercase ID found in the categories.yml)​

    veinminer.toollist.list.*:
    Description: Allow access to the "/veinminer toollist <category> list" subcommands.

    Default: Operators have this permission by default
    Children: (this is a dynamic permission node)
    veinminer.toollist.list.<category_id>: Allows access to the "/veinminer toollist <category_id> list" command (the lowercase ID found in the categories.yml)​

    veinminer.reload:
    Description: Allow access to the "/veinminer reload" sub-command
    Default: Operators have this permission by default​

    veinminer.toggle:
    Description: Allow access to the "/veinminer toggle" sub-command
    Default: All players have this permission by default​

    veinminer.mode:
    Description: Allow access to the "/veinminer mode" sub-command
    Default: All players have this permission by default​

    veinminer.pattern:
    Description: Allow access to the "/veinminer pattern" sub-command
    Default: Operators have this permission by default​

    veinminer.free.*:

    Description: Grants a bypass to all VeinMiner debuffs and costs
    Default: No players have this permission by default. It must be explicitly set
    Children:
    veinminer.free.economy: Grants a bypass to the VeinMiner cost. Only used if a Vault-supported economy is installed and the cost is greater than 0
    veinminer.free.hunger: Grants a bypass to the VeinMiner hunger debuff. Only used if hunger modifier is greater than 0​



    [​IMG]

    config.yml:
    Code (YAML):
    MetricsEnabled: true
    PerformUpdateChecks
    : true

    SortBlocklistAlphabetically
    : true # Whether or not to sort the block list alphabetically when disabled with a command
    RepairFriendlyVeinminer
    : false # Whether or not VeinMiner will stop vein mining if the tool reaches 1 durability while mining
    IncludeEdges
    : true # Whether to search for blocks diagonally when vein mining
    MaxVeinSize
    : 64 # The maximum size of a vein for all categories (unless otherwise specified in the categories.yml)
    Cost
    : 0.0 # The cost per use of vein miner. This requires Vault and an economy plugin to be installed

    Hunger
    : # Various hunger-related options
      HungerModifier
    : 4.0 # How much exhaustion is applied for every block broken while vein mining. Every point is 0.025 hunger/exhaustion per block
      MinimumFoodLevel
    : 1 # The minimum food level required to vein mine. If vein mining while this value is hit, it will stop
      HungryMessage
    : "&7You are too hungry to vein mine!" # The message to send the player when they are too hungry

    DisabledWorlds
    : # A list of all worlds in which VeinMiner is disabled
    - WorldName

    # This BlockList option is dynamic. For every entry in the BlockList (i.e. "Pickaxe", "Axe", "Shovel", etc.),
    # an entry with the exact same ID is listed in the categories.yml
    BlockList
    :
      Pickaxe
    : # A list of all blocks breakable by the "Pickaxe" category
        - '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'
        - 'minecraft:nether_gold_ore'
        - 'minecraft:ancient_debris'
      Axe
    : # A list of all blocks breakable by the "Axe" category
        - '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'
        - 'minecraft:crimson_stem'
        - 'minecraft:warped_stem'
      Shovel
    : # A list of all blocks breakable by the "Shovel" category
        - 'minecraft:sand'
        - 'minecraft:gravel'
      Hoe
    : # A list of all blocks breakable by the "Hoe" category
        - 'minecraft:wheat[age=7]'
        - 'minecraft:potatoes[age=7]'
        - 'minecraft:carrots[age=7]'
        - 'minecraft:beetroots[age=3]'
        - 'minecraft:red_mushroom'
        - 'minecraft:brown_mushroom'
      Shears
    : # A list of all blocks breakable by the "Shears" category
        - '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
    : [] # A list of all blocks breakable by the "Hand" category (empty by default)
      All
    : # A list of all blocks breakable by all registered categories
        - 'minecraft:ice'
        - 'minecraft:packed_ice'
        - 'minecraft:blue_ice'

    # A list of collections of blocks that should be calculated in the same vein
    # For example, when mining a red mushroom block, brown mushroom blocks will also be broken in the same vein
    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'
    categories.yml:
    Code (YAML):
    Axe: # The category ID. In-game, this will be lower-cased. MUST BE UNIQUE!!!
      MaxVeinSize
    : 64 # The maximum vein size for this category specifically. Overrides the "MaxVeinSize" in the config.yml
      Items
    : # A list of all items in this category
      - 'minecraft:wooden_axe'
      - 'minecraft:stone_axe'
      - 'minecraft:golden_axe'
      - 'minecraft:iron_axe'
      - 'minecraft:diamond_axe'
      - 'minecraft:netherite_axe'

    Hoe
    :
      MaxVeinSize
    : 64
      Items
    :
     - 'minecraft:wooden_hoe'
      - 'minecraft:stone_hoe'
      - 'minecraft:golden_hoe'
      - 'minecraft:iron_hoe'
      - 'minecraft:diamond_hoe'
      - 'minecraft:netherite_hoe'

    Pickaxe
    :
      MaxVeinSize
    : 64
      Items
    :
     - 'minecraft:wooden_pickaxe'
      - 'minecraft:stone_pickaxe'
      - 'minecraft:golden_pickaxe'
      - 'minecraft:iron_pickaxe'
      - 'minecraft:diamond_pickaxe'
      - 'minecraft:netherite_pickaxe'

    Shears
    :
      MaxVeinSize
    : 64
      Items
    :
     - 'minecraft:shears'

    Shovel
    :
      MaxVeinSize
    : 64
      Items
    :
     - 'minecraft:wooden_shovel'
      - 'minecraft:stone_shovel'
      - 'minecraft:golden_shovel'
      - 'minecraft:iron_shovel'
      - 'minecraft:diamond_shovel'
      - 'minecraft:netherite_shovel'

    # ExampleCategory:
    #   MaxVeinSize: 10
    #   Items:
    #   - 'minecraft:torch'
    #   - 'minecraft:redstone_torch':  # NOTE: You can include more specific options such as "Name", "Lore", and override different options by making the listed item a YAML category!
    #     Name: "&6My Cool Torch!"
    #     Lore:
    #     - "First line!"
    #     - "&5Second line!"
    #   - 'minecraft:potato':
    #     Name: "&8Special item!"
    #     MaxVeinSize: 128
    #     IncludeEdges: false
    Options available for override (both category and item-specific) are as follows:
    • RepairFriendlyVeinminer
    • IncludeEdges
    • MaxVeinSize
    • Cost
    • DisabledWorlds

    [​IMG]

    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.wtf/javadocs/veinminer/


    [​IMG]

    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.


    [​IMG]

    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!

    FAQ:
    • Can you add a customizable keybind aside from shift? Like tilda!?
      • No... because this is a server-side mod and the server is not informed of of what buttons a player presses, this is quite literally impossible for me to do. Sorry...
    • When will you support modded blocks?
      • Never. If you want to have this plugin vein mine modded blocks, it's likely you're running a modded server. Use portablejim's VeinMiner mod for MinecraftForge instead. This plugin will serve no purpose compared to the mod.

    support_discord.png
    resista9, amione, lokka30 and 19 others like this.

Recent Reviews

  1. OctaDragon
    OctaDragon
    5/5,
    Version: 1.16.2
    Amazing plugin, super customizable, and works like a charm.
    If you like vein-mining in modded Minecraft, you'll love it in spigot, paper, or bukkit with this plugin.
  2. ArZor
    ArZor
    5/5,
    Version: 1.16.0
    This plugin is one of those little things that adds so much to a server.
    Works very efficiently causing zero lag!
    Dev is quick to implement fixes and feature requests!
    Would rate 10 stars if possible :D
    1. Choco
      Author's Response
      I don't know about quick! I waited a long while before I added a couple things :) Thank you though! I appreciate the support a lot!
  3. Jasonjams8
    Jasonjams8
    5/5,
    Version: 1.16.0
    Works as intended and has great support. Thanks for making and maintaining the plugin!
    1. Choco
      Author's Response
      My pleasure <3 Easily one of my favourite plugins to maintain!
  4. Looskie
    Looskie
    4/5,
    Version: 1.15.1
    Fantastic plugin, does the job very well, minimal lag. Suggestion though, perhaps you can make a db to save the /vm toggle, or some other way if you can think of it, as of right now, when you toggle it, then leave, it resets to on :)
    1. Choco
      Author's Response
      Thank you! And yes, this has been a long requested feature. As such, it's been added in the latest version!
  5. Ccmucks
    Ccmucks
    5/5,
    Version: 1.15.1
    Netherite picaxe does not work on 1.16.1 vein miner sadly. please fix this problem and update.
    1. Choco
      Author's Response
      This does work! :) Be sure to add them to the categories.yml or using the command from in-game (see the commands section above)
  6. lokka30
    lokka30
    5/5,
    Version: 1.15.1
    Hey Choco, thanks a lot for the brilliant resource. Brilliant addition to my survival server. ;)
    1. Choco
      Author's Response
      Happy to hear! Thanks for the positive comment :)
  7. dfsek
    dfsek
    5/5,
    Version: 1.15.0
    I've used this plugin for 3+ years now, and I've never had any issues. Config is great, anything you could possibly want to configure is there, and the permissions are incredibly simple and useful. Amazing plugin overall.
    1. Choco
      Author's Response
      Thank you! I appreciate that a lot :D Happy to hear you’ve been enjoying it for as long as you have!
  8. Shark-A-Holic
    Shark-A-Holic
    5/5,
    Version: 1.15.0
    This plugin is fantastic. My players love it! I do wish we could add custom keybinds, but I see why you can't. Besides that, this is absolutely fantastic and is a MUST HAVE for any Minecraft Server!
    1. Choco
      Author's Response
      Trust me, if I were able to, I would most definitely add keybinds! It's just not something the client sends the server information about. Sorry :( Glad you enjoy the plugin though!
  9. Wizirdi
    Wizirdi
    5/5,
    Version: 1.15.0
    Great plugin, but the picks no longer work when they get enchanted :< Any way to fix this?
    1. Choco
      Author's Response
      This isn't something I had considered. I'll have to try and figure out a workaround for this. Sorry about that! Keep an eye on future releases for a fix!
  10. Dracathio
    Dracathio
    5/5,
    Version: 1.15.0
    Love the plugin, as for me I learned how to make it work as a reward unlike the guy below me smh. Thanks for making this!
    1. Choco
      Author's Response
      I think the one below was just letting people know :D Thank you though!