Unofficial site, not affiliated with modrinth.com.What is this?
Плагины/Better Veinminer
Better Veinminer

Better Veinminer

A Paper 1.21 veinminer plugin that mines entire ore veins instantly. Uses strict same-type BFS matching, so adjacent ores are never accidentally destroyed. Fully configurable via config.yml.

279
1
Все версииBetter Veinminer 1.3.0

Better Veinminer 1.3.0

Release1 нед. назад

Список изменений

[1.3.0] — 2026-04-25

Added

  • BetterVeinmineEvent — Custom cancellable Bukkit event fired just before extra blocks are broken. Other plugins can now:
    • Cancel the entire veinmine via event.setCancelled(true)
    • Inspect the block list via event.getBlocks() (unmodifiable)
    • Override the EXP reward via event.setExpReward(int)
    • Read the ore type via event.getOreType()
  • StatsManager — Full YAML persistence for PlayerStats. Stats are now saved to plugins/BetterVeinminer/stats/<uuid>.yml and survive server restarts.
    • Stats load synchronously on PlayerJoinEvent (file is tiny, no noticeable delay)
    • Stats save asynchronously on PlayerQuitEvent
    • Auto-save every 5 minutes (async) while the server is running
    • Final synchronous flush in onDisable() to guarantee no data loss on shutdown

Fixed

  • NullPointerException on missing config sectionsPluginConfig.reload() called .getKeys(false) directly on the return value of getConfigurationSection(...), which returns null when the section is absent from config.yml. This caused an NPE crash on any server where ore-multipliers.multipliers, per-ore-cooldowns.cooldowns, or permission-levels were omitted or empty. All three sites now null-check the section before iterating.
  • Player-offline NPE in VeinmineTask — The task is scheduled 1 tick after the BlockBreakEvent. If the player disconnects in that window (network drop, kick, crash), every subsequent field access on the Player object threw a NullPointerException. Added an early if (!player.isOnline()) return; guard at the top of run().
  • {uses} placeholder never replaced in /bvm statsshowStats() built the message with {blocks} and {tier} substitutions but forgot {uses}, so the literal string {uses} was printed to the player.
  • {blocks} placeholder never replaced in tier-up message — The tier-up message template "You reached Tier {tier}! New max blocks: {blocks}" only had {tier} replaced; {blocks} was left as-is in the output.
  • sendActionBar(String) deprecated in Paper 1.21 — Replaced with the Adventure API: player.sendActionBar(LegacyComponentSerializer.legacySection().deserialize(msg)). This eliminates the deprecation warning in server logs and future-proofs the call.
  • Scheduler tasks not cancelled on disableonDisable() cleared data maps but never called Bukkit.getScheduler().cancelTasks(this). The cooldown-cleanup and daily-reset runnables could fire after the plugin was disabled (e.g. during /reload), accessing a partially torn-down plugin instance. cancelTasks(this) is now the first action in onDisable(), before any data is flushed or cleared.

Changed

  • onDisable() now cancels all plugin tasks before flushing data, then calls statsManager.saveAll() as a final synchronous write to guarantee persistence.
  • VeinmineTask now collects extra blocks into a List<Block> (instead of iterating Set<Block> with an origin equality check) to pass cleanly to BetterVeinmineEvent.
  • EXP calculation is now performed before the event is fired so listeners can read and override the reward via event.setExpReward(int).

Файлы

BetterVeinminer-1.3.0.jar(28.56 KiB)
Основной
Скачать

Метаданные

Канал релиза

Release

Номер версии

1.3.0

Загрузчики

Bukkit
Paper
Purpur
Spigot

Версии игры

1.21–1.21.11

Загрузок

27

Дата публикации

1 нед. назад

Загрузил

ID версии

Главная