
CombatGunSSS
Adds 45 unique guns to Minecraft, each with custom damage, recoil, fire rate, and reload mechanics, enhancing combat with balanced gameplay, multiple weapon types, and flexible customization for varied playstyles
Оцените первым
1.2K
5
Список изменений
[2.2.0] - 2026-07-18
Fixed
🔴 GunCommand — Every player-facing subcommand blocked for non-admins (Critical)
- Root cause:
onCommand()gated the entire/guncommand tree behindcombatgun.adminbefore dispatching to any subcommand, andplugin.ymladditionally declaredpermission: combatgun.admindirectly on the command — so Bukkit's own command dispatcher rejected non-admins beforeonCommand()ever ran. This silently broke/gun buy(the Vault shop),/gun attach//gun detach//gun attachments,/gun stats,/gun leaderboard, and/gun recipefor every player withoutcombatgun.admin, even though several of these handlers already contained their owncombatgun.usecheck — a check that could never actually execute. - Fix: Removed the command-level
permission:entry fromplugin.yml.onCommand()now checks a newPLAYER_SUBCOMMANDSset —buy, attach, detach, attachments, stats, leaderboard, recipe, the self-service subcommands that take no target-player argument — againstcombatgun.useORcombatgun.admin. Every other subcommand (give, giveammo, givepart, station, book, givepouch, givethrowable, inspect, reload, statsreset, seasonreset) still requirescombatgun.admin, since each of those can act on an arbitrary target player and is not meant to be self-service.
🔴 GunCommand.onTabComplete() — Same admin-only gate hid tab-completion for regular players (High)
- Root cause: Identical bug to the one above —
onTabComplete()returned an empty list for any sender withoutcombatgun.admin. Even after fixingonCommand(), non-admins would still see zero suggestions when typing/gun. - Fix:
onTabComplete()now mirrors thePLAYER_SUBCOMMANDSpermission split — non-admins withcombatgun.usesee the subcommand names they're allowed to run, and id-completion for/gun recipe <id>(a read-only lookup) is available to them as well. Argument completion for admin-only give/inspect/config subcommands remains gated behindcombatgun.admin.
🟠 VaultHook.buyGun() — Purchased weapon silently lost when inventory is full (Medium)
- Root cause:
player.getInventory().addItem(gunItem)was called without checking its return value.addItem()silently drops anyItemStackthat doesn't fit, so a player with a full inventory was charged the full price but never actually received the gun. - Fix: The leftover
ItemStacks returned byaddItem()are now dropped at the player's feet viadropItemNaturally(), and the player receives an additional chat message letting them know the purchase was dropped rather than lost.
Added
CraftingManager — Recipe Browser split into Gun / Melee / Ammo tabs
- The recipe browser (opened from the Mechanical Crafting Table's book icon) now shows three clickable category tabs in its bottom row instead of one long mixed list, so players can find what they want to craft without scrolling past unrelated items.
- New
CraftingManager.BrowserCategoryenum (GUN,MELEE,AMMO). Guns and melee weapons are both stored underRecipeData.RecipeKind.GUNinternally, so the split is done by checkingGunData.isMelee()rather than changing the existing recipe-kind enum — this avoids touching the exhaustiveswitchonRecipeKindinCustomItemManager. - Each player's last-viewed tab is remembered in-memory (keyed by UUID) so paging with prev/next stays on the same category instead of resetting to Gun; the cache entry is cleared on
PlayerQuitEventto avoid unbounded growth. - A category with no recipes configured shows an explicit "No recipes here" placeholder instead of an empty page.
openRecipeBrowser(Player, int)is preserved for existing call sites and now delegates to a newopenRecipeBrowser(Player, int, BrowserCategory)overload.
Файлы
CombatGunSSS-2.2.0.jar(12.97 MiB)
ОсновнойМетаданные
Канал релиза
Release
Номер версии
2.2.0
Загрузчики
BukkitPaperPurpurSpigot
Версии игры
1.21–1.21.11
Загрузок
5
Дата публикации
18.07.2026
