Loot Spawn Manager

Quick rating

Community listing page, reviews here may not be monitored by the author.

Loot Spawn Manager

No reviews yet

A powerful Minecraft Forge 1.16.5 mod for managing coordinate-based loot spawning with DayZ mechanics.

Mod Loaders
Minecraft

About

Description

THE PROJECT WILL NO LONGER BE UPDATED HERE AS IT NOW BELONGS TO HTTPS://GUMMERCRAFT.FUN
Loot Spawn Manager

A powerful Minecraft Forge 1.16.5 admin tool for coordinate-based loot spawning — DayZ/Tarkov style. Define points in the world, bind them to loot templates, and let the scheduler drop configurable items on configurable timers. Everything is driven from an in-game GUI; no commands required for day-to-day work.

Version: 0.2.4 · Minecraft: 1.16.5 · Forge: 36.2.42 · Java: 8


Highlights

  • Coordinate-based spawning — points are world locations, not blocks
  • 5 spawn modes — GROUND, RADIUS, ONLY_IF_EMPTY, REPLACE_OLD, ADDITIVE
  • Two item-selection modes — chance (0–100% per item) or weighted pool
  • Per-point custom loot — override a template's items on a single point
  • Server-side friendly — registers nothing into the game registries, so the client mod is optional; it only adds the admin GUI
  • Fast point creation — mark any item as a Wand or Region Brush with one command
  • Real terrain map — the map draws the world from the top block of loaded chunks, not just a grid; pan, zoom, drag points, filter by template
  • Edit a point from the map — click it and its name and X/Y/Z are right there, editable
  • Copy and paste points — Ctrl+C, Ctrl+V; the copy keeps binding, timer, schedule and own loot
  • Item browser — pick from a grid of every item on the server instead of typing IDs
  • Data can live in the world folder — carry the save and its spawn points together
  • Tabs everywhere — Groups / Points / Map / Tools are one click apart from any screen
  • List or tiles — switch the point list to compact tiles when you have hundreds of points
  • Works at every GUI scale — panels adapt instead of running off the edges
  • Loot lifetime — how long spawned items lie before despawning, per template. Vanilla removes them after 5 minutes, which leaves a point empty for most of a long interval
  • Server settings in the GUI — the tunables that used to need a config.json edit and a restart are an Admin screen now
  • Schedule windows — points active only during set hours (e.g. 22:00–06:00)
  • Template priority — tiebreak when points are due at the same tick
  • Live monitoring — event feed, per-point statistics, health check
  • Safety — 10-level undo, one-click backup restore, admin log, permission delegation, confirmation dialogs for destructive ops
  • Multi-admin awareness — other admins receive toast notifications when data changes
  • Visual loot grid — toggle between list and icon-grid view in the template editor; hover for stats
  • Per-template export — one click exports a template to exports/template_NAME.json without touching its group
  • Scales — sync is chunked by byte budget, so packet size never depends on how large a template is; tens of thousands of points are fine
  • 9 languages — the entire interface, not just part of it, with hover tooltips on every control and on every action icon

Getting Started

  1. Drop the JAR into your server's mods folder. Clients do not need it. The mod registers nothing into the game registries and declares IGNORESERVERONLY, so a vanilla-Forge client connects normally; it simply has no admin GUI. Install it on the clients of the admins who should get that GUI. The loot itself is plain vanilla ItemEntity, so picking it up never depends on the mod.
  2. Join as an operator (OP level 2) — you get access automatically.
  3. Press L (rebindable in Options → Controls) or run /lootmanager menu to open the GUI.

The basic flow

1124711688
Group  →  Template  →  Items        (what spawns)
                    ↘  Spawn Point   (where it spawns)
  1. Create a group (e.g. "Military Loot") — organizes templates.
  2. Create a template inside it with a respawn timer.
  3. Add items — type an ID, click From hand to grab your held item, or pick from live suggestions.
  4. Create points — stand in the world and click "Create at Position", or use the Wand.
  5. Bind points to the template. They start spawning on the timer.

In-Game Tools

Tools are not separate items — you mark any item you are holding and it gains the behaviour until you clear the marker. This is what keeps the mod out of the item registry, and it means the tool works on a client without the mod.

Tool How to get it What it does
Wand /lm tool wand, or Tools tab → "Mark held item: Wand" Right-click a block to create a point; Shift+RMB removes the nearest within 5 blocks
Region Brush /lm tool brush, or Tools tab → "Mark held item: Brush" Right-click two corners → bulk-generate points (Grid / Random / Floor); Shift+RMB clears the selection
Clear marker /lm tool clear The item goes back to behaving normally
Teleport [T] on a point card Jump to a point in its dimension
Test Spawn [?] on a point card Trigger one spawn immediately, ignoring the timer
Schedule [S] on a point card Set active hours (presets: Night / Day / Always)
Point Loot [I] on a point card Give the point its own loot table

GUI Map

  • Main Menu — group list, search, stats badges, Tools button
  • Group Detail — templates in a group, mass timer, duplicate [Copy], rename [R], export
  • Template Detail — three sections: Spawn Behavior · Item Selection · Loot Pool
  • Spawn Point List — cards or tiles; status filter, sort, search, dimension filter
  • Point Detail — one screen per point: position, binding, timing, loot, statistics, actions
  • Map — top-down coordinate grid of all points; zoom with scroll wheel; pan by drag; click a point to open it; drag a point to move it; filter by template via legend
  • Tools — one scrolling column: tool marking, Undo, Shift Points, Server Settings, Find-by-Item, Import, the full event feed, every backup, and the complete health check — nothing truncated
  • Server Settings — the eleven server-wide tunables, ADMIN only; saving writes config.json and applies at once, no restart
  • Item Browser — every registered item in a grid, searchable by ID or display name; multi-select, then one chance / min / max / weight for the whole selection
  • Add Item — live icon preview, validity border, From-hand button, suggestions
  • Simulator — run N spawns, see item drop % with bars
  • Particle Settings — type + visibility radius per template
  • Confirm Dialog — modal overlay for all destructive operations (delete group/template/point, restore backup)

Spawn Modes

Mode Behavior
GROUND Spawn at exact coordinates
RADIUS Random position within min/max radius
ONLY_IF_EMPTY Skip if items already within 2 blocks
REPLACE_OLD Clear the area, then spawn
ADDITIVE Add up to maxItemsPerSpawn, keeping existing items

Item Selection

  • Chance mode — each item rolled independently (0–100%). Realistic loot tables where items drop together.
  • Weighted mode — pick maxWeightedPicks items from a weighted pool. Higher weight = more likely.

Per-point custom loot uses the point's own item list but inherits the bound template's mode and pick count.

Loot Lifetime

Vanilla deletes a dropped item after 5 minutes. Left alone, that decides how your spawns actually behave: with a 30-minute interval the point is empty for 25 of those 30 minutes, and ONLY_IF_EMPTY / REPLACE_OLD find nothing to check by the time they run.

Each template has a Loot lifetime in seconds, in the Spawn Behavior section:

Value Meaning
0 use the server default (Tools → Server Settings)
0 there too vanilla 5 minutes
> 0 that many seconds, up to a day

The field shows the effective value next to it and turns amber when loot dies before the next spawn arrives. The health check reports the same gap, and warns about pile-up when ADDITIVE runs with a lifetime far longer than its interval.

A point whose chunk is not loaded no longer burns a whole interval — it retries after unloadedRetryMs instead, so walking into a fresh region does not mean waiting a full cycle.


The Map

The map draws real terrain: the server reads the top block of each column, colours it with the same MaterialColor vanilla maps use, shades land by the drop to the column north of it and water by depth. Points sit on top, and clicking one opens a panel with its name and editable X / Y / Z — the only place in the interface where a point's height can be set.

Ctrl+C copies the selected point, Ctrl+V pastes a full copy under the cursor: binding, timer, schedule, particle radius and the point's own loot all come along, the name climbs to the next free number, and the first spawn is scheduled a full interval out.

What the map can and cannot show. The server only reads chunks that are already loaded — reading an unloaded one means loading it, and a pan across the map would mean thousands. So a region nobody has ever visited stays blank. Every tile that is sampled is written to disk, so the map fills in as the server lives and never forgets; re-sampling keeps columns whose chunks have since unloaded. Player-built structures appear, because these are real blocks, not generator output.

Tuning lives in Tools → Server Settings: mapTerrainEnabled turns the whole thing off, mapTileBudgetPerTick trades fill speed against tick cost, mapTileTtlSeconds decides how stale a tile may get. Block placement and breaking refresh their tile at once regardless.


Commands (/lootmanager or /lm)

1124711688
/lm menu                                  Open the GUI
/lm reload                                Reload data from disk
/lm group create <name>
/lm template create <group> <name> <secs>
/lm template additem <template> <item> <min> <max> <chance>
/lm point create <name>                   At your position
/lm point bind <point> <template>
/lm point clear <name>
/lm point list
/lm timer set <template> <seconds>
/lm timer setall <group> <seconds>
/lm tool wand | brush | clear              Mark the held item as a tool
/lm show all  |  /lm hide                  Particle visualization
/lm spawn test <point>
/lm perm grant <player> <0-3>             NONE / VIEW / EDIT / ADMIN
/lm perm revoke <player>
/lm perm list

Permissions

Level Name Can do
0 NONE nothing
1 VIEW open and read the GUI
2 EDIT full CRUD on groups/templates/points
3 ADMIN + wand/brush, undo, permissions, region generation

OP level 2+ is implicitly ADMIN. Delegate to non-OP moderators via /lm perm grant.

Delegated levels work for commands as well as the GUI: /lootmanager needs EDIT, perm needs ADMIN. Server Settings is ADMIN — those values apply to everyone.


Client mod: optional

The mod adds no blocks, items or entities, declares itself server-only to Forge, and its network channel accepts clients that do not have it. Practical consequences:

  With the mod on the client Without it
Join the server ✅ ✅
See and pick up spawned loot ✅ ✅ — it is plain vanilla ItemEntity
Wand / Region Brush ✅ ✅ — marker lives in item NBT
Admin GUI, map, simulator ✅ ❌ — commands only
Particle visualization ✅ ❌
Toast notifications ✅ falls back to chat

The server never sends packets to a client that lacks the channel, so a modless admin gets plain chat messages instead. Region generation still needs the GUI: without it the brush reports the selected corners and you generate from there.


Interface behaviour

  • Actions send a delta, not a full refresh: your scroll position, search text and open dialogs survive every edit, and a second admin's screen updates on its own.
  • An action in flight dims its row and ignores repeat clicks until the server answers; after 5 seconds without a reply you get an explicit error rather than silence.
  • Every destructive operation asks for confirmation, and mass operations are undoable from Tools.
  • Long lists scroll rather than truncate, and the template picker filters as you type.
  • Panels adapt to the window: nothing runs off the edge, down to a 341 px logical width (GUI scale 4 on a small laptop).
  • Every clickable zone is computed once and drives the highlight, the tooltip and the click together, so what you see and what you hit cannot drift apart.
  • The palette is neutral translucent grey; the world stays visible behind the panels and the accent colours are the only colour on screen.

Data & Storage

1124711688
config/lootmanager/
├── config.json          Tunables (region cap, packet size, save interval…)
├── groups.json          Group definitions
├── templates.json       Templates with items and settings
├── points.json          Points, bindings, custom loot, stats
├── permissions.json     Delegated permission levels
├── logs/                adminlog_YYYY-MM-DD.txt
├── backups/             Timestamped snapshots (20 kept)
├── exports/             Exported groups
├── imports/             Drop JSON files here for GUI import
└── maptiles/            Cached terrain tiles, 4 KiB each

With storeInWorldFolder enabled, everything above except config.json and permissions.json moves to <world>/lootmanager/ — those two configure the server, not the world. Switching copies the existing files rather than moving them, and only into an empty target, so turning it back off loses nothing.

config.json tunables (created with defaults on first run): maxRegionPoints (1000) · syncChunkBytes (32768) · pointsFlushIntervalMs (30000) · scheduleSkipRetryMs (60000) · unloadedRetryMs (60000) · defaultParticleRadius (48) · defaultItemLifespanSeconds (0 = vanilla 5 minutes) · mapTerrainEnabled (true) · mapTileBudgetPerTick (4) · mapTileTtlSeconds (120) · storeInWorldFolder (false).

All of them are editable in Tools → Server Settings with ADMIN level; saving writes the file and applies immediately. Editing the file by hand still works — /lm reload or a restart picks it up. storeInWorldFolder is the exception: it applies on the next server start, because half the mod already holds open paths to the current directory.

syncChunkBytes replaces the old pointsPerPacket: chunking by item count broke down because one large template outweighs a hundred points. The old key is ignored if present.

  • Atomic writes (.tmp → rename) prevent corruption.
  • Point saves are debounced (~30 s) so high spawn rates don't thrash the disk. Each admin action writes only the file it touched — editing an item no longer rewrites every point.
  • Timers are absolute wall-clock. On startup, points whose timer elapsed while the server was down are spread across their own respawn window instead of all firing at once.

Languages

🇬🇧 English · 🇺🇦 Ukrainian · 🇩🇪 German · 🇫🇷 French · 🇪🇸 Spanish · 🇧🇷 Portuguese (BR) · 🇨🇳 Chinese · 🇯🇵 Japanese · 🇵🇱 Polish

All nine files carry an identical key set (523 keys) — no language falls back to English mid-screen. Every button, field and action icon has a translated tooltip, including the single-letter icons where [C] means Copy on one screen and Clear on another. To add a language, copy en_us.json and translate the values.


Building

Requires JDK 8 (Forge 1.16.5 does not build on newer JDKs).

1124711688
$env:JAVA_HOME = "C:\Program Files\Java\jdk1.8.0_481"
.\gradlew build
# Output: build/libs/lootspawnmanager-0.2.4.jar

Performance & Scale

Points Status
up to ~500 effortless
500–2 000 smooth; an edit sends one object, not the whole data set
2 000–10 000+ works — the full sync at login is split by byte budget, and everything after that is a delta

Switch the point list to tiles past a few hundred points: a card fills a row, a tile takes a fifth of the area.

See CHANGELOG.md for version history and the roadmap below for planned work.


Roadmap (post-0.2.4)

  • Split spawn modes — placement (GROUND / RADIUS) and occupancy (SKIP / REPLACE / ADD) are one enum today, so RADIUS cannot be combined with ONLY_IF_EMPTY. Needs a templates.json migration.
  • Unit tests — the refactor left the pure logic easy to cover: LootDropper.roll(), normalizeOverdue(), PacketUtil, SyncHelper.chunkify(), isInScheduleWindow(), GuiLayout and ClientDataCache.applyDelta().
  • Persistent undo — the stack is in memory and dies with the server. Backups survive, but they are only taken on mass operations.
  • Admin log in game — it is written to logs/ and readable nowhere else. The Tools feed shows only this session's spawn events, capped at 50. On hosting without file access, "who deleted that group" is unanswerable.
  • Bulk item editing — the item browser solves adding in bulk, not editing: changing one item's chance across thirty templates is still thirty visits.
  • Map tile pruning — the tile cache grows at roughly 1.3 MB per km² across all LOD levels and is never cleaned. A command is the right place for that, not a sweep at every startup.
  • Point export — groups and single templates export; points only come along in a full backup, so laid-out coordinates cannot be moved to another server on their own.
  • Fluid re-flow for ToolsScreen — TemplateDetailScreen now lays its rows out from measured text, ToolsScreen still uses fixed column offsets inside its rows.
  • Command coverage — there is still no command for spawn mode, weights, schedules, per-point loot or point deletion, so a modless admin cannot do everything the GUI can.
  • Split spawn modes is above; DataManager split into focused services; cross-dimension template binding; vanilla datapack loot-table import.

License

Provided as-is for Minecraft server administrators.