Tags
Creators
Details
Licensed GPL-3.0-only
Published 2 months ago
Updated 2 months ago
All versions
0.2.0
Release
ModularShoot 0.2.02 months ago 17
Compatibility
Minecraft: Java Edition
1.21.1
Platform
NeoForge
Supported environments
Client and server
Changes
Breaking Changes
- Removed 5 deprecated
ModularShootAPIoverloads: the explicitRegistryAccessuninstall overloads and the non-refreshingsetPluginLockedhave been removed. Use the recommended player-derived overloads, or callPluginUninstallService/PluginLockServicedirectly. - Removed
BulletManager#fireBullet: useModularShootAPI.fireBulletor the newCreationCoordinatorfor standalone firing. - Network protocol bumped to 3: 0.2.0 is not interoperable with older clients/servers; both sides must update together.
Performance
- Cached registry lookups everywhere: hot paths no longer re-resolve gun/plugin/state definitions repeatedly, speeding up shooting, install/uninstall and tooltips.
- Much lighter bullet sync: spatial indexing, position quantization and distance-based downsampling, plus content-addressed full sync and gun-state diffs, cut bandwidth and CPU on populated servers.
- Faster state handling: same-value writes short-circuit, fast NBT codec paths, and player-state throttling reduce copies and sync traffic for high-frequency states.
- Leaner rendering and tooltips: per-frame tooltip caching, reverse indexes, cached texture-key hashes, lazy outline masks and render-object reuse lower per-frame cost.
- Faster reloads: shared registry snapshots and cached modifier results prevent repeated full-table recomputation on large packs.
- Batched broadcasts: hit and firing-animation updates are merged per tick, reducing packet counts and player scans.
Architecture
- One-way public API: item recognition moved into an internal utility; internal services no longer depend on the facade.
- Cleaner client/server split: client payload handling moved into the client package; common code no longer imports Minecraft client classes.
- Clearer responsibilities: the bullet manager was split into storage, creation and network-marking layers; the fire-rate formula is now a single shared source of truth.
Robustness
- Added empty-handler short-circuits, throttled error logging, defensive packet decoding, no-op state-clear short-circuits and cache lifecycle cleanup.
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:OmLfZ9Kf"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:9y0nNlNt:OmLfZ9Kf"
}

