跳到正文

TickWeave

Bounded entity queries and hopper geometry reuse for Minecraft 26.3, with separate Forge, Fabric and NeoForge builds for clients and servers.

收藏

介绍

中文介绍正在准备中,下面暂时显示原文。

TickWeave

TickWeave 0.3.0-beta provides targeted, configurable optimizations for
Minecraft Java 26.3 and Java 25. Separate builds support Forge 66.0.9,
Fabric Loader 0.19.5 and NeoForge 26.3.0.76. Use the build matching your
loader. Other loader versions and Quilt are not validated by this release.

TickWeave works on dedicated servers, integrated single-player servers, LAN hosts
and multiplayer clients. Each installation optimizes its own process; the other
side does not need TickWeave. Installing it only on a multiplayer client does not
optimize the remote server’s hoppers or change network latency.

What changes

  • Small eligible entity-section queries use bounded direct lookups, retaining
    vanilla ordering, visibility checks and early termination. Large or unsuitable
    queries use the original path.
  • Vanilla block hoppers reuse one immutable suction bounding box while its source
    geometry and position remain identical. This does not cache entities, inventories
    or query results. Unsupported shapes and hopper implementations fall back.
  • The Forge build avoids allocating the iterator for the supported empty multipart
    entity collection. Nonempty or unfamiliar collections keep the original path.

No blocks, items or network protocol are added. Tick frequency, hopper cooldowns,
redstone, AI, farm rules and world formats are preserved. Removing the mod does not
remove world content. The mod does not load client classes on a dedicated server.

Install and configure

  1. Use Minecraft 26.3, Java 25 and one of the exact tested loaders above.
  2. Stop the game or server and back up the world before changing its mod setup.
  3. Put exactly one matching TickWeave JAR in that instance’s mods directory.
  4. Start the instance. Settings are created in config/tickweave.properties.
directSectionLookup=true
maxDirectSections=64
cacheHopperSuctionShape=true
emptyMultipartIterator=true

emptyMultipartIterator affects Forge only. maxDirectSections accepts 1–64 and
limits optimization eligibility, not query results. Restart after changing a
setting. Disabled optimizations are skipped before their Mixins are applied.
Unreadable or malformed configuration disables all TickWeave optimization Mixins.
An existing 0.2 TOML configuration supplies the old section-query settings when
no properties file exists; the old file is retained.

Lithium, Canary or Radium detected at startup disable TickWeave’s optimizations to
avoid overlapping transformations. Real Lithium 0.26.2 coexistence was checked
on Fabric and NeoForge. This does not establish compatibility with every modpack.
Sodium, ModernFix, FerriteCore and other combinations not listed in the test report
remain untested. Fabric API is not required.

Measurements and limits

The controlled dedicated-server comparison used 0.2.0-beta versus 0.3.0-beta,
18 completed runs, three repetitions per variant and workload in A–B–B–A–A–B
order. Each fresh process used the same world, 60 seconds of warm-up and 60 seconds
of measurement at the normal 20 TPS target. Hardware: i7-11800H, 16 GB RAM,
Windows 11, Java 25.0.4.1+1, Forge 66.0.9, 2–4 GiB G1 heap.

The following numbers are medians of the respective per-run metrics, not pooled
samples. Markers populate the section index; they do not simulate active mobs.

Workload Mean active tick ms, 0.2 → 0.3 Server-thread allocation MiB/s, 0.2 → 0.3
4,096 empty hoppers 1.8674 → 1.8645 27.0667 → 21.4110
Hoppers + 256 inactive markers 3.1658 → 2.9956 30.8478 → 25.2268
Idle 0.1467 → 0.1399 0.1435 → 0.1479

In these hopper workloads allocation on the server thread fell by 20.90% and
18.22%. Mean active tick time fell by 0.16% and 5.37%. Both versions
already maintained approximately 20 TPS. Idle allocation increased slightly.
Allocation includes work between ticks on that thread; it is not whole-process
allocation or resident memory.

There was no general GC or memory improvement: median GC pause sums increased
from 18.833 to 26.257 ms for hoppers and from 20.074 to 47.984 ms with markers.
Sampled heap results were mixed. Three short repetitions on one machine are
limited descriptive evidence, not a promise for other worlds or hardware.

See BENCHMARK-DE.md and the accompanying raw evidence for all measurements,
including the excluded client benchmark attempts and their recorded failure reasons.
The client performance comparison is unavailable: three attempts were excluded after a control-path mismatch or a minimized-window rendering-surface failure, including a failure with the unchanged 0.2 baseline. Completed functional client tests remain valid. No partial client series is used as performance evidence.
No general FPS gain, shorter physical input latency or reduced network ping is
promised. Client wall-time instrumentation does not measure displayed frames or
input-to-photon latency. Dedicated results cannot be extrapolated to other loaders.

Validation

All three builds underwent actual integrated-client and dedicated-server startup,
hopper/redstone/entity checks, saving and reloading. Forge also passed multipart
entity checks and real loopback interoperability in both directions: a vanilla
client joining the TickWeave LAN host and a TickWeave client joining a vanilla
server. The dedicated Forge test included a vanilla client, dimension teleports
and distant chunk exploration. Fabric and NeoForge have their own functional
checks and real Lithium coexistence runs.

Automated suites passed 23 tests on Forge and 18 each on Fabric and NeoForge,
including 20,083 section-query differential cases with 40,209 assertions and 10,000
random geometry cases. Fabric’s complete suite was run through a standalone JUnit
launcher against the release artifact and verified runtime classpath; it is not
represented as a successful full Gradle test run.

Windows and the recorded loader/Java combinations are tested. Authenticated
Internet play, a second physical LAN machine, every launcher, other operating
systems, prolonged farms and arbitrary modpacks remain untested. Local network
tests used isolated loopback-only offline identities; this is a test setup, not a
requirement for normal installation. See TESTS-DE.md for exact scope and excluded
failed or interrupted test-fixture runs.

Source and license

TickWeave code is MIT licensed. The source archive contains all three loader
projects, the Gradle wrapper, tests and measurement-tool sources. Game binaries,
Java, worlds and account data are not distributed. Test agents are not runtime
dependencies and must not be placed in mods.

The source and test-data archives referenced above are prepared in the author’s local release package. They are not included in the installable CurseForge JAR downloads; no public archive link is provided here yet.

常见问题

TickWeave 支持哪些 Minecraft 版本?

TickWeave 支持 Minecraft Java 版 26.3,可用的加载器:Fabric / Forge / NeoForge。下载时注意选择和你游戏版本一致的文件。

TickWeave 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric / Forge / NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。

评论

登录后评论和评分