VeinMiner 1.15.0

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
    Source Code:
    https://github.com/2008Choco/VeinMiner/
    VeinMiner for Minecraft 1.8.x - 1.12.x (unsupported): VeinMiner 1.11.3

    If the download is not available, see GitHub for a mirror download. (here - 1.15.0)

    [​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] - Add a block to the category's block list (block states - the data in the [] - are optional)
    <remove> minecraft:block[state=value] - Remove a block 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> - Adds a tool to the category's tool list
    <remove> <tool> - Removes a tool 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
    <pattern> <namespace:key> - Set the pattern to be used while vein mining​
    Example:
    - /veinminer blocklist pickaxe add minecraft:chest[waterlogged=true]
    - /veinminer blocklist shovel remove dirt
    - /veinminer toollist shears add stick
    - /veinminer toollist my_custom_category remove minecraft:stone
    - /veinminer toggle axe
    - /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.pickaxe: Allow the ability to use VeinMiner for pickaxes
    veinminer.veinmine.axe: Allow the ability to use VeinMiner for axes
    veinminer.veinmine.shovel: Allow the ability to use VeinMiner for shovels
    veinminer.veinmine.shears: Allow the ability to use VeinMiner for shears
    veinminer.veinmine.hoe: Allow the ability to use VeinMiner for hoes
    veinminer.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 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​

    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​

    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.pattern:
    Description: Allow access to the "/veinminer pattern" sub-command
    Default: All players have this permission by default


    [​IMG]

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

    SortBlocklistAlphabetically
    : true # Whether the block list should be sorted alphabetically or by natural order
    SortToolListAlphabetically
    : true # Whether the tool list should be sorted alphabetically or by natural order
    ActivationStrategy
    : SNEAK # The type of activation. Can be either "SNEAK", "STAND" or "ALWAYS"
    RepairFriendlyVeinminer
    : false # Whether or not VeinMiner will stop vein mining if the tool reaches 1 durability while mining[/SIZE]
    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
    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'
      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'
      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'
    [SIZE=4]  
    # 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
    : [/SIZE]
    - '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'[SIZE=4]
    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'

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

    Pickaxe
    :
      MaxVeinSize
    : 64
      Items
    :
     - 'minecraft:wooden_pickaxe'
      - 'minecraft:stone_pickaxe'
      - 'minecraft:golden_pickaxe'
      - 'minecraft:iron_pickaxe'
      - 'minecraft:diamond_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'

    # 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.

Recent Reviews

  1. 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!
  2. 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!
  3. 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!
  4. DeleteMetaInf
    DeleteMetaInf
    3/5,
    Version: 1.15.0
    No hunger feature. Other than that, it’s a great plugin, if not quite cheaty. I’d recommend giving VeinMiner permissions as a reward for ranking up (not donator ranks, though, due to the EULA).
    1. Choco
      Author's Response
      Permissions as a reward for ranking up is entirely supported but up to you to configure properly with your permissions plugin. The permissions are supplied (as indicated on the front page), just negate them from the default group and apply to any higher-tier groups.
  5. Stefanus
    Stefanus
    5/5,
    Version: 1.15.0
    Works great on my server! No errors and spam console. Thanks, keep it up!឵឵឵឵឵឵឵឵឵឵឵឵឵឵឵឵឵឵឵឵឵
  6. Kendyman
    Kendyman
    5/5,
    Version: 1.15.0
    Really good plugin. Only problem I'm having is that it doesn't seem to matter what I change the activation method to, it keeps defaulting to SNEAK. It's a minor detail that's greatly overshadowed by the good things this plugin offers plugin.
    1. Choco
      Author's Response
      Ah, damn. You're right. The default configuration is actually wrong. The config says "ActivationMode". If you were to change this to "ActivationStrategy", it will work as intended. Sorry about that. I'll fix it in a later version!

      Thank you for the kind words :)
  7. Sobsz
    Sobsz
    5/5,
    Version: 1.14.0
    the RepairFriendlyVeinminer setting doesn't seem to work, my tools break even though i have it set to true
    other than that it works pretty well, i like it
  8. stsguitar23
    stsguitar23
    2/5,
    Version: 1.14.0
    Players can still veinmine even if veinminer.veinmine.* is denied in permissions, making the permission useless

    I wanted to add this plugin as a reward for ranking up, but after installing it on my server everyone has the ability to veinmine, and there is no way to turn it off for everyone, short of going thru and asking everyone to do /vm toggle.

    There should be an option for it to default to off when a player joins, and they have to turn it on for it to work. Like someplugins will turn off /god and /fly when a player leaves the server.

    The veinmining works perfectly fine.
    1. Choco
      Author's Response
      This is an issue with your permission plugin or how you’re configuring it. You’re the only one of all 16.5k people who’ve downloaded this claiming there’s an issue, so I doubt it’s the fault of the plugin. Seek support in the Discussion thread or my Discord.
  9. Latrolltrolol
    Latrolltrolol
    5/5,
    Version: 1.14.0
    Really love this plugin always one of my top priorities if i was ever to host a private server
  10. Fizzelo
    Fizzelo
    5/5,
    Version: 1.14.0
    Does exactly what it says it does. You can test it on my server: connect.playasg.com (1.13.2)