VeinMiner icon

VeinMiner -----

Minecraft Forge's VeinMiner recreated for Spigot servers.




Changes (Bukkit)
  • The player.block_interaction_range attribute added in Minecraft 1.20.5 is now supported by VeinMiner
    • Servers running versions where this attribute does not exist are still supported (for now!)
  • Updates to VeinMiner's extensive anti cheat support:
    • Added support for Negativity Anticheat (even though it's been abandoned)
    • Added support for Themis Anticheat (per request of @RainbowSheep__)
    • (#120) Fixed Light Anticheat support no longer being supported due to API changes
    • Dropped support for Grim Anticheat versions 2.3.58 and below
      • Grim 2.3.59 and above are now a requirement. More than 85% of VeinMiner users are already using it. Be sure you've updated as well!
  • (#117) Fixed RepairFriendly configuration option not working as expected
  • (#116) Fixed /veinminer reload not reloading the categories.yml file
See the GitHub release notes here
----------, Aug 28, 2024

Changes (Bukkit)
  • The player.block_interaction_range attribute added in Minecraft 1.20.5 is now supported by VeinMiner
    • Servers running versions where this attribute does not exist are still supported (for now!)
  • Updates to VeinMiner's extensive anti cheat support:
    • Added support for Negativity Anticheat (even though it's been abandoned)
    • Added support for Themis Anticheat (per request of @RainbowSheep__)
    • (#120) Fixed Light Anticheat support no longer being supported due to API changes
    • Dropped support for Grim Anticheat versions 2.3.58 and below
      • Grim 2.3.59 and above are now a requirement. More than 85% of VeinMiner users are already using it. Be sure you've updated as well!
  • (#117) Fixed RepairFriendly configuration option not working as expected
  • (#116) Fixed /veinminer reload not reloading the categories.yml file
See the GitHub release notes here
----------, Aug 28, 2024

Changes (Bukkit)
  • Added support for Grim Anti Cheat v2.3.59 and above. Versions below should also still work.
Sorry for any inconvenience, GrimAC recently made breaking changes to their API. This should support legacy and modern versions of GrimAC's API.
----------, Mar 2, 2024

Changes (Bukkit)
  • /veinminer giveitem will no longer display the NBT of the item that was given
  • Fixed CollectExperienceAtSource not working for 1.17 - 1.20.1
  • Fixed NoSuchMethodError when executing /veinminer giveitem with categories that require NBT
See the GitHub release notes here

I apologize for the many minor releases but some unexpected issues arose due to the extraction of the Networking library and removal of the common server module. Hopefully this will be the last release for 2.2.x!
----------, Feb 18, 2024

Changes (Bukkit)
  • Bump Networking to 0.0.2
  • Fix VeinMiner throwing a NoSuchFieldError on startup for 1.17 - 1.20.3 servers
  • Fix WorldGuard integration not working for 1.17 - 1.20.3 servers
See the GitHub release notes here
----------, Feb 18, 2024

Changes (Bukkit)
  • Bump Networking to 0.0.2
  • Fix VeinMiner throwing a NoSuchFieldError on startup for 1.17 - 1.20.3 servers
  • Fix WorldGuard integration not working for 1.17 - 1.20.3 servers
See the GitHub release notes here
----------, Feb 18, 2024

Changes (Bukkit)
  • Removed some legacy BlockFace code that was missed from the last update
  • Fix a NullPointerException in console when players without a /veinminer mode selected try to vein mine
See the GitHub release notes here
----------, Feb 17, 2024

This release includes some major codebase refactors, including a new standalone networking library (which, if you are a developer, you are able to now use for your own projects!), removal of server-sided platform abstraction, block lists being moved from the config.yml into the categories.yml, and so much more.

Changes (Bukkit)
  • Platform abstraction has been removed entirely, possibly improving server performance
  • Extracted the networking library into Networking
  • Block lists have moved from the config.yml file to the categories.yml file
    • It made no sense to have the block list be the only category-related setting not actually in the categories.yml, forcing configurations to have category ids defined twice, potentially causing misconfigurations, etc.
    • Existing config.yml and categories.yml files will be automatically migrated, you do not have to do anything!
    • The global RepairFriendly, MaxVeinSize, Cost, and DisabledWorlds still exist in the config.yml and still act as a default if not set in a category
  • The Hand category may now have its own separate configuration for RepairFriendly, MaxVeinSize, Cost, and DisabledWorlds like all other categories have
  • Categories with empty block lists are now registered, allowing for modification of the list in-game. An item list is still required, however (exception to Hand and All, which do not have item lists)
  • Added a CollectExperienceAtSource option in the config.yml to allow experience orbs to collect together at the source of a vein mine
    • This feature is similar to CollectItemsAtSource, only it collects experience dropped from blocks
    • This setting does not generate additional experience. It drops the exact same amount of experience as if a player mined each block individually
    • The setting will default to true for new configurations. When unset, it will default to the value of CollectItemsAtSource
  • Added OnlyDamageOnFirstBlock to prevent any damage calculations for any subsequent vein mined blocks
    • If set to true, damage calculations will only apply for the first block. For example, if you mine 64 blocks, your tool may only take up to 1 damage (but possibly 0 in the event it is enchanted with Unbreaking)
    • This setting will default to false as is the current behaviour of VeinMiner where damage calculations are applied to each block broken by vein miner. To better adhere to a vanilla style, false is recommended
  • Added /veinminer givetool <category> <item> [amount] to give the executing player a tool from the given category including all of its necessary data (namely, NBT)
    • This is a useful utility command for server administrators unsure how the NBT option works in the categories.yml. This will make the item for you rather than having to struggle with a complicated and otherwise undocumented /give command syntax
    • Permission: veinminer.command.givetool
  • Add better support for latest versions of AdvancedEnchantments and EcoEnchantments (thanks to @Auxilor @ThomasWega for their cooperation)
  • Renamed grass to short_grass in the default alias list (config.yml)
  • Reduced the default HungerModifier from 4.0 to 2.5, for a more forgiving hunger loss while vein mining
  • Optimized category NBT checking. No longer checks for items that don't have any NBT
  • Block list and other configuration parsing now uses the warning log level instead of info for visibility
  • Fixed the default pattern not correctly breaking blocks up to max size, especially apparent in non-cubic shapes
  • Fixed /veinminer import not correctly checking for permissions
  • Fixed /blocklist not correctly saving wildcard (*) entries to the config.yml
  • (#102) Fixed wildcard (*) block lists breaking all nearby blocks, even if they don't match the original one that was broken (e.g. breaking leaves, but leaves, logs, and even air being broken as well instead of just other leaves)
  • (#93) Fixed block break order being unpredictable, resulting in strange break patterns when vein mining with low tool durability
  • (GC-spigot/AdvancedEnchantments#3586) Fixed crash with AdvancedEnchantments' enchantments that perform block breaks
  • Fixed the All block list not working as expected (or at all, for that matter)
  • Fixed economy support failing based on load order of economy plugins. Economies are now lazily initialized. You will receive a warning in the console the first time a player vein mines if an economy plugin is not present but a Cost is set
Change (Bukkit, Developers)
So much of VeinMiner's codebase changed in this update that the likelihood of your extensions or API-reliant plugins being broken is extremely high. You will likely need to update any plugins that depend on VeinMiner. For the most part, anything that was previously an abstract platform type is now a Bukkit type.

Changes (Fabric)
This version of Fabric does not contain any protocol changes and is still compatible with old versions of VeinMiner. Updating just gets you some nice bug fixes!
  • Extracted the networking library into Networking
  • Vein mining wireframes will now update if the block at which the client is looking changes, usually by way of /setblock or silverfish leaving infested stone
    • e.g. the block changes from minecraft:diamond_ore to minecraft:stone, which by default would mean the client can no longer vein mine
  • Increased the scale of the pattern selection wheel by 10% for readability
  • Added a profiling section for wireframe rendering
  • Reduced the amount of stack transformations made when rendering the pattern selection wheel
  • Fixed HUD elements not rendering in a dev environment
  • Fixed the pattern wheel's fade in & out animation flickering on occasion
  • (#103) Fixed rare NullPointerException crash due to invalid pattern selection from the server
See the GitHub release notes here.

General News
I've finally enabled GitHub Sponsors! I've provided VeinMiner for free to the community for nearly 10 years, and in that time I've accrued some expenses, specifically for servers, domains, and SSL certificates to host my development server. While a donation nor sponsorship is required, I would greatly appreciate the support and you can now do so on my sponsor page. Thank you for sticking with me for this long enjoy this update! There's more to come!
----------, Feb 17, 2024

Changes (Bukkit)
  • (#98) Added missing 1.20 cherry logs, wood, and leaves to the appropriate default block lists
  • Added minecraft:red_sand to the default shovel block list
  • (#101) Consider NBT tag when items are in multiple categories
  • Further improved how NBT is checked for categories with a lower priority and no NBT declared
  • (#97) Fixed NullPointerException when mining in worlds with WorldGuard disabled
  • Fixed bStats misreporting 'Vein Mined Materials'
Changes (Bukkit, Developers)
  • Deprecated ToolCategoryRegistry#get(ItemType) and #get(ItemType, Predicate) in favour of #get(ItemStack) and #get(ItemStack, Predicate)
Contributors:
- DreamyLynn on GitHub (PR #101)
- artel on GitHub (PR #98)

See the GitHub release notes here.
----------, Aug 25, 2023

Changes
  • Java 17 is now required to run VeinMiner. This should not affect most people (although servers running Minecraft 1.17.x should double check that they are running Java 17, not the minimum required Java 16)
  • Remove legacy client protocol support
    • The initial promise with the release of VeinMiner 2.0.0 was to remove this protocol once more than 50% of servers have migrated. Today, nearly 90% of servers are running VeinMiner 2.0.0.
  • PlaceholderAPI placeholders are now shown in /papi info veinminer
  • (#94) Fixed infrequent java.lang.IllegalArgumentException: Unknown GameMode with id "SURVIVAL" in console
Changes (Developers)
  • Added wtf.choco.veinminer.platform.BukkitAdapter to assist in converting from VeinMiner's platform types to Bukkit equivalents (and vice versa)
  • Added ItemType#isAir() for convenience
  • Added VeinMinerPlayer#sendMessage(PluginMessage<ClientboundPluginMessageListener>) to more conveniently send clientbound protocol messages to players
  • Removed ServerCommandRegistry. Behaviour has been moved to ServerPlatform#registerCommand()
  • Removed VeinMiner.PROTOCOL_LEGACY
  • Renamed CommandExecutor to Command
VeinMiner Companion Mod (Fabric): https://curseforge.com/minecraft/mc-mods/veinminer-companion/files/4612085
----------, Jun 27, 2023

New default config: https://github.com/2008Choco/VeinMiner/blob/master/veinminer-bukkit/src/main/resources/config.yml
VeinMiner Companion mod (Fabric): https://www.curseforge.com/minecraft/mc-mods/veinminer-companion

IMPORTANT
VeinMiner 2.0.0 provides support for SQLite and MySQL databases in addition to JSON. VeinMiner has used JSON since persistent player data was introduced, but with the 2.0.0 update, SQLite has become the new server default. While you may change this to use JSON, it is strongly advised to use SQLite instead as it is a more performant and condensed means of storing player data.

When installing VeinMiner 2.0.0, if you do not want to continue using JSON (again, SQLite is now the default), you will have to start your server with 2.0.0 installed and run the /veinminer import command. After explaining what it will do, it will ask you to run this command again to confirm. This will not delete your old JSON files, only import them into the SQLite database (or MySQL if you changed it to use that instead). You will only ever need to do this process one time. After initial installation, you should never have to run the import command again.

If you wish to continue to use JSON data storage, refer to this post for information:
https://www.spigotmc.org/threads/veinminer.91093/page-18#post-4461899

Importantly, the import command only imports from JSON -> SQLite or MySQL. It DOES NOT support SQLite/MySQL -> JSON.

TL;DR:
  • When installing 2.0.0, start your server and run /veinminer import
  • Read what the command tells you, then run /veinminer import a second time to confirm
  • (Optionally) delete your playerdata directory as it is no longer necessary. Though it's advised to keep as a backup just in case :)
Changes (Bukkit)
  • Updated the minimum Java version to Java 16
    • If you are running your own server on your own machine, make sure you update your version of Java
    • If you are using a host running Minecraft 1.17 or above, you should already be on Java 16
  • Dropped support for Minecraft 1.13.x - 1.16.x. VeinMiner now supports only Minecraft 1.17.x and above
  • Added /blocklist command for convenience. Arguments identical to /veinminer blocklist
  • Added /toollist command for convenience. Arguments identical to /veinminer toollist
  • Added support for different types of persistent storage, MySQL and SQLite, for those that don't want a folder filled with JSON or want to share player settings between servers
    • New configuration options to assist in configuring SQL servers
    • SQLite is the new default means of data storage, which should ultimately be faster than JSON
    • A new /veinminer import command was added which will automatically import data from the JSON files to SQLite or MySQL if you choose to no longer use JSON. If you decide to change the default Storage setting to JSON, you do not need to run this command. See above for details on import/migration.
  • Added new vein mining patterns:
    • veinminer:tunnel: Mine a 3x3 tunnel in the direction of the block broken
    • veinminer:staircase_up: Mine an upwards 1x3 staircase in the direction of the block broken
    • veinminer:staircase_down: Mine a downwards 1x3 staircase in the direction of the block broken
    • Players may now once again select their own vein mining patterns. This is not a global option anymore. It is per-player.
  • Added permission nodes for each pattern. All default to true, but if revoked, players may not select the pattern with /veinminer pattern
    • veinminer.pattern.default
    • veinminer.pattern.tunnel
    • veinminer.pattern.staircase_up
    • veinminer.pattern.staircase_down
  • Categories may now define 2 new optional settings
    • NBT: A string that is required on an item in the category for the category to be used. The NBT key will be located at PublicBukkitValues: { "veinminer:veinminer": "TheValueInTheConfig" }. Defaults to no NBT tag
    • Priority: An integer determining what priority a category has over another. Higher numbers will be selected over categories with lower priorities. Useful if more than one category defines an item of the same type. Defaults to 0
  • Replaced all configuration options under Client with new options to support new client functionality
    • Client.AllowActivationKeybind: Determines whether or not clients are allowed to activate vein miner with a key bind
    • Client.AllowPatternSwitchingKeybind: Determines whether or not clients are allowed to switch patterns with a key bind
    • Client.AllowWireframeRendering: Determines whether or not clients will draw a wireframe around blocks to be vein mined
  • Added permission nodes (that default to nobody) for each of the above settings. If a player has any of these permission nodes, they will override the config option
    • veinminer.client.activation: Is allowed to use the keybind
    • veinminer.client.patterns: Is allowed to switch patterns with a keybind
    • veinminer.client.wireframe: Is allowed to render a wireframe around blocks
  • Added support for LightAntiCheat
  • Added support for Grim anti cheat
  • Added new PlaceholderAPI placeholders:
    • %veinminer_vein_mining%: "true" or "false" depending on whether or not the player is currently vein mining. Only true for a brief moment in time
    • %veinminer_using_client_mod%: "true" or "false" depending on whether or not the player is using the client mod
    • %veinminer_selected_pattern%: The key of the player's selected vein mining pattern
    • %veinminer_activation_strategy%: The name of the player's selected method of activation ("Sneak", "Client", "Always", etc.)
  • Added new default blocks in the following categories:
    • Axe
      • minecraft:mangrove_log
      • minecraft:mangrove_roots
      • minecraft:mangrove_wood
    • Shovel
      • minecraft:clay
      • minecraft:mud
      • minecraft:muddy_mangrove_roots
    • Hoe
      • minecraft:sculk
      • minecraft:sculk_vein
    • Sheers
      • minecraft:mangrove_leaves
  • Added new default alias for mangrove logs and wood
  • Improved and standardized command feedback
  • Improved console feedback on startup for categories and potential errors in configuration files
  • Optimized the performance of vein mining when hunger was enabled
  • Optimized the update check on startup
  • Shuffled around permission nodes. IMPORTANT. UPDATE YOUR PERMISSIONS
    • Renamed veinminer.reload -> veinminer.command.reload
    • Renamed veinminer.toggle -> veinminer.command.toggle
    • Renamed veinminer.blocklist.* -> veinminer.command.blocklist
    • Renamed veinminer.toollist.* -> veinminer.command.toollist
    • Renamed veinminer.mode -> veinminer.command.mode
    • Added veinminer.command.pattern
    • Removed veinminer.blocklist.* and all child permissions
    • Removed veinminer.toollist.* and all child permissions
    • Removed veinminer.client.reminded
    • veinminer.free.hunger and veinminer.free.economy no longer default to op players. They are disabled by default and must be explicitly set
  • Removed the message on join suggesting downloading the client mod (and all related configuration options). This was seen as annoying to most. A download link is now only shown when /veinminer mode client is run
  • Removed Name and Lore settings from categories and items in categories. Replaced with the new NBT setting
  • Removed SortBlocklistAlphabetically setting. Block list sorting is now done alphabetically automatically
  • Removed IncludeEdges setting. No longer relevant in modern vein miner and served no purpose other than to confuse server owners
  • Removed the default MaxVeinSize: 64 declaration for all categories as they all overrode the global setting, which could be confusing for new installs
  • Replaced VeinMiningPattern setting with DefaultVeinMiningPattern which will be used as the default pattern for players that have not explicitly set one with /veinminer pattern. Defaults to veinminer:default
  • Replaced RepairFriendlyVeinminer with RepairFriendly
  • Aliases entries are now delimited by ; rather than ,, as the latter can be used by block states
  • Fixed inaccurate support for world protection plugins. Plugins like WorldGuard, GriefPrevention, Residence, etc. should be better supported natively now
  • Fixed being able to declare a Hand category in the categories.yml. VeinMiner will now ignore it and log a warning in console
  • Fixed players being marked as dirty despite not having their state change at all
  • (#77) Fixed /veinminer toggle not disabling specific tools if another tool was already disabled
Changes (Bukkit, Developers)
  • Completely restructured the project to abstract out concepts shared across server and client
  • All players now have permanent Metadata keys that all evaluate to boolean,
    • veinminer:vein_mining: Whether or not a player is currently vein mining (breaking blocks as a result of vein miner
    • veinminer:vein_miner_active: Whether or not a player has vein miner active and primed for use (e.g. holding sneak, or pressing the client button)
  • Added a new PlayerVeinMiningPatternChangeEvent called when a player changes vein mining patterns either from the client or by command
  • Existing API events have been moved from wtf.choco.veinminer.api.event to wtf.choco.veinminer.api.event.player
  • PlayerVeinMineEvent#getBlock() now returns the Block that triggered the vein mine. The VeinMinerBlock may be retrieved from getVeinMinerBlock() instead
  • Redesigned VeinMinerPlayer to act as the governing entity between client mod and server communication. Anything pertaining to the client mod is now handled more appropriately through instances of VeinMinerPlayer.
  • Replaced all instances of the vein miner protocol with a new standardized, platform-independent network implementation under VeinMiner.PROTOCOL. Messages may be sent to a VeinMinerPlayer instance.
  • VeinMiningPattern has had some redesigns given new platform-independent class types. Refer to your IDE if you intend on implementing a pattern and update accordingly
    • Additionally, added a new default method, VeinMiningPattern#getPermission(), to determine a required permission node to use the pattern
  • BlockList methods have been renamed and clarified/simplified
  • VeinBlock was renamed to VeinMinerBlock and had its methods renamed and clarified/simplified
    • Consequently, VeinBlockState -> VeinMinerBlockState, VeinBlockMaterial -> VeinMinerBlockType, VeinBlockWildcard -> VeinMinerBlockWildcard
  • Removed AntiCheatHook#getPluginName() and #getPlugin()
  • Removed instances of AlgorithmConfig from EconomyModifier, replaced with a simple double where appropriate.
  • Renamed EconomyModifier#charge() to #withdraw()
  • Refreshed and revisited all Javadoc comments and nullability annotations to be as accurate as possible
As a general note, VeinMiner is now hosted on a personal repository! If you want to make use of VeinMiner's API, you will have to use the following repositories and artifacts:
Code (XML):
<repositories>
  <repository>
    <id>choco-repository </id>
    <url>http://repo.choco.wtf/releases </url> <!-- You can also use snapshots, but releases are made in the releases repo -->
  </repository>
</repositories>

<dependencies>
  <dependency>
    <groupId>wtf.choco </groupId>
    <artifactId>veinminer-bukkit </artifactId>
    <version>2.0.0 </version> <!-- If you wish to use a SNAPSHOT version, append -SNAPSHOT to the version -->
    <scope>provided </scope>
  </dependency>
</dependencies>
Code (Groovy):
repositories {
    // See Maven configuration above for snapshot releases
   maven { url "http://repo.choco.wtf/releases" ; allowInsecureProtocol = true } // Gradle requires "allowInsecureProtocol" for http URLs. This repo will be secured with SSL in the future
}

dependencies {
   compileOnly "wtf.choco:veinminer-bukkit:2.0.0"
}
Changes (Fabric)
  • The client-sided mod has been renamed from veinminer4bukkit to veinminer-companion and relocated on CurseForge accordingly
  • Blocks to be vein mined will now be outlined with a wireframe while the activation button is pressed.
( https://i.imgur.com/ggH99RV.gif)
  • Added new key binds to change vein mining patterns
    • ]: Moves to the next pattern
    • [: Moves to the previous pattern
    • Press the keys once to see which pattern is currently enabled. Press again while the patterns are visible (in the top left) to switch to a new pattern.
[​IMG]
( https://i.imgur.com/FuiSNFT.gif)
  • The vein miner icon will no longer appear on your crosshair if on a server that does not have vein miner installed, or in single player
    • NOTE: This will be a feature in a later version of VeinMiner. Due to legacy support, this feature is not yet available and will still display even when VeinMiner is not installed
  • Fixed VeinMiner allowing to be loaded on the server but erroring on startup. It will no longer attempt to load on the server at all
Changes (Fabric, Developers)
  • The Fabric development environment now uses official Mojang mappings
While there is no great VeinMiner Companion API yet, the .jar can still be depended on in the public Choco repository.
Code (Groovy):
repositories {
    // See Maven configuration above for snapshot releases
   maven { url "http://repo.choco.wtf/releases" ; allowInsecureProtocol = true } // Gradle requires "allowInsecureProtocol" for http URLs. This repo will be secured with SSL in the future
}

dependencies {
   compileOnly "wtf.choco:veinminer-fabric:2.0.0"
}
Changes (General)
  • VeinMiner's protocol is entirely documented on the new VeinMiner wiki on GitHub
  • VeinMiner now comes packaged with a command line utility to generate documentation for its protocol. This is not expected to be used anywhere outside of development for updating the protocol wiki, but is available should you choose to use it
Closing Notes
VeinMiner went through a lot of changes in this 2.0.0 update that I hope many of you appreciate. I understand that this is a massive upgrade and will inevitably break a lot of configuration files, but this is extremely important in the long-haul. This is the nature of a major version bump such as this. VeinMiner has been mostly forwards-compatible for 7 years under the 1.x version scheme, and now it's time to break that compatibility. If you are at all struggling to update, please come visit me on my support Discord where I will be helping you upgrade if you are having issues.

Additionally, while players with the old VeinMiner4Bukkit mod will be unable to use a keybind on your server should you choose to update to 2.0.0 (they must have VeinMiner Companion), players with the VeinMiner Companion mod will still be able to join your server and use the activation keybind on servers still running VeinMiner 1.17.10. The client mod does have legacy support which will be removed in the future (once 50% of the userbase has migrated to 2.0.0), but until then, your players should still be able to join despite wanting to update their client mods.

Thank you for all the support. VeinMiner has received a cumulative 200,000 downloads on SpigotMC alone and I'm forever grateful. This update alone consisted of 8 months of work and 22,500 lines of code changed. I am a different developer now than I was 7 years ago and this ground-up rewrite represents the improvements I've made in that time.

You do not have to, but if you wish to support me and the effort I put into making these updates, you may donate to me on PayPal. It does not have to be a lot and my updates will always be free, but even a small amount of support is very, very appreciated.
----------, Aug 8, 2022

This update brings no additional features to VeinMiner. This is an identical version to release 1.17.10 and is tagged with the exact same version string. This update exists solely to support one-click-install web panels such as Aternos' plugin manager.

Future updates beyond this point will follow suit and also be direct downloads rather than directing to GitHub, however releases will still be made on GitHub and will continue to be a secure means of obtaining VeinMiner with attached source code, and VeinMiner4Bukkit, the Fabric client-sided mod.
----------, May 3, 2022

Changelog
  • (#67) PlaceholderAPI support. Added new placeholders (credit to @Glare)
    • %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)
  • (#74) Added NONE as an option for DefaultActivationStrategy. VeinMiner will never active in this case
  • (#73) Fixed AntiAura failing to integrate on modern versions
  • (#71) Fixed 1.17.1 servers failing to startup properly due to legacy support
VeinMiner4Bukkit (Fabric client side mod) has been updated to support 1.18.1. Download it here or on the GitHub release page.

While VeinMiner for Fabric is compiled against Java 17 to comply with Minecraft 1.18's required version of Java, VeinMiner for Bukkit (the server plugin) is still compiled against Java 8. This may not be the case in the future. It is advised that you update your version of Java to at least Java 16 if you have not already as VeinMiner will soon use it as the minimum version.
----------, Dec 12, 2021

IF YOU HAVE ISSUES RUNNING VEINMINER ON 1.17, UPDATE YOUR SERVER!!! VeinMiner works on 1.17 but uses API added a few versions after initial release. If you are with a server host, open a ticket and request that they update their server software.

Changelog
  • Re-fix the reverted fix for Matrix API (oops)
  • Fix typo in default configuration for powder_snow
  • Add deepslate_redstone_ore to the default pickaxe configuration
VeinMiner4Bukkit (Fabric client side mod) has been updated to support 1.17. Download it here or on the GitHub release page.
----------, Jun 30, 2021

Changelog
  • The default config.yml blocklist is now alphabetically sorted
  • Added support for 1.17 (still supports 1.13.x - 1.16.x) (#59)
  • Added new 1.17 blocks to the default config.yml:
    • Pickaxe:
      • minecraft:amethyst_cluster
      • 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:raw_copper_block
      • minecraft:raw_gold_block
      • minecraft:raw_iron_block
    • Shovel:
      • minecraft:snow
      • minecraft:powdered_snow
    • Hoe
      • minecraft:moss_block
      • minecraft:moss_carpet
    • Shears
      • minecraft:azalea_leaves
      • minecraft:flowering_azalea_leaves
----------, Jun 13, 2021

Changelog
  • Fixed inaccurate plugin version (#57)
  • Fixed incompatibility with Matrix 6.0. Support for Matrix 5.0 was dropped.
----------, Jun 3, 2021

Changelog
  • Adjusted the build scripts for VeinMiner. Developers should find it more convenient to contribute, build and test
  • Fixed false flags and violations with AntiAura
----------, Mar 13, 2021

Changelog
  • Added VeinMiningPattern configuration option to set the vein mining pattern. This can be used in unison with custom VeinMiner addons wanting to write custom mining patterns
    • For regular vein miner users, it is recommended that this value remain untouched
  • Added a few missing blocks to the default block lists and aliases:
    • minecraft:crimson_hyphae and minecraft:warped_hyphae were added to the Axe block list
    • minecraft:soul_sand and minecraft:soul_soil were added to the Shovel block list
    • minecraft:crimson_stem and minecraft:crimson_hyphae are now aliased
    • minecraft:warped_stem and minecraft:warped_hyphae are now aliased
  • Update bStats from 1.7 to 2.2.1
  • Installed anti cheats and their versions are now sent to bStats
    • This data, like all other collected data, is anonymous and transparently collected at https://bstats.org/plugin/bukkit/VeinMiner/
    • If this makes you feel uncomfortable and you wish to disable bStats, you may do so in the config.yml by setting MetricsEnabled to false
    • I ask that you leave metrics enabled. These stats help me determine where to focus my support for VeinMiner
  • Improved tab completion for /veinminer pattern. The veinminer: namespace is now optional
  • Improved invalid input for pattern ids passed to /veinminer pattern
  • Fixed /veinminer pattern not persisting across restarts
  • Fixed false flags with Matrix anti cheat
  • Fixed errors on startup when McMMO Classic is installed (#55)
    • McMMO Classic is not supported and NerfMcMMO will not work - consider updating when possible.
----------, Feb 18, 2021

Changelog
  • Added NerfMcMMO config option (default false) to only grant mining experience for the first block mined when using VeinMiner
  • Added veinminer.client.reminded permission node, default to nobody. Players with this permission node will not receive the client mod reminder message
    • This is added mostly for admins/staff that don't intend on playing the server. Grant this permission to those groups and the message will not be sent
  • The default DisallowedMessage and SuggestionMessage options are now a little less wordy/annoying/intrusive
  • Players that join with the client mod are now automatically set to /veinminer mode client
  • Players trying to use /veinminer mode client without the mod installed will now be prompted to install the mod
  • /veinminer mode will no longer tab complete client if AllowClientActivation is set to false
VeinMiner4Bukkit is still supported by this version of VeinMiner. No changes to the protocol were made
----------, Feb 11, 2021

Changelog
  • Fix incompatibilities with downstream forks of NCP (i.e. Updated-NCP)
  • Fix first-time startup of VeinMiner not loading block lists properly and requiring either a restart or /veinminer reload
  • Fix a potential security vulnerability. Players with custom/hacked clients attempting to abuse the VeinMiner client mod channel will now be kicked for illegal packets
----------, Feb 9, 2021

Changelog
  • Fix more false flags with NoCheatPlus (hopefully they should now all be covered)
  • Fix the inaccurate/missing plugin description
(VeinMiner4Bukkit - Fabric does not need an update. Latest version is supported, no protocol changes were made)
----------, Feb 1, 2021

Changelog
  • Added CollectItemsAtSource configuration option to set whether items should be collected at the source block of a vein mine. Enabled by default
  • Fix integration with NCP false flagging players using vein miner
Fabric Changelog
  • (#54) Fix UI elements from other mods being darkened when VeinMiner was activated
VeinMiner4Bukkit release: https://www.curseforge.com/minecraft/mc-mods/veinminer4bukkit/files/3188262
Mirror download attached to the GitHub release
----------, Jan 31, 2021

Overview

CUSTOM KEYBINDS ARE HERE!!! Kind of... A brief explanation of VeinMiner is that it's an exclusively server-sided mod (appropriately named, plugin. As are all other Bukkit plugins). The client, unfortunately, does not send the server information about what keys are pressed, only that an action has occurred as a result of a key press. Therefore, custom keybinds for VeinMiner were impossible. However, that does not stop users from installing an OPTIONAL client-sided mod to allow for that functionality, so that's what this update includes!

Changelog
  • Added support for VeinMiner4Bukkit to allow custom keybinds from an optional Fabric mod
  • Added a new activation mode, /veinminer mode client
  • Added DefaultActivationStrategy to the config file to set the default activation strategy when a player joins and has not yet explicitly set one. Defaults to SNEAK
  • Added numerous configuration options for client-exclusive functionality:
    • Client.AllowClientActivation: true - Whether or not VeinMiner4Bukkit can be used on the server
    • Client.DisallowedMessage: [] - The message(s) to send if the client has VeinMiner4Bukkit installed but AllowClientActivation is set to false
    • Client.SuggestClientModPeriod: "1d" - The time period when a player should be reminded... i.e. only reminded every 1 day. (format: 1w2d3h4m5s, weeks, days, hours, minutes, seconds respectively). Set to -1 to not remind the player.
    • Client.SuggestionMessage: [] - The message(s) to send to remind the player of the client mod
  • Added DisabledGameModes configuration option to set which game modes should not be allowed to vein mine. Defaults to creative and spectator mode.
    • Consequently, fixes being unable to vein mine in adventure mode
  • Added support for wildcard blocks in blocklists. Adding * to a blocklist will now allow you to vein mine any block or block state. States are ignored while vein mining, it's equivalent to a stateless block.
API
  • Add PlayerClientActivateVeinMinerEvent called when a player's keybind has been pressed or released. This event is only called if the client-sided mod is installed and may be cancelled

Fabric Mod

[​IMG]

Your users now have the option to install a client-sided Fabric mod to activate VeinMiner on your server. This is harmless and no different than sneak activation, only it allows clients to configure the button themselves. Do not fret, this mod is optional and not required to use VeinMiner on your server. You may suggest that your players install it with Fabric, or instead you may let them use VeinMiner as they have been for the last 5 or so years this plugin has existed.

You may find the VeinMiner4Bukkit Fabric mod here:
https://www.curseforge.com/minecraft/mc-mods/veinminer4bukkit
----------, Jan 23, 2021

  • Use SpigotMC's official web API to check for plugin updates
  • Fix incompatibilities (ConcurrentModificationException) with numerous mining-related plugins such as AdvancedEnchantments
----------, Dec 19, 2020

This is a minor release dropping support for AAC 4 and moving instead to AAC 5. If you use Advanced AntiCheat and have not yet updated, please do so before updating to this version of VeinMiner.
  • Update AAC support from 4.x to 5.x (#48 - @konsolas)
  • Improve readability of some command output
  • Fix block lists not being loaded on first install of VeinMiner
----------, Dec 15, 2020

  • Add WorldGuard flag, veinminer, to change whether or not VeinMiner can be used in a region
    • Permission is still required to use VeinMiner regardless of whether or not the flag is set to ALLOW
  • Fix IllegalArgumentException on startup for first-time users
----------, Nov 24, 2020

  • Add native support for Matrix anti cheat. Should no longer receive false flags for fast break
  • Update various anti cheat dependencies
    • Developers: VeinMiner's pom.xml has been cleaned up significantly! It should make contributions much easier
  • Improve and make consistent the anti cheat integration. Should prevent any edge cases
  • Fix various configuration options not working as intended (MaxVeinSize, RepairFriendlyVeinminer, IncludeEdges, Cost and DisabledWorlds)
  • Fix player's preferences not being saved to file if the server was stopped or reloaded
  • Fix /veinminer reload not properly reloading categories or blocklists
----------, Aug 20, 2020

  • Update bStats from 1.5 -> 1.7
  • Fixed the /veinminer toggle tab completion using the veinminer.reload permission instead of veinminer.toggle (was hot-fixed into 1.16.0, but still worth noting here for those that didn't download it)
  • Fix IncludeEdges not being recognized at the tool template configuration level
  • Fix /veinminer blocklist <category> list not alphabetically sorting block states
  • API Changes:
    • Add PlayerVeinMineEvent#getItem() to get the tool used to vein mine (can be null)
    • Add nullability annotations where they were previously missing
----------, Aug 19, 2020

  • Added 1.16 blocks and items to their respective default block and tool lists
  • Added configuration options to exhaust the player while vein mining. This is enabled by default at a factor of 4 (this seemed most balanced while testing)
  • Added /veinminer mode command to change, per-player, how VeinMiner should activate
    • Consequently, the ActivationStrategy configuration option has been removed as this is now per-player.
    • Permission for this command is veinminer.mode, default to all players
  • All player-specific data is now written to file and loaded when necessary. It will save across restarts (things such as whether or not vein miner was toggled on/off or what mode they are in)
  • Changed slightly the permission structure:
    • Removed veinminer.free - It has been replaced with...
    • Added veinminer.free.economy - Exempts players from the economic cost of VeinMiner
    • Added veinminer.free.hunger - Exempts players from the hunger cost of VeinMiner
    • Added veinminer.free.* to encompass both aforementioned permissions. All default to false
  • Reworked project internals to improve ease of use for developers and slightly increase the performance of vein mining
  • Fixed the veinminer.toollist.list.<category> permission node not working
  • Fixed dynamic (custom) veinminer.veinmine.<category> permission nodes being given to op players rather than all players by default
  • Fixed RepairFriendlyVeinminer not working properly
  • Fixed many, MANY inconsistent, outdated and/or incorrect messages throughout the project
  • Removed the VeinMiner prefix and better formatted the plugin's chat messages
  • API Changes:
    • Removed the Chat utility class
    • Reworked the AlgorithmConfig class almost entirely to be more performant, compact and easier to work with
    • Removed protected access from methods and fields in BlockCache. These are not meant to be public-facing API
    • Removed BlockAllocator and VeinMiningPattern#createNewPattern(). The former's method was moved to VeinMiningPattern instead
    • VMPlayerData has been renamed to PlayerPreferences
----------, Aug 5, 2020

  • /veinminer blocklist <category> <add/remove> and /veinminer toollist <category> <add/remove> now accept an arbitrary amount of items
    • Example: /veinminer blocklist pickaxe add coal_ore minecraft:iron_ore diamond_ore minecraft:gold_ore is now valid and will add all four blocks to the list
  • Veinmining patterns are now global and assignable by a server operator (as opposed to per-player which caused confusion)
    • It is still recommended that you remain on the default pattern. This change merely restricts access to pattern changing functionality to avoid unnecessary confusion or player-sourced server lag
    • As such, veinminer.pattern's default permission level has been changed from true to op. It is advised that you revoke this permission from players if you had explicitly given it before through your permission plugin. This is an operator permission node
    • API: Consequently, PlayerSwitchPatternEvent has been removed from the API
  • (#36) Fix the first call of BlockBreakEvent being ignored causing incompatibility with other plugins
  • (#37) Fix ActivationMode not being changed to ActivationStrategy based on the change from a previous update.
    • This will not affect any current configuration files, only the default. Therefore if you have it set to ActivationMode, please change it accordingly!
  • Fix player names being tab completed under certain conditions when not necessary
  • Fix the hand category being suggested as a tab completion for /veinminer toollist despite not being editable
  • Fix /veinminer blocklist <category> <add/remove> and /veinminer toollist <category> <add/remove> not suggesting tab completions for valid blocks and items respectively
    • Tab completion for these subcommands is now much smarter!
----------, Jun 12, 2020

  • Added support for Bukkit 1.15.x
    • This build still supports 1.13.x and 1.14.x
  • Added a categories.yml file to allow users to create custom tool categories each with their own changeable set of tools in each category. Want to use a dirt block as a pickaxe? You can do that now!
    • Permission nodes for these categories are dynamic.
    • veinminer.veinmine.<category_id> will allow players to veinmine using that category
    • veinminer.blocklist.list.<category_id> will allow players to list blocks in that tool category
    • veinminer.toollist.list.<category_id> will allow players to list tools in that tool category
  • Added a /veinminer toollist subcommand to help manage tool lists from in-game. Permissions are as follows:
    • veinminer.toollist.add will allow players to add tools to a tool category. Defaults to op
    • veinminer.toollist.remove will allow players to remove tools from a tool category. Defaults to op
    • veinminer.toollist.list.* will allow players to list all tools in a tool category. Defaults to op
  • Removed the "tool template" configuration option and instead support them directly in the categories.yml. An example may be found below for how to declare a more specific item
  • Added a configuration option, "Cost", to make vein mining cost money when Vault and an economy plugin is installed. This is entirely optional. If not present or set to 0, it will remain free as is the default.
  • Configuration options may be specified either at the root level (in the config.yml), in a tool category (in the categories.yml) or in the item itself. Options declared at that level will override its parent. The following options make use of this functionality
    • RepairFriendlyVeinminer
    • IncludeEdges
    • MaxVeinSize
    • Cost
    • DisabledWorlds
  • API:
    • VeinMiningPattern now extends BlockAllocator to reduce duplicate code. This will break any existing patterns
    • NonNullHashSet now throws NullPointerExceptions, not IllegalStateExceptions
    • VeinBlock now extends Comparable
    • Almost anything tool related is now handled in the wtf.choco.veinminer.tool package. Seriously... there's way too much changed to list.
  • Removed various over-complicated bits of code (may slightly improves performance) (Thank you WI5E - 5fe1f2, 4a7be2)
  • Numerous bits of code cleanup and improved code practices
  • Fixed the hand category not being recognized by VeinMiner
  • Fixed an empty list being displayed when a blocklist was empty. It will now explicitly tell the user that the list is empty
  • Fixed the expansive (default) pattern mining one block more than the maximum vein size specified
Example of categories.yml with a custom category:

Code (YAML):
ExampleCategory:
  MaxVeinSize
: 10
  Items
:
 - 'minecraft:torch'
  - 'minecraft:redstone_torch'
:
    Name
: "&6My Cool Torch!"
    Lore
:
   - "First line!"
    - "&5Second line!"
  - 'minecraft:potato'
:
    Name
: "&8Special item!"
    MaxVeinSize
: 128
    IncludeEdges
: false
----------, Jan 11, 2020

  • Added support for Minecraft 1.14
    • This build still supports Minecraft 1.13.x
  • Improve the speed of anti-cheat support while vein mining
  • Fixed a NoClassDefFoundException for Minecraft 1.14
  • Fixed a NullPointerException thrown when the BlockList was not present in the configuration file
  • Fixed a NullPointerException for unlisted types while vein mining
  • Fixed an edge-case NullPointerException while checking tool templates
  • Update all dependencies (anti cheats, bStats, etc.) to more recent versions
    • AntiAura 11.42 -> 11.56
    • Advanced AntiCheat 1.9.10 -> 3.6.4
    • Spartan API b222 -> b223
    • bStats 1.3 -> 1.4
  • API Changes:
    • VeinMiner#registerAntiCheatHook()` now returns a boolean determining success rather than throwing an exception
    • Added nullability annotations to all methods and arguments
----------, Apr 30, 2019

  • Added support for Spartan anti-cheat as its popularity rises
  • Added a console message when a supported anti-cheat was recognized by VeinMiner (and improved hook registration in general)
    • Minor note for developers: VeinMiner#registerAntiCheatHook() now throws an IllegalStateException rather than an IllegalArgumentException when registering an existing anti-cheat hook.
  • Improved the accuracy of AntiAura's anti-cheat hook. Should no longer accidentally unexempt players who were exempted prior to vein mining
  • Fixed NoCheatPlus support not functioning as intended
  • Fixed an edge-case NullPointerException for misconfigured/non-existent block lists
  • Better validate players to ensure dead players cannot vein mine
----------, Feb 13, 2019

  • Added a new vein mining pattern, veinminer:expansive
    • This pattern is exponentially more efficient as it does not recursively check blocks that have already been checked. As such, this pattern is the new default
    • The veinminer:default pattern has been renamed to veinminer:thorough and is still available for use, though expansive is recommended
  • Fixed blocks with wildcard states not mining all instances of its type (i.e. redstone_ore[lit=true] would not mine redstone_ore[lit=false] even if redstone_ore were defined in the block list)
  • Centralized some utility code that was previously spread out across multiple instances
  • Removed some over-engineered code in the block cache
----------, Jan 22, 2019

Just a quick release to address a plugin-breaking issue, especially for new users or those that have not edited the default configuration.
  • Fixed a NullPointerException being thrown when vein mining if templates were not defined in the configuration file
Yea... that's it. This is why I need more testers, which is why I'm allowing members of my support Discord to offer to test my development builds. If you'd like to help me test, send me a message on my Discord server (in #general preferably) and I will grant you access to development builds. Thank you!
----------, Dec 23, 2018

WARNING!: This version of VeinMiner supports the most recent version of CraftBukkit / Spigot, Bukkit (git-Bukkit-ad28b1 - December 18th, 2018). VeinMiner's core functionality should work as intended but there will be issues with adding/removing blocks to/from the blocklist and listing blocklists by command. Errors will be thrown in the console. It is highly recommended that you update your server to the latest version of CraftBukkit / Spigot 1.13.2.

As always, if you have any issues with this build I invite you to communicate with me o n my support Discord or create an issue on GitHub.
  • Added a notification to the "/veinminer version" command that identifies when a new version is available for download
  • Added "ALWAYS" to the types of activations in VeinMiner to have it be always activated, sneaking or not (configurable with ActivationMode: "ALWAYS")
  • Added tool templates, both global and category-specific!
    • Tool templates define a specific tool that must be used to activate VeinMiner (works hand-in-hand with the new ALWAYS activation)
    • If you do not wish to have a specific tool (i.e. VeinMiner's default functionality), do not specify one in the configuration file
  • Added a configuration option to alphabetically sort the block list when running "/veinminer blocklist <category> list"
  • Added a configuration option to disable update checks (PerformUpdateChecks). Default true
  • Massive efficiency improvements throughout the plugin:
    • Improved the efficiency of VeinMiner's tool querying
    • Improved the performance of block definitions using caching
    • Improved the performance of VeinMiner's blocklist system. All blocklists are now handled individually rather than clumped together in a single registry
  • Update the default comment header in the config.yml for new users of VeinMiner. Further explains how to define states and removes no longer supported features
  • Tab completion for commands now partially complete. When typing "/veinminer ver", only "version" will be suggested rather than "version", "reload", etc.
  • Block data and states are now parsed much more aggressively and accurately
    • As an added bonus, command feedback now tells you exactly what was added/removed from the block lists
  • Fix colour formatting issues in the /veinminer command when adding and removing blocks to/from the blocklist
  • Fix "/veinminer blocklist <category> remove" being case-sensitive
  • Fix a small warning accidentally being displayed due to the "ALL" category being considered a tool category (when it is not)
  • API Changes (there are many... Any plugins using VeinMiner's API are likely broken. Though PlayerVeinMineEvent was untouched):
    • The VeinTool enum has been renamed to ToolCategory
    • The MineActivation enum has been renamed to ActivationStrategy
    • Relocated all player-specific data to a new VMPlayerData object (VMPlayerData#get(OfflinePlayer) to get an instance), therefore the following methods have been removed
      • VeinMinerManager#getPatternFor() and #setPattern()
      • ToolCategory (formerly VeinTool) #disableVeinMiner(), #enableVeinMiner(), #toggleVeinMiner(), etc.
      • ToolCategory#clearPlayerInformation()
    • VeinBlock is now defined as an interface rather than a class
      • A VeinBlock may be obtained using either VeinBlock#get(Material), VeinBlock#get(BlockData) or VeinBlock#fromString(String)
        • #get(Material) defines no states
        • #get(BlockData) defines states
        • #fromString(String) parses a String representation of a material with optional states... "minecraft:chest" or "minecraft:chest[waterlogged=true]" are valid examples
      • The concept of "raw data" no longer exists in VeinMiner's source. This was a temporary hack but is no longer needed as of git-Bukkit-ad28b1 (December 18th, 2018)
    • Relocated a few classes and enums to different packages:
      • wtf.choco.veinminer.api.VeinTool -> wtf.choco.veinminer.tool.ToolCategory
      • wtf.choco.veinmienr.api.MaterialAlias -> wtf.choco.veinminer.data.MaterialAlias
      • wtf.choco.veinmienr.api.blocks.VeinBlock -> wtf.choco.veinminer.data.block.VeinBlock
    • Added a BlockList class which acts similar to a Set<VeinBlock> but has some additional functionality
      • VeinMinerManager has updated accordingly. Removes any registration/removal methods for VeinBlock
      • VeinMinerManager#getBlockList(ToolCategory) and VeinMinerManager#getBlockListGlobal() have been added among other utility methods
    • Added a ToolCategory#fromItemStack(ItemStack) utility method where null will return ToolCategory#HAND
  • VeinMiner's updated Javadocs can be found at the usual place, https://choco.gg/javadocs/veinminer
----------, Dec 20, 2018

While the last version of VeinMiner (1.12.2; confusing version scheme, I know) does work for the newly released version of Minecraft 1.13.2, I have decided to publish another update to address some issues present in the latest version. This is primarily a bug fix release but it is still recommended you update if possible as it supports Minecraft 1.13.x (1.13.0 - 1.13.2) :) I'm very happy to see that there are over 350 servers (potentially more for those that disable stats D:) running the latest version of VeinMiner. I hope you are all enjoying these releases!

Changelog:
  • Fixed a NullPointerException in the console when vein mining with an empty hand (#10)
  • Fixed VeinMiner continuing to vein mine blocks even if the tool has broken resulting in blocks not properly dropping their items (#8)
  • Added an update checker! This update check is performed asynchronously on server startup so your server's performance is not affected! This update check may be disabled in the configuration file if you so choose.
  • Updated a few dependencies including bStats and the Spigot API (1.13.2)
----------, Oct 25, 2018

This is a quick hotfix release to address an issue that was published alongside the blocklist changes in VeinMiner 1.12.1. It's recommended that this version is used instead.

Changelog:
- Fixed unspecified states not being properly wildcarded (i.e. "minecraft:oak_log" would not destroy logs with a state different from that of the broken block)
----------, Sep 28, 2018

This release resolves a few niche issues present in version 1.12.0 of VeinMiner. Do note that this version of VeinMiner must be run on Minecraft 1.13.1 as there were changes made to the server that are required by this build. You should update your server to the most recent build using BuildTools if you have not already done so.

Changelog:
  • Fix a ClassCastException spamming the console every 30 minutes that occurred on servers that had other plugins running bStats. (Issue #7)
  • Rework VeinMiner's messaging system. Messages are now more consistent and are formatted differently. You will notice changes in the formatting. Feedback is appreciated. If it is well-received, I will consider using a similar format in my other plugins
  • Fix tool block lists displaying all block states even if no block states were specified (i.e. minecraft:chest[waterlogged=true,facing=north,type=single] when only minecraft:chest[waterlogged=true] was specified)
----------, Sep 27, 2018

For all those running beta builds, I appreciate the feedback I've received but after squashing many bugs in the past couple versions, it's finally time to release a stable version of VeinMiner for Minecraft 1.13. This build is runnable on the latest version of Bukkit or Spigot 1.13, therefore you should update your server to the most recent build using BuildTools if you have not already done so.

Changelog:
  • Added "acacia_wood", "birch_wood", "dark_oak_wood", "jungle_wood", "oak_wood" and "spruce_wood" to the default configurable Axe blocklist
  • Added 6 new aliases between "x_log" and "x_wood" for all 6 variants of logs
  • Changed what type of veined block data is sent to bStats. Registered block IDs are now sent rather than capitalized material names
  • Fixed "AIR" being added to the block list ultimately resulting in unnecessary block destruction
  • Fixed blocks which were listed under an alias also breaking non-veinmineable blocks (i.e. vein mining minecraft:oak_log would destroy nearby sand and dirt even if not listed under the alias
  • Fixed durability not being properly depleted on tools when vein mining (#3 on GitHub)
  • Fixed enchantments not being respected (minecraft:unbreaking, minecraft:silk_touch and minecraft:fortune)
  • Fixed vein mined blocks not being logged to block logging plugins such as CoreProtect (#2 on GitHub)
  • Fixed VeinMiner not respecting world protection plugins such as WorldGuard, GriefPrevention, etc.
Once again, thank you to everyone who ran the beta builds. If you are still running a beta build, I cannot stress enough that you should update to this build of VeinMiner as soon as possible. This is more stable than previous builds and there should be absolutely no reason to stay on the betas. Beta builds for my other plugins will be released in the near future. Thank you for your patience with this large update.

I would like to remind everyone that I am accepting donations. While not mandatory, it's always greatly appreciated :) Also, VeinMiner is still open sourced. Please do contribute if you feel it's necessary as those are always welcome. As always, Javadocs for VeinMiner can be found at https://choco.gg/javadocs/veinminer
----------, Aug 22, 2018

This version IS NOT MEANT FOR PRODUCTION SERVERS. It is very likely that the plugin will break. This is a Beta version, use with caution. This is NOT the final version for Minecraft 1.13, there are still some known caveats. See the bottom of the changelog.

!!! IMPORTANT: YOU MUST BE ON THE LATEST VERSION OF BUKKIT (/SPIGOT) 1.13 IN ORDER FOR THIS VERSION TO WORK PROPERLY. UPDATE IMMEDIATELY USING BUILDTOOLS !!!
  • Add "minecraft:blue_ice" as a default material under the "ALL" category of tools
  • Removed the "UsesDurability" configuration option and all durability-related code. This was causing issues and was a rather useless feature
  • Attempted fix for CoreProtect block logging and protection plugins
  • Fixed unspecified block states being defaulted when adding blocks with states to the block list. (i.e. "minecraft:chest[waterlogged=true]" would result instead in "minecraft:chest[waterlogged=true,type=single,facing=north]")
  • Fixed the "VeinMined Materials" statistic being called too late and tracking "AIR" instead of the actual broken block
Known Caveats:

  • "/veinminer blocklist <tool> list" shows materials with unspecified states. This does not properly reflect the actual block and its listened states. The list in the configuration file is the most accurate list of blocks
  • Tool durability does not always decrement properly
As always, please await BukkitDev to approve the file on their website. This should take anywhere from 1 - 12 hours. Thank you for being patient with me.
----------, Aug 18, 2018

Before resuming to the changelog, there are a few things I want to note. For one, this version IS NOT MEANT FOR PRODUCTION SERVERS. It is very likely that the plugin will break. This is a Beta version, use with caution. As always, please be patient with BukkitDev as they review the file. The download will be available within 30 minutes to 1 hour as of this update.

With that out of the way, I'd like to officially announce that there are now two new things worth noting.
  1. My website. Over the past month or so, I've been reworking my website to look a little nicer and contain all my projects. It's still a work in progress, but you may find it at https://choco.gg/
  2. Support will now be handled over on my official support Discord. Of course, tickets are preferred on the GitHub page, but for general support, please head to http://discord.choco.gg/ and ask around. I'll be available to respond during most hours of the day.
Alright, here is the long-awaited changelog :) Please, please report issues. This is NOT the final version for Minecraft 1.13, there are still some known caveats. See the bottom of the changelog.
  • Added support for Minecraft 1.13
  • Dropped support for Minecraft 1.8, 1.9, 1.10, 1.11 and 1.12. See the pre-update announcement post for information behind this drop in support
  • VeinMiner should now be version proof (for versions greater than 1.13, that is. Updates between versions are no longer required)
  • Minor changes to the /veinminer command to support new 1.13 blocks / IDs, as well as block states! Things such as "/veinminer blocklist add wheat[age=7]" will now work
  • Updated the configuration file (you may want to refresh your configuration file)
    • Uses Minecraft 1.13 block IDs rather than the old Material values
    • Removed a few aliases that were no longer necessary due to changes made in 1.13 (3 default aliases remain)
  • Added a new "pattern" feature which changes the way VeinMiner mines blocks. At the moment, only the default pattern is available. More will be added in the future, or developers may add their own
    • To accommodate for patterns, "/veinminer pattern" was added (permission: "veinminer.pattern"). Syntax: "/veinminer pattern <namespace:pattern>". i.e. "/veinminer pattern veinminer:default"
    • If no namespace is provided, it will default to "veinminer". i.e. "/veinminer pattern default" will function as though "/veinminer pattern veinminer:default" was executed
    • Tab completion will list all available patterns
  • Changed statistic tracking service from McStats to bStats
    • Started tracking a new statistic, "blocks_veinmined", which counts for how many blocks were broken using VeinMiner
  • Added a new "hand" tool which, as you might expect, lists materials mineable with a player's hand
  • Added an AntiCheat API to let anti cheats support VeinMiner rather than the other way around. This makes the life of mine and the anti cheat developers easier (devs, see API changes below)
    • Anti cheats that were previously supported in VeinMiner are still supported by default. This includes NoCheatPlus, AntiAura and Advanced AntiCheat
  • Numerous API changes and additions
    • Added VeinMiningPattern interface. To add a custom pattern, implement this interface and register it to the pattern registry (see below)
      • For a Java 8 alternative, see VeinMiningPattern#createNewPattern(NamespacedKey, BlockAllocator). BlockAllocator is a FunctionalInterface with a similar method to VeinMiningPattern
    • Added a PatternRegistry class (retrievable from VeinMiner#getPatternRegistry()). This is where custom patterns may be registered
    • Added a PlayerSwitchPatternEvent which listens for when a player changes which pattern they are using
    • Added an AntiCheatHook API
      • Anti cheat developers should implement the "AntiCheatHook" interface and write bodies for the overridden methods
      • To register the hook, pass an instance of the implementation to VeinMiner#registerAntiCheatHook(). VeinMiner will handle it from there
    • Let MaterialAlias implement Iterable<VeinBlock> and Cloneable. More of a convenience thing
    • Removed various long-deprecated methods from VeinMinerManager
    • The API is now much more strict with invalid parameters provided to methods
  • Cleaned up and condensed the command code. Should be slightly more performant
  • Improved the performance of various snippets of code throughout the project. Faster lookup times, faster and more efficient data handling, and major codebase cleanup
  • Fixed the "ALL" category not actually listing materials to be used by all tools
  • Fixed potential memory leaks to do with player and world instances

Known Caveats:
  • Unspecified block states are defaulted resulting in unexpected behaviour. For example, adding "chest[waterlogged=true]" to the block list will instead add "chest[waterlogged=true,type=single,facing=north]"
----------, Jul 31, 2018

Yea... so I broke things in the last update. Numerous things, actually. I figured I would take the time to go through and fix up a few of the mistakes I made in 1.11.2, as well as fix up a configuration option that's been broken for quite some time.

* Fixed worlds not properly being blacklisted 100% of the time
* Fixed the "ActivationMode" configuration option being super picky about capitalization (it is now case insensitive)
* Fixed all blocks being removed but limited items being dropped if the pickaxe was at a low durability
* Fixed the "RepairFriendlyVeinminer" configuration option not always being respected
----------, May 24, 2017

This is just a really quick update to keep up with Spigot and the new 1.12.0-Pre2 release ^-^ This version is still fully compatible with versions 1.8.0 - 1.12.0-Pre2 and has a few minor additions to the API that I've been intending on creating for quite some time now. There's really not much more to this update! I hope you 1.12 users will enjoy this official support!

* Added support for Minecraft 1.12.0-Pre2+ (First Revision)
* Added a "MineActivation" enum to give structure to the different types of VeinMiner activations
* Added a #getTool() method in the PlayerVeinMineEvent to get the VeinTool used

EDIT: If you have your activation mode set to "STAND", set it instead to "Stand" for this release! There is a known issue that will be fixed by next release. It will soon be case-insensitive
----------, May 14, 2017

(I'm going to start "introducing" my updates. Please let me know what you think)

For quite some time, people have been asking me, "Choco, why can't we break blocks that are of the same type but facing different directions?" (i.e. logs facing different directions). I always told them, "This would require a huge change in VeinMiner that I really don't think could happen without a lot of work". Well... I spent at least 12 hours writing some new features into VeinMiner that are going to improve the quality of the plugin by miles, and I think this is one of the more significant changes since the algorithm efficiency improvements. I've also fixed plenty of bugs that were present in the last build that I may have accidentally left in, and everything just seems a lot more polished! Thank you so much to @pixiedruid who helped me an incredible amount over the past couple of days. I owe a lot to this user :))

* Support from Spartan AntiCheat has been implemented in the resources new release. If you are a Spartan user, please update to gain support for VeinMiner :)
* Added a new "Aliases" configuration option to list the new material aliases! See below for explanation
* Fixed occasional patchy vein mining patterns
* Fixed "/veinminer toggle" not functioning as intended
* Fixed the "MaxVeinSize" configuration option not always working when changed from 64 blocks ( NOTE: HIGH VALUES WILL NOW STRESS YOUR SERVER... BE WARNED)
* Fixed various API calls regarding VeinBlock information not being accurate
* Fixed a few inconsistencies brought by the last update
* API: Fixed the PlayerVeinMineEvent passing in a new VeinBlock instance rather than an existing VeinBlock instance (i.e. fields were inaccurate)
* API: The VeinBlock class is now the holder of all VeinBlock instances. Its constructors are also now private. Instances should be retrieved with static VeinBlock#getVeinminableBlock() methods

What are material aliases:
Yea, sure, this may seem a little underwhelming. Trust me, it's a lot more powerful and exciting feature than you may think. This is a feature that had me working for a good 8 hours, and is one of the more powerful new configuration options this plugin has to offer. "But Choco... what makes this so different from listing values in the block list?". Well... aliases aren't actually vein minable on their own. If they're not listed in the block list, you won't be able to vein mine them. However, if they are aliased to a block that is vein minable, those aliased blocks are taken into consideration whilst the vein mining progress is underway and will also be mined alongside them!

As an example, people have always complained that they are incapable of mining large forest trees because they grow in awkward shapes with logs facing in various directions. Now, by default, all logs of the same type are aliased and will all be considered when vein mining! This can also be demonstrated by long grass and double tall grass. When mining a tall grass, it will also destroy all double tall grass because they are also aliased by default in the configuration file (though they are not vein minable because they are not specified in the blocklist). Perhaps confusing, but extremely powerful. You will understand once you play around with them a little bit more! I'm sure there are a few block aliases that I have missed; and if I have... please private message me and let me know! I will add them to the default configuration section if I find them worth being a default.
----------, Apr 29, 2017

This update fixes tons of issues and inconsistencies in VeinMiner that were present for quite some time. I never got around to fixing a lot of this code, and I finally found a good time to do it! This update should not be of interest to a lot of you because it's mainly composed of bug fixes and optimizations, but hey, who doesn't want some good optimizations in their plugins, right!? The less memory that VeinMiner uses, the better your server will be!

Do keep in mind that for most plugins hooking into VeinMiner, this update will break them. There are a bunch of changes to the public VeinMiner API, and developers WILL need to change their code. So if you have any resources that hook into VeinMiner, please inform them that there is an update and that changes will need to be made!

* Dropped Java 7 support, and started using some Java 8 features. Please update your server if you have not already
* Changed the way blocks and their information are stored in the backend
* Changed how players with VeinMiner disabled are stored
* Changed how the various tools are stored and referenced in the code. They are now managed on a per-block basis
* Optimized and refactored a good bit of older code that was now pointless with new API changes
* Fixed an issue regarding the adding / removal of blocks from the block list not updating properly
* Fixed blocks not being vein mined when they were on the list if they were being mined with a tool that resulted in no drop
* Fixed a few memory leaks regarding World instances. They are now stored by UUID, rather than by World instance
* API: Refactored a lot of internal workings of the code, including many class name changes, new methods, etc.
* API: Deprecated a bunch of methods in the VeinMinerManager, as they have been replaced by alternative methods
* API: Added a ton of new methods in the VeinTool and VeinBlock classes (They're actually useful now)
* API: Updated, refactored and clarified all Javadoc comments, as well as added a few missing docs
----------, Apr 28, 2017

Just a small release that finally fixes AAC support not functioning as intended
----------, Apr 23, 2017

* Added support for later versions of AntiAura (10.83 and above)
* Fixed support for Advanced AntiCheat
----------, Feb 12, 2017

* Added my own implementation of BlockFace, VBlockFace, to allow for more flexibility in relative blocks
* Fixed "IncludeEdges" only working along the horizonal (x & z) axis, and not along the vertical (y) axis
* Fixed BlockFace.NORTH_EAST being enumerated twice in the face values, and missing BlockFace.SOUTH_WEST
* "IncludeEdges" is now set to true as a default value

(Thank you to MattAKAFred on Bukkit for bringing these issues to my attention; I appreciate it greatly)
----------, Dec 10, 2016

* Added a new configuration option, "IncludeEdges", which will allow corners of ores to be mined. Default: false
* The default (non-officially supported) versions now use reflection to execute version independent methods. Full functionality should be fine without official updates
* Fixed default version inaccuracies with current in-hand item

( NOTE: 1.7.10 and below support should be provided with the changes I have made, but functionality IS NOT GUARANTEED!!!!!)
----------, Dec 9, 2016

* Added official support for version 1.11 of Minecraft
* Fixed the default not actually being a default. Updates should now not be 100% required
----------, Nov 17, 2016

* Added support for Minecraft versions 1.8.0 - 1.8.3, as well as support for future versions. Updates are not technically required
* Added a new ConfigOption class to improve the efficiency of grabbing configuration values
* Crops are only vein minable at their ripe stage by default
* Fixed veins one block apart from that of the original vein being broken
* Minor efficiency improvements and changes to the algorithm
* Fixed blocks being held in the queue if the PlayerVeinMineEvent was cancelled
* Fixed vein miner continuing to mine the ores, even if the pickaxe has broken
* Fixed veins being mined, even if blocks were not able to be dropped (i.e. breaking diamond ore with wooden pickaxe)

(Thank you to youtakun from BukkitDev for bringing these issues to my attention, and allowing me the opportunity to fix these quickly)
----------, Nov 5, 2016

* Fixed potential API NullPointerExceptions when VeinMining
* Fixed a startup error regarding the registration of an AAC event if you did not have AAC installed
----------, Aug 10, 2016

* Added Javadoc documentation to the VersionBreaker class (Should only be used for VeinMiner purposes, but it's available for public API)
* Added a bit more Javadoc documentation to the VeinBlock and VeinTool classes. Just in case
* Added a little message for those who enable Metrics in the console on startup (<3 Thanks to you owners that do have it enabled :D)
* Added full support for a couple Anti-Cheat plugins: NoCheatPlus and Advanced Anti-Cheat
* Added a few methods to help support the new Anti-Cheat. Developers may use them if they would like, but there's no need to, really
----------, Aug 10, 2016

* VeinMiner is now VERSION INDEPENDENT!!! Anything version 1.8.2+ is now supported (Anything 1.8.1 and below is unobtainable to me) - This has been tested and confirmed by myself
* Added tab completion for most aspects of the VeinMiner command. Results are permission based
* |-> (i.e. you cannot tab /veinminer reload if you do not have the "veinminer.reload" permission)
* Fixed incompatibility issues with McMMO's WoodCutter ability

(Keep a lookout for the main page, as VeinMiner will soon be open-sourced)
----------, Jul 16, 2016

Yea, that's right. We're going Minecraft version label style. VeinMiner 1.10, here we come! :p

* Added permission nodes for each individual tool under the "veinminer.blocklist.list" permission
* |-> Parent: "veinminer.blocklist.list.*", Example: "veinminer.blocklist.list.TOOL_NAME/ALL"
* Added a "DisabledWorlds" configuration option to disable VeinMiner completely in certain worlds
* VeinMiner is now toggleable per tool. "/veinminer toggle [tool]".
* |-> It is an optional parameter, you can toggle all tools on and off by simply not specifying a tool name
* You are now unable to specify an Item ID to be added to the Blocklist. This should probably make more sense
* Minor restructuring to the block breaking listener
* Fixed a couple more memory leaks
* Fixed the per-tool permission nodes not registering properly. NOTE: They are "veinminer.veinmine.TOOL", and not "veinminer.veinminer.TOOL"
* Unregistered unused permission nodes; yet again
* API: Added isVeinMinerEnabled() methods in the VeinMinerManager for simplicity sake
* API: Modified the toggle methods to specify VeinTool parameters as well
* API: Changed the "setVeinMinerEnabled()" methods to "toggleVeinMiner()" with boolean parameters instead
----------, Jul 13, 2016

* Added "HUGE_MUSHROOM_1" and "HUGE_MUSHROOM_2" as a blocklist default for axes
* Added "RED_MUSHROOM" and "BROWN_MUSHROOM" as a blocklist default for hoes
* Fixed VeinMiner working for all blocks even if not listed on the blocklist
----------, Jul 10, 2016

* Added an alias for "/veinminer" - "/vm"
* The Hoe is now a supported tool for VeinMiner (All crops are breakable with the hoe) - veinminer.veinminer.hoe
* Fixed the veinminer.veinmine.all permission not working 100% of the time
* Fixed VeinMiner not actually working if you had the "veinminer.veinmine.all" permission
* Removed the "veinminer.blocklist.reset" permission node. Apparently I forgot to unregister that
* General command efficiency improvements
* Made preparations for a future change regarding veinminer toggling
* Added "MELON_BLOCK" and "PUMPKIN" to the list of default vein mineable blocks for Axes
----------, Jul 10, 2016

* Reorganized the configuration file to be organized per tool under a "Tools" category
* Removed the "Enchantments: SilkTouch / Fortune" configuration options as these are automatically set to true due to NMS usage
* Added "WEB", "LEAVES", and "LEAVES_2" as default Shears blocks
* Increased max iterations from 10 to 15, as some issues were occuring with larger amounts of vein counts
* Slightly restructured the veinminer listener so it's ever so slightly more efficient
* Fixed "ALL" category listed blocks not being breakable by all tools (as it should be)
* Fixed tools using durability even if "VeinMinerUsesDurability" was set to false
* Fixed being able to use "/veinminer toggle" if the player doesn't even have any actual veinminer permission nodes
* API: Added a "public static getPlugin()" method in VeinMiner class to get a singleton instance of the plugin
* API: Added a couple methods in VeinTool, "getMaxVeinSize()" and "usesDurability()" to get respective options from configuration file
----------, Jul 9, 2016

* Slightly optimized the command manager
* Added a "/veinminer toggle" subcommand to toggle whether VeinMiner is active or not
* Added a permission node for the new "/veinminer toggle" sub-command - "veinminer.toggle", default to all players
* API: Added methods for the new toggle functionality under the VeinMinerManager class
* API: Added a PlayerVeinMineEvent#getAffectedBlock() method to get which block was modified
* Fixed a few memory leaks with clearing localized veinminable block data
----------, Jul 8, 2016

* Removed the "ForceDropSpawn" configuration option as it is no longer used (Forgot to remove in 1.9.1)
* Fixed support for grief-protection plugins such as WorldGuard, GriefPrevention, etc.
* Added Javadoc comments throughout most of the API
----------, Jul 4, 2016

* "MaxVeinSize" now allows for specific maximum vein sizes per blocklist category
* Removed ItemsToInventory configuration option (reason below)
* Deleted a WHOLE lot of now arbitrary code. Unfortunately, had to use NMS (version dependent) code, but it's worth the code optimizations
* This now ONLY works on Minecraft 1.10, but it's more efficient
* Fixed shears not properly dropping the materials they should be
* Fixed veinmining not dropping the proper amount of XP for ores that drop it
* Fixed "veinminer.veinmine.*" permission nodes not being properly registered
* Fixed items flying all over the place. They now drop as they would in vanilla Minecraft

(It's impossible to keep the ItemsToInventory configuration option as there is no way to retrieve the item information from the NMS method.
However, due to the fixes in the way items are now dropped, this option is no longer necessary)
----------, Jun 30, 2016

* The blocklist is now separated into individual categories per-tool (pickaxe, axe, shovel, shears, and all)
* All individual sections have different permission nodes, as followed:
- Removed "veinminer.veinminer" permission node, replaced with "veinminer.veinmine.*"
- Children permission nodes are respective to the tools, "veinminer.veinmine.pickaxe", "veinminer.veinmine.shovel", etc.​
* The "/veinminer blocklist" command has had some remodelling to deal with individual tools as well
- Removed the "/veinminer blocklist reset" option as it was a little bit more intensive than originally planned
- Syntax is now as followed: "/veinminer blocklist <tool> <add|remove|list>"​
* API Changes:
- Added a VeinMinerManager class to keep track of veinminable block information (VeinMiner#getVeinMinerManager())
- Added a VeinTool utility Enum to represent all supported VeinMiner tools
- Added a VeinBlock registry method in the VeinMinerManager class to register veinminable blocks
- Removed a few unnecessary methods
- Moved/Created a few packages under the api package for developers​
* Changed the default value of "VeinSize" to 64 (Apparently, I hadn't done that before)
* Restructured the veinminer listener to be ever so slightly more efficient
* Fixed a few typos in the command snytax warnings
* Fixed randomly calling information from the blocklist when unnecessary upon onEnable checks
* As the plugin is enabling, information will now be displayed to inform the user of what the plugin is doing
* Removed "RequiresTool" configuration option as it is now unused
----------, Jun 30, 2016

* "ItemsToInventory" now respects full inventories. ( Closes ticket #06)
* If the players inventory is full, it will fill their inventory as best as possible, and drop remains
* Used a more efficient method to get blocklist materials on startup
* Removed the disclaimer in the config file (Shouldn't apply anymore, algorithm is really quite efficient... IT HAS ITS LIMITS!!!)
----------, Jun 17, 2016

* Fixed an issue that disallowed items such as clay and cocoa beans to not drop their respective amounts ( Closes ticket #05)
* Rewrote the way silk touch, fortune, and drops as a whole are handled (Should still support versions 1.9+ as well)
* Added a "/veinminer blocklist reset|default" subcommand to reset the blocklist values to default (Permission: veinminer.blocklist.reset)
* A few minor aesthetic changes with a couple commands
* Fixed an exception with the PlayerVeinMineEvent

(NOTE: This version has officially dropped support for 1.8.x. 1.10 is now available so only the previous version and the current one are being supported. The API has changed too much for me to continue support. Update your server ASAP.)
I may release a future version that supports 1.8, but for now, support is dropped
----------, Jun 16, 2016

* Added "ItemsToInventory" configuration option to set whether vein mined items go directly to your inventory or not (Default: false)
----------, Jun 5, 2016

* The Unbreaking enchantment is now respected for tools
* Re-added the call for BlockBreakEvent (This time, it will not crash the server. Tested)
* Prevented the possibility that protected areas could be vein mined
* Attempt to fix ores from flying all over the place when vein mined
* Minor internal modifications / optimizations
----------, May 29, 2016

* Fixed tool durability not updating properly
* Fixed tools having a negative durability value
* Fixed the algorithm ignoring data values during the actual process of vein mining (Oops)
----------, May 9, 2016

* Changed the VeinMiner algorithm one last time to make it more accurate
* The algorithm will now act as a "burst" sequence rather than a "linear" sequence (Fixes ticket 4 - http://dev.bukkit.org/bukkit-plugins/vein-miner/tickets/4-stone-1-not-quite-working-correctly/)
* The algorithm is now much more accurate with max vein size calculations
* Changed the default maximum vein size to 32
* Added a safeguard for the algorithm. It will now attempt a maximum of 10 cycles if max vein size has not been reached (No infinite loops)
* Added a new sub-command, "/veinminer blocklist list", to display all veinable blocks (and their data) - Permission node: "veinminer.blocklist.list"
----------, May 8, 2016

* Removed the calls for BlockBreakEvent as it was causing way too many issues (Fixes another fatal crash)
----------, May 7, 2016

* Fixed an urgent issue that can cause your server to occasionally crash (I apologize if you have experienced this)
----------, May 7, 2016

* Not specifying a data value in the blocklist now assumes all data values
* Removed an accidental data check in one of the API methods
* Added a "hasSpecificData()" boolean-return method in the VeinBlock class
* Modified the "/veinminer blocklist" command to function with the new data value support
----------, May 4, 2016

* VeinMining now activates a BlockBreakEvent for every block broken within the veinmine action
* |-> This excludes the initial block, which is fired regardless by the breaking of the block
* Changed the registration format of VeinMinable blocks. They are now contained under a separate block object
* |-> These custom block objects allow for the specification of data values
* Data values can now be specified in the block list by adding a semicolon ( ;) and a value after the name of the material. More info in the configuration file
* With the changes to registration formats, there are more methods in the main class for API usage
* Some permission nodes have been reorganized:
* |-> "veinminer.blocklist.*" is now a parent permission and allows both of the following:
* |-> "veinminer.addBlocklist" is now veinminer.blocklist.add
* |-> "veinminer.removeBlocklist" is now veinminer.blocklist.remove
----------, May 4, 2016

* Fixed Lapis/Redstone ores not dropping the proper amount of items
* Fixed experience not dropping upon breaking experience-dropping ores
* Changed the plugin to run on less decisions
* Cleaned up a lot of the back-end side of the code
* Added new "ActivationMode" configuration mode to determine how VeinMiner should activate
----------, May 1, 2016

* Fixed potential issue with breaking veinminable blocks in any grief protection plugins
* Fixed Fortune duplication of blocks that drop themselves (Iron ore, gold ore, logs, etc.)
----------, Apr 13, 2016

* Fixed Metrics not enabling (Typo in the configuration)
* Added new "ForceDropSpawn" option to toggle whether items drop in the initial break location or not (default true)
* Cleaned up the drop handler method
* Veinminer commands may now be run from the console
----------, Apr 10, 2016

* Compiled for Minecraft 1.9.x support (1.8.x no longer supported. Sorry)
* BIGGEST CHANGE: Rewrote the VeinMine algorithm to be more efficient, and more accurate and precise when breaking veins
* |-> The algorithm no longer checks unnecessary blocks
* |-> Cubic areas are no longer calculated. Instead, only blocks relative to the vein are considered
* |-> Compacted algorithm size to roughly 20 lines, rather than the previous 200
* Adding/Removing blocks from the list via command no longer requires case sensitivity
* Changed the "MaxRadius" config option to "MaxVeinSize", and changed the default value to 20
* Used proper .name() vs .toString() enum conventions
* Modified the Fortune pickaxe handling to be more efficient / clean
* Fixed ArrayIndexOutOfBoundsException from using Fortune on a vein (Surprised no one reported this)
* Made integer randomization more efficient and finalized
* Changed configuration loading onEnable to be more efficient
* Cut a couple of methods down to be simpler
* Fixed NullPointerException when VeinMining with an empty hand
* Fixed accidentally registering the block break listener twice? (Don't know what I was thinking)
* Moved the listener into a separate class to unclutter the main class
* Added a PlayerVeinMineEvent for the VeinMiner API (Developers are free to listen for this event as per usual)
* Added support for other plugins that may contain auto-smelt or other custom enchantments
----------, Apr 9, 2016

* Rewrote the algorithm for VeinMining. Should work 100% of the time now
* Fixed a bug with durability that allowed the tool durability to go into the negatives
* Added a new boolean configuration option to determine whether you need a tool in hand or not. RequiresTool. Default true
* Fixed support for the Fortune enchantment while VeinMining
* Added a new configuration section related to Enchantments
* |-> Added a new boolean configuration option to determine whether the SilkTouch enchantment is applied or not. Enchantments.SilkTouch. Default: true
* |-> Added a new boolean configuration option to determine whether the Fortune enchantment is applied or not. Enchantments.Fortune. Default: true
----------, Sep 30, 2015

  • Changed all methods to private (not visible to other plugins). They are not necessary for public use
  • Removed the ability to use veinminer when you don't have an item in your hand
  • Added a method to check if the player is holding a tool (Axes, Pickaxes, and Spades)
  • Added a main /veinminer command containing veinminer related commands
  • |-> /veinminer version - Get version information about veinminer
  • |-> /veinminer reload - Reload the configuration file for veinminer (permission: veinminer.reload)
  • |-> /veinminer blocklist add <id> - Add block id's to the block list in the config (permission: veinminer.addBlocklist)
  • |-> /veinminer blocklist remove <id> - Remove block id's from the list in the config (permission: veinminer.removeBlocklist)
----------, Sep 27, 2015

* Added support to VeinMine with Silk Touch
* Added a check for REDSTONE_ORE and GLOWING_REDSTONE_ORE. If one is on the list, and the other is not, it will automatically add the other
* Removed the need for an ArrayList to break blocks (Fixes overlap of blocks)
* Added a toolManager method to handle the breaking of blocks and damaging of tools
* Completely recoded all algorithmic logic for the VeinMining process
* Fixed uneven destruction of blocks. Should destroy a proper cubic area
* Fixed the maxRadius variable being one more than set (i.e. 7 was actally 8)
* Changed the default maxRadius to 4 instead of 7 (that's still intensive. 4 should suffice)
* Removed the onDisable method due to inutility after this update
----------, Sep 19, 2015

* Added Adventure Mode support for VeinMiner
* Added a permission node to allow the usage of VeinMiner ("veinminer.veinminer". Default: All players)
* Added an onDisable method to clear some ArrayLists just incase some memory is accidentally left over. It's a safeguard, really.
* Added a new "VeinMinerUsesDurability" boolean configuration option to determine whether durability on the tool is used or not (default: true)
* Changed the blocksToBreak array list to public so it is viewable to other plugins, and between classes
----------, Sep 11, 2015

Resource Information
Author:
----------
Total Downloads: 909,016
First Release: Sep 9, 2015
Last Update: Aug 28, 2024
Category: ---------------
All-Time Rating:
80 ratings
Find more info at discord.choco.wtf...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings