VeinMiner 1.14.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
    Source Code:
    https://github.com/2008Choco/VeinMiner/
    [​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 configuration file
    <add> minecraft:block[state=value] - Add a block to the tools block list (block states - the data in the [] - are optional)
    <remove> minecraft:block[state=value] - Remove a block from the tools block list (block states - the data in the [] - are optional)
    <list> - List all blocks currently on this category's block 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 stone
    - /veinminer blocklist shovel remove dirt 1
    - /veinminer toggle axe
    - /veinminer pattern veinminer:default[/SIZE]​
    [​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​

    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]

    Code (YAML):
    MetricsEnabled: true
    ActivationMode
    : 'SNEAK' # The type of activation. Can be either "SNEAK" or "STAND"
    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
    DisabledWorlds
    : # A list of all worlds in which VeinMiner is disabled
    - WorldName

    # All tools may have optional tool templates which define a specific item for its category in order to use VeinMiner
    # All values for the template are optional. If not specified, it will not be checked.
    # How templates are checked is based on precedence. All possible precedences are as follows:

    # Precedence: GLOBAL - Only the global template is checked
    # Precedence: CATEGORY_SPECIFIC - Only the category-specific template is checked. If none, it defaults to VeinMiner's original behaviour
    # Precedence: CATEGORY_SPECIFIC_GLOBAL_DEFAULT - The category-specific template is checked first. If it doesn't match, the global template is then checked

    # An example of how to create templates is as follows
    ToolTemplates
    :
      Precedence
    : CATEGORY_SPECIFIC
      Global
    :
        Type
    : 'stone' <-- This type can be ANY type at all
        Name
    : "&6The VeinMining Stone" <-- Colour codes are supported
        Lore
    :
       - "Colours are supported in &8Lore as well!"
        - "Here is the second line of lore with &1colour!"
      Pickaxe
    :
        Type
    : 'diamond_pickaxe' <-- This type MUST be one of the tools defined by the Pickaxe category (i.e. wood, stone, gold, iron, etc. pickaxes)
        Name
    : "&cVeinMiner Pickaxe"

    Tools
    :
      Pickaxe
    :
        MaxVeinSize
    : 64 # The maximum size of a vein for this tool. (0 - size)
      Axe
    :
        MaxVeinSize
    : 64
      Shovel
    :
        MaxVeinSize
    : 64
      Hoe
    :
        MaxVeinSize
    : 64
      Shears
    :
        MaxVeinSize
    : 64
      Hand
    :
        InheritMaterialsFromAll
    : false # Whether blocks listed in "ALL" blocklist will be used for the hand or not

    BlockList
    :
      Pickaxe
    : # A list of all blocks vein mineable by a 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
    : # A list of all blocks vein mineable by an 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
    : # A list of all blocks vein mineable by a shovel
        - 'minecraft:sand'
        - 'minecraft:gravel'
      Hoe
    : # A list of all blocks vein mineable by a hoe
        - '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 vein mineable by 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
    : [] # A list of all blocks vein mineable by an empty hand
      All
    : # A list of all blocks vein mineable by all tools
        - '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'

    [​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. 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
  2. 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.
  3. 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
  4. 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)
  5. SkillAuraPvP123
    SkillAuraPvP123
    5/5,
    Version: 1.13.3
    Awesome. I've used it for a LONG time. Just one problem with it, but this isn't a bug report so still 5 stars: I can add blocks to hands, but when I veinmine them with my hands (with or without an item in the offhand) veinminer does not come into effect.
  6. JasonTorsiello
    JasonTorsiello
    5/5,
    Version: 1.13.3
    Hello, this plugin is amazing but it lags the crap out of my server, it makes my server freeze just by one person using it, is there a fix to this? My server should be capable of handling it as it handles slimefun and a bunch of other stuff.
    1. Choco
      Author's Response
      If you have Spigot, I'd be happy to see some timings of your server :) I'm not familiar with any lag in the plugin as I've optimized the living hell out of it. Send me a timings link in the discussion!
  7. DarkMonolith
    DarkMonolith
    5/5,
    Version: 1.13.3
    Great plugin! Is it possible to limit certain ores to different permissions? Say coal to default, gold to member, etc?
  8. Warlawk
    Warlawk
    5/5,
    Version: 1.13.3
    This is awesome! My life is better because of this plugin. Now if i can just figure out how to make it work for stone and dirt I can die a happy human.
  9. smaurine82
    smaurine82
    5/5,
    Version: 1.12.3
    This is amazing! I can't wait for the next update with more blocks supported. Is there anything I can read about how to configure the pattern used when mining?
    1. Choco
      Author's Response
      The next update should come either today or tomorrow, but all vanilla blocks should be supported. If you're running a modded server (i.e. Forge), you might as well just use portablejim's VeinMiner Forge mod instead.

      As for templates, this is more for developers to write not so much users. I don't personally plan on including any more patterns but if other developers want to write plugins that improve the VeinMiner API, they may use it and they will be shown in the "/veinminer pattern" command to be used by players if they so choose.
  10. Gorehid
    Gorehid
    5/5,
    Version: 1.12.0
    Well done on the 1.13 updates. The players on my server are enjoying the use of this plugin once more. Thank you for your efforts.
    1. Choco
      Author's Response
      You're very welcome :D I hope your players enjoy the plugin!