VeinMiner 1.17.10

Minecraft Forge's VeinMiner recreated for Spigot servers.

  1. Choco
    Native Minecraft Version:
    1.13
    Tested Minecraft Versions:
    • 1.13
    • 1.14
    • 1.15
    • 1.16
    • 1.17
    • 1.18
    Source Code:
    https://github.com/2008Choco/VeinMiner/
    Minimum Java Version: Java 8 (planned to upgrade to Java 16)

    Legacy (Minecraft 1.8.x - 1.12.x): VeinMiner 1.11.3 - This version is NOT supported. Period.

    Collects anonymous statistics: https://bstats.org/plugin/bukkit/VeinMiner
    - Typical bStats information
    - Types of blocks mined in the previous update cycle
    - The amount of players actively using the optional client mod
    - Names and versions of installed anti cheats​


    [​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.

    Supports the following anti cheats:
    • NoCheatPlus
    • AAC (Advanced AntiCheat) 5.x
    • Spartan
    • AntiAura
    • Matrix 6.x
    Supports the following placeholders (PlaceholderAPI):
    • %veinminer_enabled%: Whether or not VeinMiner is toggled on
    • %veinminer_enabled_category_<category>%: Whether or not VeinMiner is toggled on for a given category
    • %veinminer_active%: Whether or not VeinMiner is active (e.g. the player has the keybind pressed)


    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.

    Want to use custom keybinds!?
    VeinMiner does not natively support custom keybinds because it is a server-sided mod. However, by getting your players to install VeinMiner4Bukkit, a Fabric mod made by the same developer, Choco, your players can assign and use custom keybinds!


    [​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​

    veinminer.client.reminded:
    Description: Exempt players from the client reminder message on join
    Default: Nobody has this permission by default​


    [​IMG]

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

    DefaultActivationStrategy
    : SNEAK # The default activation strategy to set for players that have not explicitly set it
    VeinMiningPattern
    : 'veinminer:expansive' # The vein mining pattern to use. For most users, this should remain default
    SortBlocklistAlphabetically
    : true # Whether or not to sort the block list alphabetically when disabled with a command
    CollectItemsAtSource
    : true # Whether items from vein mines will be dropped at the source block
    NerfMcMMO
    : false # If true, only grants McMMO experience for the FIRST block mined in a vein, as opposed to all blocks if false

    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

    DisabledGameModes
    : # A list of game modes in which VienMiner is disabled
    - CREATIVE
    - SPECTATOR
    DisabledWorlds
    : # A list of all worlds in which VeinMiner is disabled
    - WorldName

    Client
    : # Options that allow better control over the optional client-sided mod
      AllowClientActivation
    : true # Whether or not to allow the use of VeinMiner4Bukkit
      DisallowedMessage
    : # The message to send to clients with the mod installed if AllowClientActivation is disabled. Set to [] to not send a message
      - "&7&oThe VeinMiner client mod is disabled on this server."
      SuggestClientModPeriod
    : "1d" # The time period to remind players without VeinMiner4Bukkit installed to install it. -1 to not remind, or format: 1w2d3h4m5s
      SuggestionMessage
    : # The suggestion message to send
    - "&7This server runs &fVeinMiner&7. An &ooptional &7Fabric mod may be installed to allow you to use custom keybinds."
    - "&7Download at
    : &fhttps://www.curseforge.com/minecraft/mc-mods/veinminer4bukkit"

    # 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:amethyst_cluster'
      - 'minecraft:ancient_debris'
      - 'minecraft:coal_ore'
      - 'minecraft:copper_ore'
      - 'minecraft:deepslate_coal_ore'
      - 'minecraft:deepslate_copper_ore'
      - 'minecraft:deepslate_diamond_ore'
      - 'minecraft:deepslate_emerald_ore'
      - 'minecraft:deepslate_gold_ore'
      - 'minecraft:deepslate_iron_ore'
      - 'minecraft:deepslate_lapis_ore'
      - 'minecraft:deepslate_redstone_ore'
      - 'minecraft:diamond_ore'
      - 'minecraft:emerald_ore'
      - 'minecraft:gold_ore'
      - 'minecraft:iron_ore'
      - 'minecraft:lapis_ore'
      - 'minecraft:nether_quartz_ore'
      - 'minecraft:nether_gold_ore'
      - 'minecraft:raw_copper_block'
      - 'minecraft:raw_gold_block'
      - 'minecraft:raw_iron_block'
      - 'minecraft:redstone_ore'
      Axe
    : # A list of all blocks breakable by the "Axe" category
      - 'minecraft:acacia_log'
      - 'minecraft:acacia_wood'
      - 'minecraft:birch_log'
      - 'minecraft:birch_wood'
      - 'minecraft:brown_mushroom_block'
      - 'minecraft:carved_pumpkin'
      - 'minecraft:crimson_hyphae'
      - 'minecraft:crimson_stem'
      - 'minecraft:dark_oak_log'
      - 'minecraft:dark_oak_wood'
      - 'minecraft:jungle_log'
      - 'minecraft:jungle_wood'
      - 'minecraft:melon'
      - 'minecraft:oak_log'
      - 'minecraft:oak_wood'
      - 'minecraft:pumpkin'
      - 'minecraft:red_mushroom_block'
      - 'minecraft:spruce_log'
      - 'minecraft:spruce_wood'
      - 'minecraft:warped_stem'
      - 'minecraft:warped_hyphae'
      Shovel
    : # A list of all blocks breakable by the "Shovel" category
      - 'minecraft:gravel'
      - 'minecraft:powder_snow'
      - 'minecraft:sand'
      - 'minecraft:snow'
      - 'minecraft:soul_sand'
      - 'minecraft:soul_soil'
      Hoe
    : # A list of all blocks breakable by the "Hoe" category
      - 'minecraft:beetroots[age=3]'
      - 'minecraft:brown_mushroom'
      - 'minecraft:carrots[age=7]'
      - 'minecraft:moss_block'
      - 'minecraft:moss_carpet'
      - 'minecraft:potatoes[age=7]'
      - 'minecraft:red_mushroom'
      - 'minecraft:wheat[age=7]'
      Shears
    : # A list of all blocks breakable by the "Shears" category
      - 'minecraft:acacia_leaves'
      - 'minecraft:azalea_leaves'
      - 'minecraft:birch_leaves'
      - 'minecraft:black_wool'
      - 'minecraft:blue_wool'
      - 'minecraft:brown_wool'
      - 'minecraft:cobweb'
      - 'minecraft:cyan_wool'
      - 'minecraft:dark_oak_leaves'
      - 'minecraft:flowering_azalea_leaves'
      - 'minecraft:gray_wool'
      - 'minecraft:green_wool'
      - 'minecraft:jungle_leaves'
      - 'minecraft:light_blue_wool'
      - 'minecraft:light_gray_wool'
      - 'minecraft:lime_wool'
      - 'minecraft:magenta_wool'
      - 'minecraft:oak_leaves'
      - 'minecraft:orange_wool'
      - 'minecraft:pink_wool'
      - 'minecraft:purple_wool'
      - 'minecraft:red_wool'
      - 'minecraft:spruce_leaves'
      - 'minecraft:white_wool'
      - 'minecraft:yellow_wool'
      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:acacia_log,minecraft:acacia_wood'
    - 'minecraft:birch_log,minecraft:birch_wood'
    - 'minecraft:brown_mushroom_block,minecraft:red_mushroom_block'
    - 'minecraft:carved_pumpkin,minecraft:pumpkin'
    - 'minecraft:crimson_hyphae,minecraft:crimson_stem'
    - 'minecraft:dark_oak_log,minecraft:dark_oak_wood'
    - 'minecraft:grass,minecraft:tall_grass'
    - 'minecraft:jungle_log,minecraft:jungle_wood'
    - 'minecraft:oak_log,minecraft:oak_wood'
    - 'minecraft:spruce_log,minecraft:spruce_wood'
    - 'minecraft:warped_hyphae,minecraft:warped_stem'
    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!?
      • YES! You can! Sort of. VeinMiner is a server-sided mod and cannot listen for key presses, therefore in order to support custom keybinds, your players must install a client-sided Fabric mod. This mod is entirely optional but allows your players to use custom keybinds. This is the only way.

        You can find the VeinMiner4Bukkit mod here: https://www.curseforge.com/minecraft/mc-mods/veinminer4bukkit
    • When will you support modded blocks?
      • Never... probably... (maybe in the future?) For the time being, this is not technically possible unless VeinMiner is built for Sponge, though I have no plans on doing so. 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 or OreExcavator for MinecraftForge instead. This plugin will serve no purpose compared to the mod.
    • Do enchantments work with VeinMiner?
      • Yes! Enchantments like Fortune and Silk Touch are respected when vein mining. Depending on how they're made, custom enchantment plugins too should work!
    • Why can't I vein mine <insert block here>?
      • VeinMiner provides you with a default block list for blocks that makes the most sense. If a block is not vein mineable, it's probably not on the block list. You can add it with the command /veinminer blocklist <tool> add <block>
    • Does VeinMiner support McMMO?
      • Yes, McMMO is supported and players will gain experience for each broken block. If you find that to be too overpowered, there's a configuration option to nerf McMMO's level gain and only grant XP to players for the first block they broke.
    • Can you get rid of the message when a player joins the server?
      • Yes. In the config.yml you will see a Client.SuggestionMessage option which allows you to change the message that is sent. If you don't want one to be sent, you can set it to [] instead. For example, SuggestionMessage: []. The message will no longer be sent to players.
    • VeinMiner won't start on the latest version of Minecraft!
      • If you are using a server panel from your web host that installs plugins for you with the click of a button, you are running an out of date version of VeinMiner. These panels install from direct uploads, which VeinMiner has not done for 3+ years. Upload to your server (via FTP or direct upload) a build of VeinMiner from GitHub (press the download button at the top of this page).
    support_discord.png
    sudapeople, Kiva11, Sytm and 26 others like this.

Recent Reviews

  1. JonRahm
    JonRahm
    5/5,
    Version: 1.17.10
    works bro xD works bro xD works bro xD works bro xD works bro xD works bro xD works bro xD
    1. Choco
  2. Arse
    Arse
    5/5,
    Version: 1.17.10
    Really good plugin. I hope you eventually add alternative patterns (like for tunneling) and a way to make it so that veinminer is disabled by default for new players.
    1. Choco
      Author's Response
      The first, probably not. I actually intend on removing the concept of patterns entirely at least for the end user. It was mostly a way to switch back to the legacy pattern.

      As for disallowing for default user, you can do that by just negating the permission node in the default group. If you mean you want it toggled off by default, sure! That's been a common request and I will look into doing that in the future.

      Glad you're enjoying the plugin!
  3. Pumamori
    Pumamori
    5/5,
    Version: 1.17.9
    Works fine, but doesn't subtract any hunger no matter how high the value is set. :(
  4. Hoptilic
    Hoptilic
    5/5,
    Version: 1.17.9
    Very good, works perfectly in 1.17 with no lag. May I ask, what are the veinminer patterns?
    1. Choco
      Author's Response
      Patterns are mostly for developers wanting to write addons. For the every day server owner, the default pattern is the best :) Glad you're enjoying the plugin!
  5. Its_Owennn
    Its_Owennn
    5/5,
    Version: 1.17.9
    Works great on my paper 1.17 server, and the ability to easily add items to the blocklist through commands is very nice.
  6. Alexjobbit
    Alexjobbit
    5/5,
    Version: 1.17.9
    Works great in 1.17 I love it. One of the essentials plugins in my server. Instead of having 3 plugins for harversting, woodcutting and mining, you can have all of these in one.
    1. Choco
      Author's Response
      Harvesting and wood cutting seem to be very common uses for VeinMiner and I'm more than okay with that. Helps consolidate the crop harvester and tree feller plugins :)
  7. lokka30
    lokka30
    5/5,
    Version: 1.17.9
    And here's a third review. Love this plugin to bits. Brilliant developer, brilliant plugin, brilliant experience.
    1. Choco
      Author's Response
      <3 Thank you
  8. justanobody
    justanobody
    5/5,
    Version: 1.17.6
    this the best forge mod port plugin ever. It has everything, you can change almost anything u like in the config files.
  9. trevorwegwe
    trevorwegwe
    3/5,
    Version: 1.17.5
    Hello I tried for hours to make this work following everything on a blank server and still does not work
  10. Levi224
    Levi224
    5/5,
    Version: 1.17.5
    Amazing plugin. Had issues with it that was caused by another plugin but the developer helped me! Best plugin support I've ever seen.
    1. Choco
      Author's Response
      Glad I could help! I wish I could have helped a little more efficiently... but we got there in the end! Hope you enjoy the plugin from here on out