
Instantly collect items from mined blocks directly into your inventory with the Auto Pickup mod. Mob loot & more configurable!
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.

Auto Pickup uses a flexible three-tier permission system:
If you have Mod Menu and YetAnotherConfigLib (YACL) installed, you can configure your personal preferences via the Mods menu.
Settings available:
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 = false
Player Overrides: config/AutoPickup/player_overrides.json
{
"player-uuid-here": {
"overrideMaster": true,
"overrideBlocks": null,
...
}
}
mods/auto-pickup-x.x.x.jar in your mods/ folderAuto 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 orbsThis 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:
Player A (killer), B, and C all damaged a zombie. Settings:
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:
See the LICENSE file for full details.