Tags
Creators
Details
Licensed GPL-3.0-only
Published 2 months ago
Updated 2 months ago
All versions
0.1.4
Release
ModularShoot 0.1.42 months ago 5
Compatibility
Minecraft: Java Edition
1.21.1
Platform
NeoForge
Supported environments
Client and server
Changes
[0.1.4] - 2026-08-10
Added
- Dynamic gun definition providers:
GunRegistrygains aregisterGunDefinitionProviderchannel, extending thegetGunlookup order to Java API registration → provider → datapack registry. This enables per-player / runtime-generated dynamic definitions (e.g. "the player is the gun" gameplay), benefiting every in-framework definition lookup site with zero changes. The facadeModularShootAPI.registerGunDefinitionProviderexposes this externally; behavior is completely unchanged when no provider is registered. - Plugins support the
adds_slotsfield: after installation a plugin can add a specified number of slots, or even create slot types the gun did not originally have (keys must be fully namespaced or baremodularshoot:keys; values are arbitrary integers, negative ones occupying slots). Effective capacity = gun slots + aggregatedadds_slotsof installed plugins; install matching and the tooltip plugin bar are both computed with effective slots. - Uninstall overflow pre-check: a non-force uninstall that would leave any slot type overflowing after removal is rejected with
WOULD_OVERFLOW(not limited to the slot-adding plugin itself — residual overflow after uninstall is refused); force uninstall bypasses this, leaving the overflowing plugin in place but that slot can no longer accept plugins; random uninstall automatically filters out candidates that would trigger overflow. - reload validation:
adds_slotskeys are checked (WARN) for existence against theplugin_typesregistry.
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:9y0nNlNt:FFvUDTuw"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:9y0nNlNt:FFvUDTuw"
}

