
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.3.0] - 2026-07-18
Fixed
🔴 CustomItemManager — Ammo/component items craftable into real vanilla resources without a resource pack (Critical / Economy exploit)
- Root cause: Ammo and component items are built on top of vanilla
Materials purely so a resource pack has something to visually re-skin — e.g.ar_ammo=Material.GOLD_NUGGET,smg_ammo(and the fallback case) =Material.IRON_NUGGET,sg_ammo=Material.CLAY_BALL, and ingot-type components =Material.IRON_INGOT. Without a resource pack installed, players see these exactly as plain vanilla nuggets/ingots — and worse, they are those vanilla materials underneath the custom name/lore/model data. The vanilla crafting grid recognised 9ar_ammoitems as 9 realGOLD_NUGGETs and happily crafted them into a realGOLD_INGOT(same forsmg_ammo→ iron ingot, andsg_ammo→ brick via furnace smelting), letting players convert unlimited free ammo into real vanilla resources. - Fix 1: Added
CustomItemManager.isCustomItem(ItemStack)— a generic check for ourcustom_item_typePDC tag, true for any ammo/component/station item regardless of which vanillaMaterialit's built on. - Fix 2:
CraftingListener.onPrepareCraft()now blocks the vanilla crafting-table result (craftingInventory.setResult(null)) whenever the 3×3/2×2 grid contains any of our tagged items and the grid doesn't match one of our own recognised workbench recipes. - Fix 3: New
CraftingListener.onFurnaceSmelt()handler cancelsFurnaceSmeltEvent(covers furnace, blast furnace, and smoker) whenever the item being smelted carries our custom tag — closing the same hole for materials with a vanilla smelting recipe (e.g. clay ball → brick).
🔴 GunListener.onMeleeAttack() — Melee weapons play the hit sound but deal no damage and don't affect the target (Critical)
- Root cause:
onMeleeAttack()cancelled the original swing'sEntityDamageByEntityEventand then calledtarget.damage(gun.getDamage(), player)to apply custom damage manually. That call fires its own freshEntityDamageByEntityEventwith the same damager (the attacking player) and the sameENTITY_ATTACKcause — which re-entersonMeleeAttack()a second time, synchronously, before the outer call returns. On this inner call,ammoManager.tryMeleeAttack()always failed (the cooldown had just been consumed a few lines above in the outer call), so the inner call cancelled its event — which was the event actually carrying the damage. The outer call then continued on to play the hit sound and particles regardless, producing the exact symptom reported: audible hit, zero damage, target completely unaffected. This affected melee weapons only (ranged hitscan damage isn't triggered from a listenedEntityDamageByEntityEvent, so it can't recurse the same way). - Fix: Added a
meleeInProgressreentrancy guard (Set<UUID>). The player's UUID is added immediately before callingtarget.damage(...)and removed in afinallyblock right after. IfonMeleeAttack()re-enters for the same player while their UUID is already in the set, it now returns immediately without touchingevent.setCancelled()— letting the synthetic inner event proceed uncancelled so the damage actually applies.
Файлы
CombatGunSSS-2.3.0.jar(12.97 MiB)
ОсновнойМетаданные
Канал релиза
Release
Номер версии
2.3.0
Загрузчики
BukkitPaperPurpurSpigot
Версии игры
1.21–1.21.11
Загрузок
152
Дата публикации
18.07.2026
