Loot Spawn Manager

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

File Details

lootspawnmanager-0.0.5.jar

  • R
  • Jun 14, 2026
  • 283.95 KB
  • 4
  • 1.16.5
  • Forge

File Name

lootspawnmanager-0.0.5.jar

Supported Versions

  • 1.16.5

Curse Maven Snippet

Forge

implementation fg.deobf("curse.maven:loot-spawn-manager-1574953:8245820")
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

Changelog

All notable changes to the Loot Spawn Manager mod are documented in this file.

[0.0.5] - Unreleased (Scale + Loot Flexibility)

Added

  • Chunked синхронізація — замість одного гігантського snapshot-пакета (упирався в ~1МБ ліміт Forge при ~2-3к точок і дисконектив гравця) дані тепер летять як: 1× S2CSyncBeginPacket (групи+шаблони+meta) + N× S2CSyncPointsChunkPacket по ≤10 точок на пакет. Клієнт збирає у ClientSyncAssembler (BitSet від дублікатів). Стеля піднята з ~3к до десятків тисяч точок.
    • SyncHelper.sendFull(player, openGui) замінив усі 27 прямих send-ів S2CDataSyncPacket
  • Per-point кастомний лут — кожна точка має власний customItems список
    • прапорець useCustomLoot. Коли увімкнено й не порожній — LootDropper бере предмети звідси замість template.items (режим/picks беруться з шаблону). Дозволяє унікальний лут (босовий ящик) без окремого шаблону.
    • Нова іконка [I] на row 2 картки точки → PointLootScreen
    • Зелена крапка на [I] коли custom loot активний
    • Toggle "Custom loot: ON/OFF", список з видаленням, порожній стан
    • Пакети: C2SAddPointItemPacketC2SRemovePointItemPacketC2SSetPointCustomLootPacket
  • Вибір предмета з руки — кнопка "From hand" у AddItemScreen бере item ID
    • повний NBT з основної руки гравця одним кліком
  • Live пошук-підказки — при введенні в поле Item ID показуються до 6 збігів з ForgeRegistries.ITEMS; клік на підказку підставляє повний ID
  • Універсальний AddItemScreen — один екран працює і для шаблонів (C2SAddItemPacket), і для точок (C2SAddPointItemPacket) через окремі конструктори

Changed

  • LootDropper.pickItems() приймає явний список предметів (підтримка custom-луту)
  • DataManager.load() мігрує customItems/pastTemplateIds для старих збережень
  • Debounced збереження точок — scheduler більше не пише points.json щосекунди; позначає dirty, фактичний запис раз на ~30с (flushPointsIfDue) + повний save на кожній адмін-дії та при зупинці сервера. ~90% менше disk I/O при 1000+ точок
  • HashMap-індекси в ClientDataCache — getTemplate/getGroup тепер O(1) замість O(N) лінійного пошуку (важливо для render-циклів 60 fps при 1000+ точок)
  • Версія мода → 0.0.5

Fixed

  • C2SCreateGroupPacket досі слав raw S2CDataSyncPacket (оминав chunking) — переведено на SyncHelper.sendFull + PermissionCheck.canEdit
  • LootDropper.spawnLoot() повертає порожній список якщо template == null (захист від unbound/видаленого шаблону)

[0.0.4] - Unreleased (Power Tools)

Added

  • Test Spawn button — [?] фіолетова іконка на картці точки в SpawnPointListScreen. Одинарний клік → разовий спавн ігноруючи таймер. Server повідомляє кількість заспавнених предметів через actionbar.
  • Template priority — нове поле priority (default 0) на шаблонах. SpawnScheduler PriorityQueue має tie-break: коли дві точки готові в одному тіку, перевагу отримує шаблон з вищим priority. Поле "Prio" доступне у TemplateDetailScreen → Section "Item Selection".
  • Schedule windows — кожна точка може мати activeHourStart/activeHourEnd (24h, real-time hours). Поза вікном точка не спавнить (планується на +1 хв). Підтримується wrap-around (22 → 6 = 22,23,0,1,2,3,4,5). Badge ⏰ 22:00-06:00 на картці точки (фіолетовий якщо зараз у вікні, сірий якщо ні).
  • Mass shift points — Tools tab → 📐 Shift Points… модал:
    • dx / dy / dz поля
    • dim filter (cycle через всі виміри + ALL)
    • template filter (ALL / Unbound only / окремий шаблон)
    • Real-time estimate "~ N points"
    • Snapshot для undo перед операцією
  • C2STestSpawnPacket / C2SShiftPointsPacket / C2SSetPointSchedulePacket — 3 нові C2S пакети, всі через PermissionCheck

Changed

  • C2SUpdateTemplateSettingsPacket тепер містить поле priority (back-compat конструктор без priority лишається)
  • DataManager.updateTemplateSettings() — overload з priority параметром

[0.0.3] - Unreleased (Admin Experience)

Added

  • Region Brush — окремий item для масового створення точок:
    • RMB на блок 1 → corner1 (NBT в ItemStack)
    • RMB на блок 2 → corner2 + відкриває GUI генерації
    • Shift+RMB → скидає виділення
    • 3 паттерни: Grid (з spacing), Random (випадково в об'ємі), Floor (по нижній грані)
    • Естимейт кількості точок з кольоровим попередженням (>1000 заблоковано)
    • Авто prefix-name + опційне прив'язування до шаблону
  • Permission system — config/lootmanager/permissions.json:
    • 4 рівні: NONE / VIEW / EDIT / ADMIN
    • OP level 2+ автоматично отримує ADMIN
    • Команди: /lm perm grant <player> <level>/lm perm revoke/lm perm list
    • Model: модератор без OP може бути EDIT (керує точками без shutdown сервера)
  • Per-point bind rollback:
    • Кожна точка тримає історію 3 останніх прив'язок шаблонів
    • Іконка [↶] з'являється праворуч від stats badge коли є що відкатити
    • Один клік відновлює попередню прив'язку
  • /lm perm команди — управління permissions з консолі / чату
  • Loot Spawn Wand — special admin item for fast point creation
    • Right-click block: creates spawn point at top face
    • Shift+RMB: removes nearest point within 5 blocks
    • Available via Tools tab → "Give me a Wand"
  • Teleport to Point — [T] icon on every point card; closes GUI and teleports to point's dimension and coordinates
  • Multi-level Undo — stack of last 10 mass operations with labels ("Set timer 300s for group", "Delete group X", "Batch enable 12 points")
    • Server sends back remaining undo count via S2CUndoStatusPacket
  • Live Event Feed — all admins receive S2CSpawnEventPacket broadcasts when points successfully spawn loot; ToolsScreen shows last 20 events
  • Per-point Statistics — totalSpawnsspawnsLast24h, auto-resetting 24h window; shown as badge on point cards
  • Reverse Item Lookup — Tools tab "Find by Item": type item ID, see which templates contain it + how many points are bound; click a result to teleport
  • Health Check — Tools tab lists data issues: unbound points, empty templates, invalid radius, broken template references
  • Card-based GUI — SpawnPointListScreen redesigned with 3-row cards (status dot, name, badges, action icons) replacing 12-column table
  • Section-based Editor — TemplateDetailScreen split into 3 logical sections: ⚡ Spawn Behavior / 🎲 Item Selection / 📦 Loot Pool
  • Design System v2 — 4-level typography, semantic color palette, 15-icon enum, drawSection/drawBadge/drawCard/drawStatusDot primitives
  • Toast notifications — popup queue (success/warning/error/info) instead of inline error text; auto-fade in 3s

Changed

  • ParticleType resolution: ClientTickHandler.resolveParticleType() actually reads template.particleType instead of always rendering END_ROD
  • ParticleSettingsScreen: replaced 1.17-only types (ELECTRIC_SPARK, GLOW) with 1.16.5-compatible types (PORTAL, SMOKE, HAPPY_VILLAGER)
  • SpawnPoint.nextSpawnEpochMs/lastSpawnEpochMs → volatile for safe GUI reads
  • DataManager.load() now migrates old saves (fills missing particleTypespawnModeitemsdimension)
  • LootDropper.spawnLoot() now returns List<String> of spawned item IDs
  • applySettings() (TemplateDetailScreen): per-field validation with toast feedback ("Max radius must be ≥ MinR (N)") instead of silent ignore

Fixed

  • setHint() calls removed (method doesn't exist in 1.16.5 TextFieldWidget)
  • var keyword replaced with explicit Stream<Path> for Java 8 compatibility
  • Simulator iteration count clamped to 1–10000 client-side
  • AddItemScreen: live green/red border around item ID field based on validity
  • C2SSetTimerPacket rejects seconds < 1 server-side

[0.0.1] - 2026-05-30

Added

  • Core Spawn Management System

    • Create unlimited loot groups to organize templates
    • Define templates with configurable respawn timers (in seconds)
    • Bind spawn points to templates for loot generation
    • Individual timer overrides per spawn point
  • 5 Spawn Modes

    • GROUND: Spawn at exact coordinates
    • RADIUS: Randomize within min/max radius (in blocks)
    • ONLY_IF_EMPTY: Check 2-block radius before spawning
    • REPLACE_OLD: Clear area then spawn
    • ADDITIVE: Cumulative spawning up to maxItemsPerSpawn limit
  • Flexible Item Selection

    • Chance-based mode: Each item checked independently (0-100% per item)
    • Weighted pool mode: Select items by relative weight with configurable pick count
    • Per-item NBT tag support for enchantments and custom properties
    • Min/Max stack count per item
  • Admin Tools

    • Audit logging: All operations logged to logs/adminlog_YYYY-MM-DD.txt with timestamps
    • Automatic backups: Snapshots before mass operations, keeps 20 most recent
    • Single-level undo: Revert last bulk operation (timer set, group delete, etc.)
    • Particle visualization: Render spawn points with configurable particle types and radius
  • Full GUI Interface

    • Main menu with group list and search
    • Group detail view with template management
    • Template editor with spawn mode, radius, and item list
    • Spawn point list with dimension filter and search
    • Add item dialog with live icon preview
    • Spawn point simulator: Test drop probabilities across N iterations
    • Particle settings dialog for visualization customization
    • Scrollable lists with proper UI layout (no overlap)
    • Context tooltips on all buttons and fields in selected language
  • Data Persistence

    • JSON-based storage in config/lootmanager/
    • Atomic writes (temp file → rename) for corruption prevention
    • Import/Export groups to share configurations
    • Backup and restore functionality
  • Network & Server

    • SimpleChannel-based packet synchronization
    • Priority queue scheduler with 1-second tick granularity
    • Server-side spawn processing, client-side admin visualization only
    • Chunk loading verification before spawning
  • Localization (9 Languages)

    • 🇬🇧 English (en_us)
    • 🇺🇦 Ukrainian (uk_ua)
    • 🇩🇪 German (de_de)
    • 🇫🇷 French (fr_fr)
    • 🇪🇸 Spanish (es_es)
    • 🇧🇷 Portuguese Brazil (pt_br)
    • 🇨🇳 Chinese Simplified (zh_cn)
    • 🇯🇵 Japanese (ja_jp)
    • 🇵🇱 Polish (pl_pl)
    • All UI strings translated with context-aware hover tooltips
  • Command Interface

    • /lootmanager menu — Open management GUI
    • /lootmanager reload — Reload from disk
    • /lootmanager group create <name> — Create loot group
    • /lootmanager template create <group> <name> <secs> — Create template
    • /lootmanager template additem <template> <item> <min> <max> <chance> — Add item
    • /lootmanager point create <name> — Create point at your position
    • /lootmanager point bind <point> <template> — Bind template
    • /lootmanager point clear <name> — Clear spawned items
    • /lootmanager timer set <template> <secs> — Set template timer
    • /lootmanager timer setall <group> <secs> — Set group timer
    • /lootmanager show all / /lootmanager hide — Toggle visualization
    • /lootmanager spawn test <point> — Test spawn at point
    • Alias: /lm for all commands

Technical Specifications

  • Minecraft Version: Forge 1.16.5
  • Java: JDK 8 (Java 8)
  • Gradle: 8.11 with wrapper
  • Network Protocol: SimpleChannel v2
  • Scheduler: Priority queue-based, 1-second resolution
  • Storage: Atomic JSON writes to prevent corruption
  • Permissions: Requires OP level 2

Known Limitations

  • Single-level undo (one revert per operation)
  • Spawn radius uses circular calculation (not rectangular)
  • Chunk must be loaded for spawning to occur
  • Import files must be manually placed in config/lootmanager/imports/

Future Roadmap (Planned)

  • <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">Multi-level undo
  • <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">GUI-based import file selection
  • <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">Per-point custom item pools (override template items)
  • <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">Scheduled spawns at specific server times
  • <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">Multi-dimensional support with dimension-specific loot tables
  • <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">API for other mods to integrate custom loot sources
  • <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">Performance profiling tools