All versions
1.2.1
Release
Simple Sorting Hoppers 1.2.12 months ago 116
Uploaded by
Compatibility
Minecraft: Java Edition
26.2
Platform
Fabric
Supported environments
Server-side
Singleplayer
Required content
Changes
Performace Improvments
Major
- Made it so a spatial chunk scan is no longer being performed after every item transfer attempt by storing filter status and last checked tick for every hopper.
- Found this had ~95% reduction in CPU time
- Mutate the existing filter catche entry in-place instead of generating new one each time or re-inserting map keys
- Removed Stuttering and random pauses
- Before there was the static 20 tick TTL so if there was massive hopper intansive setups there would be mirco spikes every single time, so I added a pseodo random offset (based on positional data) to spread them out.
- Stopped hoppers with no filters from running full spatial bounding box searches on every single one of the item transgers.
- Removes all overhead for normal hoppers effectivly.
- Added bitmask check in hopper tick loop to prevent an O(N) linear traversal across all entries, causing frame drop.
- Pruning is throttled using a bitmask check (currentTick & 0x7F) == 0, ensuring stale-entry cleanup runs at most once every 128 game ticks (~6.4 seconds).
Minor
- HashSet lookup for item search instead of .contains(stack.getItem())
- O(N) -> O(1)
- CanAccept() was called twice per transfer so I switched it so the destination was not able to accept it immediatly canceled the operation.
- Prevented potential client-side rendering thread execution or level nullability issues.
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:gb1XUOfC:YI9UgzNT"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:gb1XUOfC:YI9UgzNT"
}

