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
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", список з видаленням, порожній стан
- Пакети:
C2SAddPointItemPacket,C2SRemovePointItemPacket,C2SSetPointCustomLootPacket
- прапорець
- Вибір предмета з руки — кнопка "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досі слав rawS2CDataSyncPacket(оминав chunking) — переведено наSyncHelper.sendFull+PermissionCheck.canEditLootDropper.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 —
totalSpawns,spawnsLast24h, 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/drawStatusDotprimitives - Toast notifications — popup queue (success/warning/error/info) instead of inline error text; auto-fade in 3s
Changed
- ParticleType resolution:
ClientTickHandler.resolveParticleType()actually readstemplate.particleTypeinstead 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→volatilefor safe GUI readsDataManager.load()now migrates old saves (fills missingparticleType,spawnMode,items,dimension)LootDropper.spawnLoot()now returnsList<String>of spawned item IDsapplySettings()(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)varkeyword replaced with explicitStream<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
C2SSetTimerPacketrejectsseconds < 1server-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.txtwith 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
- Audit logging: All operations logged to
-
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
- JSON-based storage in
-
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:
/lmfor 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