MysticWeapons
Update 1.5
10 New PvP Weapons. Full Audit & Stability Pass.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
What's New
10 New PvP-Focused Weapons
The 1.5 update introduces a new weapon category and 10 hand-crafted weapons designed specifically for competitive PvP. Each one fills a mechanical gap that did not previously exist in the plugin:
· · · NEW CATEGORY: AXES · · ·
- Storm Breaker Purges all positive effects from nearby enemies + applies Cursed. The definitive anti-potion weapon for faction servers.
- Executioner Damage scales with the target's missing HP. Charged execute strike deals massive bonus damage to low-health enemies.
- Shield Bash Destroys shields on impact and stuns the wielder. The first dedicated shield counter in the plugin.
· · · PVP SWORDS · · ·
- Crystal Blade True Strike deals +30% true damage through armor. Armor Shred adds bonus true damage every 5th hit. The only armor-piercing weapon in the game.
- Tether Blade Iron Roots grants 100% knockback resistance and roots attackers. Essential for faction PvP where knockback control wins fights.
- Hook Blade Chain Pull yanks a single target to you from up to 20 blocks away. Unlike Gravity Bow which pulls everyone, this is precision engagement.
· · · PVP BOWS · · ·
- Null Bow Silences targets for 3s - no potions, no pearls, no shields, no weapon swaps.
- Mark Bow Marks a target to take +25% damage from all sources. Teamfight force multiplier.
· · · PVP DAGGERS · · ·
- Wound Dagger Gaping Wound blocks ALL healing for 5s + bleed damage. Hard counter to Vampire Sword, golden apples, and potion spam.
- Phase Dagger Phase Strike deals true damage through armor and reduces healing by 75%. Each hit passively deals 0.5 true damage.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Critical Bug Fixes
Configuration & Reliability
- Weapon configs were ignored since plugin launch. Elven Sword, Elven Dagger, Trap Sword, Gravity Bow, and Aetherius Blade Rune system were reading values from config.yml under non-existent paths. All values defined in swords.yml, bows.yml, and daggers.yml were silently discarded. This has been the #1 reported issue since 1.0, and it is now fixed.
- New weapons not appearing after plugin updates. When updating to a new version with additional weapons, the new entries were never added to existing user YAML files. A merge mechanism now detects missing weapon keys in the JAR default and inserts them automatically without touching user customizations.
- Language files not receiving new keys on update. Same issue: new language keys from updates were never merged into existing user files. A recursive merge system now handles this. The force-update option still exists for complete overwrites if desired.
Permissions & Exploits
- Per-weapon permissions were not enforced. The mysticweapons.weapon.<name> permission format existed in config.yml but was never checked at runtime. Any player with mysticweapons.use could use every weapon. Per-weapon restrictions now work correctly.
- Cooldown bypass permission was not working. mysticweapons.bypass.cooldown was defined in plugin.yml but never checked by any ability. Players with this permission now correctly bypass cooldowns.
- 5 race conditions fixed. HashMap instances in Elven Sword, Elven Dagger, Elven Bow, Lightning Bow, Shadow Sword, and Explosive Bow were vulnerable to ConcurrentModificationException under concurrent access. All replaced with ConcurrentHashMap.
- Explosive Bow ricochet chain was broken. Ricochet arrows were created without the persistent data tag needed for ability identification. The bounced arrow would fly through the world and do nothing on impact. Fixed by tagging the new arrow with bow identification data.
- Missing permission definitions. mysticweapons.bypass, mysticweapons.bypass.cooldown, mysticweapons.staff, and mysticweapons.worldguard.bypass were referenced in config.yml but not defined in plugin.yml. All are now properly declared.
Combat & Ability Fixes
- Shield Bash shield lock did nothing. The onShieldBlock event handler was registered but contained no logic - it checked if shield lock was active but never modified the event. Shield damage now passes through when shield lock is active, with visual feedback.
- Gravity Bow used wrong WorldGuard flag. Gravity Pull and Push were checking the projectile launch flag instead of the PvP flag. This meant Gravity Bow could be blocked in regions where projectile weapons were restricted but PvP was allowed, and vice versa. Now checks PvP flag consistently.
- Vault transfer failure could lose money. If the deposit half of a Thief Sword money transfer succeeded but the withdrawal failed (or vice versa), the money was permanently lost from the economy. A refund mechanism was added, with a critical warning log if the refund also fails.
- Rune effects blocked by wrong config source. Aetherius Blade rune durations and amplifiers were hardcoded because the RuneManager read from config.yml instead of swords.yml. Fire/Freeze/Poison/Weakness runes from the weapons YAML are now applied correctly.
- Wound Dagger bleed could target offline players. The BukkitRunnable retained a reference to the attacker who might disconnect during the bleed period. Added an online check to prevent console errors.
- Polish language file was incomplete. Entire sections were missing: economy messages (Thief Sword, Item Stealer, Repair Sword), bow messages (Teleport Bow, Web Bow, Freeze Bow), anti-cheat notifications, and several Aetherius Blade combo messages. All have been added.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Full Weapon Roster (v1.5)
Category Count Weapons Swords 17 Aetherius Blade, Trap Sword, Elven Sword, Thief Sword, Item Stealer, Repair Sword, Hunger Sword, Energy Sword, Speed Sword, Potion Sword, Vampire Sword, Shadow Sword, Phantom Blade, Parry Blade, Crystal Blade, Tether Blade, Hook Blade Axes 3 Storm Breaker, Executioner, Shield Bash Bows 9 Gravity Bow, Elven Bow, Teleport Bow, Web Bow, Freeze Bow, Lightning Bow, Explosive Bow, Null Bow, Mark Bow Daggers 4 Elven Dagger, Poison Dagger, Wound Dagger, Phase Dagger
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Upgrading from 1.4 to 1.5
Your existing config.yml, swords.yml, bows.yml, and daggers.yml files are fully compatible. No configuration migration required.
On first run after update, the following files will be automatically updated with new content:
- swords.yml - 6 new weapons added (Crystal Blade, Storm Breaker, Tether Blade, Hook Blade, Executioner, Shield Bash)
[*]bows.yml - 2 new weapons added (Null Bow, Mark Bow)
[*]daggers.yml - 2 new weapons added (Wound Dagger, Phase Dagger)
[*]en_US.yml / pl_PL.yml - All new message keys merged in
[*]plugin.yml - 4 new permission nodes
None of your existing custom weapon values, message translations, or configuration settings will be overwritten. The merge mechanism only adds what is missing.
Important: If you have customized Elven Sword, Elven Dagger, Trap Sword, Gravity Bow, or Aetherius Blade Rune values in swords.yml or bows.yml and noticed they were not taking effect before - they will be applied correctly for the first time in this version.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
MysticWeapons 1.5.0 | Paper 1.21.4 | Java 21
MysticWeapons
Update 1.4
Critical fixes, reliability improvements, and performance gains.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
What Changed
Critical Bug Fixes
- Weapon configuration was silently ignored. All values defined in swords.yml, bows.yml, and daggers.yml were being discarded at runtime. The plugin was falling back to hardcoded defaults for every ability, cooldown, and damage value. This is now fixed. Your configuration files are fully respected.
- Item Stealer duplicated items on steal. The previous implementation used Inventory.remove(), which removes all stacks matching an item type across the entire inventory, not just the one that was stolen. A player holding 64 diamonds in multiple slots could lose all of them at once. The fix uses exact slot-based removal.
- Bow effects applied to the wrong arrow. Teleport Bow, Freeze Bow, Web Bow, and other projectile weapons checked the shooter's current main-hand item at the moment of impact rather than at the moment of firing. Swapping weapons mid-flight caused wrong effects to trigger. Arrows are now tagged with the bow's ID at the point of release using persistent data.
- Gravity Bow read from the wrong config file. Gravity Bow was reading its radius, attract strength, and repel strength from config.yml under a non-existent path. It now reads from bows.yml at the correct location.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Performance
- Shadow Sword particle spam eliminated. Each smoke cloud previously scheduled 30 individual tasks on the Bukkit scheduler. On a busy server with multiple Shadow Sword users, this could create hundreds of queued tasks per second. It now uses a single spawnParticle() call.
- Poison Dagger particle spam eliminated. Same issue: 100 scheduled tasks per poison cloud activation. Replaced with one batched particle spawn.
- Removed three empty event handlers. Three registered EventHandler methods contained no logic and fired on every relevant event doing nothing. Removed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Other Fixes
- Vampire Sword ally healing no longer blocked by WorldGuard build permissions. Healing nearby allies on kill was incorrectly gated by a build permission check. Build permissions have no relevance to receiving a heal. The check has been removed.
- Teleport Bow cooldown message used a mismatched key. The cooldown notification referenced ability.cooldown with a {seconds} placeholder, inconsistent with every other weapon. It now uses messages.cooldown-active with {time}, matching the rest of the plugin.
- Missing language key for Aetherius Blade combo counter. The empowerment progress message (messages.empowerment-progress) was missing from both en_US.yml and pl_PL.yml. Every hit with the Aetherius Blade logged a warning to console. Both files have been updated.
- Static plugin instance not cleared on disable. The static instance reference in the main class persisted after the plugin was disabled, preventing the JVM from garbage collecting the old instance on reload. Fixed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Upgrading from 1.0 to 1.4
Your existing config.yml, swords.yml, bows.yml, and daggers.yml files are fully compatible. No configuration migration required.
Action required: permission nodes have been renamed.
All permission nodes were corrected from misticweapons. to mysticweapons. to match the plugin name. Update your permission manager accordingly:
- misticweapons. -> mysticweapons.
- misticweapons.use -> mysticweapons.use
- misticweapons.admin -> mysticweapons.admin
- misticweapons.thief.protected -> mysticweapons.thief.protected
- misticweapons.stealer.protected -> mysticweapons.stealer.protected
If you have customized weapon values and noticed they were not taking effect before, they will now be applied correctly for the first time.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MysticWeapons 1.4 | Paper 1.21.4 | Java 21
MisticWeapons
Changelog — Version 1.3
Version 1.3 — Stability & Bug Fix Update
April 23, 2026
This update is a comprehensive internal overhaul focused entirely on stability, correctness, and performance. No new content has been added — every change is a fix to an existing system.
Critical Fixes
- Aetherius Blade — Rune system completely non-functional
Rune data assigned on kill was never actually saved to the weapon. Each call to getItemMeta() returned a separate copy of the metadata, so all PDC writes were silently discarded. The rune effect system now works as intended.- Vault Integration — Money duplication/loss on transfer
When the Thief Sword or Repair Sword triggered an economy transfer, if the deposit() step failed after a successful withdraw(), the money was permanently lost from the source player without reaching the target. A rollback refund is now applied automatically on failure.
High Priority Fixes
- Vampire Sword & Poison Dagger — Thread safety crash risk
Both abilities used standard HashMap for cooldown and stack tracking while a background ScheduledExecutorService accessed them concurrently. This is undefined behavior and could cause ConcurrentModificationException crashes. Switched to ConcurrentHashMap.- Aetherius Blade & Elven Bow — Abilities reading from wrong config section
Both abilities were reading ability parameters (damage, range, arrow count, spread angle, etc.) from the main config.yml using paths that don't exist there, instead of the correct weapon-specific YAML files. All ability values now load correctly.- Teleport Bow — WorldGuard region bypass
Players could use the Teleport Bow to teleport into WorldGuard-protected regions that they otherwise had no access to. A region check is now performed at the destination before any teleport is executed.- Player quit causing all Trap Sword traps to despawn
When any player disconnected from the server, the AbilityListener was calling trapSwordAbility.shutdown(), which cancelled every active trap from every player. Now only the quitting player's cleanup is handled.
Medium Priority Fixes
- Phantom Blade — Combo stacks accumulating on cancelled events
The melee hit handler was not marked ignoreCancelled = true, meaning combos would build up even on hits that were blocked by other plugins or game mechanics.- Explosive Bow — Memory leak from ricochet arrows
Arrows that ricochet off walls were tracked in a HashMap but were never removed if they flew into the void or despawned naturally. Over time this would grow unbounded. Ricochet entries are now cleaned up after 60 seconds.- Vampire Sword — Excessive scheduler usage during Blood Rage
Each Blood Rage activation was scheduling 30 individual delayed tasks for the particle effect (one per tick). This has been replaced with a single looping BukkitRunnable, reducing scheduler pressure significantly.- Aetherius Blade — Wrong feedback message on hit combo
The empowerment combo counter was sending an incorrect message key to the player's action bar.
Low Priority Fixes
- Vampire Sword — Memory leak on player disconnect
Player entries in the lifesteal cooldown map were never removed when a player logged off. Added proper cleanup on PlayerQuitEvent.- Shadow Sword — Task cancellation race condition
When re-activating Smoke Bomb, the new invisibility task was being scheduled before the old one was cancelled, creating a brief window where both ran simultaneously.- Elven Bow — Incorrect ability display name
getAbilityName() was returning the internal ID "elven_bow" instead of the display name "Elven Bow".- AbilityManager — Dead code removed
An identity switch statement that mapped every weapon ID to itself (e.g. "elven_bow" -> "elven_bow") was removed.
17 bugs fixed across 13 files. No API changes, no config changes required.
MisticWeapons v1.2.0
Update: 2 New Legendary Blades!
What's New in v1.2.0?
This update introduces 2 brand new sword types with unique combat mechanics!
New Weapons
Phantom Blade
Build devastating combo chains with every strike!
- Passive: Attack enemies to stack combo points (max 5 stacks)
- Each stack grants +20% damage bonus
- Stacks decay after 3 seconds without attacking
- Active (Right-Click): Soul Finisher - AoE burst attack
- Consumes all stacks to deal 2 damage per stack in 5-block radius
- Purple soul particles show combo progress
️ Parry Blade
Master the art of defense and counterattacks!
- Active (Right-Click): Enter guard stance for 2 seconds
- Auto-Counter: Block and reflect the next incoming attack
- Deals 150% of blocked damage back to attacker
- Applies knockback to the enemy
- 2-second cooldown between guards
- Blue shield particles during active guard
This update introduces 5 brand new weapons with unique mechanics!MisticWeapons v1.1.0
Major Update: 5 New Legendary Weapons!
What's New in v1.1.0?
Lightning Bow - Chain lightning attacks
- Explosive Bow - Ricocheting explosive arrows
- Vampire Sword - Lifesteal and blood rage
- Shadow Sword - Stealth and backstab mechanics
- Poison Dagger - Stack-based poison system
Support & Feedback
Having issues or suggestions?
![]()
- Discord: Join for support
- Bug Reports: GitHub Issues
Feature Requests: Discord #suggestions channel
Weapon Ideas: Share your creative concepts!
Thank You!
Enjoy the new weapons and happy hunting!
