[ECO系列]EcoCrates✅创建板条箱 自定义物品支持✨导入板条⭕箱

高级插件 [ECO系列]EcoCrates✅创建板条箱 自定义物品支持✨导入板条⭕箱 2026.34

✅创建板条箱 自定义物品支持✨导入板条⭕箱
chore: bump libreforge to 2026.34
chore: bump libreforge to 2026.33
fix: Publishing (#104)
feat: add envoy/supply drop configs (#102)

* chore: bump eco to 2026.31

* feat: add shared weighted picker and decouple Reward.giveTo from Crate

Extracts the weighted-random reward roll into a reusable helper and lets
Reward.giveTo be called without a Crate, so envoys can give rewards too.

* feat: add envoy schedule parsing

* feat: add envoy spawn location resolution

* feat: add envoy firework spawning

* Revert "chore: bump eco to 2026.31"

This reverts commit a40f3019f26ee7bb7d32beaec5c0c481f4028ad0.

* feat: add envoy config model and registry

Loads envoys/*.yml into EnvoyCategory/EnvoyRarity objects via a new
Envoys RegistrableCategory. Nothing spawns yet - config only.

* feat: add saved envoy spawn points

Adds envoypoints.yml storage for points-mode envoy categories, kept
separate from category configs so /ecocrates reload can't wipe them.

* feat: add SpawnedEnvoy for live envoy crates in the world

* feat: add envoy session lifecycle, persistence and ticker

EnvoySessions is the single source of truth for whether an envoy is
running; EnvoySessionStore mirrors it to disk so a reload or restart
mid-session doesn't leave orphaned blocks in the world.

* feat: add envoy crate collection

Right-clicking a spawned envoy gives one weighted reward, fires the
rarity's open-effects and EnvoyOpenEvent, then despawns the crate.

* feat: add envoy start flare

Per-category craftable item that starts that category's session on
right-click. Flare and an optional Prices cost are cumulative, not
alternatives - the item is always consumed on success.

* feat: add envoy commands, permissions and auto-start scheduler

Adds /ecocrates envoy set|unset|locate|start|end, mirrored on a
top-level /ecoenvoy, and hooks EnvoyScheduler into the ticker so
scheduled auto-starts finally work.

* feat: add envoy libreforge integrations and placeholders

Adds start_envoy/end_envoy effects, envoy_started condition,
open_envoy trigger, envoy_type filter, and the full PlaceholderAPI set.

* feat: add envoy compass item and activation state

Consumable per-category item that marks nearby envoy crates via eco's
waypoint API. No rendering yet - item, config, and state only.

* feat: add envoy compass waypoint rendering

Diffs each active compass's nearest-N tracked crates against what is
currently shown, so unchanged waypoints are never re-sent.

* feat: add envoy flares and compasses to give/giveall/giveoffline/take

The type token (flare/compass vs anything else) decides whether the ID
argument resolves as an envoy category or a crate, so the two ID
namespaces can safely overlap. Envoy items are physical-only, so
offline players receive them via the existing pending-delivery queue.

* feat: add per-category envoy bossbar

Shown to all online players for the duration of a session, styled
and configured like Boosters' own bossbar feature. Only one bar is
ever tracked, since only one envoy session runs at a time.

* docs: document the envoy system

Covers category config, rarities, flares, compasses, bossbars,
commands, permissions, placeholders, and the libreforge API surface.

* fix: gate compass activation on the same range check the renderer uses

* fix: give the final crate's own reward before firing session end-effects

* fix: avoid O(n^2) per-tick work in the envoy bossbar renderer

* feat: add envoy_reward filter

Mirrors crate_reward for the envoy path - crate_reward never applies
to EnvoyOpenEvent, so envoys previously had no way to filter by
specific won reward ID, only by rarity (envoy_type).

* fix: time to start placeholder format

* feat: simplify envoy fireworks and add per-rarity spawn sound

Fireworks are now always a single BALL effect, dropping the
configurable amount/type. Each rarity can also define a spawn-sound
using eco's PlayableSound, played at the crate's location on spawn.

* fix: address PR review feedback on envoys

Restore customisable firework amount/type, reverted in error by the
prior simplify commit. Rewrite SpawnLocator's shell scan to generate
only surface offsets directly instead of filtering a full cube, cutting
per-shell cost from O(radius^3) to O(radius^2).

* chore: improve code documentation

* chore: bump eco to 2026.32
feat: configurable decimal precision for %chance% placeholder (#103)

Reward lore's %chance% was hardcoded to 2 decimal places via
toNiceString(), so very rare rewards (e.g. 0.005% vs 0.014%) displayed
identically or rounded to 0.00%. Add a chance-decimal-places config
option so server owners can increase precision for rare rewards.
chore: bump libreforge to 2026.31
docs: improve examples and add missing (#101)

* docs: improve examples and add missing

* docs: improve examples and add missing
chore: bump libreforge to 2026.30
chore: bump libreforge to 2026.29
feat: add shift-right-click to open all keys at once (#97)

* feat: add shift-right-click to open all keys at once, skipping roll animation

* feat: added option to send effects per key or per stack

* fix: aligned block location
顶部