SMP Swords
2.2.0⚔️ SMP Swords – Custom Ability System for SMP Servers Transform your Minecraft SMP into a powerful custom ability experience! With a single command, every player receives a unique custom sword with
2.2.0latestSMP Swords 2.2.0Jun 21, 2026 v2.4.0 — Minecraft 26.2 "Chaos Cubed" Support
Ported to Minecraft 26.2. No code changes required (per Spigot: no significant API changes since 26.1). Resource pack
bumped frompack_format84 → 882.1.0SMP Swords 2.1.0Jun 21, 2026 v2.1.0 — Code Audit + Bug Fixes for MC 26.1.x
Full codebase audit for Spigot, PaperMC, Purpur 26.1.x Fixes critical Lightning Sword recursion bug, restores right-click interaction for non-ability swords, fixes /smp give//smp start edge cases, and adds several null-safety + off-hand improvements. No breaking changes.2.0.0SMP Swords 2.0.0Jun 19, 2026 Release Notes — v2.0.0
Initial release. The plugin was completely rebuilt from a broken and incomplete source. Below is a comprehensive changelog of everything that was added, fixed, changed, and removed. ---Added
Visuals & Custom Textures
Custom 16×16 Textures: Added 5 distinct 16×16 sword textures (Fire, Lightning, Teleport, Life Steal, Freeze*) featuring element-specific accent pixels. Model JSON Overrides:* Configured custom model overrides fornetherite_swordmappingcustom_model_datavalues1001–1005to their respective custom sword models. Bundled Resource Pack:* Packaged the resource pack directly inside the JAR (pack_format: 34,supported_formats: [34, 99]). It automatically extracts toplugins/SMPSwords/resourcepack/on first startup.Core Commands & Tab Completion
`/smp reload`:* Added a command to reloadconfig.ymlon the fly without needing to restart the server. `/smp pack`:* Added a command to force-push the configured resource pack to all online players. Tab Completion:* Implemented proper tab completion for player names in/smp give <player> <type>. `/smpswords` Alias:* Added/smpswordsas an alternative command alias for/smp.Abilities & Gameplay Mechanics
Safe-Landing Check (Teleport):* The Teleport ability now performs a safety scan, walking up to 3 blocks up or down to find a solid, safe landing spot. Teleport Effects:* Added immersive particle and sound feedback on teleportation (portal particles accompanied by the Enderman teleport sound). Action-Bar Cooldowns:* Real-time cooldown countdown messages are now displayed on the action bar utilizing Spigot'splayer.spigot().sendMessage(...)API. Inventory Overflow Handling:* If a player's inventory is full when receiving a sword, the item is dropped at their feet, and a chat warning is sent. Drop Intercept Feedback:* Added a chat notification when a player attempts to drop a custom sword, clarifying why the action was blocked instead of cancelling silently. Clean Item Presentation:* Attached item flags to hide the default enchantment glint and unbreakable tags on all custom swords. ---Fixed
Build & Dependency Management
Build Failure (XSeries Integration):* Added the missingcom.github.cryptomorin:XSeries:11.2.1dependency and integrated thecom.gradleup.shadowplugin to bundle it into the final JAR. XSeries classes are relocated tocom.smpswords.libs.xseriesto eliminate conflicts with other plugins. Missing `settings.gradle`:* Resolved a critical Gradle configuration issue where the project root could not be determined. Missing Textures:* Rectified an issue where only model JSON files existed whilelayer0texture references pointed to non-existent PNGs (which previously caused swords to render as plain vanilla netherite swords). Outdated Pack Format:* Fixed an issue wherepack.mcmetatargetedpack_format: 15(Minecraft 1.19.4), causing Minecraft 1.21 to reject the resource pack. Bumped format to34. Duplicate Resource Pack Folder:* Eliminated a duplicateresourcepack/folder sitting at the project root. Only the functional copy insidesrc/main/resources/remains.Crash & Bug Fixes
`LightningAbility.onRightClick` NullPointerException (NPE):* Fixed a crash whereplayer.getTargetBlock(null, 20)returned null and was dereferenced without protection. It now safely falls back to a targeted coordinate 15 blocks in front of the player's line of sight. Griefing/Self-Damage via Lightning:*LightningAbilityoriginally usedstrikeLightning, which inadvertently spread fire and damaged the attacker. Switched tostrikeLightningEffectcombined with manualdamage()calls so only the intended target takes damage and no fire spreads. `LifeStealAbility` Crash:* Fixed anIllegalArgumentExceptionthrown when callingsetHealth()if the attacker died in the brief window between landing a hit and the ability firing. Added anisDead()/isValid()guard block and wrapped it in atry/catch. Reflection-based Attribute Handling:* Replaced the fragile reflection-basedXAttribute.of("generic.max_health")inLifeStealAbilitywith the direct vanillaAttribute.GENERIC_MAX_HEALTHenum. Tangled Cooldown Logic:* Cleaned up overlapping logic whereAbilityManager.triggerHitchecked the cooldown whileLightningAbilitysimultaneously checked and modified it. All cooldown tasks are now strictly centralized insideAbilityManager. Outdated Resource Pack API:* UpgradedResourcePackManagerfrom the deprecatedsetResourcePack(String)method—which ignored config options for prompts and required enforcement—to the modern Spigot 1.21 API:setResourcePack(String url, byte[] hash, String prompt, boolean required). It now correctly parses hex hashes intobyte[]. `SwordInfoGUI` Ownership Bug:* Fixed a flaw wherehasSwordwas incorrectly calculated viatype == playerSwords.get(uuid). This caused issues since a player can carry multiple custom swords. The GUI now scans the player's active inventory for any matches. `SwordManager.distributeToAll` Skipping Flaw:* Fixed a logic bug where a disabled sword type was only skipped once; if two consecutive types were disabled, the second one could still be distributed. The method now safely loops across all types until it matches an enabled option. Thread Visibility Defect (`smpActive`):* MarkedSMPSwords.smpActiveasvolatileto fix a concurrency bug where state changes written by command threads weren't reliably seen by event threads. Duplicate Listener Registration:* Fixed a bug whereResourcePackManagerregistered itself as an event listener twice (once in its constructor and again inSMPSwords.onEnable). Ugly Tab Completion Console Warnings:* Corrected a behavior where tab completion returned null for player names under/smp give, producing console warnings. It now returns a properly filtered list of active player names. `plugin.yml` Syntax Clean up:* Quotedapi-version: "1.21"for strict YAML compliance and documented the usage properties for the new/smp reloadand/smp packsubcommands. ---Changed
Namespaced Texture Paths:* Updated model JSON references to use the safer, fully-namespacedminecraft:item/custom/<name>pathing structure instead of the looseritem/custom/<name>. Stateless Abilities:* Refactored all abilities to be entirely stateless. Abilities no longer callplugin.getAbilityManager().isOnCooldown(...)internally; instead,AbilityManagerevaluates the cooldown window prior to execution and triggers the cooldown timer immediately after. Startup Logs:* Added a clean info notification insideSMPSwords.onEnable()to log a proper startup confirmation message. Configuration File Cleanup:* Polishedconfig.ymlwith cleaner indentation, structured spacing, and descriptive inline documentation. ---Removed
Root-Level `resourcepack/` Folder:* Deleted the duplicate folder from the repository root to ensure all assets build cleanly out ofsrc/main/resources/resourcepack/.1.0.0SMP Swords 1.0.0Feb 23, 2026
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta