▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Плагины/Better Veinminer
Better Veinminer

Better Veinminer

A Paper 1.21 Vein miner plugin that mines entire ore veins instantly.. Fully configurable via config.yml.

Оцените первым
1.2K
1
Все версии→Better Veinminer 1.3.0

Better Veinminer 1.3.0

Release25.04.2026

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

[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 sections — PluginConfig.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 stats — showStats() 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 disable — onDisable() 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

Загрузок

64

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

25.04.2026

Загрузил

ID версии

Главная