All versions
Central
1.1.0
Release
CombatGunSSS 1.1.06 months ago 47
Compatibility
Minecraft: Java Edition
1.21.x
Platforms
Paper
Purpur
Changes
[1.1.0] - 2026-04-10
Added
PlaceholderAPI Integration
- New soft-depend on PlaceholderAPI. When the plugin is present, CombatGunSSS registers a
%combatgun_*%expansion with 8 real-time placeholders:
| Placeholder | Example | Description |
|---|---|---|
%combatgun_gun_name% |
AK47 |
Display name of held gun |
%combatgun_gun_id% |
ak47 |
Internal ID of held gun |
%combatgun_gun_rarity% |
epic |
Rarity of held gun |
%combatgun_ammo% |
24 |
Current magazine ammo |
%combatgun_ammo_max% |
30 |
Magazine capacity |
%combatgun_ammo_reserve% |
90 |
Reserve ammo in inventory |
%combatgun_is_reloading% |
true |
Whether player is reloading |
%combatgun_is_gun% |
true |
Whether held item is a gun |
- All placeholders return safe empty-string or
0defaults when the player holds no gun. - Compatible with scoreboard plugins (AdvancedHud, TAB, AnimatedScoreboard, etc).
Vault Economy / Shop
- New soft-depend on Vault. When an economy provider is found and
combatgun.shop.enabled: true, players can purchase weapons via/gun buy <gun_id>. - Prices are configured per gun in
config.ymlundercombatgun.shop.guns. All 45 built-in weapons have default prices included in the generated config. - Admin shortcut:
/gun buy <gun_id> freegives the weapon at no cost (requirescombatgun.admin). - Clear failure messages for insufficient funds, missing price entry, and unavailable economy.
/gun buyadded to tab completion and/gunhelp output.VaultHookis a standalone class โVaultHook.buyGun()can be called from third-party plugins that depend on CombatGunSSS.
WorldGuard Region Protection
- New soft-depend on WorldGuard. When present, a custom flag
gun-shootingis registered duringonLoad()(before WorldGuard reads region data). - Shooting is blocked in any region where
gun-shootingis set todeny:/rg flag <region> gun-shooting deny # block all gun use /rg flag <region> gun-shooting allow # explicitly allow - Falls back to WorldGuard's built-in
PVPflag whengun-shootingis not configured on a region. - Applies to all ranged shots and is checked inside
isAllowed()โ same path as world and permission checks. Players receive an action-bar message:โ Guns are disabled in this region. - Fails open on unexpected errors to avoid breaking gameplay.
Anti-Cheat Exemptions (Vulcan & Matrix)
- New soft-depend detection for Vulcan and Matrix anti-cheat plugins.
- When either plugin is detected,
AntiCheatHook.exempt(player)is called immediately beforeapplyRecoil()โ preventing false-positive flags on the camera pitch/yaw changes that recoil applies. - Exemption is automatically removed after
combatgun.anticheat.exempt_ticksticks (default3). - Both exemption and un-exemption calls are fully wrapped in try-catch โ an API version mismatch in either anti-cheat never crashes CombatGunSSS.
Central HookManager
- New
HookManagerclass owns all hook instances (PlaceholderHook,VaultHook,WorldGuardHook,AntiCheatHook). - Initialized once in
onEnable(). Each hook initializes independently โ a failure in one never prevents others from loading. - Accessible via
plugin.getHookManager()for third-party plugins that want to query hook state. - Startup log now prints
Shop: ON (Vault)andWGuard: ONlines based on detected integrations.
Changed
pom.xmlโ addedprovideddependencies for PlaceholderAPI2.11.6, VaultAPI1.7, and WorldGuard7.0.9. All three are compile-time only (never shaded into the jar).plugin.ymlโ version bumped to1.1.0; addedsoftdependlist:[PlaceholderAPI, Vault, WorldGuard, Vulcan, Matrix]; updated command description to includebuy; updated plugin description.config.ymlโ addedcombatgun.shopsection withenabled,currency_symbol, and per-gun price list for all 45 built-in weapons; addedcombatgun.anticheat.exempt_tickskey; added inline documentation comments for WorldGuard.GunCommandโ addedbuytoSUB_COMMANDSlist, switch statement, tab completion, and help text; addedhandleBuy()method.GunListener.isAllowed()โ added WorldGuard region check between world check and permission check.GunListener.applyRecoil()โ callsantiCheatHook.exempt(player)before applying camera rotation.CombatGunSSSPlugin.onLoad()โ addedWorldGuardHook.registerFlags()call (required before WorldGuard reads region data).CombatGunSSSPlugin.onEnable()โ initializesHookManagerafter all managers are ready; startup log prints hook status lines.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:BSt2YZOI:SXY0cwfx"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:BSt2YZOI:SXY0cwfx"
}

