
skTrace
This project adds a profiler for Skript that shows which triggers and lines are eating your server's tick time, and turns the results into an interactive report you can share with one link.
Оцените первым
156
5
Список изменений
[0.1.3] - 2026-06-08
- Added a variable viewer in reports: how many global variables were created, updated, and deleted during the window, the most-written ones, and a writes-per-tick sparkline. It passively observes Skript's variable save path — the same path that writes
variables.csv(or your database) — without touching how scripts run, and it never reads or scans your existing variables, so there is no cost from a largevariables.csv. Global variables only (local{_temp}variables are never persisted, so cannot be tracked). On by default; opt out withvariable-tracking: false. - Added the ability to open a report on the website by uploading its file. The
.jsonreport file is now a complete, self-contained report, so when an auto-upload is skipped or fails (for example HTTP 413, "report too large"),/sktrace reportpoints you to the homepage where you can drop the.jsonin and get a shareable link. On busy servers the variable list is collapsed behind a "Show variables" dropdown so it never overwhelms the page. - Added a running count of reports shared, displayed on the website.
- Added automatic config migration: updating skTrace now merges any new
config.ymloptions into your existing file (keeping every setting you've changed), instead of leaving a stale config behind on update. skTrace also warns at startup if the experimentalline-level-profilingis enabled, since it can disturb how some scripts run while profiling. - Added disk-save tracking: skTrace now detects Skript's periodic full rewrite of
variables.csv(the save that runs about every 5 minutes) when it happens during a capture, and draws it as a band on the tick chart alongside roughly how long it took and the file size. While that rewrite runs it holds Skript's variable lock, so scripts setting variables stall until it finishes — this lets you see at a glance whether a save lines up with a lag spike. It watches the file on disk (never reads its contents) and only applies to flat-file storage; part ofvariable-tracking. Add--variable-valuesto/sktrace report(orclip) to also list, under each save, the exact variables it compacted with their latest values — masked like option secrets unless--show-secretsis also set. - Added an update notifier: skTrace checks Modrinth on startup (and every few hours after) for a newer release and, when one is out, tells operators — anyone who is op or has
sktrace.use— with a clickable download link when they join, and logs it once to the console. It is a notification only and never downloads or installs anything; the check runs off the main thread. Turn it off withupdate-checker: false. - Fixed rolling-mode counts climbing for the whole session instead of the buffer window: the Calls and Total time on the Triggers, Functions, and Events tables (and the donut / "time by script" that derive from them), plus the Variables section's Total writes / Created / Updated / Deleted, now reflect only the retained rolling window. A long-running buffer previously showed counts in the millions. One-shot
start/stopreports are unchanged (their window is the whole run), and the selected-range breakdown was already window-scoped. Max single-call time stays all-time (there are no per-call samples to window it by); the per-variable list and distinct-name count are still cumulative for now. - Fixed stale scripts lingering in reports: a report now leaves out triggers and functions whose script Skript no longer has loaded (deleted, disabled, or unloaded since they were hooked), checked fresh each time a report or clip is written. Previously a removed script could keep appearing — most visibly with the rolling buffer, which accumulates across clips without clearing. Fails safe: if the loaded-script set can't be read, nothing is hidden.
- Fixed Skript events firing (and triggers running) twice after
/sk reloadwhile skTrace was profiling — on join running twice, on right click twice, and so on, until a full server restart. skTrace's per-trigger profiling replaces Skript's internal trigger objects with timing wrappers; because Skript unloads scripts by matching triggers on exact identity, it could no longer find its own triggers and never unregistered the shared event listener, so the reload left a stale listener behind and registered a second one. skTrace now restores Skript's originals the instant it sees a reload command — before the unload — so Skript's cleanup succeeds, then re-applies its hooks against the freshly loaded scripts. Even if that re-apply is mistimed on a very large reload, events can no longer double; the worst case is briefly reduced profiling coverage until the next reload. - Fixed placeholder and addon events all showing as "simple event" in reports (and merging into a single row). Skript represents many addon events — skript-placeholders, SkBee custom events, and similar — with a generic event that has no label of its own, so every one of them showed the same name. They now display the actual event line you wrote (for example
on "%player_balance%"), so each is labeled distinctly. Ordinary events such ason joinare unchanged. - Report UI: the Triggers, Functions, Events, and trigger-breakdown (selected-range) tables now show the top 5 rows with a "Show N more" dropdown for the rest (the kept rows follow whatever column you sort by), matching the Variables list. The breakdown's old fixed 40-row cutoff is replaced by this dropdown, so every trigger in a range is reachable.
- Report UI: the tick chart's Y-axis switches to seconds for large values (e.g.
2.6sinstead of2556ms) so big spikes no longer clip the axis labels; "Show more" / "Show variables" toggles no longer render as an empty button when there's nothing to expand.
Файлы
Sktrace-0.1.3.jar(173.00 KiB)
ОсновнойМетаданные
Канал релиза
Release
Номер версии
0.1.3
Загрузчики
PaperPurpur
Версии игры
1.20–26.1.2
Загрузок
18
Дата публикации
08.06.2026
