Releases: 2008Choco/VeinMiner
2.2.6
Changes (Bukkit)
- (#126) Added Support for Vulcan Anti Cheat (thanks to @OmeWillem)
- Improve the accuracy of VeinMiner's integration with McMMO
- Improve the update checker so it better understands when a new version is released and so it understands in-dev versions
- Fix NullPointerException in some economy plugins
- VeinMiner now only calls upon Economy plugins if the cost exceeds 0, potentially improving performance for those not using the cost feature
- Fix ClassCastException in Minecraft 1.21.3
Changes (Fabric)
No changes were made to the Fabric mod
2.2.5
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__ on Spigot)
- (#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
Changes (Fabric)
No changes were made to the Fabric mod
2.2.4
2.2.3
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
Changes (Fabric)
No changes were made to the Fabric mod
2.2.2
2.2.1
v2.2.0
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 thecategories.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
andcategories.yml
files will be automatically migrated, you do not have to do anything! - The global
RepairFriendly
,MaxVeinSize
,Cost
, andDisabledWorlds
still exist in theconfig.yml
and still act as a default if not set in a category
- It made no sense to have the block list be the only category-related setting not actually in the
- The
Hand
category may now have its own separate configuration forRepairFriendly
,MaxVeinSize
,Cost
, andDisabledWorlds
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
andAll
, 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 ofCollectItemsAtSource
- This feature is similar to
- 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
- If set to
- 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 thecategories.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
- This is a useful utility command for server administrators unsure how the
- Add better support for latest versions of AdvancedEnchantments and EcoEnchantments (thanks to @WillFP and @ThomasWega for their cooperation)
- Renamed
grass
toshort_grass
in the default alias list (config.yml) - Reduced the default
HungerModifier
from4.0
to2.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
tominecraft:stone
, which by default would mean the client can no longer vein mine
- e.g. the block changes from
- 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
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!
2.1.1
Changes (Bukkit)
- (#98) Added missing 1.20 cherry logs, wood, and leaves to the appropriate default block lists
- Added
minecraft:red_sand
to the defaultshovel
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)
Changes (Fabric)
There are no changes to the Fabric version of VeinMiner in this release.
2.1.0
Changes (Bukkit)
- 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 (Bukkit, 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 toServerPlatform#registerCommand()
- Removed
VeinMiner.PROTOCOL_LEGACY
- Renamed
CommandExecutor
toCommand
Changes (Fabric)
- Added support for versions 1.20.x
- Dropped support for versions 1.19.x
- Removed legacy client protocol support
- The client mod will no longer function on servers not running VeinMiner 2.0.0 (although these should be rare)
- VeinMiner's client functionality (the activation icon and pattern selector) will no longer work on singleplayer or servers that do not have VeinMiner installed
- Changed the version semantics so that versions beyond 1.20 will (theoretically) be supported. Unless Minecraft or Fabric makes a breaking API change, the companion mod should just work.
2.0.0 - The Rewrite
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.
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
andSQLite
, 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 defaultStorage
setting toJSON
, 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 brokenveinminer:staircase_up
: Mine an upwards 1x3 staircase in the direction of the block brokenveinminer: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 atPublicBukkitValues: { "veinminer:veinminer": "TheValueInTheConfig" }
. Defaults to no NBT tagPriority
: 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 functionalityClient.AllowActivationKeybind
: Determines whether or not clients are allowed to activate vein miner with a key bindClient.AllowPatternSwitchingKeybind
: Determines whether or not clients are allowed to switch patterns with a key bindClient.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 keybindveinminer.client.patterns
: Is allowed to switch patterns with a keybindveinminer.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
andveinminer.free.economy
no longer default to op players. They are disabled by default and must be explicitly set
- Renamed
- 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
andLore
settings from categories and items in categories. Replaced with the newNBT
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 withDefaultVeinMiningPattern
which will be used as the default pattern for players that have not explicitly set one with/veinminer pattern
. Defaults toveinminer:default
- Replaced
RepairFriendlyVeinminer
withRepairFriendly
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 minerveinminer: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
towtf.choco.veinminer.api.event.player
PlayerVeinMineEvent#getBlock()
now returns theBlock
that triggered the vein mine. TheVeinMinerBlock
may be retrieved fromgetVeinMinerBlock()
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 ofVeinMinerPlayer
. - Replaced all instances of the vein miner protocol with a new standardized, platform-independent network implementation under
VeinMiner.PROTOCOL
. Messages may be...