VacuLoot

Gameplay v1.0.1

Toggleable item magnet with tiered ranges, optional Vault economy cost, world restrictions, and item blacklist.

magnet items economy
Minecraft
1.21+
Server
Paper, Purpur, Spigot
Java
21+

VacuLoot

Toggleable item magnet with tiered ranges, optional Vault economy cost, world restrictions, and item blacklist.


Features

  • Toggle a personal item magnet with /magnet.
  • Attracts nearby dropped items and experience orbs.
  • Tiered magnet ranges and speed multipliers: basic, advanced, ultimate, god.
  • Optional Vault economy cost per toggle.
  • Toggle cooldown.
  • World allow-list and item material blacklist.
  • Admin commands to check status, set tiers, reload config, and toggle for others.
  • In-memory magnet states, tiers, and cooldowns.

Commands

All /magnet commands require magnet.use because the Bukkit command permission is magnet.use.

Command Description Permission
/magnet / /ml / /mag Toggle your magnet magnet.use
/magnet help Show help magnet.use
/magnet toggle Toggle your magnet magnet.use
/magnet toggle <player> Toggle magnet for another player magnet.use + magnet.use.others
/magnet check [player] Check magnet status magnet.use; other player requires magnet.use.others
/magnet <player> Toggle magnet for another player magnet.use + magnet.use.others
/magnet tier <player> <tier> Set a player’s magnet tier magnet.use + magnet.admin
/magnet reload Reload configuration magnet.use + magnet.admin

Permissions

Permission Description Default
magnet.* All VacuLoot permissions op
magnet.use Allows using the magnet command op
magnet.use.others Allows toggling magnet for other players op
magnet.admin Access to admin management commands op
magnet.tier.basic Access to basic magnet tier true
magnet.tier.advanced Access to advanced magnet tier op
magnet.tier.ultimate Access to ultimate magnet tier op
magnet.tier.god Access to god magnet tier op

Configuration

config-version: 1

default_tier: "basic"

magnet:
  interval: 5

toggle:
  cooldown: 5

attraction:
  items: true
  experience: true
  speed: 0.3

economy:
  enabled: true
  toggle_cost: 10.0

worlds:
  allowed:
    - "world"
    - "world_nether"
    - "world_the_end"

blacklist:
  materials:
    - "BEDROCK"
    - "BARRIER"
    - "COMMAND_BLOCK"

tiers:
  basic:
    range: 5.0
    speed_multiplier: 1.0
    permission: "magnet.tier.basic"
  advanced:
    range: 10.0
    speed_multiplier: 1.2
    permission: "magnet.tier.advanced"
  ultimate:
    range: 15.0
    speed_multiplier: 1.5
    permission: "magnet.tier.ultimate"
  god:
    range: 25.0
    speed_multiplier: 2.0
    permission: "magnet.tier.god"

Messages are configurable under messages:

enabled, disabled, cooldown, insufficient_funds, toggled_for, toggled_by, status, reloaded, player_not_found, invalid_tier, tier_set, tier_changed, no_permission.

Notes

  • Requires Vault for economy features (softdepend: [Vault]).
  • If Vault/economy is unavailable, economy checks are bypassed.
  • Magnet states, tiers, and cooldowns are stored in memory and are not persisted across restarts.
  • The magnet task runs every magnet.interval ticks and only processes players with an active magnet.
  • Items with metadata no-magnet and materials in blacklist.materials are ignored.
  • If worlds.allowed is empty, all worlds are allowed.

Dependencies

Bundles Adventure (adventure-platform-bukkit) inside its JAR, relocated to com.chalwk.libs.adventure. No external dependencies.


Changelog

1.0.1

Changed

  • Adventure (adventure-platform-bukkit) is now shaded into the plugin JAR and relocated to com.chalwk.libs.adventure. Runs on Spigot, Paper, and Purpur.
  • All previously hardcoded command messages moved into config.yml under messages:. Help output is now driven by messages.help.
  • Vault remains a softdepend. When Vault is absent, economy checks are bypassed as before.

Fixed

  • Reload no longer rewrites config.yml. Comments and formatting are preserved.

Internal

  • MessageHelper is now an instance class wrapping BukkitAudiences, created in onEnable and closed in onDisable.
  • MagnetCommand now receives the MessageHelper instance via constructor.
  • getCommand("magnet") is null-checked in onEnable.