Tags
Creators
Details
Licensed GPL-3.0-only
Published 2 months ago
Updated 2 months ago
All versions
0.1.6
Release
ModularShoot 0.1.62 months ago 12
Compatibility
Minecraft: Java Edition
1.21.1
Platform
NeoForge
Supported environments
Client and server
Changes
[0.1.6] - 2026-08-13
Performance
- Faster item recognition and binding lookups: hot paths like inventory scans no longer rebuild lookup tables on every call — a notable per-tick saving on populated servers.
- Deduplicated state writes: writing an unchanged value no longer triggers data copies or sync traffic, so high-frequency states (heat accumulation, etc.) stop generating pointless packets.
- Smaller bullet sync packets: incremental sync entries are about half the size; bandwidth drops noticeably when many bullets are in flight.
- Cheaper shotgun / multi-pellet shots: the variant pool is built once per shot; pellets only roll independently — no more repeated registry lookups per pellet (the bullet-visual registry scan is also cached per registry instance).
- Batch uninstall recomputes attributes once: removing several plugins at once recomputes attributes a single time instead of once per plugin.
- More reliable texture caching: dynamic texture cache keys now compare values, so plugin reloads or resource refreshes never trigger unnecessary texture recomposition.
- Leaner rendering: per-frame / per-tick temporary allocations (bullet sorting, snapshot reads) eliminated.
Fixed
- Bullets could briefly disappear after a dimension switch: sync state is now reset on dimension change instead of relying on the periodic full sync seconds later.
- Stale plugin visuals after a resource reload: F3+T now also clears the overlay cache, keeping visuals consistent with the resource packs.
- Deterministic binding resolution: when several Java-API bindings register the same item, the lexicographically smallest entry key now wins — the same rule as the datapack channel — instead of an unspecified scan order.
- Hit-packet encoding fix: non-entity hits no longer write the -1 sentinel as a varint (a negative varint is actually larger); a presence flag plus conditional varint keeps both entity and non-entity hits at or below the old fixed-width size.
- Shoot sounds fade out too early at high speed: shoot and plugin-install sounds now follow the player, so fast movement no longer leaves them behind at the trigger point.
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:Y6qgGGsq"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:9y0nNlNt:Y6qgGGsq"
}

