perf: creative node registers once, no server stack walk #29

Merged
layue13 merged 1 commits from perf/creative-node-registry into main 2026-11-07 06:18:49 +00:00
Owner

Requested by Ethyn · project thread

Closes #17

  • TileCreativeNode.updateEntity 每 tick 重新生成 id 并写 TC4 静态 TileNode.locations(字符串拼接、4 个装箱整数、ArrayList、HashMap put)。现在只注册一次(locationRegistered),区块卸载/失效时移除条目,重新加载后会再注册。放置的节点越多,节省越多。
  • BlockCreativeNode.getCollisionBoundingBoxFromPool 每次都 getStackTrace() 全栈物化来判断是否在渲染;服务端永远不渲染,所以服务端直接返回同样的零盒子,客户端保持原判断。实体移动每次碰撞查询都会走这里。
    测试 2 个:1000 次 tick 后登记列表仍是同一对象;区块卸载后条目被移除、再次 tick 能重新登记。

🤖 Generated with Claude Code

<!-- claude-projects-attribution --> _Requested by **Ethyn** · [project thread](https://claude.ai/code/project/chan_01DUNCDJLEksDHKpX5X5cThi?thread=cmsg_01DUNCDJLEksDHKpX5X5cThiWWzw9g2ZbURExfCGHZcnLC)_ Closes #17 - `TileCreativeNode.updateEntity` 每 tick 重新生成 id 并写 TC4 静态 `TileNode.locations`(字符串拼接、4 个装箱整数、ArrayList、HashMap put)。现在只注册一次(`locationRegistered`),区块卸载/失效时移除条目,重新加载后会再注册。放置的节点越多,节省越多。 - `BlockCreativeNode.getCollisionBoundingBoxFromPool` 每次都 `getStackTrace()` 全栈物化来判断是否在渲染;服务端永远不渲染,所以服务端直接返回同样的零盒子,客户端保持原判断。实体移动每次碰撞查询都会走这里。 测试 2 个:1000 次 tick 后登记列表仍是同一对象;区块卸载后条目被移除、再次 tick 能重新登记。 🤖 Generated with [Claude Code](https://claude.com/claude-code)
layue13 added 1 commit 2026-11-07 06:17:35 +00:00
perf: creative node registers its location once, server skips the collision stack walk
Build / build (push) Skipped
Build / publish (push) Skipped
Build / build (pull_request) Successful in 1m7s
Build / publish (pull_request) Skipped
726fef01f6
Closes TDLM/thaumicadditions#17

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
layue13 merged commit a0e3d1751f into main 2026-11-07 06:18:49 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: TDLM/thaumicadditions#29