All versions
1.0.1
Release
CombatGunSSS 1.0.17 months ago 35
Compatibility
Minecraft: Java Edition
1.21.x
Platforms
Paper
Purpur
Changes
[1.0.1] - 2026-04-05
Fixed
Crafting System
registerVanillaRecipes()was never called โ component recipes were not registered with Bukkit on startup or after/gun reload, so the vanilla Recipe Book showed no entries. Fixed by callingregisterVanillaRecipes()inonEnable()andhandleReload().- Best-match recipe resolution โ
ar_ammo,smg_ammo, andhg_ammoshare the same four ingredient types (brass_casing,gunpowder,steel_scrap,primer_cap). The old first-match algorithm could produce the wrong ammo type when a player placed slightly more ingredients than the minimum required. Replaced with a lowest-surplus algorithm that always selects the recipe whose ingredient amounts are closest to what the player put in. breakonly exited the inner loop inregisterVanillaRecipes()โ when a component recipe required more than 9 items total (the BukkitShapelessRecipecap), the warning was logged but the outer ingredient loop continued, resulting in a partially-built recipe being registered silently. Changed to a labeledbreak outerso the entire recipe is skipped on overflow.- Double-click (COLLECT) could pull ingredients out of the Mechanical Crafting Table โ Bukkit's COLLECT click type sweeps the entire open inventory for matching items, bypassing the station's input-slot guard and corrupting the crafting preview. Added an explicit
ClickType.DOUBLE_CLICKcancel at the top ofonInventoryClick. - Recipe book identified by display name instead of PDC tag โ any
written_bookwith "Recipe Guide" in its name would hijack the recipe GUI. The book now carries arecipe_book_markerPDC key set at creation time;RecipeBookListenerchecks this key instead. RecipeCategory.valueOfcould throw uncaughtIllegalArgumentExceptionโ if PDC data was corrupt or written by a different plugin version, the category click handler would crash with an unhandled exception. Wrapped in try-catch with a warning log.
Combat
- Removed 5
[DEBUG]log statements fromGunListener.traceProjectile()โ these were left in from development and spammed the server console with 4โ5 lines per bullet fired.
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:u2mvXZHE"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:BSt2YZOI:u2mvXZHE"
}

