Auto Pickup is a highly configurable server-side Fabric mod that automates the collection of items and experience orbs. It features session tracking, a multi-tier permission system, and extensive mod compatibility to ensure drops are attributed to the correct players, even when using high-speed mining mods or engaging in group combat.
- ๐ Seamless Collection: Items from broken blocks and mob kills are instantly added to your inventory
- โญ Smart Experience Handling: Experience is cached and applied after a short delay, ensuring tools take durability damage before Mending activates
- ๐ Lag-Free: Prevents item and experience orb entities from spawning, reducing server load
- ๐ฆ Overflow Protection: If your inventory is full, items safely drop at your feet
- ๐ง Granular Control: Toggle individual features independently via commands or config GUI
- ๐ฅ Mob Loot Splitting: Share mob drops and XP with nearby players who participated in the kill
- ๐ฎ Per-Player Permissions: Server admins can override settings for specific players
- ๐พ Client Profiles: Automatic per-server/world configuration profiles for seamless server switching
- ๐ Extensive Mod Compatibility: Works automatically with VeinMiner, TreeHarvester, Traveler's Backpack, and more
Auto Pickup uses a flexible three-tier permission system:
- Server Defaults - Global fallback settings
- Admin Overrides - Per-player forced settings (highest priority)
- Client Preferences - Individual player choices (only if server allows)
If you have Mod Menu and YetAnotherConfigLib (YACL) installed, you can configure your personal preferences via the Mods menu.
Settings available:
- Master Toggle
- Block Item Pickup
- Block Experience Pickup
- Mob Loot Pickup
- Mob Experience Pickup
- Split Mob Loot (share drops with nearby attackers)
- Split Mob XP (share experience with nearby attackers)
Note: Your client settings only apply if the server admin has enabled the corresponding "Allow" setting for that feature.
Server operators (OP Level 2+) can manage global defaults and player overrides using /autopickup.
| Command | Description | Default |
|---|---|---|
/autopickup |
Display current configuration status | - |
/autopickup master <true|false> |
Master toggle - disables mod entirely if false | true |
/autopickup blocks <true|false> |
Auto-pickup items from broken blocks | true |
/autopickup blockxp <true|false> |
Auto-pickup experience from broken blocks | true |
/autopickup mobloot <true|false> |
Auto-pickup loot from killed mobs | false |
/autopickup mobxp <true|false> |
Auto-pickup experience from killed mobs | false |
/autopickup splitmobloot <true|false> |
Share mob loot among nearby attackers | false |
/autopickup splitmobxp <true|false> |
Share mob XP among nearby attackers | false |
These commands determine whether players can override server defaults with their client settings.
| Command | Description | Default |
|---|---|---|
/autopickup allow master <true|false> |
Allow clients to toggle master switch | false |
/autopickup allow blocks <true|false> |
Allow clients to toggle block item pickup | false |
/autopickup allow blockxp <true|false> |
Allow clients to toggle block XP pickup | false |
/autopickup allow mobloot <true|false> |
Allow clients to toggle mob loot pickup | false |
/autopickup allow mobxp <true|false> |
Allow clients to toggle mob XP pickup | false |
/autopickup allow splitmobloot <true|false> |
Allow clients to toggle mob loot splitting | false |
/autopickup allow splitmobxp <true|false> |
Allow clients to toggle mob XP splitting | false |
Force specific settings for individual players (overrides both server defaults and client preferences).
| Command | Description |
|---|---|
/autopickup override <player> master <true|false|default> |
Override player's master toggle |
/autopickup override <player> blocks <true|false|default> |
Override player's block pickup |
/autopickup override <player> blockxp <true|false|default> |
Override player's block XP |
/autopickup override <player> mobloot <true|false|default> |
Override player's mob loot |
/autopickup override <player> mobxp <true|false|default> |
Override player's mob XP |
/autopickup override <player> splitmobloot <true|false|default> |
Override player's loot splitting |
/autopickup override <player> splitmobxp <true|false|default> |
Override player's XP splitting |
/autopickup override <player> clear |
Remove all overrides for a player |
Use
defaultto remove a specific override while keeping others.
Server Config: config/AutoPickup/global_config.json
{
"autoPickup": true,
"autoPickupBlocks": true,
"autoPickupBlockXp": true,
"autoPickupMobLoot": false,
"autoPickupMobXp": false,
"autoPickupSplitMobLoot": false,
"autoPickupSplitMobXp": false,
"allowMaster": false,
"allowBlocks": false,
"allowBlockXp": false,
"allowMobLoot": false,
"allowMobXp": false,
"allowSplitMobLoot": false,
"allowSplitMobXp": false
}Client Config: config/AutoPickup/client_default.toml (or per-server profiles in presets/)
# AutoPickup Client Configuration
master = true
blocks = true
blockXp = true
mobLoot = false
mobXp = false
splitMobLoot = false
splitMobXp = falsePlayer Overrides: config/AutoPickup/player_overrides.json
{
"player-uuid-here": {
"overrideMaster": true,
"overrideBlocks": null,
...
}
}- Install Fabric Loader
- Download Fabric API and place in
mods/ - Download Auto Pickup from the releases page
- Place
auto-pickup-x.x.x.jarin yourmods/folder
- Mod Menu - Access config screen in-game
- YetAnotherConfigLib (YACL) - Required for config GUI (fallback notice shown if missing)
Auto Pickup hooks into core Minecraft mechanics and works seamlessly with most mods out of the box.
| Mod | Status | Notes |
|---|---|---|
| VeinMiner | โ Full | All vein blocks picked up instantly with XP |
| TreeHarvester | โ Full | Logs/leaves collected; saplings auto-replanted if enabled |
| Traveler's Backpack | โ Full | Items route to backpack filter first (1.21.9+ with Auto Pickup upgrade) |
| General Block Breakers | โ Compatible | Any mod using vanilla break hooks |
Auto Pickup intercepts drops at these injection points:
Block.dropStacks()- Primary block drop handlingServerWorld.spawnEntity()- Item entity spawningLivingEntity.dropLoot()- Mob loot generationBlock.dropExperience()- Block XP orbsLivingEntity.dropExperience()- Mob XP orbs
This broad compatibility means most mods work automatically without explicit support.
When Split Mob Loot or Split Mob XP is enabled, rewards from mob kills are shared among participants:
- Damage Tracking: The mod tracks the last 10 unique players who damaged each mob
- Eligibility Check: On mob death, only players who:
- Are online and not spectating
- Have Master enabled
- Have the specific Mob Pickup feature enabled
- Have the specific Split feature enabled
- Are in the same world as the killer
- Distribution:
- Items are split evenly; the killer receives any remainder
- Experience is split evenly; the killer receives any remainder
- Items that don't fit in inventories are dropped at the mob's location
Player A (killer), B, and C all damaged a zombie. Settings:
- Player A: Master โ , Mob Loot โ , Split Mob Loot โ
- Player B: Master โ , Mob Loot โ , Split Mob Loot โ
- Player C: Master โ , Mob Loot โ , Split Mob Loot โ
Result: Only A and B receive split loot. Player C gets nothing because they disabled splitting.
Gradle:
dependencies {
modCompileOnly files("libs/auto-pickup-x.x.x.jar")
}import com.lukarbonite.autopickup.AutoPickupApi;
import net.fabricmc.loader.api.FabricLoader;
public class QuestRewards {
public void giveReward(PlayerEntity player, List<ItemStack> items, int xp) {
if (!FabricLoader.getInstance().isModLoaded("auto-pickup")) {
// Fallback: manual drops
items.forEach(stack -> player.dropItem(stack, false));
player.addExperience(xp);
return;
}
// Auto Pickup handles:
// - Inventory insertion
// - Traveler's Backpack routing
// - Config checks (Master, Blocks, etc.)
List<ItemStack> remaining = AutoPickupApi.tryPickup(player, items);
// Drop items that didn't fit
remaining.forEach(stack -> player.dropItem(stack, false));
// Auto Pickup handles:
// - Mending calculations
// - Config checks
AutoPickupApi.tryPickupBlockExperience(player, xp);
}
// For mob-related rewards
public void giveMobReward(PlayerEntity player, List<ItemStack> loot, int xp) {
List<ItemStack> remaining = AutoPickupApi.tryPickupFromMob(player, loot);
remaining.forEach(stack -> player.dropItem(stack, false));
AutoPickupApi.tryPickupMobExperience(player, xp);
}
}| Method | Description |
|---|---|
tryPickup(PlayerEntity, List<ItemStack>) |
Pickup items from blocks (respects Master + Blocks settings) |
tryPickupFromMob(PlayerEntity, List<ItemStack>) |
Pickup items from mobs (respects Master + MobLoot settings) |
tryPickupBlockExperience(PlayerEntity, int) |
Give block XP (respects Master + BlockXP settings) |
tryPickupMobExperience(PlayerEntity, int) |
Give mob XP (respects Master + MobXP settings) |
isMasterEnabled(PlayerEntity) |
Check if auto-pickup is enabled for player |
isBlocksEnabled(PlayerEntity) |
Check block item pickup setting |
isBlockXpEnabled(PlayerEntity) |
Check block XP pickup setting |
isMobLootEnabled(PlayerEntity) |
Check mob loot pickup setting |
isMobXpEnabled(PlayerEntity) |
Check mob XP pickup setting |
Note: All
try*methods return lists of items that could not be picked up (full inventory).
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
You are free to:
- โ Use in modpacks
- โ Modify for personal use
- โ Distribute modified versions (must also be AGPL-3.0)
See the LICENSE file for full details.


