Skip to content

2.1.2.0 - Offline Player Management, Forge Event Bus 7 & MC 26.1+ Permissions

Latest

Choose a tag to compare

@At87668 At87668 released this 04 Oct 09:27

New features

  • /mt check <player> and /mt reset <player> now work on players who are not currently on the server. Previously the target was resolved through a name-to-UUID lookup that only queried online players, so both commands failed with player-not-found as soon as the player logged off — even though their violation levels and mining state were still held in memory.
    • ViolationEngine now maintains a bidirectional name↔UUID history (knownPlayerIds, knownPlayerNames), populated on every violation increase. This index is deliberately not cleared by resetViolation, so a player who has just been reset stays addressable by name.
    • Each platform resolves a target name through: engine history → platform-side name cache → online lookup → offline profile (Bukkit only, guarded by hasPlayedBefore() / isOnline()).
    • Tab completion for check and reset offers the union of online players and known player names. kick remains online-only.
  • /mt reset <player> now also clears the mining-behaviour counters (mining path, vein count, vein clusters, air exposure) and the placed-block / artificial-air tracking maps, in addition to zeroing the violation level. Resetting only the violation counter left a stale mining path behind, which caused the next rare-ore break to immediately re-evaluate the old path and push the violation level back up.

Fixed BUG

  • /mt kick <player> no longer broadcasts the kick message and the lightning effect for a player who is not online. Since name resolution became offline-aware, the command would otherwise report success and kick nobody.
  • Forge: listener registration no longer relies on the legacy event bus, which has been removed in recent Forge versions. Lifecycle, mining and server-tick listeners are now registered on the EventBus 7 static BUS fields, which had silently stopped firing.
  • Forge / NeoForge: mod resources (config.yml, language.yml, and the Configuration/*.yml group files) are now loaded through the mod-file resource API instead of the classloader, which could not see them inside the mod JAR.
  • Forge / NeoForge: a missing bundled resource or a missing YAML file is now reported as a warning and treated as an empty config, instead of throwing and aborting startup. The same guard was applied to the core resource loader.
  • Fabric: permission-gated commands now work for OP players on Minecraft 26.1+ without LuckPerms installed. The MC 26.1+ permission model is detected once at class-load time, and the bypass and verbose checks now share a single OP-level check.

Other Changed

  • pack.mcmeta is now bundled into the mod JAR, making it a valid resource pack.
  • Resource filtering during the build is forced to UTF-8 to keep non-ASCII config content intact.
  • Replaced a non-ASCII em-dash in a mods.toml comment.