1.5.1
Compatibility
Changes
[1.5.1] — 2026-06-03
Fixed
-
[HIGH] Protection-plugin bypass — veinmine queued before WorldGuard/Lands/GriefPrevention could cancel the event —
onBlockBreaklistened atEventPriority.NORMAL. Protection plugins (WorldGuard, Lands, GriefPrevention, Residence) typically cancelBlockBreakEventatHIGHpriority, after NORMAL. When a player tried to break a protected ore, the protection plugin had not yet cancelled the event when BVM ran, soVeinmineTaskwas scheduled withrunTask(). One tick later, the task fired: the origin block was still intact (its break was cancelled), but all extra vein blocks within the protected region were broken without the player having any permission to do so. Changed toEventPriority.HIGHwithignoreCancelled = true. Protection plugins that act atNORMALorLOWstill cancel the event first; protection plugins atHIGHthat cancel before BVM now prevent the task from being queued entirely. -
[SMALL] BFS visited-cap
breakonly exited the inner faces loop, not the BFS while-loop — When thevisitedset reached thevisitedCap(maxBlocks × 4) sentinel, thebreakstatement inside thefor (int[] d : FACES)loop exited theforbody but left the outerwhile (!queue.isEmpty())loop running. The queue continued draining, processing each already-enqueued block and attempting to expand further neighbours on every poll (immediately re-hitting the cap check each time). For a world-gen-modded server with a very large ore deposit this was a redundant tight loop running every BFS iteration until the capped queue finally drained. Replaced with a Java labeled-break (break bfs) that exits the outer while-loop immediately when the cap is reached. -
[COSMETIC] Stale version comment in
config.yml— Header comment still readBetter Veinminer v1.2.0 — Configurationsince the file was not updated during the v1.4.0 or v1.5.0 releases. Updated tov1.5.1.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:3Njs3FsV:pJ2lnIST"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:3Njs3FsV:pJ2lnIST"
}

