Links
Tags
Creators
Details
1.0
Compatibility
Changes
CustomDespawn
A high-performance, completely silent administrative optimization utility for modern Minecraft server software. Engineered explicitly to override vanilla ground-item lifecycles via granular configuration profiles, reducing entity-tick lag and optimizing server MSPT without breaking core gameplay mechanics.
🛠️ Feature Architecture
- Native Paper Despawn Rate Injection (
ItemSpawnListener.java): Completely bypasses legacy Bukkit age-shifting math (setTicksLived) and the vanilla 5-minute hard limit. Leverages modern Paper API (item.setDespawnRate(int)) to apply true tick lifespans to item entities directly on spawn. - Granular Profile Matching Matrix: Evaluates ground item materials from top to bottom against customizable configuration layers (
config.yml). Allows separate lifespan settings for low-value trash items (e.g., 15s lifespans for cobblestone, netherrack, or dirt) while safely protecting high-value assets. - Persistent Death Drop Retention: Automatically tracks player equipment drops during death events using strict metadata assignment loops. Increases the despawn threshold of authentic death item streams (defaulting to a generous 5-minute or longer buffer) so players can retrieve lost items without risking aggressive floor wipes.
- Delayed Operator Welcome Feed (
PlayerJoinListener.java): Identifies incoming server operators (player.isOp()) and triggers a delayed message loop. Dispatches an optimization notification exactly 3 seconds (60 ticks) after login, ensuring the notice is clearly visible in the chat feed without getting buried during world loading. - Zero-Permission Background Execution: Operates entirely behind the scenes via a streamlined listener engine. Contains no command mapping footprints, maintaining zero runtime overhead on standard player text routing or permission verification passes.
- Decoupled Duration Parse Engine (
TimeParser.java): Includes a standalone text utility that converts clean human duration syntax (such as15s,2m,8m) into primitive integers (1s = 20t) on the fly. Built with robust configuration fallback parameters that throw cleanIllegalArgumentExceptionblocks on malformed inputs to protect boot chains from crashing.
⚙️ Environment Specs
Compatible Loaders
- PaperMC (1.21+) — Strictly required for native, un-clamped item entity despawn rate manipulation API access.
Core Command Matrix
/customdespawn reload(Alias:/cdespawn reload) — Reloads configuration rules dynamically without requiring a server reboot.- Permission:
customdespawn.reload(Defaults strictly to server operators).
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:3fwZ8Qe8:zhoZOqm5"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:3fwZ8Qe8:zhoZOqm5"
}
